רשימת דילוגים

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

רשימת דילוגים
יצירה
הומצא ב: 1989
ממציא: ויליאם פְּיוּ
סיבוכיות מקום וזמן
ממוצע במקרה הגרוע
זיכרון:
O(n) O(n log n)
חיפוש:
O(log n) O(n)
הכנסה:
O(log n) O(n)
הוצאה:
O(log n) O(n)

תיאור

עריכה

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

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

היסטוריה

עריכה

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

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

עריכה
  מדיה וקבצים בנושא רשימת דילוגים בוויקישיתוף