آموزش ساختمان داده ها - بخش نهم
TRANSCRIPT
![Page 1: آموزش ساختمان داده ها - بخش نهم](https://reader038.vdocuments.site/reader038/viewer/2022103021/55d2aa45bb61ebe73a8b459c/html5/thumbnails/1.jpg)
ساختمان داده ها
faradars.org/fvds9402
:مدرسفرشید شیرافکن
دانشگاه تهران دانشجوی دکتری (بیو انفورماتیک: دکتری( )کامپیوتر نرم افزار: کارشناسی و کارشناسی ارشد )
فصل نهم
درهم سازی
1
فرادرس
FaraDars.org
![Page 2: آموزش ساختمان داده ها - بخش نهم](https://reader038.vdocuments.site/reader038/viewer/2022103021/55d2aa45bb61ebe73a8b459c/html5/thumbnails/2.jpg)
ساختمان داده ها
faradars.org/fvds9402
(direct address)مستقیمجدول آدرس دهی
.شودميتعریفT[0..m-1]صورتبهمستقيمدهيآدرسجدول
.شودميذخيرهT(k)خانهدرkکليدباitemعنصر
.T(2)=30آنگاه،(key[30]=2)باشد،2برابر30عنصرکليداگر:مثال
.استناممكنجدولساختباشد،بزرگبسيارmاگر:مستقيمدهيآدرسمشكل.کنيممياستفادهسازيدرهمجدولازمشكلاینحلبراي
2
m-1210
...30T
فرادرس
FaraDars.org
![Page 3: آموزش ساختمان داده ها - بخش نهم](https://reader038.vdocuments.site/reader038/viewer/2022103021/55d2aa45bb61ebe73a8b459c/html5/thumbnails/3.jpg)
ساختمان داده ها
faradars.org/fvds9402
درهم سازیجدول
T:اندازهبهسازيدرهمجدولm،کهnکردذخيرهآندرتوانميدرراعنصر..شودميذخيرهT(h(k))درایهدرkکليدباitemعنصر
h:سازيدرهمتابع(hash function)
.گرداندميبرm-1و0بينآدرسیکوگرفتهوروديعنوانبهراکليدیکسازدرهمتابعیک
load)بارگذاریضریب facor):
3
m
n
mmodk)k(h
فرادرس
FaraDars.org
![Page 4: آموزش ساختمان داده ها - بخش نهم](https://reader038.vdocuments.site/reader038/viewer/2022103021/55d2aa45bb61ebe73a8b459c/html5/thumbnails/4.jpg)
ساختمان داده ها
faradars.org/fvds9402
مثال
Insert Keys:
0, 25, 36, 49, 64, 81
hash function :
h(k) = k mod 10
4
فرادرس
FaraDars.org
![Page 5: آموزش ساختمان داده ها - بخش نهم](https://reader038.vdocuments.site/reader038/viewer/2022103021/55d2aa45bb61ebe73a8b459c/html5/thumbnails/5.jpg)
ساختمان داده ها
faradars.org/fvds9402
(collision)برخورد
دکليدوازايبه،عبارتيبه.شودنگاشتهخاصدرایهیکبهعنصریکازبيشاستممكنسازي،درهمجدولدر:برخورد.شودتوليدیكسانيآدرسمتفاوت،
.باشدنداشتهبرخوردياصالکهکردانتخابسازيدرهمتابعتواننمي
5
فرادرس
FaraDars.org
![Page 6: آموزش ساختمان داده ها - بخش نهم](https://reader038.vdocuments.site/reader038/viewer/2022103021/55d2aa45bb61ebe73a8b459c/html5/thumbnails/6.jpg)
ساختمان داده ها
faradars.org/fvds9402
روش های حل مشکل برخورد
ایزنجیره روش -1
دهی بازآدرس روش -2. بدانيمقبل از حداکثر تعداد عناصر را :الف(پویادرهم سازي جدول ). ندانيمحداکثر تعداد عناصر را از قبل : ب
6
فرادرس
FaraDars.org
![Page 7: آموزش ساختمان داده ها - بخش نهم](https://reader038.vdocuments.site/reader038/viewer/2022103021/55d2aa45bb61ebe73a8b459c/html5/thumbnails/7.jpg)
ساختمان داده ها
faradars.org/fvds9402
برخوردروش زنجیره ای برای حل
.مي شوندزنجيریكدیگربهتصادفيرکوردهاي،(chaining)ايزنجيرهروشدر.گيرندميقرارT[h(k)]پيونديليستدراستبرابرآنهاh(k)مقدارکهkمختلفکليدهايباعناصر
7
فرادرس
FaraDars.org
![Page 8: آموزش ساختمان داده ها - بخش نهم](https://reader038.vdocuments.site/reader038/viewer/2022103021/55d2aa45bb61ebe73a8b459c/html5/thumbnails/8.jpg)
ساختمان داده ها
faradars.org/fvds9402
مثال
Insert Keys:
0, 1, 4, 9, 16, 25, 36, 49, 64, 81
hash function :
h(k) = k mod 10
8
فرادرس
FaraDars.org
![Page 9: آموزش ساختمان داده ها - بخش نهم](https://reader038.vdocuments.site/reader038/viewer/2022103021/55d2aa45bb61ebe73a8b459c/html5/thumbnails/9.jpg)
ساختمان داده ها
faradars.org/fvds9402
در روش زنجیره ای « جستجو، حذف و درج»زمان اجرای عملیات
: بدترین حالت زمان اجراO(1): درج
. با طول ليست استمتناسب : جستجو
.ردچون اول باید با انجام یک جستجو، عنصر مورد نظر را پيدا ک. متناسب با طول ليست است: حذف
Insert(T,x) : Insert x at the head of list T[h(k)]
Search(T,k) : Search for an element with key k in list T[h(k)]
Delete(T,x) : Delete x from the list T[h(k)]
9
فرادرس
FaraDars.org
![Page 10: آموزش ساختمان داده ها - بخش نهم](https://reader038.vdocuments.site/reader038/viewer/2022103021/55d2aa45bb61ebe73a8b459c/html5/thumbnails/10.jpg)
ساختمان داده ها
faradars.org/fvds9402
برای حل مشکل برخورددهی باز آدرس روش
آندرعنصرmحداکثرکهشودمياستفادهسازيدرهمجدولعنوانبهmاندازهبهآرایهیکاز،بازدهيآدرسدر.شودميذخيرهعنصریکفقطدرایه،هردروگيردميجاي
درجارجادمحلاوليندرتصادفيرکوردوشدهشروعفایلانتهايسمتبهخطيجستجويتصادف،محلازشروعبا.گيردميانجامحلقویروشبهوارسي.مي شود
dynamic)پویاسازيدرهمجدولازیابدانيمقبلازبایدراعناصرتعدادحداکثر hash table)کنيماستفاده.
(برابردویانصفمعموال).شودميزیادیاکمنياز،حسببرآناندازهکهاستجدوليپویا،سازيدرهمجدول
10
فرادرس
FaraDars.org
![Page 11: آموزش ساختمان داده ها - بخش نهم](https://reader038.vdocuments.site/reader038/viewer/2022103021/55d2aa45bb61ebe73a8b459c/html5/thumbnails/11.jpg)
ساختمان داده ها
faradars.org/fvds9402
مثال
:H[0..3]سازيدرهمجدولدر11و10و6و8عناصردرج
4برتقسيمباقيمانده:Hashتابع
11 % 4 = 3 10 % 4 = 2 6 % 4 = 2 8 % 4 = 0
11
0 1 2 3
10 11
0 1 2 3
11
0 1 2 3
6 10 11
0 1 2 3
6 8 10 11
فرادرس
FaraDars.org
![Page 12: آموزش ساختمان داده ها - بخش نهم](https://reader038.vdocuments.site/reader038/viewer/2022103021/55d2aa45bb61ebe73a8b459c/html5/thumbnails/12.jpg)
ساختمان داده ها
faradars.org/fvds9402
مثال
A}درج , C , B , D , E , F , G}سازيدرهمجدولدرH[0..6]
:سازيدرهمتابعخروجي
12
key A B C D E F G
hash 3 5 3 4 5 6 3
0 1 2 3 4 5 6
A
0 1 2 3 4 5 6
A B
0 1 2 3 4 5 6
A C B
0 1 2 3 4 5 6
A C B D
0 1 2 3 4 5 6
E A C B D
0 1 2 3 4 5 6
E F A C B D
0 1 2 3 4 5 6
E F G A C B D
فرادرس
FaraDars.org
![Page 13: آموزش ساختمان داده ها - بخش نهم](https://reader038.vdocuments.site/reader038/viewer/2022103021/55d2aa45bb61ebe73a8b459c/html5/thumbnails/13.jpg)
ساختمان داده ها
faradars.org/fvds9402
مثال
.استشدهنوشتهآنزیردرعناصرازیکهردرجبراي(شودميدرجموجبکههایيوارسيشامل)نيازموردهايوارسيتعداد
.باشدمي20برابرنيزقبوليموردترتيبهردرهاوارسيتعدادمجموع
13
E F G A C B D
3 3 7 1 2 1 فرادرس3
FaraDars.org
![Page 14: آموزش ساختمان داده ها - بخش نهم](https://reader038.vdocuments.site/reader038/viewer/2022103021/55d2aa45bb61ebe73a8b459c/html5/thumbnails/14.jpg)
ساختمان داده ها
faradars.org/fvds9402
درهم سازی پویا
.ندکميتغييرلحظه،هردرحذفودرجاعمالباوباشندنميمشخصقبلازعناصرتعدادکاربردها،بيشتردر
dynamic)پویاسازيدرهمروشدر hashing)شودميزیادوکمنيازحسببرسازيدرهمجدولاندازه.:استانجامقابلنيززیرعملدوساده،حذفودرجبرعالوهجدول،ایندر
14
بهموجودعناصروشودمیبرابردوجدولاندازهواستپرجدولدرج،ازقبلدرج با گسترش
.شودمیدرججدیدجدولدرنظرموردعنصرسپسوشدهمنتقلجدیدجدول
دازهانبنابراین.شودمیکمجدولاندازهبهعناصرتعدادنسبتحذف،ازبعدحذف و فشرده سازی
.شودمیمنتقلجدیدجدولبهموجودعناصرهمهوکردهنصفراجدول
فرادرس
FaraDars.org
![Page 15: آموزش ساختمان داده ها - بخش نهم](https://reader038.vdocuments.site/reader038/viewer/2022103021/55d2aa45bb61ebe73a8b459c/html5/thumbnails/15.jpg)
ساختمان داده ها
faradars.org/fvds9402
مثال
تعداد)کلهزینه.استخاليهمدرایهآنواست1ابتدادرآنياندازهکهبگيریدنظردرراسازيدرهمجدولیک.کنيدمشخصراجدولدرعنصر6درج(جدولدرنوشتنراجدیدعنصرسپسوشدهبرابردوجدولاندازهندارد،جاجدولچون:دومعنصردرج.کنيمميدرجرااولعنصر.کنيمميمنتقلجدیدجدولبهراقبلجدولدرموجودعنصروکردهدرج
منتقلجدیدجدولبه2هزینهباقبليعنصردووشدهبرابردوجدولاندازهندارد،جاجدولچون:سومعنصردرج.شودميدرجنيزجدیدعنصروشده.استموجودجدولدرخاليجايیکچوننيست،جدولاندازهکردنبرابردوبهنيازي:چهارمعنصردرج
جدولبهقبلجدولدرموجودعنصرچهاروشدهبرابردوجدولاندازهندارد،جاجدولچون:پنجمعنصردرج....و.شودميدرجپنجمعنصروشدهمنتقلجدید
15
A A B A B C A B C D EA B C D A B C D E F
فرادرس
FaraDars.org
![Page 16: آموزش ساختمان داده ها - بخش نهم](https://reader038.vdocuments.site/reader038/viewer/2022103021/55d2aa45bb61ebe73a8b459c/html5/thumbnails/16.jpg)
ساختمان داده ها
faradars.org/fvds9402
پاسخ
:جدول
:عددnنوشتنکلهزینه
16
i 1 2 3 4 5 6
اندازه جدول 1 2 4 4 8 8
هزینه 1 1+1 1+2 1 1+4 1
13)421(6
132log
0
nnn
k
k
فرادرس
FaraDars.org
![Page 17: آموزش ساختمان داده ها - بخش نهم](https://reader038.vdocuments.site/reader038/viewer/2022103021/55d2aa45bb61ebe73a8b459c/html5/thumbnails/17.jpg)
ساختمان داده ها
faradars.org/fvds9402
double hashingمثال
17
h(k) k mod 7
d(k) 5 k mod 5Insert keys فرادرس2 , 21 , 8 , 14 :
FaraDars.org
![Page 18: آموزش ساختمان داده ها - بخش نهم](https://reader038.vdocuments.site/reader038/viewer/2022103021/55d2aa45bb61ebe73a8b459c/html5/thumbnails/18.jpg)
ساختمان داده ها
faradars.org/fvds9402مطالب ساختمان داده پيشرفتهمجزاهايمجموعه-1بهينهجويوجستدودویيدرخت-2لگاریتميارتفاعباجووجستدودویيدرخت هاي-3
(AVL، آماريمرتبه،سياه-قرمز)2-3درخت-4(B-tree)بيدرخت-5تحليل سرشكن-6
09121972028: مدرس شيرافكن با مشاوره
18
فرادرس
FaraDars.org
![Page 19: آموزش ساختمان داده ها - بخش نهم](https://reader038.vdocuments.site/reader038/viewer/2022103021/55d2aa45bb61ebe73a8b459c/html5/thumbnails/19.jpg)
ساختمان داده ها
faradars.org/fvds9402
19
این اسالید ها بر مبنای نکات مطرح شده در فرادرس« مجموعه فرادرس های ساختمان داده ها»
.تهیه شده است
.نماییدلینک زیر مراجعه برای کسب اطالعات بیشتر در مورد این آموزش به
faradars.org/fvds9402
فرادرس
FaraDars.org