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

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש

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

Skip list.svg

תיאור[עריכת קוד מקור | עריכה]

רשימת דילוגים בנויה משכבות. השכבה התחתונה ביותר היא רשימה מקושרת רגילה, בה מופיעים כל האיברים במבנה הנתונים הנתון. האיברים מסודרים מהחוליה הקטנה ביותר לחוליה הגדולה ביותר. כל שכבה מוכלת על ידי השכבה מתחתיה. ההסתברות שחוליה x כלשהי, השייכת לרשימה בשכבה i, תימצא גם ברשימה בשכבה i+1 היא 0.5. ככלל, סיכויו של איבר כלשהו להימצא בשכבה i הוא \frac{1}{2^i}, כשהשכבה התחתונה ביותר (אשר מכילה את כל האיברים) מיוצגת על ידי i=0. כל איבר ברשימה מחזיק ארבעה מצביעים: לאיבר שאחריו ברשימה, לאיבר שלפניו, לאיבר הזהה ברשימה מתחתיו ולאיבר הזהה ברשימה מעליו (אם קיים).

חיפוש אחר איבר כלשהו מתחיל מהאיבר הראשון בשכבה העליונה ביותר, וממשיך לעבור על כל איברי שכבה זו, עד שנמצא איבר גדול או שווה לאיבר שאנו מחפשים. אם איבר זה שווה ערך לאיבר שאנו מחפשים- מצאנו את יעד החיפוש. אם הגענו לאיבר גדול מהאיבר שאנו מחפשים, נחזור לאיבר הקודם, ונבצע חיפוש זהה החל מאיבר זה ברמה אחת תחתונה יותר. תהליך החיפוש צורך זמן ריצה של \mathcal{O}(n) במקרה הגרוע ביותר, אך \mathcal{O}(\log n) בלבד במקרה הממוצע.

היסטוריה[עריכת קוד מקור | עריכה]

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

קישורים חיצוניים[עריכת קוד מקור | עריכה]