Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 19

‫مقرر هياكل البيانات‬

‫محاضرة رقم (‪)2‬‬


‫خوارزميات البحث‬
‫‪Searching Algorithms‬‬
‫مفهوم البحث ‪searching concept‬‬
‫‪ ‬اعتقد انك تدرك قيمة البحث للوصول الي عنصر من عناصر‬
‫البيانات لتحديد موقعه بغرض اجراء واحدة او اكثر من‬
‫المعالجات عليه (التعديل ‪,‬حذف‪ ,‬اضافة‪ ,‬استرجاع)‪.‬‬
‫‪ ‬وسوف نختصر في هذه الوحدة للتحدث عن خوارزميات‬
‫البحث عن سجل في مصفوفة السجالت ثم البحث عن المعلومة‬
‫في احد حقول السجل ويتم ذلك عادة بالبحث عبر حقل محدد من‬
‫حقول السجل والذي يسمي بالمفتاح (‪:)key‬هو حقل مفرد‬
‫للتعبير عن السجل مثال لذلك حقل رقم الطالب الذي يتم به‬
‫البحث عن سجل الطالب وبعد الوصول الي سجل الطالب يمكن‬
‫النظر الي الحقول االخري للطالب ‪.‬ويسمي حقل رقم الطالب‬
‫بالمفتاح‪.‬‬
‫‪‬ثم بعد ذلك يتم التعامل مع أي حقل آخر من حقول‬
‫السجل او مع كل حقول ذلك السجل ‪.‬‬
‫‪‬وعندما نتحدث عن البحث في المصفوفة فإننا نتحدث‬
‫عن المصفوفة المرتبة تصاعديا أو تنازليا ‪,‬وبذلك نستفيد‬
‫من كونها مرتبة ‪,‬حيث ينتهي عملنا عندما تكون قيمة‬
‫عنصر من عناصر المصفوفة مرتبة تصاعديا ‪,‬وليس‬
‫هناك داع لفحص باقي المصفوفة ‪,‬ألن باقي عناصرها‬
‫ستكون بالتأكيد اكبر من القيمة المطلوبة ‪.‬‬
‫‪‬من المهم في عمليات البحث مراعاة الزمن المستغرق‬
‫فباالضافة الي سرعة المعالج يوجد عدد من العوامل‬
‫التي توثر في زمن البحث‪:‬‬
‫‪ .1‬حجم القائمة (عدد العناصر المكونة لها ) نوعها ‪.‬‬
‫‪ .2‬بنية البيانات المستخدمة (مصفوفات ‪ ,‬قوائم متصلة ‪,‬او‬
‫أشجار ثنائية )‪.‬‬
‫‪ .3‬طريقة تنظيم البيانات (مرتبة او غير مرتبة )‪.‬‬
‫‪ .4‬استراتيجية البحث المستخدمة (خطي ام ثنائي)‪.‬‬
‫طرق البحث‬
‫‪‬من المهم هنا ان نذكر طرق او خوارزميات البحث التي‬
‫تم تصميمها للبحث عن المعلومة وهي شتي وكثيرة‬
‫ولكن دعنا نأخذ أشهر هذه الطرق علي سبيل المثال ال‬
‫الحصر ‪:‬‬
‫‪‬البحث المتتالي أو الخطي ‪.‬‬
‫‪‬البحث الثنائي ‪.‬‬
‫‪‬شجرة البحث الثنائية ‪.‬‬
‫البحث المتتالي ‪ Sequential Search‬أو‬
‫البحث الخطي (‪) Linear Search‬‬
‫‪ ‬لعلك تتسأل‪ -‬ما المقصود بالبحث المتتالي وما الفائدة منه ؟‬
‫‪ ‬هو عملية البحث عن عنصر معين ضمن قائمة (مرتبة أو غير‬
‫مرتبة )‪.‬اذ ان اسهل طريقة للبحث عن أي عنصر في قائمة‬
‫معينة هو مسح القائمة المعطاة بشكل تعاقبي او متتالي وفحص‬
‫كل عنصر من عناصرها لحين العثور علي العنصر المطلوب ‪.‬‬
‫‪ ‬نهدف من البحث المتتالي الي إحداث مطابقة بين قيمة العنصر‬
‫المراد البحث عنه (‪ )search key‬وبين بقية العناصر االخرى‬
‫بالمصفوفة (‪ ,)array‬لكي يتم البحث عن هذا العنصر ال بد من‬
‫المرور بكل العناصر واذا تم الوصول الي نهاية المصفوفة دون‬
‫الوصول الي مطابقة ‪ ,‬فهذا يعني عدم وجود العنصر داخل‬
‫المصفوفة ‪.‬‬
‫فكرة عمل الخوارزمية‬
‫‪‬نفرض ان لدينا قائمة معينة من البيانات (غير مكررة )‬
‫في مصفوفة ‪ M‬عدد عناصرها ‪. N‬‬
‫‪‬نفرض ان العنصر المراد البحث عنه هو ‪.key‬‬
‫‪‬نفرض ان دليل عناصر المصفوفة ‪ M‬هو ‪.I‬‬
‫‪‬نقارن ‪ key‬مع كل عناصر ‪(M‬بالترتيب) بداللة ‪ I‬حتي‬
‫نصل للعنصر المعني و االتستمر عملية المقارنة الي ان‬
‫تنتهي عناصر المصفوفة ‪.M‬‬
The sequential search algorithm pseudocode
procedure Search(List, keyValue)
If (List is empty)
Then
(key is not found)
Else
(
name  first entry in List
while (no more names on the List)
(
if (name = key Value)
(Stop, key Found)
else
name  next name in List
)
(key is not found)
)
‫خوارزمية ‪Sequential Searching‬‬
‫‪Wanted = 80‬‬

