العودة إلى الدورة

الدرس الثامن والعشرون: تطبيقات متقدمة للبحث الثنائي

الخوارزميات: من الصفر إلى الاحتراف (دليل المبتدئين)

28. تطبيقات متقدمة للبحث الثنائي

البحث الثنائي ليس مجرد وسيلة للعثور على تطابقات دقيقة. إنه أداة قوية للعثور على الحدود وتحسين الدوال.

1. العثور على أول/آخر تكرار

إذا كانت المصفوفة تحتوي على تكرارات (على سبيل المثال، [2, 4, 4, 4, 5])، فقد يُرجع البحث الثنائي القياسي أياً من الأرقام 4. من خلال تعديل بسيط لمنطق المقارنة، يمكننا العثور تحديداً على فهرس أول رقم 4 أو آخر رقم 4.

2. البحث في المصفوفات المفرزة المُدارة (Rotated Sorted Arrays)

تخيل [6, 7, 1, 2, 3, 4, 5]. هذه المصفوفة مفرزة ولكنها مُدارة. يفشل البحث الثنائي القياسي. ومع ذلك، نظراً لأن نصف المصفوفة على الأقل سيكون مفرزاً دائماً، يمكننا استخدام البحث الثنائي عن طريق التحقق من أي نصف ينتمي إليه المحور (العنصر الأوسط) وتضييق مساحة البحث بكفاءة (O(log N)).

3. تحسين الدالة (Function Optimization)

إذا كان ناتج دالة ما رتيباً (يزداد دائماً أو ينقص دائماً)، يمكن استخدام البحث الثنائي للعثور على الحد الأدنى لقيمة المدخلات المطلوبة لتحقيق ناتج مستهدف، مما يقلل بشكل كبير من مساحة البحث.