1 / 16

Lecture 17 Hashing: Algorithm, Collision, Packing (Sections 11.1 – 11.5)

In the Name of God. Lecture 17 Hashing: Algorithm, Collision, Packing (Sections 11.1 – 11.5). Hashing. منظور از Hashing چِيست؟ روش Hashing چگونه است؟ منظور از تلاق ي يا Collision چيست؟ روش هاي کم نمودن تلاقي کدامند؟ انتخاب يک Hash Function چگونه است؟

zacharee
Télécharger la présentation

Lecture 17 Hashing: Algorithm, Collision, Packing (Sections 11.1 – 11.5)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. In the Name of God Lecture 17Hashing:Algorithm, Collision, Packing(Sections 11.1 – 11.5)

  2. Hashing • منظور از Hashing چِيست؟ • روش Hashing چگونه است؟ • منظور از تلاقي يا Collision چيست؟ • روش هاي کم نمودن تلاقيکدامند؟ • انتخاب يک Hash Function چگونه است؟ • بهينه سازي يک Hash Function چگونه است؟ • روشهايrandomizationبرايکليدهاي عدديچگونهاست؟ • پيش بيني احتمال تلاقيچگونه است؟ • منظور از نسبت تراکم (Packing Density) چيست؟ • روش Progressive Overflow چيست؟

  3. Hashing منظور از Hashing چِيست؟ • روشي براي ايجاد ايندکس ميباشد، • که براي يافتنهر کليد به بيش از يک دسترسي به ديسک (I/O)احتياج نخواهيم داشت. روش Hashingدر مقايسه با روش هاي ديگرچگونه است؟ • براي يافتن يک کليد در بين Nکليد: • روش جست و جوي سري==>تابع خطي مستقيم در رابطه با N==> O(N) • روش هاي B-Tree==>تابع لگاريتمي در رابطه با N==>O( logk(N) ) • روش هاي Hashing==>تابع ثابت==> (1)O

  4. Key Address 1 A 2 B 3 4 C 5 D 6 E 7 F 8 9 G 10 Hashing روش Hashing چگونه است؟ • در اين روش تابعي به نام Hash Function تعريف مي شود، • که براي هرمقدارکليد يک آدرس مشخص در فضاي تعيين شده به ما ميدهد.

  5. Record Address 0 key 1 K=LOWELL 2 3 4 LOWELL. . . Address = 4 5 6 LOWELL’s home address h(K) ... ... Hashing مثال :تابع h(k) را در نظر مي گيريم بطوريکه: • کليد kزيرمجموعه اي از مقادير بنام U و • فضايموجود براي 1000کليد رزرو شده باشد. در اينصورت ميتوان نوشت : h : U { 0,1..,999 } فرض کنيم h(k) به صورت زير تعريف شده باشد: h(k) = ( k[0] * k[1]) mod 1000 در اينصورت برای مقدار کليد k = LOWELL خواهيم داشت: h(LOWELL) = (76 * 79) mod 1000 = 4

  6. ASCII Code for First Two Letters Home Address key k[0] * k[1] 66 X 65 = 4,290 290 BALL 66 65 76 X 79 = 6,004 76 79 LOCK 4 84 X 82 = 6,888 84 82 TREE 888 Hashing مثال (ادامه...) : h : U { 0,1..,999 } h(k) = ( k[0] * k[1]) mod 1000 به همين صورت برای مقادير کليد زير خواهيم داشت:

  7. Hashingتلاقي کليدها در روش منظور از تلاقي يا Collision چيست؟ در روش Hashingمعمولا دو خاصيت زير موجود ميباشد: • هيچ رابطه مستقيمي بينمقادير کليدها و محل آنها در فايل وجود ندارد.(randomizing) • دو کليد مختلف ممکن است در يک آدرس قرار بگيرند. (تلاقي يا collision) مثال:مقادير کليد زير را در نظر ميگيريم: h ( LOWELL ) = h ( LOCK ) = h ( OLIVER ) = 4 • اين سه کليد که آدرس (homeaddress) آنها يکي ميباشد synonymsخوانده مي شوند. • در واقع جلوگيري از ايجاد synonym ها يا تلاقي (collision) بسيار دشوار مي باشد.

  8. کم نمودن تلاقي کليدها روش هاي کم نمودن تلاقيکدامند؟ • انتخابيکhash function خوب براي بسط دادن کامل کليدها در فضاي تعريف شده. • انتخاب فضاي بزرگتر (براي پايين آوردن احتمال تلاقي). • امکان حفظ چند کليد در يک آدرس (buckets).

  9. توليد کليد بکمکتابع Hash انتخاب يک Hash Function چگونه است؟ يکHash Functionساده که فقط تابع قسمتي از کليد نباشد: • کل طول کليد را تبديل به يک سري اعداد مي کنيم. • مثلا کد اسکي (Ascii) کاراکترهايآن. • اعداد به دست آمده را به چند دسته تقسيم کرده و با يکديگر جمع مي کنيم. • مثلا هر دو کاراکتر يک دسته را تشکيل مي دهند. • نتيجه به دست آمده را بر فضايتعيين شده تقسيم مي کنيم • که بهتر است يک عدد اول يا prime numberانتخاب شود و • باقيمانده آنرا به عنوان آدرس انتخاب کنيم.

  10. Acceptable Best Worst Record Address Record Address Record Address 1 1 1 A A A 2 2 2 B B B 3 3 3 4 4 4 C C C 5 5 5 D D D 6 6 6 E E E 7 7 7 F F F 8 8 8 9 9 9 G G G 10 10 10 توليد کليد بکمکتابع Hash بهينه سازي يک Hash Function چگونه است؟ • با مطالعه ساختار کليد ميتوان: • يک الگويمناسب براي مراحل 1و 2 در روش قبل پيدا نمود، • که نتيجه آن بهتر از بسط دادن اتفاقي کليدها مي باشد. (Better-than-random) • در غير اين صورت مثلا براي کليدهاي عددي ميتوان از روش هايrandomizationديگري نيز استفاده کرد.

  11. توليد کليد بکمکتابع Hash روشهايrandomizationبرايکليدهاي عدديچگونهاست؟ • روش اول: • کليد را به توان 2 رسانده و • دو يا چند رقم از وسط نتيجه آن را استخراج مي کنيم. مثال: • روشدوم (Radix Transformation): • کليد را در مبناي ديگري مثلا 11 محاسبه کرده • سپس بر بزرگترين آدرس موجود تقسيم مي کنيم و • باقيمانده آن را به عنوان آدرس انتخاب مي کنيم. مثال:

  12. محاسبه احتمال تلاقي کليدها پيش بيني احتمال تلاقيچگونه است؟ • در صورتيکه توزيع کليدها کاملاrandom باشد، • بکمک تابعPoissonميتوان احتمالتلاقي آدرسها را پيش بيني کرد: x: تعداد کليدها در يکآدرس r: تعداد کليدهاي موجود N: تعداد ما کزيمم آدرس که اگر N و r را خيلي بزرگ بگيريم بطور تقريبي داريم:

  13. محاسبه احتمال تلاقي کليدها پيش بيني احتمال تلاقيچگونه است؟ مثال: اگر N= 1000و r=1000 باشد، خواهيم داشت: 368 آدرس بدون کليد 368 آدرس با يک کليد 184 آدرس با دوکليد 61 آدرس با سهکليد

  14. محاسبه احتمال تلاقي کليدها منظور از نسبت تراکم (Packing Density) چيست؟ • نسبتr به N را (يعني r/N) نسبت تراکم يا(Packing Density) مي گويند. • با پايينآوردن نسبت تراکم، احتمال تلاقي نيز کمتر ميشود. مثال:در مثال قبل اگر نسبت تراکم را کمتر کنيم مثلا r= 500و N= 1000 باشند خواهيم داشت: نسبت تراکم: 607آدرس بدون کليد 303آدرس بايک کليد 90آدرس با دو کليد يا بيشتر

  15. 0 1 .... .... Novak. . . Rosen. . . Jasper. . . Morely. . . York … 5 6 7 8 9 Key = York York’shome address (busy) 2nd try (busy) Address 3rd try (busy) = 6 4th try (open) York’sactual address Hash Routine .... .... راه حلي براي تلاقي کليدها روش Progressive Overflow چيست؟ • راه حلي براي مساله تلاقي کليدها ميباشد، • هرگاه آدرس مربوط به يککليد (Homeaddress) بوسيله کليد ديگري اشغال شده باشد، • اولين آدرس آزاد بعداز آن را براي قرار دادن کليد انتخاب ميکنيم. مثال (1) :شکل زير نحوه قرار دادن کليد York را با استفاده از روش فوق نشان ميدهد: (صفحه486 کتاب، شکل (11.4

  16. Search length Home Address 0 1 2 Actual Address Blue… 1 1 2 2 5 20 21 21 22 20 20 21 22 23 24 25 ... Key .... .... Adams. . . Bates. . . Cole. . . Dean. . . Evans. . . = Blue Address = 99 97 98 99 .... ... .... ... Wrappingaround Hash Routine Jello... راه حلي براي تلاقي کليدها (صفحه487 کتاب، شکل (11.5 مثال (2) :شکل زير نحوه قرار دادن کليدBlueرا با استفاده از روش فوق نشان ميدهد: منظور از Searchlengthچيست؟ • تعداد I/O لازم براي يافتن يک کليد ميباشد. • بستگي به فاصله محل قرار گرفتن کليد از آدرس اصلي آن ( Homeaddress ) دارد. مثال (3) :به شکل مقابل توجه کنيد: (صفحه 488 کتاب شکل 11.6(

More Related