B+ TREE: Căutare, Inserare și Ștergere Operații

⚡ Rezumat inteligent

Arborele B+ este un index dinamic pe mai multe niveluri care stochează pointeri de date doar la nodurile frunză legate, ceea ce face ca căutările să fie precise și rapide. Acesta acoperă regulile arborelui B+, cum diferă de un arbore B și operațiunile de căutare, inserare și ștergere.

  • 🍃 Depozitarea frunzelor: Un arbore B+ păstrează pointerii de date doar la nodurile frunză, spre deosebire de un arbore B.
  • 🔗 Frunze legate: Toate nodurile frunză sunt legate, deci o scanare completă necesită o singură trecere liniară.
  • 🔍 Căutare: Funcția Search execută o căutare binară în arbore și returnează înregistrarea corespunzătoare.
  • Introduce: Când o frunză se umple, jumătate din elementele sale se mută pe o frunză nouă, iar elementul părinte se actualizează.
  • Șterge: Ștergerea elimină o intrare frunză și împrumută sau fuzionează elemente surori pentru a menține echilibrul.

B+ TREE: Căutare, Inserare și Ștergere OperaExemplu

Ce este un arbore B+?

A B+ Arborele este utilizat în principal pentru implementarea indexării dinamice pe mai multe niveluri. Comparativ cu un arbore B, arborele B+ stochează pointerii de date doar la nodurile frunză ale arborelui, ceea ce face ca procesul de căutare să fie mai precis și mai rapid.

Reguli pentru B+ Tree

Iată câteva reguli esențiale pentru un arbore B+.

  • Frunzele sunt folosite pentru stocarea înregistrărilor de date.
  • Înregistrările sunt stocate în nodurile interne ale arborelui.
  • Dacă valoarea unei chei țintă este mai mică decât nodul intern, atunci este urmărit indicatorul aflat chiar în stânga sa.
  • Dacă valoarea unei chei țintă este mai mare sau egală cu nodul intern, atunci este urmărit indicatorul situat chiar în partea sa dreaptă.
  • Rădăcina are minim doi copii.

De ce să folosiți B+ Tree

Iată motivele pentru utilizarea unui arbore B+:

  • Cheile sunt utilizate în principal pentru a ajuta căutarea prin direcționarea către pagina potrivită.
  • Un arbore B+ folosește un „factor de umplere” pentru a gestiona creșterea și descreșterea unui arbore.
  • În arborii B+, numeroase chei pot fi plasate cu ușurință pe pagina de memorie deoarece nu au datele asociate nodurilor interioare. Prin urmare, va accesa rapid datele arborelui care se află pe nodul frunză.
  • O scanare completă a tuturor elementelor necesită o singură trecere liniară, deoarece toate nodurile frunză ale unui arbore B+ sunt legate între ele.

Arborele B+ vs. Arborele B

Iată principalele diferențe dintre un arbore B+ și un arbore B.

B+ Arborele B Arborele
Tastele de căutare pot fi repetate. Cheile de căutare nu pot fi redundante.
Datele sunt salvate doar pe nodurile frunzelor. Atât nodurile frunză, cât și nodurile interne pot stoca date.
Datele stocate pe nodul frunză fac căutarea mai precisă și mai rapidă. Căutarea este lentă din cauza datelor stocate pe frunză și pe nodurile interne.
Ștergerea nu este dificilă, deoarece un element este eliminat doar dintr-un nod frunză. Ștergerea elementelor este un proces complicat și care necesită timp.
Nodurile de frunze legate fac căutarea eficientă și rapidă. Nu puteți lega nodurile frunzelor.

Căutare OperaTION

Într-un arbore B+, o căutare este una dintre cele mai ușor de executat proceduri și oferă rezultate rapide și precise.

Se aplică următorul algoritm de căutare:

  • Pentru a găsi înregistrarea necesară, trebuie să executați căutare binară pe înregistrările disponibile în Arbore.
  • În cazul unei potriviri exacte cu cheia de căutare, înregistrarea corespunzătoare este returnată utilizatorului.
  • În cazul în care cheia exactă nu este localizată de căutarea în nodul părinte, curent sau frunză, atunci utilizatorului i se afișează un „mesaj negăsit”.
  • Procesul de căutare poate fi reluat pentru rezultate mai bune și mai precise.

Căutare OperaAlgoritmul de țiune

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."

ieșire: Înregistrarea potrivită stabilită cu cheia exactă este afișată utilizatorului; în caz contrar, o încercare eșuată este afișată utilizatorului.

Insera OperaTION

