19
هان داده ساختماfaradars.org/fvds9402 مدرس: فرشید شیرافکن دانشجوی دکتری تهران نشگاه دا( سی ارشد کارشنا کارشناسی و: م افزار کامپیوتر نر( ) دکتری: نفورماتیک بیو ا) فصل نهم درهم سازی1 ﻓﺮادرسFaraDars.org

آموزش ساختمان داده ها - بخش نهم

Embed Size (px)

Citation preview

Page 1: آموزش ساختمان داده ها - بخش نهم

ساختمان داده ها

faradars.org/fvds9402

:مدرسفرشید شیرافکن

دانشگاه تهران دانشجوی دکتری (بیو انفورماتیک: دکتری( )کامپیوتر نرم افزار: کارشناسی و کارشناسی ارشد )

فصل نهم

درهم سازی

1

فرادرس

FaraDars.org

Page 2: آموزش ساختمان داده ها - بخش نهم

ساختمان داده ها

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: آموزش ساختمان داده ها - بخش نهم

ساختمان داده ها

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: آموزش ساختمان داده ها - بخش نهم

ساختمان داده ها

faradars.org/fvds9402

مثال

Insert Keys:

0, 25, 36, 49, 64, 81

hash function :

h(k) = k mod 10

4

فرادرس

FaraDars.org

Page 5: آموزش ساختمان داده ها - بخش نهم

ساختمان داده ها

faradars.org/fvds9402

(collision)برخورد

دکليدوازايبه،عبارتيبه.شودنگاشتهخاصدرایهیکبهعنصریکازبيشاستممكنسازي،درهمجدولدر:برخورد.شودتوليدیكسانيآدرسمتفاوت،

.باشدنداشتهبرخوردياصالکهکردانتخابسازيدرهمتابعتواننمي

5

فرادرس

FaraDars.org

Page 6: آموزش ساختمان داده ها - بخش نهم

ساختمان داده ها

faradars.org/fvds9402

روش های حل مشکل برخورد

ایزنجیره روش -1

دهی بازآدرس روش -2. بدانيمقبل از حداکثر تعداد عناصر را :الف(پویادرهم سازي جدول ). ندانيمحداکثر تعداد عناصر را از قبل : ب

6

فرادرس

FaraDars.org

Page 7: آموزش ساختمان داده ها - بخش نهم

ساختمان داده ها

faradars.org/fvds9402

برخوردروش زنجیره ای برای حل

.مي شوندزنجيریكدیگربهتصادفيرکوردهاي،(chaining)ايزنجيرهروشدر.گيرندميقرارT[h(k)]پيونديليستدراستبرابرآنهاh(k)مقدارکهkمختلفکليدهايباعناصر

7

فرادرس

FaraDars.org

Page 8: آموزش ساختمان داده ها - بخش نهم

ساختمان داده ها

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: آموزش ساختمان داده ها - بخش نهم

ساختمان داده ها

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: آموزش ساختمان داده ها - بخش نهم

ساختمان داده ها

faradars.org/fvds9402

برای حل مشکل برخورددهی باز آدرس روش

آندرعنصرmحداکثرکهشودمياستفادهسازيدرهمجدولعنوانبهmاندازهبهآرایهیکاز،بازدهيآدرسدر.شودميذخيرهعنصریکفقطدرایه،هردروگيردميجاي

درجارجادمحلاوليندرتصادفيرکوردوشدهشروعفایلانتهايسمتبهخطيجستجويتصادف،محلازشروعبا.گيردميانجامحلقویروشبهوارسي.مي شود

dynamic)پویاسازيدرهمجدولازیابدانيمقبلازبایدراعناصرتعدادحداکثر hash table)کنيماستفاده.

(برابردویانصفمعموال).شودميزیادیاکمنياز،حسببرآناندازهکهاستجدوليپویا،سازيدرهمجدول

10

فرادرس

FaraDars.org

Page 11: آموزش ساختمان داده ها - بخش نهم

ساختمان داده ها

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: آموزش ساختمان داده ها - بخش نهم

ساختمان داده ها

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: آموزش ساختمان داده ها - بخش نهم

ساختمان داده ها

faradars.org/fvds9402

مثال

.استشدهنوشتهآنزیردرعناصرازیکهردرجبراي(شودميدرجموجبکههایيوارسيشامل)نيازموردهايوارسيتعداد

.باشدمي20برابرنيزقبوليموردترتيبهردرهاوارسيتعدادمجموع

13

E F G A C B D

3 3 7 1 2 1 فرادرس3

FaraDars.org

Page 14: آموزش ساختمان داده ها - بخش نهم

ساختمان داده ها

faradars.org/fvds9402

درهم سازی پویا

.ندکميتغييرلحظه،هردرحذفودرجاعمالباوباشندنميمشخصقبلازعناصرتعدادکاربردها،بيشتردر

dynamic)پویاسازيدرهمروشدر hashing)شودميزیادوکمنيازحسببرسازيدرهمجدولاندازه.:استانجامقابلنيززیرعملدوساده،حذفودرجبرعالوهجدول،ایندر

14

بهموجودعناصروشودمیبرابردوجدولاندازهواستپرجدولدرج،ازقبلدرج با گسترش

.شودمیدرججدیدجدولدرنظرموردعنصرسپسوشدهمنتقلجدیدجدول

دازهانبنابراین.شودمیکمجدولاندازهبهعناصرتعدادنسبتحذف،ازبعدحذف و فشرده سازی

.شودمیمنتقلجدیدجدولبهموجودعناصرهمهوکردهنصفراجدول

فرادرس

FaraDars.org

Page 15: آموزش ساختمان داده ها - بخش نهم

ساختمان داده ها

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: آموزش ساختمان داده ها - بخش نهم

ساختمان داده ها

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: آموزش ساختمان داده ها - بخش نهم

ساختمان داده ها

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: آموزش ساختمان داده ها - بخش نهم

ساختمان داده ها

faradars.org/fvds9402مطالب ساختمان داده پيشرفتهمجزاهايمجموعه-1بهينهجويوجستدودویيدرخت-2لگاریتميارتفاعباجووجستدودویيدرخت هاي-3

(AVL، آماريمرتبه،سياه-قرمز)2-3درخت-4(B-tree)بيدرخت-5تحليل سرشكن-6

09121972028: مدرس شيرافكن با مشاوره

18

فرادرس

FaraDars.org

Page 19: آموزش ساختمان داده ها - بخش نهم

ساختمان داده ها

faradars.org/fvds9402

19

این اسالید ها بر مبنای نکات مطرح شده در فرادرس« مجموعه فرادرس های ساختمان داده ها»

.تهیه شده است

.نماییدلینک زیر مراجعه برای کسب اطالعات بیشتر در مورد این آموزش به

faradars.org/fvds9402

فرادرس

FaraDars.org