حاسبة متوسط المقارنات في البحث الخطي
توضح حاسبة مقارنات البحث الخطي عدد اختبارات المساواة التي يجريها البحث التسلسلي عندما يكون الهدف موجودًا ضمن مجموعة من n عنصرًا. وبناءً على الافتراض القياسي بأن الهدف يحتمل أن يشغل أي موضع بالقدر نفسه، تعرض الحاسبة العدد المتوقع للمقارنات وعددها في أسوأ حالة. وبذلك يستطيع المطورون والطلاب والمراجعون ربط ترميز O(n) بأعداد فعلية واضحة لحجم مجموعة محدد.
شغّل الأداة مجانًا
افهم النموذج الاحتمالي الذي يستند إليه المتوسط
يفحص البحث الخطي العناصر بالترتيب ويتوقف فور العثور على الهدف. وإذا كان الهدف الموجود يحتمل أن يقع في أي موضع من المواضع n بالقدر نفسه، فإن العثور على العنصر الأول يتطلب مقارنة واحدة، والعنصر الثاني مقارنتين، والعنصر الأخير n مقارنة. واحتمال كل تكلفة من هذه التكاليف هو 1/n. لذلك تكون التكلفة المتوقعة هي المتوسط الحسابي للأعداد الصحيحة من 1 إلى n، وتُختصر إلى (n + 1) / 2. أدخل حجم المجموعة في n لتطبق الحاسبة هذه الصيغة بدقة. وهذا الافتراض مهم؛ فالنتيجة ليست تقديرًا مبنيًا على قياسات زمنية أو عتاد أو لغة برمجة معينة، بل عدد حتمي للمقارنات في بحث ناجح ذي توزيع منتظم للمواضع. وإذا كانت بعض المواضع أو القيم تُبحث أكثر من غيرها، فيلزم وزن احتمالاتها على حدة. كذلك لا يصف النموذج هدفًا غير موجود، إذ يفحص البحث الخطي العادي عندئذ جميع العناصر n.
فسر متوسط المقارنات وعددها في أسوأ حالة
قد يكون المتوسط عددًا صحيحًا أو يحتوي على نصف. فمثلًا، تبلغ التكلفة المتوقعة لمجموعة فيها 100 عنصر 50.5 مقارنة. ولا تعني هذه القيمة الكسرية أن عملية واحدة تنفذ نصف مقارنة؛ بل هي المتوسط على المدى الطويل لعمليات بحث ناجحة كثيرة تتوزع مواضع أهدافها بانتظام. أما أسوأ حالة فتبلغ n لأن الهدف المخزن في الموضع الأخير لا يظهر إلا بعد فحص كل عنصر. وفي مجموعة ذات عنصر واحد تكون القيمتان واحدة. ومع نمو n يقترب المتوسط من نصف حجم المجموعة، بينما تظل أسوأ حالة مساوية للحجم الكامل. وتنمو الكميتان خطيًا، ولهذا يصنف التحليل التقاربي البحث الخطي الناجح ضمن O(n) رغم اختلاف الثوابت. استخدم المتوسط لتقدير عبء يطابق التوزيع المذكور فعلًا، واستخدم أسوأ حالة لوضع حد أعلى صارم لعملية بحث ناجحة واحدة. ولا تشمل الأعداد إدارة الحلقة أو الوصول إلى الذاكرة أو الفرز أو كلفة المقارنة الداخلية للعناصر.
استخدم النتيجة في مناقشات التصميم والأداء
تجعل أعداد المقارنات المحددة نقاش الخوارزميات أوضح من الاعتماد على الترميز التقاربي وحده. ويمكنك مقارنة العمل المتوقع للبحث الخطي بكلفة إنشاء بنية بيانات أخرى، ولا سيما عندما تكون المجموعة صغيرة أو قليلة البحث أو كثيرة التغير. وقد يقلل جدول التجزئة أو الفهرس المرتب عمل البحث، لكن إنشاءه وصيانته لهما كلفة يتجنبها المسح البسيط. تقدم هذه الحاسبة جانب المسح من المفاضلة من دون الادعاء بأنها تقيس زمن التشغيل. كما تفيد في مراجعة التمارين والتحقق من نموذج جدول بيانات وتوثيق مراجعة الشفرة وتوليد قيم مستقرة للمواد التعليمية. احتفظ بالشروط المسبقة بجانب النتيجة: الهدف موجود، وكل موضع متساوي الاحتمال، والبحث يبدأ من العنصر الأول ويتوقف عند أول تطابق. وقد تخالف القيم المكررة النموذج لأن البحث يتوقف عند أول ظهور مطابق. استخدم n مقارنة للأهداف الغائبة، ولأنماط الوصول غير المنتظمة احسب توقعًا موزونًا بضرب عدد مقارنات كل موضع في احتماله ثم جمع النواتج.
حالات الاستخدام
مراجعة تمرين في الخوارزميات
تحقق من العدد المتوقع والأقصى لمقارنات بحث ناجح عند حجم مجموعة محدد.
تقدير عمل عمليات البحث المتكررة
حدد المقارنات المتوقعة عندما تتوزع الأهداف الموجودة بانتظام داخل مجموعة غير مرتبة.
شرح المفاضلة بين بنى البيانات
قارن كلفة المسح المحددة بتكاليف إنشاء فهرس أو مصفوفة مرتبة أو جدول تجزئة وصيانتها.
الأسئلة الشائعة
ما الصيغة المستخدمة لمتوسط عدد المقارنات؟
عندما يكون الهدف موجودًا ومتساوي الاحتمال في كل موضع، يكون المتوسط (n + 1) / 2 مقارنة.
لماذا قد يحتوي المتوسط على نصف مقارنة؟
لأنه قيمة متوقعة عبر عمليات بحث كثيرة، وليس عدد عملية واحدة. وكل عملية بحث منفردة تنفذ دائمًا عددًا صحيحًا من المقارنات.
ما أسوأ حالة للبحث الخطي الناجح؟
تتطلب أسوأ حالة n مقارنة، وتحدث عندما يكون الهدف في الموضع الأخير.
هل تشمل الحاسبة هدفًا غير موجود؟
لا. يفترض النموذج أن الهدف موجود. ويفحص البحث الخطي العادي غير الناجح جميع العناصر n.
هل تقيس النتيجة زمن التنفيذ؟
لا. فهي تحصي مقارنات العناصر فقط؛ أما الزمن الفعلي فيعتمد أيضًا على التنفيذ وكلفة مقارنة العنصر والعتاد والعمل المحيط.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/dev/linear-search-avg \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":100}'const res = await fetch("https://api.kit.forhosting.com/dev/linear-search-avg", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n": 100
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/linear-search-avg",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n": 100
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/linear-search-avg", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n":100}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n":100}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/linear-search-avg", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"n": 100
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.linear_search_avg",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |