B+ ДЕРЕВО: Пошук, вставка та видалення Operaвих
⚡ Розумний підсумок
B+ Дерево — це багаторівневий динамічний індекс, який зберігає вказівники даних лише на пов'язаних кінцевих вузлах, що робить пошук точним і швидким. Він охоплює правила B+ Дерева, їх відмінності від B Дерева, а також операції пошуку, вставки та видалення.
Що таке дерево B+?
A B+ Дерево в основному використовується для реалізації динамічного індексування на кількох рівнях. Порівняно з B-деревом, B+ дерево зберігає вказівники даних лише на кінцевих вузлах дерева, що робить процес пошуку точнішим і швидшим.
Правила для B+ Tree
Ось основні правила для B+ дерева.
- Листя використовуються для зберігання записів даних.
- Записи зберігаються у внутрішніх вузлах Дерева.
- Якщо значення цільового ключа менше, ніж значення внутрішнього вузла, то виконується перехід до вказівника ліворуч від нього.
- Якщо значення цільового ключа більше або дорівнює внутрішньому вузлу, то виконується перехід до вказівника праворуч від нього.
- Корінь має мінімум двох дітей.
Навіщо використовувати B+ Tree
Ось причини використання B+ дерева:
- Ключі в основному використовуються для сприяння пошуку, спрямовуючи до потрібного аркуша.
- Дерево B+ використовує «коефіцієнт заповнення» для керування збільшенням та зменшенням дерева.
- У деревах B+ багато ключів можна легко розмістити на сторінці пам’яті, оскільки вони не мають даних, пов’язаних із внутрішніми вузлами. Таким чином, він швидко отримає доступ до даних дерева, які знаходяться на листовому вузлі.
- Для повного сканування всіх елементів потрібен лише один лінійний прохід, оскільки всі кінцеві вузли B+ дерева пов'язані один з одним.
B+ Tree проти B Tree
Ось основні відмінності між B+ деревом та B деревом.
| B+ Дерево | B Дерево |
|---|---|
| Ключі пошуку можна повторювати. | Ключі пошуку не можуть бути зайвими. |
| Дані зберігаються лише на листових вузлах. | Як кінцеві вузли, так і внутрішні вузли можуть зберігати дані. |
| Дані, що зберігаються на листовому вузлі, роблять пошук точнішим і швидшим. | Пошук відбувається повільно через дані, що зберігаються на листі та внутрішніх вузлах. |
| Видалення не є складним, оскільки елемент видаляється лише з кінцевого вузла. | Видалення елементів - складний і трудомісткий процес. |
| Пов’язані листові вузли роблять пошук ефективним і швидким. | Ви не можете зв'язати листові вузли. |
Пошук Operaції
У B+ дереві пошук є однією з найпростіших процедур для виконання, яка дає швидкі та точні результати.
Застосовується наступний алгоритм пошуку:
- Щоб знайти потрібний запис, потрібно виконати двійковий пошук на доступні записи в Дереві.
- У разі точного збігу з ключем пошуку користувачеві повертається відповідний запис.
- Якщо під час пошуку в батьківському, поточному або кінцевому вузлі не знайдено точного ключа, користувачеві відображається повідомлення «не знайдено».
- Процес пошуку можна повторно запустити для кращих і точніших результатів.
Пошук Operaції Алгоритм
1. Call the binary search method on the records in the B+ Tree. 2. If the search parameters match the exact key The accurate result is returned and displayed to the user Else, if the node being searched is the current and the exact key is not found by the algorithm Display the statement "Recordset cannot be found."
вихід: Користувачеві відображається відповідний набір записів із точним ключем; інакше користувачу буде показано невдалу спробу.
Insert Operaції
Для операції вставки застосовний наступний алгоритм:
- 50 відсотків елементів у вузлах переміщуються на новий аркуш для зберігання.
- Батьківський елемент нового листка точно пов'язаний з мінімальним значенням ключа та новим розташуванням у Дереві.
- Розділіть батьківський вузол на кілька місць, якщо він буде повністю використаний.
- Тепер, для кращих результатів, центральний ключ пов'язаний з вузлом верхнього рівня цього листка.
- Доки вузол верхнього рівня не буде знайдено, продовжуйте повторювати процес, описаний у наведених вище кроках.
Insert Operaції Алгоритм
1. If inserting at least 1 entry into the leaf container does not make it full, then add the record. 2. Else, divide the node into more locations to fit more records. a. Assign a new leaf and transfer 50 percent of the node elements to a new placement in the tree. b. The minimum key of the binary tree leaf and its new key address are associated with the top-level node. c. Divide the top-level node if it gets full of keys and addresses. i. Similarly, insert a key in the center of the top-level node in the hierarchy of the Tree. d. Continue to execute the above steps until a top-level node is found that does not need to be divided anymore. 3. Build a new top-level root node of 1 key and 2 indicators.
вихід: Алгоритм визначить елемент і успішно вставить його в необхідний листовий вузол.
Наведений вище приклад дерева B+ Tree пояснюється в наступних кроках:
- По-перше, у нас є 3 вузли, і перші 3 елементи, 1, 4 та 6, додаються у відповідні місця у вузлах.
- Наступне значення в послідовності даних — 12, яке потрібно зробити частиною Дерева.
- Щоб досягти цього, розділіть вузол і додайте 6 як елемент-вказівник.
- Тепер створюється права ієрархія дерева, а решта значень даних відповідно коригуються за допомогою keeping пам’ятайте про відповідні правила щодо значень «дорівнює» або «більше» для вузлів «ключ-значення» праворуч.
видаляти Operaції
Складність процедури видалення в дереві B+ перевершує складність функцій вставки та пошуку.
Під час видалення елемента з дерева B+ застосовується наступний алгоритм:
- По-перше, нам потрібно знайти запис листя в Дереві, який містить ключ і вказівник, а потім видалити запис листя з Дерева, якщо лист відповідає точним умовам видалення запису.
- Якщо кінцевий вузол відповідає задовільному фактору заповнення лише наполовину, операція вважається завершеною; в іншому випадку кінцевий вузол має мінімальну кількість записів і не може бути видалений.
- Інші зв'язані вузли праворуч і ліворуч можуть звільняти будь-які записи, а потім переміщувати їх до листя. Якщо ці критерії не виконуються, тоді вони повинні об'єднати листовий вузол і зв'язаний з ним вузол в ієрархії дерева.
- Після об'єднання кінцевого вузла з його сусідами праворуч або ліворуч, записи значень у кінцевому вузлі або зв'язаному сусідньому вузлі, що вказують на вузол верхнього рівня, видаляються.
Наведений вище приклад ілюструє процедуру видалення елемента з B+ дерева певного порядку.
- По-перше, у дереві визначається точне розташування елемента, який потрібно видалити.
- Тут елемент, який потрібно видалити, можна точно ідентифікувати лише на рівні листа, а не на рівні індексу. Отже, елемент можна видалити, не впливаючи на правила видалення, які є значенням мінімального ключа.
- У наведеному вище прикладі ми повинні видалити 31 з дерева.
- Нам потрібно знайти екземпляри числа 31 в індексі та листі.
- Ми бачимо, що 31 доступний як на рівні індексного, так і на рівні кінцевого вузла. Отже, ми видаляємо його з обох екземплярів.
- Але нам потрібно заповнити індекс, який вказує на 42. Тепер ми розглянемо потрібну дитину віком до 25 років, візьмемо мінімальне значення та розмістимо його як індекс. Отже, оскільки 42 є єдиним наявним значенням, воно стане індексом.
видаляти Operaції Алгоритм
1) Start at the root and go up to the leaf node containing the key K. 2) Find the node n on the path from the root to the leaf node containing K. A. If n is root, remove K a. if root has more than one key, done b. if root has only K i) if any of its child nodes can lend a node Borrow key from the child and adjust child links ii) Otherwise merge the children nodes. It will be a new root c. If n is an internal node, remove K i) If n has at least ceil(m/2) keys, done! ii) If n has less than ceil(m/2) keys, If a sibling can lend a key, Borrow key from the sibling and adjust keys in n and the parent node Adjust child links Else Merge n with its sibling Adjust child links d. If n is a leaf node, remove K i) If n has at least ceil(M/2) elements, done! In case the smallest key is deleted, push up the next key ii) If n has less than ceil(m/2) elements If the sibling can lend a key Borrow key from a sibling and adjust keys in n and its parent node Else Merge n and its sibling Adjust keys in the parent node
вихід: Ключ «K» видаляється, а ключі запозичуються у братів і сестер для коригування значень у n та його батьківських вузлах, якщо це необхідно.