Următorul algoritm este aplicabil pentru operația de inserare:

  • 50 la sută din elementele din noduri sunt mutate într-o nouă frunză pentru depozitare.
  • Părintele noii frunze este legat cu precizie de valoarea minimă a cheii și de o nouă locație în arbore.
  • Împărțiți nodul părinte în mai multe locații în cazul în care este utilizat pe deplin.
  • Acum, pentru rezultate mai bune, cheia centrală este asociată cu nodul de nivel superior al acelei frunze.
  • Până când nodul de nivel superior nu este găsit, continuați să repetați procesul explicat în pașii de mai sus.

Insera OperaAlgoritmul de țiune

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.

ieșire: Algoritmul va determina elementul și îl va introduce cu succes în nodul frunză necesar.

Insera OperaTION

Exemplul de exemplu de arbore B+ de mai sus este explicat în pașii de mai jos:

  • În primul rând, avem 3 noduri, iar primele 3 elemente, 1, 4 și 6, sunt adăugate în locațiile corespunzătoare din noduri.
  • Următoarea valoare din seria de date este 12, care trebuie inclusă în arbore.
  • Pentru a realiza acest lucru, împărțiți nodul și adăugați 6 ca element pointer.
  • Acum, este creată o ierarhie dreaptă a unui arbore, iar valorile datelor rămase sunt ajustate în consecință de către kee.ping țineți cont de regulile aplicabile privind valorile egale sau mai mari decât pentru nodurile cheie-valoare din dreapta.

Șterge OperaTION

Complexitatea procedurii de ștergere din arborele B+ o depășește pe cea a funcționalității de inserare și căutare.

Următorul algoritm este aplicabil la ștergerea unui element din arborele B+:

  • În primul rând, trebuie să localizăm o intrare frunză în arbore care deține cheia și pointerul, apoi să ștergem intrarea frunză din arbore dacă frunza îndeplinește exact condițiile de ștergere a înregistrării.
  • În cazul în care nodul frunză îndeplinește doar factorul satisfăcător de a fi pe jumătate plin, atunci operațiunea este finalizată; în caz contrar, nodul frunză are un număr minim de intrări și nu poate fi șters.
  • Celelalte noduri legate din dreapta și din stânga pot elimina orice intrări și apoi le pot muta în frunză. Dacă aceste criterii nu sunt îndeplinite, atunci ar trebui să combine nodul frunză și nodul său legat în ierarhia arborelui.
  • La fuzionarea unui nod frunză cu vecinii săi din dreapta sau din stânga, intrările de valori din nodul frunză sau din vecinul legat care indică nodul de nivel superior sunt șterse.

Șterge OperaTION

Exemplul de mai sus ilustrează procedura de eliminare a unui element dintr-un arbore B+ de o anumită ordine.

  • În primul rând, locațiile exacte ale elementului de șters sunt identificate în arbore.
  • Aici, elementul care trebuie șters poate fi identificat cu precizie doar la nivel de frunză și nu la plasarea indexului. Prin urmare, elementul poate fi șters fără a afecta regulile de ștergere, care sunt valoarea cheii minime.

Șterge OperaTION

  • În exemplul de mai sus, trebuie să ștergem 31 din Arbore.
  • Trebuie să localizăm instanțele lui 31 în Index și Leaf.
  • Putem vedea că 31 este disponibil atât la nivel de nod Index, cât și la nivel de nod Leaf. Prin urmare, îl ștergem din ambele instanțe.
  • Dar trebuie să completăm indicele care indică 42. Acum vom analiza copilul din dreapta, sub 25 de ani, vom lua valoarea minimă și o vom plasa ca indice. Așadar, 42 fiind singura valoare prezentă, aceasta va deveni indicele.

Șterge OperaAlgoritmul de țiune

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

ieșire: Cheia „K” este ștearsă, iar cheile sunt împrumutate de la frați pentru ajustarea valorilor din n și nodurile sale părinte, dacă este necesar.

Întrebări frecvente

Arborele B+ indexează tabelele mari și depozitele de caracteristici care alimentează inteligența artificială și analiza. Deoarece frunzele sunt legate, scanările de intervale peste rânduri sau încorporări sunt rapide, permițând conductelor de inteligență artificială să extragă eficient datele de antrenament, în timp ce baza de date se ocupă de indexare.

Da. Asistenții AI pot produce inserarea, căutarea și ștergerea codului în B+ Tree. C++, Java, Python dintr-o descriere simplă. Testați cu atenție rezultatul, deoarece logica de divizare și îmbinare poate fi ușor greșită subtil.

Ordinea (m) reprezintă numărul maxim de copii pe care un nod îi poate avea. Un nod poate deține până la m − 1 chei și trebuie să aibă cel puțin ceil(m/2) copii, ceea ce menține arborele echilibrat și superficial.

Arborii B+ sunt indexul implicit în bazele de date relaționale, cum ar fi MySQL (InnoDB), PostgreSQL și Oracleși în sisteme de fișiere precum NTFS și ext4. Frunzele lor legate fac ca interogările de interval și citirile secvențiale să fie foarte eficiente.

Rezumați această postare cu: