B+ TREE: otsimine, sisestamine ja kustutamine Operamine

โšก Nutikas kokkuvรตte

B+ puu on mitmetasandiline dรผnaamiline indeks, mis salvestab andmeviideid ainult lingitud lehesรตlmedesse, muutes otsingud tรคpseks ja kiireks. See hรตlmab B+ puu reegleid, selle erinevust B-puust ning otsingu-, lisamis- ja kustutamistoiminguid.

  • ๐Ÿƒ Lehtede ladustamine: B+ puu hoiab andmeviiteid ainult lehesรตlmedes, erinevalt B-puust.
  • ๐Ÿ”— Seotud lehed: Kรตik lehesรตlmed on omavahel รผhendatud, seega vajab tรคisulatusega skaneerimine รผhte lineaarset lรคbimist.
  • ๐Ÿ” Otsing: Funktsioon โ€žSearchโ€œ kรคivitab puus binaarotsingu ja tagastab sobiva kirje.
  • โž• Lisa: Kui leht tรคitub, liiguvad pooled selle elementidest uuele lehele ja vanemleht uueneb.
  • โž– Kustuta: Kustutamine eemaldab lehekirje ja laenab vรตi รผhendab รตdesid-vendi tasakaalu sรคilitamiseks.

B+ TREE: otsimine, sisestamine ja kustutamine OperaNรคide

Mis on B+ puu?

A B+ puu kasutatakse peamiselt dรผnaamilise indekseerimise rakendamiseks mitmel tasandil. Vรตrreldes B-puuga salvestab B+ puu andmeviited ainult puu lehesรตlmedesse, mis muudab otsinguprotsessi tรคpsemaks ja kiiremaks.

B+ puu reeglid

Siin on B+ puu olulised reeglid.

  • Lehti kasutatakse andmekirjete salvestamiseks.
  • Kirjed salvestatakse puu sisemistesse sรตlmedesse.
  • Kui sihtvรตtme vรครคrtus on vรคiksem kui sisemise sรตlme vรครคrtus, jรคrgitakse sellest vasakul asuvat pointerit.
  • Kui sihtvรตtme vรครคrtus on suurem vรตi vรตrdne sisemise sรตlme vรครคrtusega, jรคrgitakse sellest paremal asuvat pointerit.
  • Juurel on minimaalselt kaks last.

Miks kasutada B+ puud

B+ puu kasutamise pรตhjused on jรคrgmised:

  • Vรตtmeid kasutatakse peamiselt otsingu hรตlbustamiseks, suunates รตigele lehele.
  • B+ puu kasutab puu suurenemise ja vรคhenemise haldamiseks โ€žtรคiteteguritโ€œ.
  • B+ puude puhul saab arvukalt vรตtmeid hรตlpsasti mรคlulehele paigutada, kuna neil puuduvad sisemiste sรตlmedega seotud andmed. Seetรตttu pรครคseb see kiiresti juurde lehesรตlmes olevatele puuandmetele.
  • Kรตigi elementide tรคielik skaneerimine nรตuab vaid รผhte lineaarset lรคbimist, kuna B+ puu kรตik lehesรตlmed on omavahel seotud.

B+ puu vs. puu B

Siin on peamised erinevused B+ puu ja B puu vahel.

B+ puu B puu
Otsinguklahve saab korrata. Otsinguklahvid ei saa olla รผleliigsed.
Andmed salvestatakse ainult lehtede sรตlmedesse. Andmeid saavad salvestada nii lehe- kui ka sisesรตlmed.
Lehesรตlmele salvestatud andmed muudavad otsingu tรคpsemaks ja kiiremaks. Otsimine on aeglane lehtedel ja sisemistel sรตlmedel talletatud andmete tรตttu.
Kustutamine ei ole keeruline, kuna element eemaldatakse ainult lehesรตlmest. Elementide kustutamine on keeruline ja aeganรตudev protsess.
Lingitud lehtede sรตlmed muudavad otsingu tรตhusaks ja kiireks. Lehtede sรตlmi ei saa linkida.

Otsing Operamine

B+ puus on otsing รผks lihtsamini teostatavaid protseduure ning see annab kiireid ja tรคpseid tulemusi.

Kasutatav on jรคrgmine otsingualgoritm:

  • Vajaliku kirje leidmiseks peate kรคivitama kรคsu binaarotsing puus saadaolevatel kirjetel.
  • Otsinguvรตtmega tรคpse vaste korral tagastatakse vastav kirje kasutajale.
  • Kui tรคpset vรตtit ei leidu otsinguga vanem-, voolu- vรตi lehesรตlmes, kuvatakse kasutajale teade "ei leitud".
  • Paremate ja tรคpsemate tulemuste saamiseks saab otsinguprotsessi uuesti kรคivitada.

Otsing OperaAlgoritm

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

Vรคljund: Tรคpse vรตtmega vastendatud kirje kuvatakse kasutajale; vastasel juhul nรคidatakse kasutajale ebaรตnnestunud katset.

Sisesta Operamine

Sisestamistoimingu jaoks kehtib jรคrgmine algoritm:

  • 50 protsenti sรตlmedes olevatest elementidest viiakse ladustamiseks uuele lehele.
  • Uue lehe vanem lingitakse tรคpselt minimaalse vรตtmevรครคrtuse ja uue asukohaga puus.
  • Jagage emasรตlm mitmeks asukohaks juhuks, kui see tรคielikult รคra kasutatakse.
  • Nรผรผd, paremate tulemuste saavutamiseks, on keskmine vรตti seotud selle lehe kรตrgeima taseme sรตlmega.
  • Kuni tipptaseme sรตlme ei leita, jรคtkake รผlaltoodud sammudes kirjeldatud protsessi kordamist.

