טבלת גיבוב – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
הרחבה
שורה 6:
טבלת הגיבוב מורכבת ממערך, והתאים שבו מפנים לרשומה הרצויה. כדי להגיע אל התא הרצוי נעשה שימוש בפונקציה שנקראת '''פונקציית גיבוב''' או פונקציית ערבול. הפונקציה מקבלת את המפתח של הרשומה ומחזירה את מספר התא שמפנה אל הרשומה אם היא קיימת. הפונקציה משמשת לחיפוש רשומה רצויה, מציאת מקום מתאים עבור הכנסה של רשומה חדשה, ומציאת המקום של רשומה שצריך למחוק.
 
כדוגמה לטבלת גיבוב פשוטה נוכל לקחת מפעל קטן שבו רוצים לשמור רשומות המכילות את פרטי העובדים והגישה לרשומות תהיה לפי מספר עובד בן 3 ספרות. כדי לבנות טבלת גיבוב מתאימה, נוכל להשתמש במערך בעל אלף תאים ונבחר פונקציית גיבוב פשוטה שעבור כל מספר עובד, מחזירה את המספר עצמו (<math>\[[פונקציית f(x)=x</math>הזהות]]) ולמעשה מצביעה על כך שאת המידע על העובד שמספרו X נוכל להשיג בתא מספר X. בדוגמה הזאת ביצענו '''מיעון ישיר''' - השתמשנו ב[[פונקציה חד-חד-ערכית]], כלומר, לא קיים יותר ממספר עובד אחד שיופנה לתא מסוים.
 
== פתרון בעיית ההתנגשות ==
פעמים רבות לא ניתן להשתמש להשתמש בפונקציה כזאתחד-חד-ערכית, למשל, אם היינו רוצים לגשת לרשומות העובדיםעובדים בעזרת מספר תעודת הזהות שלהם ושימוש באותה[[פונקציית פונקציההזהות|בפונקציית הזהות]], אז היינו צריכים להקצות מערך של מיליארד(!) תאים כדי שיתאים לטווח של הפונקציה. הבעיה נוצרת כאשר מספר המפתחות האפשריים, גדול בהרבה מאשר מספר הרשומות שיהיו בטבלת הגיבוב . כדי להתמודד עם הבעיה משתמשים גם בפונקציות שאינן חד-חד-ערכיות, מה שיאפשר שימוש במערך קטן יותר אך יגרור בעיה נוספת של '''התנגשויות''', כלומר, הפונקציה מחזירה עבור הרשומה, מספר תא שמתאים גם לרשומה אחרת.
 
עבור טבלת גיבוב היאהמכילה [[טבלה]]מערך המכילהעם B תאים. קיימים שני סוגים עיקריים לטבלת הגיבוב הפשוטה (פרט למגוון של [[מבנה נתונים|מבנילפתרון נתונים]]בעיית הנגזריםההתנגשות ממנה):שנקראים טבלה פתוחה וטבלה סגורה.
== פתרון בעיית ההתנגשות ==
טבלת גיבוב היא [[טבלה]] המכילה B תאים. קיימים שני סוגים עיקריים לטבלת הגיבוב הפשוטה (פרט למגוון של [[מבנה נתונים|מבני נתונים]] הנגזרים ממנה): טבלה פתוחה וטבלה סגורה.
 
'''טבלה פתוחה''' מסתמכת על כך שבמקרה הנדיר בו [[פונקציית גיבוב|פונקציית הגיבוב]] כושלת ושולחת נתון חדש לתא מאוכלס, תבדוק הטבלה את זמינותו של התא הבא, וכך שוב ושוב עד שימצא מקום פנוי בטבלה. היתרון הוא בניצול מקסימלי של המקום, כאשר מספר האיברים המקסימלי הוא B.