‫؟ ==‬
‫؟‬

‫؟ ==‬
‫==‬ ‫‪....‬‬ ‫‪....‬‬

‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪8‬‬ ‫‪9‬‬ ‫‪10‬‬ ‫‪11 12‬‬ ‫‪13‬‬
‫‪array‬‬ ‫‪2‬‬ ‫‪5‬‬ ‫‪7‬‬ ‫‪9‬‬ ‫‪34‬‬ ‫‪55‬‬ ‫‪56‬‬ ‫‪66‬‬ ‫‪79‬‬ ‫‪80‬‬ ‫‪81 88‬‬ ‫‪90‬‬ ‫‪99‬‬

‫القيمة المطلوبة توجد في الخانة العاشرة‪ ,‬و وصلنا لها بعد عشر عمليات مقارنة‬

‫المادة العلمية إعداد‪ /‬أ‪ .‬رنده عبد الرحمن محمد خالد‬ ‫تراكيب البيانات‬

‫‪9‬‬
‫مثال علي البحث التسلسلي ‪sequential search‬‬ ‫‪.8‬‬
‫‪10‬‬
‫البحث الثنائي‪Binary Search‬‬
‫‪ ‬يعاب علي خوارزمية البحث الخطي البطء خاصة اذا كان عدد العناصر كبير جدأ‪.‬‬
‫‪ ‬يتم استخدام هذه الطريقة لزيادة كفاءة عملية البحث من خالل زيادة سرعة الوصول‬
‫الي السجل وتتطلب هذه الطريقة ترتيب البيانات تصاعديا او تنازليا حسب قيمة‬
‫المفتاح ‪.‬‬
‫‪ ‬والن العناصر مرتبة فهنا يمكن االستفادة من ذلك في تقسيم قائمة العناصر إلى‬
‫نصفين فيتم تجاهل احدهما واعتماد االخرى في عملية البحث بناء على مقارنه هل‬
‫العنصر الموجود في وسط القائمة أكبر من العنصر الذي نبحث عنه ام اصغر ام‬
‫يساويه ؟‬
‫‪ ‬وتبدا عملية البحث من العنصر الذي يقع في وسط المصفوفة‪:‬‬
‫‪ ‬فاذا كان العنصر الذي نبحث عنه يساوي العنصر الذي في الوسط تنتهي عملية البحث اما اذا كانت‬
‫القيمتان مختلفتان ستقوم الخوارزمية بإجراء فحص جديد ‪.‬‬
‫‪ ‬فاذا كان العنصر الذي نبحث عنه أكبر من العنصر الذي في الوسط سيتم البحث في الجزء االيمن من‬
‫المصفوفة ويستثنى من البحث الجزء االيسر‬
‫‪ ‬اما اذا كان العنصر الذي نبحث عنه اصغر سيتم البحث في الجزء االيسر من المصفوفة ويستثنى من البحث‬
‫الجزء االيمن‪.‬‬

‫‪10/24/2023‬‬ ‫هياكل البيانات‬ ‫‪11‬‬


‫البحث الثنائي‪binary search‬‬
‫‪‬مثال ‪:‬‬
‫باستخدام خوارزمية البحث الثنائي ابحثي عن العنصر الذي قيمته ‪44‬‬ ‫‪‬‬

‫‪10/24/2023‬‬ ‫تراكيب البيانات‬ ‫‪12‬‬


‫البحث الثنائي‪binary search‬‬

‫‪10/24/2023‬‬ ‫تراكيب البيانات‬ ‫‪13‬‬


‫البحث الثنائي‪binary search‬‬

‫‪10/24/2023‬‬ ‫تراكيب البيانات‬ ‫‪14‬‬


‫البحث الثنائي‪binary search‬‬

‫‪10/24/2023‬‬ ‫تراكيب البيانات‬ ‫‪15‬‬


‫البحث الثنائي‪binary search pseudo code‬‬

‫‪10/24/2023‬‬ ‫تراكيب البيانات‬ ‫‪16‬‬


‫مقارنة بين خوارزميات البحث المتتالي و الثنائي‬

‫طريقة البحث المتتالية‬ ‫طريقة البحث الثنائي‬


‫‪Sequential Search‬‬ ‫‪Binary Search‬‬
‫اقل كفاءة واكثر سهولة‬ ‫اكثر كفاءة واقل سهولة معقد‬

‫تدني سرعة الوصول الي السجل‬ ‫اسرع من طريقة البحث المتتالي‬


‫المطلوب ‪,‬يزداد البطء بزيادة حجم‬ ‫للوصول الي السجالت ‪.‬‬
‫البيانات‬
‫تكون عملية عندما يكون حجم البيانات‬ ‫تتطلب ترتيب البيانات تصاعديا او‬
‫صغير‬ ‫تنازليا حسب قيمة المفتاح‬

‫‪10/24/2023‬‬ ‫تراكيب البيانات‬ ‫‪17‬‬


‫واجب‬
‫استخدم خوارزمية البحث المتتالي وابحث عن العنصر‬ ‫‪.1‬‬
‫‪43‬في القائمة االتية ‪:‬‬
‫‪49 38 11 47 54 43 17 55 16 61 31 24‬‬

‫استخدم خوارزمية البحث الثنائي وابحث عن العنصر‬ ‫‪.2‬‬


‫‪ 35‬في القائمة االتية ‪:‬‬
‫‪67 55 51 50 45 40 37 35 20‬‬
‫انتهت المحاضرة بحمد هللا‬

‫‪10/24/2023‬‬ ‫تراكيب البيانات‬ ‫‪19‬‬

You might also like