Sisesta OperaAlgoritm

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.

Vรคljund: Algoritm mรครคrab elemendi ja sisestab selle edukalt vajalikku lehesรตlme.

Sisesta Operamine

รœlaltoodud B+ puu nรคidisnรคidet selgitatakse jรคrgmiste sammudega.

  • Esiteks on meil 3 sรตlme ja esimesed 3 elementi, mis on 1, 4 ja 6, lisatakse sรตlmede sobivatesse kohtadesse.
  • Andmeseeria jรคrgmine vรครคrtus on 12, mis tuleb lisada puu osaks.
  • Selle saavutamiseks jagage sรตlm ja lisage pointerelemendina 6.
  • Nรผรผd luuakse puu parempoolne hierarhia ja รผlejรครคnud andmevรครคrtusi kohandatakse vastavalt kรคsuga kee.ping pidage meeles paremal asuvate vรตtme-vรครคrtuse sรตlmede suhtes kehtivaid vรตrdsete vรตi suuremate vรครคrtuste reegleid.

kustutama Operamine

Kustutusprotseduuri keerukus B+ puus รผletab sisestamise ja otsingu funktsioonide keerukuse.

B+ puust elemendi kustutamisel on rakendatav jรคrgmine algoritm:

  • Esiteks peame leidma puust lehekirje, mis sisaldab vรตtit ja pointerit, ning seejรคrel kustutama lehekirje puust, kui leht vastab tรคpselt kirje kustutamise tingimustele.
  • Kui lehesรตlm vastab rahuldavale tegurile, mille kohaselt on see vaid pooltรคis, siis toiming on lรตpule viidud; vastasel juhul on lehesรตlmel minimaalne kirjete arv ja seda ei saa kustutada.
  • Teised paremal ja vasakul asuvad lingitud sรตlmed saavad tรผhjendada mis tahes kirjeid ja seejรคrel lehele teisaldada. Kui need kriteeriumid ei ole tรคidetud, peaksid nad lehesรตlme ja sellega lingitud sรตlme puuhierarhias รผhendama.
  • Lehesรตlme รผhendamisel paremal vรตi vasakul asuvate naabritega kustutatakse lehesรตlme vรตi lingitud naabri vรครคrtuste kirjed, mis osutavad tipptaseme sรตlmele.

kustutama Operamine

รœlaltoodud nรคide illustreerib protseduuri elemendi eemaldamiseks kindla jรคrjekorra B+ puust.

  • Esiteks tuvastatakse puus kustutatava elemendi tรคpsed asukohad.
  • Siin saab kustutatavat elementi tรคpselt tuvastada ainult lehe tasandil, mitte indeksi paigutuse jรคrgi. Seega saab elemendi kustutada ilma kustutamisreegleid mรตjutamata, milleks on minimaalse vรตtme vรครคrtus.

kustutama Operamine

  • รœlaltoodud nรคites peame puust kustutama 31.
  • Peame leidma 31 eksemplarid indeksist ja lehest.
  • Nรคeme, et 31 on saadaval nii indeksi- kui ka lehesรตlme tasemel. Seega kustutame selle mรตlemast eksemplarist.
  • Aga me peame tรคitma indeksi, mis osutab 42-le. Nรผรผd vaatleme paremat last alla 25-aastasest ja vรตtame minimaalse vรครคrtuse ning paigutame selle indeksiks. Seega, kuna 42 on ainus olemasolev vรครคrtus, saab sellest indeks.

kustutama OperaAlgoritm

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

Vรคljund: Vรตti โ€žKโ€ kustutatakse ja vajadusel n-i ja selle vanemsรตlmede vรครคrtuste kohandamiseks laenatakse vรตtmed รตdedelt-vendadelt.

KKK

B+ puud indekseerivad suuri tabeleid ja funktsioonisalve, mis toetavad tehisintellekti ja analรผรผtikat. Kuna lehed on lingitud, on vahemiku skaneerimine ridade vรตi manustuste kaudu kiire, vรตimaldades tehisintellekti konveieritel tรตhusalt treeningandmeid hankida, samal ajal kui andmebaas tegeleb indekseerimisega.

Jah. Tehisintellekti assistendid saavad luua B+ Tree koodi, sisestada, otsida ja kustutada. C++, Javavรตi Python lihtsast kirjeldusest. Testi vรคljundit hoolikalt, kuna jagamise ja รผhendamise loogikat on lihtne peenelt eksida.

Jรคrk (m) on sรตlme maksimaalne laste arv. Sรตlm vรตib sisaldada kuni m โˆ’ 1 vรตtit ja sellel peab olema vรคhemalt ceil(m/2) last, mis hoiab puu tasakaalustatud ja pinnapealse.

B+ puud on relatsioonandmebaaside vaikeindeks, nรคiteks MySQL (InnoDB) PostgreSQLja Oracleja failisรผsteemides nagu NTFS ja ext4. Nende lingitud lehed muudavad vahemikupรคringud ja jรคrjestikused lugemised vรคga tรตhusaks.

Vรตta see postitus kokku jรคrgmiselt: