X-fast trie | |||
---|---|---|---|
יצירה | |||
הומצא ב: | 1982 | ||
ממציא: | דן ווילארד | ||
סיבוכיות מקום וזמן | |||
| |||
זיכרון: |
| ||
חיפוש: |
| ||
הכנסה: |
| ||
הוצאה: |
| ||
הצצה: |
|
במדעי המחשב, X-Fast trie הוא מבנה נתונים המאחסן מספרים שלמים מטווח נתון. מבנה הנתונים מתבסס על עצים וטבלאות גיבוב. מבנה הנתונים נחשב מהיר במיוחד מאחר שהוא מאפשר לבצע שאילתות בסיבוכיות זמן ועל ידי שימוש בסיבוכיות מקום של , כאשר n מסמן את מספר הערכים בעץ ו-M את טווח הערכים שהעץ יכול להכיל. על מנת לתת אינטואיציה כמה הפונקציה גדלה לאט, מתקיים . בזמן פרסום המאמר, ווילארד הציג גם מבנה נתונים יעיל יותר בשם Y-fast trie.
Trie הוא מבנה נתונים פשוט הנועד לאחסון מחרוזות. ניתן לראות במספר טבעי כמחרוזת, לפי הייצוג הבינארי שלו. הרעיון יהיה לשמור את הערכים ב-Trie של ביטים.
טבלת גיבוב היא מבנה נתונים המאפשר הכנסה, הוצאה וחיפוש בזמן ממוצע של , וסיבוכיות מקום ליניארית. עבור X-fast trie אנחנו מניחים טבלת גיבוב מושלמת, כלומר, מתעלמים מה-worst case.
X-Fast trie הוא Trie בינארי משורשר בו העלים מחוברים ברשימה מקושרת דו כיוונית, וכל הצמתים בכל שלב מאוחסנים בטבלת גיבוב.
Trie בינארי משורשר הוא עץ בינארי המקיים
למצביעים אלה נקרא חוטים
ב-X-Fast trie נבדיל בין צמתים לעלים. כל הערכים יאוחסנו בעלים, בעוד הצמתים נועדו אך ורק לנווט בתוך העץ. לא נשמור צמתים פנימיים אם אין לאותו צומת צאצאים שהם עלים. בכל דרגה של העץ נשמור טבלת גיבוב בה יש את כל הצמתים של אותה דרגה. על מנת שנוכל להבטיח את זמן הריצה הגרוע של השאילתות, נשתמש בגיבוב דינמי מושלם או בגיבוב קוקייה.
על מנת לבדוק האם מספר (או מפתח) x נמצא בעץ, פשוט נחפש בטבלת הגיבוב של העלים. לכן ניתן לוודא קיום של מפתח בזמן .
בX-fast trie ניתן למצוא עוקב לאיבר x בטווח בזמן .
נחפש את התחילית הארוכה ביותר של x שנמצאת בעץ. אם זה עלה נתקדם לערך הבא. אם זה צומת אזי קיים מצביע לאחד העלים [2]. נעקוב אחרי המצביע הזה, ונחזיר את הערך שהגענו אליו או את זה שאחריו, תלוי בערך של x כמובן.
על מנת שנוכל למצוא את התחילית במהירות, נבצע חיפוש בינארי, כלומר נחפש בטבלת הגיבוב האמצעית את התחילית באורך חצי, אם היא לא קיימת אז נלך לדרגה h/4, ואם היא קיימת נתקדם לדרגה 3h/4. ההמשך כמו חיפוש בינארי רגיל.
על מנת להכניס ערך x, צריכים
הזמן במקרה הגרוע הוא בגלל השלבים הראשון והשלישי.
אלגוריתם זה תומך בזמן הכנסה משוערך של
הכנסה (קלט: x)
באופן מאוד דומה להכנסה, מחיקה לוקחת זמן משוערך של
אנחנו צריכים
.
מבני נתונים | ||
---|---|---|
מבנים מופשטים | רשימה • מחסנית • קבוצה • מולטי קבוצה • תור • דו-תור • תור עדיפויות • מילון • מחרוזת • איחוד קבוצות זרות | |
מימושים ליניאריים | מערך • מערך משונן • טבלת גיבוב • רשימה מקושרת • רשימת דילוגים • חוצץ | |
גרפים ועצים | ערימה (בינארית • בינומית • פיבונאצ'י) • עץ חיפוש (עץ אדום שחור • עץ 2-3 • עץ 2-3-4) • עץ סיפות • עץ B • עץ +B • עץ AVL • עץ Splay • עץ BSP • עץ kd • עץ R • Trie • X-fast trie • טריי y מהיר• עץ WAVL | |
הסתברותיים | מסנן בלום |