B+ ДЕРЕВО: Пошук, вставка та видалення Operaвих

⚡ Розумний підсумок

B+ Дерево — це багаторівневий динамічний індекс, який зберігає вказівники даних лише на пов'язаних кінцевих вузлах, що робить пошук точним і швидким. Він охоплює правила B+ Дерева, їх відмінності від B Дерева, а також операції пошуку, вставки та видалення.

  • 🍃 Зберігання листя: B+ Дерево зберігає вказівники даних лише на кінцевих вузлах, на відміну від B Дерева.
  • 🔗 З'єднані листки: Усі кінцеві вузли пов'язані, тому для повного сканування потрібен один лінійний прохід.
  • 🔍 Пошук: Пошук виконує бінарний пошук по дереву та повертає відповідний запис.
  • Вставити: Коли листок заповнюється, половина його елементів переміщується на новий листок, а батьківський елемент оновлюється.
  • Видалити: Видалення видаляє листовий запис та запозичує або об'єднує братерські елементи для збереження балансу.

B+ ДЕРЕВО: Пошук, вставка та видалення OperaПриклад

Що таке дерево 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.

вихід: Алгоритм визначить елемент і успішно вставить його в необхідний листовий вузол.

Insert Operaції

Наведений вище приклад дерева B+ Tree пояснюється в наступних кроках:

  • По-перше, у нас є 3 вузли, і перші 3 елементи, 1, 4 та 6, додаються у відповідні місця у вузлах.
  • Наступне значення в послідовності даних — 12, яке потрібно зробити частиною Дерева.
  • Щоб досягти цього, розділіть вузол і додайте 6 як елемент-вказівник.
  • Тепер створюється права ієрархія дерева, а решта значень даних відповідно коригуються за допомогою keeping пам’ятайте про відповідні правила щодо значень «дорівнює» або «більше» для вузлів «ключ-значення» праворуч.

видаляти Operaції

Складність процедури видалення в дереві B+ перевершує складність функцій вставки та пошуку.

Під час видалення елемента з дерева B+ застосовується наступний алгоритм:

  • По-перше, нам потрібно знайти запис листя в Дереві, який містить ключ і вказівник, а потім видалити запис листя з Дерева, якщо лист відповідає точним умовам видалення запису.
  • Якщо кінцевий вузол відповідає задовільному фактору заповнення лише наполовину, операція вважається завершеною; в іншому випадку кінцевий вузол має мінімальну кількість записів і не може бути видалений.
  • Інші зв'язані вузли праворуч і ліворуч можуть звільняти будь-які записи, а потім переміщувати їх до листя. Якщо ці критерії не виконуються, тоді вони повинні об'єднати листовий вузол і зв'язаний з ним вузол в ієрархії дерева.
  • Після об'єднання кінцевого вузла з його сусідами праворуч або ліворуч, записи значень у кінцевому вузлі або зв'язаному сусідньому вузлі, що вказують на вузол верхнього рівня, видаляються.

видаляти Operaції

Наведений вище приклад ілюструє процедуру видалення елемента з B+ дерева певного порядку.

  • По-перше, у дереві визначається точне розташування елемента, який потрібно видалити.
  • Тут елемент, який потрібно видалити, можна точно ідентифікувати лише на рівні листа, а не на рівні індексу. Отже, елемент можна видалити, не впливаючи на правила видалення, які є значенням мінімального ключа.

видаляти Operaції

  • У наведеному вище прикладі ми повинні видалити 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 та його батьківських вузлах, якщо це необхідно.

Поширені запитання

B+ Дерева індексують великі таблиці та сховища ознак, що забезпечують роботу штучного інтелекту та аналітики. Оскільки листки пов'язані, сканування діапазонів по рядках або вбудовуваннях відбувається швидко, що дозволяє конвеєрам штучного інтелекту ефективно витягувати навчальні дані, поки база даних обробляє індексацію.

Так. Помічники штучного інтелекту можуть створювати код для вставки, пошуку та видалення B+ Tree у C++, Javaабо Python з простого опису. Ретельно перевірте результат, оскільки логіку розділення та об'єднання легко ледь помітно помилити.

Порядок (m) – це максимальна кількість дочірніх вузлів, яких може мати вузол. Вузол може містити до m − 1 ключів і повинен мати щонайменше ceil(m/2) дочірніх вузлів, що забезпечує балансування та неглибокість дерева.

B+ Дерева є індексом за замовчуванням у реляційних базах даних, таких як MySQL (InnoDB), PostgreSQL та Oracle, а також у файлових системах, таких як NTFS та ext4. Їхні зв'язані листи роблять запити діапазону та послідовне читання дуже ефективними.

Підсумуйте цей пост за допомогою: