مضى على الشبكة و يوم من العطاء.

Day1-[tip1] -يوم[1] -فكرة[1]-رحلة الصفر والواحد: فن البحث الثنائي

MinaMina is verified member.

{ | مشرف قسم لغات البرمجة | }
.:: طاقم المشرفين ::.
.:: كاتب تقني ::.

السمعة:

بسم الله الرحمن الرحيم
رمضان كريم حله الله علينا وعليكم بالبركة ✨

الفكرة الأولى هي فكرة السلسلة:
كود:
int i;
for(i=1 ;i<=30 ;i++){
new idea you might not know ;
}
فـ بحول الله سنقوم بنشر فكرة كل يوم، أي أننا نشير إلى فكرة معينة دون التوسع فيها , إذا كانت جديدة ومفيدة بالنسبة لك يمكنك البحث والتوسع أكثر, فالنبدأ على بركة الله.

لو كان معنا هذا التمثيل :

Capture1.PNG
وطلبت منك إيجاد قطعة الشكولاة المماثلة من حيث الحجم لأول قطعة علمًا أن الرؤية بين القطعة والأخرى محجوبة, أي لا يمكننك التعرف على حجمها إلا إذا مررت عليها في هذه الحالة ,سنضطر إلى الإنتقال والمقارنة واحدة تلو الأخرى, بداية من أول قطعة إلى حين الوصول إلى آخر قطعة ذات الرقم 7, بعد قطع 7 خطوات تحديدًا فنجد أنهما متطابقتان أليس كذلك؟ هل يمكنكم التفكير في طريقة أخرى؟

إذا لاحظنا قليلًا لوجدنا أن قطع الشكولاة مرتبة ترتيبًا تصاعديًا من أصغر قطعة إلى أكبرها.

Capture2.PNG
فيمكننا في هذه الحالة أن نبدء البحث من المنتصف, أي نقارن القطعة التي معنا بالقطعة التي تقع في منتصف القطع ( القطعة 4) سنجدها أقل, أي أننا سنبحث فيما بعد فقط في الجزء الأيمن لأنه جميع القطع التي تقع على اليسار أصغر! وبذلك نتجاهل تمامًا الجزء الأيسر (كذلك الأمر لو كان أكبر سنبحث في الجزء الأيمن )وفي كل مرة نعيد نفس البحث في هذه الحالة سنكون قد ربحنا 3خطوات وهي ليست بالأمر الكبير
لكن لو ركزنا قليلاً اننا في كل خطوة سنستبعد 50% من العدد الاجمالي !
فلو كنا نبحث عن اسم Name=Mina في قائمة تحتوي على 100 مليون اسم مرتبة أبجدياً , ففي أول خطوة فقط سنستبعد 50 مليون اسم وفي الخطوة الثانية سنستبعد 25 مليون اسم آخر , يعني في أسوء الحالات لو كان الاسم في آخر القائمة رياضياً 27 log2(100,000,000) أي سنحتاج إلى 27 خطوة فقط! على عكس الطريقة الأولى التي تضطرنا إلى قطع 100مليون خطوة ! وهذا مايعرف بال Binary search

جعلنا الله وإياكم ممن صدقوا فنالوا
يعطيكم العافية
 
اتذكر مثال مشابه في كورس CS50 لكن ما توقعت تشبيهه بهاي الطريقة
+ أرجو عدم نشر مثل هذه الصور (صور الشوكولاته) في وقت الصيام 😁
 
  • Haha
التفاعلات: Mina
بسم الله الرحمن الرحيم
رمضان كريم حله الله علينا وعليكم بالبركة ✨
فكرة السلسة
كود:
int i;
for(i=1 ;i<=30 ;i++){
new idea you might not know ;
}
فبحول الله سنقوم بنشر فكرة كل يوم اي اننا نشير الى فكرة معينة دون التوسع فيها اذا كانت جديدة ومفيدة بالنسبةلك يمكنك البحث والتوسع اكثر
فالنبدا على بركة الله
لو كان معنا هذا التمثيل

وطلبت منك ايجاد قطعة الشكولاه المماثلة من حيث الحجم لاول قطعة علما ان الرؤية بين القطعة والاخرى محجوبة اي لايمكننك التعرف على حجمها الا اذا مررت عليها في هذه الحالة سنظطر الى الانتقال والمقارنة واحدة تلو الاخرى بداية من اول قطعة الى حين الوصول الى اخر قطعة ذات الرقم 7 بعد قطع 7 خطوات تحديدا فنجد انهما متطابقتان اليس كذلك?
هل يمكنكم التفكير في طريقة اخرى ?
اذا لاحظنا قليلا لوجدنا ان قطع الشكولاه مرتبة ترتيبا تصاعديا من اصغر قطعة الى اكبرها
مشاهدة المرفق 9162
فيمكننا في هذه الحالة ان نبدا البحث من المنتصف اي نقارن القطعة التي معنا بالقطعة التي تقع في منتصف القطع ( القطعة4) سنجدها اقل اي اننا سنبحث فيما بعد فقط في الجزء الايمن لانه جميع القطع التي تقع على اليسار اصغر !وبذلك نتجاهل تماما الجزء الايسر (كذلك الامر لو كان اكبر سنبحث في الجزء الايمن )وفي كل مرة نعيد نفس البحث في هذه الحالة سنكون قد ربحنا 3خطوات هما ليسا بالامر الكبير
لكن لو ركزنا شوي اننا في كل خطوة سنستبعد 50% من العدد الاجمالي !
فلو كنا نبحث عن اسم Name=Mina في قائمة تحتوي على 100مليون اسم مرتبة ابجديا ! ففي اول خطوة فقط سنتبعد 50 مليون اسم وفي الخطو الثانية سنستبعد 25 مليون اسم اخر
يعني في اسوا الحالات لو كان الاسم في اخر القائمة رياضيا27 log2(100,000,000) اي سنحتاج الى 27 خطوة فقط! على عكس الطريقة الاولى التي تظطرنا الى قطع 100مليون خطوة !

وهذا مايعرف بال Binary search

جعلنا الله واياكم ممن صدقوا فنالوا ويعطيكم العافية
بارك الله فيك يا مينا على هذا الطرح وننتظر جديدك كل يوم
 
  • Love
التفاعلات: Mina
اتذكر مثال مشابه في كورس CS50 لكن ما توقعت تشبيهه بهاي الطريقة
+ أرجو عدم نشر مثل هذه الصور (صور الشوكولاته) في وقت الصيام 😁
حاضر😅
 
التعديل الأخير بواسطة المشرف:

آخر المشاركات

فانوس

رمضان
عودة
أعلى