فهرست پرشی
فهرست پرشی داده ساختاری(ساختمان داده یا Date Structure) احتمالاتی مبنی بر لیست پیوندی موازی است که در سال 1989 توسط
William Pugh ابداع شد .
این داده ساختار میتواند مانند درخت دودویی جستجو، عملیات جستجو، درج و حذف را بهطور میانگین در
شرح ساختار
در لیستهای پیوندی معمولی هزینه جستجو، درج و حذف
در این شبه فهرست پرشی سایز هر دو گره متوالی 2، سایز هر چهار گره متوالی 3 و سایز هر
شبه کد جستجو در فهرست پرشی
Comparable &find(const Comparable &X)
{
node=header node;
for(reference level of node from (nodesize - 1) down to 0)
while(the node referred to is less than X)
node = node referred to ;
if(node referred to has value X)
return node value;
else
return item_not_found;
}
اما اگر ما بخواهیم دادهای را درج یا حذف کنیم چون این فهرست دادههای مرتبی دارد، مجبور کل دادهها را یکبار شیفت دهیم پس هزینه درج یا حذف داده از مرتبه
همان طور که مشاهده میشود توزیع سایز گره همانند شکل 1 است فقط الگو و جای قرار گرفتن گرهها عوض شدهاست مثلاً 50% گرهها سایزشان 1 است ، 25% سایز 2 دارند و ... .
در هنگام درج سایز گره را با استفاده از یک تابع احتمال تعیین می کنیم :
هر فهرست پرشی دارای احتمال
شبه کد عملیات درج در یک فهرست پرشی
int generateNodeLevel(double P,int maxLevel)
{
int level = 1;
while(drand48()<P)
level++;
return (level>maxLevel) ? maxLevel : level;
}
وقتی که به یک گره برای درج کردن یک داده در فهرست احتیاج داریم، سایز آن با استفاده از تابع تولید اعداد تصادفی
دراین صورت میانگین مقایسههای لازم برای جستجو
جستارهای وابسته
پیوند به بیرون
- SkipList Applet
- Thomas Wenger's demo applet on skiplists
- Prof. Erik Demaine's lecture on skip lists from MIT's OpenCourseWare program. (Audio)