hash - ‫ערבול ‪Hashing‬‬ ‫1...

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: ‫ערבול - ‪Hashing‬‬ ‫1. מוטיבציה:‬ ‫דרוש מבנה נתוני התומ בפעולות )‪ delete(x), insert(x), member(x‬עבור ‪n‬‬ ‫אנשי המזוהי ע"י מספרי תעודות הזהות שלה .‬ ‫סיבוכיות דרושה: מקו : )‪ ,O(n‬זמ : )1(‪.O‬‬ ‫ פתרו ע"י מער אינו מתאי בגלל סיבוכיות המקו .‬‫ פתרו ע"י מבנה נתוני דינאמי )רשימה מקושרת, ע חיפוש( אינו מתאי בגלל‬‫סיבוכיות הזמ )‪ (logn‬במקרה הגרוע והממוצע.‬ ‫הגדרת הבעיה:‬ ‫נתו עול של איברי ‪ U‬וקבוצה ‪ K‬בגודל ‪ n‬של ערכי מ- ‪ .U‬ידוע ש- |‪.|K|<<|U‬‬ ‫דרוש מבנה נתוני למימוש יעיל של הפעולות הנ"ל בסיבוכיות מקו )‪.O(n‬‬ ‫1‬ ‫2. הגדרת ערבול‬ ‫נקצה מער ‪) T‬טבלת ערבול( בגודל ‪ m‬כאשר )‪.n=O(m‬‬ ‫})1 − ‪h : U → {0,1,..., (m‬‬ ‫נגדיר פונקצית ערבול‬ ‫פונקציית הערבול תחזיר את מספר התא ב- ‪ T‬בו יש לשמור את ‪. x‬‬ ‫‪x ∈U‬‬ ‫לכל איבר‬ ‫דוגמא:‬ ‫התאי להחזרת תרגילי .‬ ‫‪ – U‬אוס כל מספרי הסטודנט האפשריי‬ ‫001‪h(id ) = id mod‬‬ ‫‪–h‬‬ ‫3. בעיות‬ ‫1( כיצד לבחור פונקצית ערבול?‬ ‫2( מה עושי במקרה של התנגשות )כלומר ) ‪( x ≠ y , h( x) = h( y‬‬ ‫2‬ ‫4. בחירת פונקציית ‪hash‬‬ ‫כדי לאפשר ביצוע הפעולות על המבנה ב- )1(‪ O‬בממוצע, פונקצית הערבול צריכה‬ ‫לקיי את הדרישות הבאות:‬ ‫1( זמ חישוב )1(‪.O‬‬ ‫2( הפונקציה היא על )הטווח של ‪ h‬הוא כל האינדקסי של ‪.(T‬‬ ‫3( פיזור אחיד של המפתחות.‬ ‫נחזור לזה‬ ‫בהמש‬ ‫5. פתרונות להתנגשות‬ ‫1( ‪ – Chain hashing‬כל תא ב- ‪ T‬מצביע על רשימה מקושרת.‬ ‫2( ‪ – Open addressing‬כל הערכי נשמרי במער ‪ ,T‬באחת הדרכי )מההרצאות(:‬ ‫ סריקה ליניארית‬‫ ‪Rehashing‬‬‫ ‪Double hashing‬‬‫3‬ Chain hashing 4 ‫‪Double hashing with open addressing‬‬ ‫בכל תא ב- ‪ T‬נשמור איבר בודד.‬ ‫)‪hk ( x) = h( x) + k ⋅ r ( x‬‬ ‫פונקצית‬ ‫ערבול‬ ‫פונקצית‬ ‫צעד‬ ‫נגדיר סדרה אינסופית של פונקציות:‬ ‫א התא ) ‪ hk ( x‬תפוס, ננסה את ) ‪) hk +1 ( x‬מודולו ‪.(m‬‬ ‫5‬ (Double hashing with open addressing) :‫דוגמא‬ :step -‫ ו‬hash ‫נתונות פונקציות‬ h(x) = x mod 7 r(x) = (x mod 5) +1 ?‫מהו גודל טבלת הערבול‬ :‫נבצע את הפעולות הבאות‬ Insert(20) Insert(13) Insert(17) Delete(13) Delete(17) .1 .2 6 ‫דרישות מפונקציות הערבול והצעד ב- ‪Double hashing‬‬ ‫המטרה: השילוב בי ‪ h‬ל- ‪ r‬יבטיח מעבר על כל התאי במער )"על"(, ופיזור אחיד.‬ ‫7‬ ‫השוואה בי ‪ chain hashing‬ל- ‪open addressing‬‬ ‫‪Open addressing Chain hashing‬‬ ‫‪ m > n‬לתפקוד נכו‬ ‫דרוש ג‬ ‫)‪n=O(m‬‬ ‫הוצאה מרשימה‬ ‫מקושרת או מע .‬ ‫גודל טבלת‬ ‫הערבול ‪m‬‬ ‫טיפול‬ ‫בהוצאות‬ ‫איברי‬ ‫יש לסמ מקומות "פנויי להכנסה‬ ‫ותפוסי לחיפוש", והדבר עלול‬ ‫להעמיס על המבנה.‬ ‫לכ יש לבצע ‪.rehash‬‬ ‫‪ :rehash‬עוברי על כל הטבלה ושומרי את איבריה "בצד".‬ ‫מנקי את הטבלה וממלאי אותה מחדש.‬ ‫) ‪O (m ) + O (n) = O (m ) + O (m ) = O (m‬‬ ‫. ‪w .c‬‬ ‫. ‪a vg‬‬ ‫. ‪w .c‬‬ ‫. ‪a vg‬‬ ‫. ‪a vg‬‬ ‫סיבוכיות:‬ ‫אבל א נבצע ‪ rehash‬פע ב- )‪ O(m‬פעולות ‪,delete‬‬ ‫אז סיבוכיות הזמ המשוערכת לפעולה בודדת תהיה: )1(‪ O‬בממוצע.‬ ‫8‬ ‫לסיכו :‬ ‫• סיבוכיות הפעולות ב- ‪ hashing‬הינה )1(‪ O‬בממוצע, א לא‬ ‫במקרה הגרוע.‬ ‫• בערבול )‪ (hashing‬משתמשי כאשר ידוע שמספר האיברי‬ ‫במבנה קט משמעותית ממרחב האיברי האפשריי .‬ ‫• לפיכ כדי להשתמש בערבול באופ יעיל, צרי לדעת מראש סדר‬ ‫גודל של מספר האיברי שיוכנסו למבנה.‬ ‫• פתרו לבעיה זו: כאשר הטבלה מתמלאת )ב- ‪(open addressing‬‬ ‫או כאשר גור העומס גדול מדי )ב- ‪(chain hashing‬‬ ‫נית להקצות מקו נוס .‬ ‫9‬ ...
View Full Document

This note was uploaded on 03/12/2011 for the course CS 234218 taught by Professor Geiger during the Winter '01 term at Technion.

Ask a homework question - tutors are online