אלגוריתם חיפוש

במדעי המחשב, אלגוריתם חיפוש הוא אלגוריתם המשמש לחיפוש נתון נדרש במבנה נתונים. חיפוש הוא פעולה בסיסית בפיתוח תוכנה, למשל לשם אחזור מידע מבסיס נתונים, ולכן הושקע מאמץ בפיתוח אלגוריתמים יעילים לביצוע משימה זו. את האלגוריתמים ניתן לחלק לשני סוגים.

חיפוש ממצה
חיפוש ממצה הוא חיפוש המאפשר לקבוע שהנתון נמצא במערכת כמפתח לחיפוש. ובמקרה שהוא נמצא, ניתן לקבל את הנתונים שהוא מאנדקס.

החיפוש הבסיסי ביותר הוא חיפוש בכוח גס - מעבר על כל הנתונים לפי סדרם, עד למציאת הנתון המבוקש, אם הוא אכן נמצא. מקובל לכנותו חיפוש ממצה בסיסי, או אלגוריתם חיפוש נאיבי. זהו חיפוש בלתי יעיל, וכאשר מספר הנתונים שבהם יש לחפש הוא גדול, החיפוש נמשך זמן רב, במידה בלתי סבירה. 

כאשר הנתונים ממוינים, ניתן לשפר משמעותית את החיפוש על ידי שימוש בחיפוש בינארי. הבעיתיות בשיטה זו היא הדרישה שהנתונים יהיו ממוינים מראש, והצורך לשוב ולמיינם בכל פעם שנתון חדש מוכנס למאגר או כשנתון קיים מוצא ממנו.

כדי לאפשר חיפוש מהיר מחד, ולהימנע מן הצורך למיין את הנתונים בכל פעם שחל בהם שינוי מאידך, פותחו מבני נתונים השומרים על הנתונים במצב ממוין.

מבנה נתונים בסיסי המאפשר זאת הוא עץ חיפוש, שהוא מבנה נתונים ממוין המאפשר הכנסה, הוצאה וחיפוש. עצי חיפוש משוכללים יותר כמו עץ אדום שחור ועץ AVL מאפשרים לבצע את הפעולות הללו במהירות (דהינו בסיבוכיות נמוכה).

לחיפוש בגרפים (כמו עצי החיפוש שהוזכרו לעיל) משמשים אלגוריתם חיפוש לעומק ואלגוריתם חיפוש לרוחב.

חיפוש הסתברותי
בחיפוש כזה מוסכם לפני תחילתו שבהסתברות ידועה, החיפוש לא יחשוף נתון שכן מצוי במערכת, ואף מפתח לנתון שכן מצוי.

לקריאה נוספת
 דונלד קנות', Sorting and Searching, כרך 3 בסדרה The Art of Computer Programming.

קישורים חיצוניים