עץ B Plus

מתוך ויקיפדיה, האנציקלופדיה החופשית
עץ +B לדוגמה

במדעי המחשב, עץ +B הוא מבנה נתונים שמאפשר שמירת מידע ממוין בצורה המאפשרת גישה מהירה ויעילה אליו (סיבוכיות לוגריתמית לחיפוש, הוספה ומחיקה). הוא בנוי בתור עץ חיפוש שבו המידע כולו נשמר בעלים, והתכונה המאפיינת אותו היא כי כל צומת בעץ מכיל מספר רב יחסית של אינדקסים המשמשים להכוונה, מה שיוצר עץ רחב וקצר. תכונה זו הופכת את העץ ליעיל במקרים בהם הוא גדול מכדי שיאוחסן כולו בזיכרון הראשי - כך ביצוע חיפוש בעץ דורש מספר נמוך יחסית של גישות לזיכרון המשני.

עץ +B, כמו גם עץ B, מיועד לעבודה יעילה במערכות שקוראות וכותבות בלוקים גדולים של מידע. השימוש בו שכיח במסדי נתונים ומערכות קבצים, כדוגמת NTFS.

תיאור פורמלי[עריכת קוד מקור | עריכה]

כל עץ +B מאופיין על ידי דרגה, שמתארת עד כמה הוא רחב. עץ +B מדרגה מוגדר כעץ המקיים את התכונות הבאות:

  1. כל הערכים נמצאים בעלים, וכל העלים באותה רמה של העץ.
  2. לכל צומת פנימי בעץ (פרט אולי לשורש) יש לכל הפחות בנים (אם אי זוגי, מעגלים כלפי מעלה או מטה את ערך המינימום, אך הוא אחיד עבור כל הצמתים בעץ) ולכל היותר בנים.
  3. בשורש העץ לכל הפחות שני בנים ולכל היותר .
  4. צומת פנימי בעל בנים מכיל אינדקסים הממוינים לפי גודלם, ומקיימים שכל הערכים שנמצאים בתת-העץ ה-i של הצומת קטנים מהאינדקס ה-i וגדולים או שווים לאינדקס ה-i-1 בצומת.

לרוב גם מוסיפים לכל בן בעץ מצביע לאחיו הקרוב, כדי להקל על חיפושי טווח.

הוספה ומחיקה מהעץ[עריכת קוד מקור | עריכה]

העובדה שיש לצומת פנימי בין ל- בנים מבטיחה שניתן יהיה לפצל או לאחד צמתים. כאשר לצומת פנימי יש מפתחות ויש להוסיף לו מפתח נוסף, נקבל צומת בעל בנים שאינו חוקי, לכן נפצל את הצומת לשני צמתים בעלי מפתחות. הראשון יכיל את המפתחות עם הערכים הנמוכים, השני יכיל את המפתחות עם הערכים הגבוהים ואת המפתח האמצעי נעביר לאבא של הצומת. לכל אחד משני הצמתים שנוצרו מהחלוקה יש את מספר המפתחות המינימלי החוקי.

בצורה דומה אם לשני צמתים פנימיים יש מפתחות ניתן למחוק מפתח מאחד מהם על ידי איחוד שניהם לצומת חדש. מחיקת המפתח הופכת את הצומת לבעל מפתחות. איחוד הצומת עם שכנו מוסיף מפתחות ומפתח אחד נוסף מועבר מהאב של הצומת השכן. התוצאה היא צומת חדש בעל מפתחות.


קישורים חיצוניים[עריכת קוד מקור | עריכה]

ויקישיתוף מדיה וקבצים בנושא עץ B Plus בוויקישיתוף