0% found this document useful (1 vote)
76 views9 pages

4 - Skip List

تعقيد خوارزمية البحث هو O(log n)

Uploaded by

sara
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (1 vote)
76 views9 pages

4 - Skip List

تعقيد خوارزمية البحث هو O(log n)

Uploaded by

sara
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Data Structure and algorithms

)Skip Lists( ‫قوائم التخطي‬

4 / April / 2019
‫قوائم التخطي (‪1 - )Skip Lists‬‬
‫ً‬ ‫ً‬
‫‪ ‬تحتوي القوائم املرتبطة على عيب واحد خطير‪ ،‬فهي تتطلب مسحا تسلسليا لتحديد عنصر‬
‫مطلوب البحث عنه‪.‬‬
‫‪ ‬حيث يبدأ البحث من بداية القائمة (‪ )head‬ويتوقف عند العثور على العنصر املطلوب‬
‫البحث عنه أو الوصول إلى نهاية القائمة دون العثور على هذا العنصر‪.‬‬
‫‪ ‬يمكن أن يؤدي ترتيب العناصر (وفق عالقة أكبر أو أصغر ملواصفة أو مواصفات الغرض) في‬
‫ً‬
‫القائمة إلى تسريع عملية البحث‪ ،‬ولكن ال يزال البحث املتسلسل مطلوبا‪.‬‬
‫‪ ‬لذلك‪ ،‬قد نفكر في القوائم التي تسمح بتخطي بعض العقد لتجنب املعالجة املتسلسلة‪.‬‬
‫‪ ‬قائمة التخطي‪ :‬هي نوع مثير لإلهتمام من القوائم املرتبطة املرتبة والتي تجعل املعالجة غير‬
‫املتسلسلة ممكنة‪.‬‬
‫قوائم التخطي (‪2 - )Skip Lists‬‬
‫‪ ‬قائمة التخطي هي بنية بيانات تسمح بـ‪:‬‬
‫تعقيد بحث )𝑛 ‪𝑂 (log‬‬ ‫‪‬‬

‫تعقيد اإلدراج )𝑛 ‪𝑂 (log‬‬ ‫‪‬‬

‫ضمن تسلسل مرتب لـ (‪ )n‬عنصر‪.‬‬


‫‪ ‬وبالتالي‪ ،‬يمكن أن تحصل على أفضل مصفوفة (للبحث) مع الحفاظ على بنية قائمة تشبه‬
‫قائمة تسمح باإلدخال ‪ -‬وهو أمر غير ممكن في املصفوفات‪.‬‬
‫‪ ‬قائمة التخطي مبنية في طبقات‪ ،‬حيث الطبقة السفلية هي قائمة مرتبطة مرتبة عادية‪ ،‬وكل‬
‫طبقة أعلى تكون بمثابة "ممر صريح" للقوائم الجزئية األخرى‪.‬‬
‫قوائم التخطي (‪3 - )Skip Lists‬‬
‫‪ ‬من أجل قائمة مترابطة ب ـ ‪ُ )n( :‬عقدة فإن‪ :‬العقدة الثانية تشير إلى العقدتين التاليتين لها‪ ،‬والعقدة الرابعة‬
‫تشير إلى ُ‬
‫العقد األربعة التالية لها‪ ،‬وهكذا‪.‬‬
‫‪ ‬يتم تحقيق ذلك من خالل وجود أرقام مختلفة من املؤشرات في ُعقد القائمة‪ :‬نصف العقد يحتوي على مؤشر‬
‫واحد فقط‪ ،‬وربع العقد يحتوي على مؤشرين‪ ،‬وثمن العقد يحتوي على ثالثة مؤشرات ‪ ،‬وهكذا‪.‬‬
‫العقد التي تبدأ عندها القوائم «الجزئية» هي‪ 2،4،8،16،32،64،128، … … .. :‬وهي ذات مستويات متساوية‪.‬‬ ‫‪ ‬أرقام ُ‬

‫‪Level‬‬

‫‪null‬‬
‫‪4‬‬

‫‪null‬‬
‫‪3‬‬
‫‪22‬‬
‫‪10‬‬ ‫‪45‬‬

‫‪null‬‬
‫‪2‬‬
‫‪7‬‬ ‫‪17‬‬ ‫‪31‬‬
‫‪5‬‬ ‫‪8‬‬ ‫‪12‬‬ ‫‪19‬‬ ‫‪28‬‬ ‫‪37‬‬

‫‪null‬‬
‫‪1‬‬
‫‪head‬‬ ‫‪2nd node‬‬ ‫‪4th node‬‬ ‫‪8th node‬‬ ‫‪tail‬‬
make all nodes level 1
j ← 1
while the number of nodes at level j > 1 do
‫معلومات من اإلنترنيت‬
for each i'th node at level j do
if i is odd
‫ يمكن أن نجعل‬
if i is not the last node at level j
randomly choose whether to promote it to level j+1
‫مستويات البنية شبه‬
else
do not promote
‫عشوائية وفق‬
end if
else if i is even and node i-1 was not promoted
:‫الخوارزمية التالية‬
promote it to level j+1
end if
repeat :‫ الشكل التالي كمثال‬
j ← j + 1
repeat
‫معلومات من اإلنترنيت‬
‫خوارزمية البحث في قوائم التخطي (‪)Search‬‬
‫معلومات من اإلنترنيت‬

‫دالة البحث في قوائم‬


‫التخطي (‪)Search‬‬
‫باللغة (‪)C++‬‬
‫سؤال‬
‫• احسب تعقيد خوارزمية البحث وفق (‪)Big-O notation‬‬
‫• تتبع خوارزمية البحث من أجل البحث عن قيمة ما في قائمة التخطي التالية‪:‬‬

‫‪Level‬‬

‫‪null‬‬
‫‪4‬‬

‫‪null‬‬
‫‪3‬‬
‫‪22‬‬
‫‪10‬‬ ‫‪45‬‬

‫‪null‬‬
‫‪2‬‬
‫‪7‬‬ ‫‪17‬‬ ‫‪31‬‬
‫‪5‬‬ ‫‪8‬‬ ‫‪12‬‬ ‫‪19‬‬ ‫‪28‬‬ ‫‪37‬‬

‫‪null‬‬
‫‪1‬‬
‫‪head‬‬ ‫‪2nd node‬‬ ‫‪4th node‬‬ ‫‪8th node‬‬ ‫‪tail‬‬

You might also like