Click here to download (Persian)
Download
Report
Transcript Click here to download (Persian)
In the Name of God
Lecture 20
Dynamic Hashing, Linear Hashing
(Section 12.5 – 12.6)
File Structure
Dr. M. Rahgozar
روش Hashingقابل توسعه
انواع روشهاي ديگر Hashingکدامند؟
(ادامه)...
روش Hashingبا فضاي پويا ( )Dynamicچيست؟
روش Hashingبا توسعه خطي ( )Linearچيست؟
روشهاي Hashingدرمقايسه با يکديگر چگونه اند؟
در روشهاي Hashingامکان کنترل Splittingچگونه است؟
Dr. M. Rahgozar
20-2
File Structure
روش Hashingبا فضاي پويا
روش Hashingبا فضاي پويا ( )Dynamicچيست؟
روش ديگري از Hashingبا فضاي متغير ميباشد که شباهتهاي زيادي با روش قبلي دارد:
هر دو روش از يک Directoryبراي نگهداري آدرس Bucketها استفاده ميکنند.
هر دو روش از ساختار Trieبراي بسط دادن فضاي Directoryاستفاده مينمايند.
تفاوت عمده اين روش اينست که:
براي شروع کار مانند روشهاي کالسيک Hashingاز يک تابع Hashبراي آدرس دهي
در يک فضاي ثابت ) (Fixed Sizeاستفاده مينمايد.
هنگاميکه دراثر افزايش تعداد کليدها نيازبه Splittingدر Bucketها ميشود ،درختواره
هايي با ساختار Trieکه ريشه آنها در همان فضاي ثابت اوليه قرار دارد شروع به رشد
مينمايند.
Dr. M. Rahgozar
20-3
File Structure
روش Hashingبا فضاي پويا
مثال:
شکل زير نمونه اي از يک ساختاراوليه Hashingبا فضاي پويا را نشان ميدهد.
در اين ساختار چهار Bucketبه چهار آدرس موجود در فضاي Directoryمرتبط
شده اند.
Original
address
space
4
2
3
1
)(a
(شکل 12.23صفحه 552کتاب)
Prof. Hyoung-Joo Kim, Comp Eng, Seoul National Univ.
Dr. M. Rahgozar
20-4
File Structure
روش Hashingبا فضاي پويا
مثال( :ادامه)...
شکل زير نمونه اي از يک مرحله رشد در يک ساختار Hashingبا فضاي پويا را نشان ميدهد.
در اين مرحله Bucket ،مرتبط با آدرس 4به دو Bucketجديد تقسيم شده است.
اين نود به دو نود جديد 40و 41که فرزندان آن ميباشند مرتبط شده است.
نود 4يک نود Internalمحسوب شده ودارای آدرس يک Bucketنخواهد بود.
دو نود جديد 40و 41نودهای Externalمحسوب شده ودارای آدرس دو Bucketخواهند بود.
Original
address
space
4
41
2
3
1
40
)(b
(شکل 12.23صفحه 552کتاب)
Prof. Hyoung-Joo Kim, Comp Eng, Seoul National Univ.
Dr. M. Rahgozar
20-5
File Structure
روش Hashingبا فضاي پويا
مثال( :ادامه)...
شکل زير نمونه اي از يک مرحله ديگر رشد در يک ساختار Hashingبا فضاي پويا را
نشان ميدهد.
دراين مرحله اتفاقي مشابه با مرحله قبل در مورد آدرس 2و نيز آدرس 41رخ داده است.
نودهاي جديد 20و 21در رابطه با نود 2ايجاد شده اند.
همچنين ،نودهاي 410و 411در رابطه با نود 41ايجاد شده اند.
Original
address
space
4
3
2
40
41
1
21
)(c
20
(شکل 12.23صفحه 552کتاب)
411
410
Prof. Hyoung-Joo Kim, Comp Eng, Seoul National Univ.
Dr. M. Rahgozar
20-6
File Structure
روش Hashingبا فضاي پويا
اين روش در مقايسه با روش قبلي ( ) Extendible Hashingچگونه است؟
با وجود اينکه هر دو روش از ساختار Trieبراي بسط دادن فضاي Hashاستفاده مينمايند،
يک تفاوت مهم بين آنها اينست که در روش قبل ساختار Trieبه يک Binary Treeکامل
و سپس به يک Arrayتبديل ميشود،
در صورتيکه دراين روش ساختار Trieبصورت درختواره يا Linked Structure
استفاده ميگردد.
يک تفاوت اساسي نيز اينست که رشد فضاي Directoryدراين روش آهسته تر و بتدريج
صورت ميپذيرد.
Original
address
space
4
40
41
411
3
1
2
21
)(c
A
20
01
410
B
C
Dr. M. Rahgozar
00
20-7
10
11
File Structure
روش Hashingبا فضاي پويا
اين روش در مقايسه با روش قبلي چگونه است؟ (ادامه)...
از نظر تعداد دسترسي به ديسک ،روش قبل اين مزيت را دارد که بيش از حداکثر دو
دسترسي به ديسک نميتواند داشته باشد.
درصورتيکه در اين روش تعداد دسترسي به ديسک ميتواند بيشتر نيز بشود ،که به دليل
استفاده از Linked Structureدر اين روش ميباشد.
درصورتيکه درروش قبل فضاي Directoryدر هرمرحله رشد دو برابر ميگردد.
البته در روش قبل اندازه هر نود Directoryمي تواند نصف اندازه نودهاي
Directoryدر اين روش باشد زيرا نياز به نگهداشتن Pointerدر آنها نميباشد.
Original
address
space
4
40
41
411
3
1
2
21
)(c
A
20
01
410
B
C
Dr. M. Rahgozar
00
20-8
10
11
File Structure
روش Hashingبا توسعه خطي
روش Hashingبا توسعه خطي ( )Linearچيست؟
روش ديگري از Hashingبا فضاي متغير است که با دو روش قبل کامال متفاوت ميباشد،
بجز در يک مورد که استفاده از بيتهاي Prefixبراي تعيين Bucketها ميباشد.
در اين روش از ساختار Trieو يا يک Directoryجهت آدرس دهي به Bucketها
استفاده نميشود.
فضاي رزرو شده بجاي Directoryبراي خود Bucketها استفاده ميگردد.
و بيتهاي Prefixکليد Hashمستقيما براي انتخاب Bucketمورد نظر در اين فضا
بکار ميرود.
Dr. M. Rahgozar
20-9
File Structure
روش Hashingبا توسعه خطي
الگوريتم Hashingبا توسعه خطي چگونه است؟
در اين الگوريتم ،يک مکانيسم رشد تدريجي فضاي Hashبصورت زير تامين ميگردد:
هر گاه يک eventکه معموال سرريز شدن يکي از Bucketها ميباشد رخ دهد يک Bucket
جديد به فضاي Hashاضافه ميگردد.
اين Bucketجديد لزومي ندارد که براي تعديل کليدها در Bucketسرريز شده استفاده گردد.
بلکه بصورت نوبتي براي تعديل کليدها در يکي از Bucketها که بوسيله اشاره گری موسوم به
” “Next Bucket to Extendمشخص ميشود استفاده ميگردد.
براي تعديل کليدها بين Bucketبسط يافته و Bucketجديد يک بيت به تعداد بيتهاي Prefix
اضافه ميگردد و کليدها بين دو Bucketتوزيع ميشوند.
درصورتيکه Bucketسرريز همان Bucketبسط يافته نباشد ،بايستي يک Bucketجديد
ديگر نيز به Bucketسرريز شده متصل گردد تا کليدهاي اضافي در آن قرار گيرند.
Dr. M. Rahgozar
20-10
File Structure
روش Hashingبا توسعه خطي
مثال:
شکل زير نمونه اي از يک ساختاراوليه Hashingبا توسعه خطي را نشان ميدهد.
در اين شکل ،چهار Bucketبراي قرار دادن کليدها رزرو شده اند.
با استفاده از دو بيت اول کليد Hashيکي از چهار Bucketانتخاب ميشود.
d
c
b
a
11
10
01
00
(شکل 12.24در صفحه 554کتاب)
)(a
Prof. Hyoung-Joo Kim, Comp Eng, Seoul National Univ.
Dr. M. Rahgozar
20-11
File Structure
روش Hashingبا توسعه خطي
مثال (ادامه:)...
شکل زير نمونه اي از يک مرحله رشد در يک ساختار Hashingبا توسعه خطي را نشان
ميدهد.
در اين مرحله Bucketدوم يعني ’ ‘bسرريز شده است.
ولي اشاره گر ” “Next Bucket to Extendبه Bucketاول يعني ’ ‘aاشاره مينمايد.
بنابراين فضاي جديد ’ ‘Aبراي تعديل کليدها در ’ ‘aاستفاده ميشود.
و يک Bucketديگر نيز ’ ‘Wبراي قرار دادن کليدهاي سرريز شده از ’ ‘bبه آن متصل
ميگردد.
w
A
d
c
b
a
100
11
10
01
000
(شکل 12.24در صفحه 554کتاب)
)(b
Dr. M. Rahgozar
Prof. Hyoung-Joo Kim, Comp Eng, Seoul National Univ.
20-12
File Structure
روش Hashingبا توسعه خطي
(c):
x
مثال (ادامه:)...
شکلهاي ) (d) ،(cو ) (eنمونه هاي
ديگري از مراحل رشد تدريجي فضاي
Hashرا نشان ميدهند.
B
101
A
d
100
11
روند ذکرشده درمرحله ( )bدر اين
مراحل نيز بطور مشابه ادامه مييابد.
c
10
b
a
01
00
y
(d):
x
):(e
x
C
B
A
110
101
100
D
C
B
A
d
c
b
a
111
110
101
100
11
10
01
00
Dr. M. Rahgozar
Prof. Hyoung-Joo Kim, Comp Eng, Seoul National Univ.
20-13
d
11
c
b
a
10
01
00
(شکل 12.24در صفحه 554کتاب)
File Structure
روش Hashingبا توسعه خطي
اين روش در مقايسه با دو روش قبلي
چگونه است؟
00
A
01
10
B
در اين روش به دليل حذف Directoryفقط
يک دسترسي به ديسک براي خواندن
Bucketمورد نظر کافي ميباشد.
11
C
Original
address
space
3
4
411
2
40
41
1
21
20
410
رشد فضاي Hashآهسته تر و بسيار کمتر از
روش Extendible Hashingميباشد.
y
بدليل رشد تدريجي و دائم فضاي Hashتعداد
Bucketهاي سرريز شده نسبتا پايين بوده و
تعداد متوسط I/Oبراي يافتن يک کليد
نزديک به يک ميماند و از روش Dynamic
Hashingبهتر است.
Dr. M. Rahgozar
20-14
x
C
B
A
d
c
b
a
110
101
100
11
10
01
00
File Structure
روشهاي کنترل Splitting
در روشهاي Hashingامکان کنترل Splittingچگونه است؟
همانطور که در ساختارهاي B-Treeاز روش redistributionبراي به تاخير
انداختن اعمال حذف و اضافه نودها استفاده مي شد،
اينجا نيز با استفاده از Bucketهاي Overflowمثال در روش Extendible
( Hashingمانند روش )Linear Hashingميتوان از رشد ناگهاني فضاي Hash
اجتناب نمود.
در اينصورت تصميم گيري در مورد زمان زياد نمودن فضاي Hashميتواند بر حسب
پارامترهايي مانند درصد تراکم کليدها در فضاي رزرو شده (مثال %75يا )%85يا
تعداد متوسط I/Oبراي يافتن کليد (مثال )2باشد.
Dr. M. Rahgozar
20-15
File Structure