1 / 15

Stergerea Cheilor Din Arbori B

Stergerea Cheilor Din Arbori B. Stergerea efectiva a unei chei existente dintr-un arbore B se face intotdeauna dintr-o pagina terminala Fie arborele B de ordinul 2 din figura

apollo
Download Presentation

Stergerea Cheilor Din Arbori B

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Stergerea Cheilor Din Arbori B • Stergerea efectiva a unei chei existente dintr-un arbore B se face intotdeauna dintr-o pagina terminala • Fie arborele B de ordinul 2 din figura • Fiind de ordinul 2, inseamna ca fiecare pagina trebuie sa contina intre 2 si 4 chei, cu exceptia eventual, a paginii radacina • Presupunem ca dorim sa stergem cheia 3 19 - - - 8 14 - - 26 32 - - 10 12 13 - 16 17 18 - 22 24 - - 28 31 - - 37 39 42 46 2 3 5 - Stergerea Cheilor Din Arbori B

  2. Stergerea Cheilor Din Arbori B 19 - - - • Initial cheia 3 trebuie cautata • Cum 3 < 19 si 3 < 8, se urmeaza drumul reprezentat prin sageti ingrosate si se ajunge intr-o pagina care contine cheia 3 • Pagina la care am ajuns este terminala si contine 3 chei (2, 3 si 5) • Fiind vorba de o pagina terminala, stergerea se opereaza simplu • Atentie!!! Dupa stergere, tabloul trebuie sa ramana ordonat, deci cheia 5 se va muta o pozitie la stanga si pagina va ramane cu 2 chei 8 14 - - 26 32 - - 10 12 13 - 16 17 18 - 22 24 - - 28 31 - - 37 39 42 46 2 3 5 - Stergerea Cheilor Din Arbori B

  3. Stergerea Cheilor Din Arbori B • Rezultatul stergerii este: • Cum arborele B este de ordinul 2 si pagina din care am eliminat cheia 3 a ramas cu 2 chei, ea este o pagina valida, deci ne oprim aici • Presupunem ca dorim sa stergem cheia 19 19 - - - 8 14 - - 26 32 - - 10 12 13 - 16 17 18 - 22 24 - - 28 31 - - 37 39 42 46 2 5 - - Stergerea Cheilor Din Arbori B

  4. Stergerea Cheilor Din Arbori B 19 - - - • Se cauta cheia 19 si se gaseste intr-o pagina neterminala • Fiind intr-o pagina neterminala, cheia 19 va fi inlocuita cu cea mai mare cheie din subarborele sau stang sau cu cea mai mica cheie din subarborele sau drept (ca in cazul arborilor binari ordonati) • De exemplu, cautam cea mai mare cheie din subarborele stang al lui 19 – plecand de la 19, urmam sageata din stanga si apoi inaintam tot pe cea mai din dreapta sageata pana ajungem la o pagina terminala, din care alegem cea mai mare cheie • Drumul urmat este reprezentat in figura prin sageti ingrosate si cheia gasita este cheia 18 8 14 - - 26 32 - - 10 12 13 - 16 17 18 - 22 24 - - 28 31 - - 37 39 42 46 2 5 - - Stergerea Cheilor Din Arbori B

  5. Stergerea Cheilor Din Arbori B • Se inlocuieste cheia de sters (19) cu cheia gasita (18) si apoi se incearca stergerea cheii 18 din pagina terminala • Deoarece 18 se afla intr-o pagina terminala, stergerea se face in acelasi mod in care am sters cheia 3 mai devreme • Presupunem ca dorim sa stergem cheia 18 18 - - - 8 14 - - 26 32 - - 10 12 13 - 16 17 - - 22 24 - - 28 31 - - 37 39 42 46 2 5 - - de aici am sters cheia 18 Stergerea Cheilor Din Arbori B

  6. Stergerea Cheilor Din Arbori B 18 - - - • La fel ca anterior, gasim cheia 18 chiar in radacina • O vom inlocui cu cea mai mare cheie din subarborele stang – aceasta este cheia 17 • Cheia 17 din pagina terminala trebuie eliminata • Apare o problema, deoarece prin eliminarea lui 17 din pagina terminala, aceasta va ramane cu o singura cheie (toate paginile cu exceptia radacinii trebuie sa contina cel putin 2 chei) • Aceasta situatie se numeste subdepasire 8 14 - - 26 32 - - 10 12 13 - 16 17 - - 22 24 - - 28 31 - - 37 39 42 46 2 5 - - Stergerea Cheilor Din Arbori B

  7. Stergerea Cheilor Din Arbori B 17 - - - • Situatia se rezolva prin imprumut de la o pagina alaturata sau prin contopire cu o pagina alaturata – imprumutul va fi intotdeauna preferat contopirii • In cazul nostru, pagina cu subdepasire (incercuita cu o elipsa rosie) are o singura pagina alaturata (in mod normal, poate avea maxim doua pagini alaturate) • Pagina alaturata celei cu subdepasire are chei suficiente pentru a putea imprumuta una, deci in acest caz, subdepasirea se rezolva prin imprumut • Imprumutul se realizeaza “prin” pagina parinte • Cheia din pagina parinte care este comuna celor 2 pagini alaturate este 14 • Cheia 14 din pagina parinte coboara in pagina cu subdepasire si in locul cheii 14 in pagina parinte urca cheia 13 (singura care nu strica criteriul de ordonare) 8 14 - - 26 32 - - 10 12 13 - 16 - - - 22 24 - - 28 31 - - 37 39 42 46 2 5 - - Stergerea Cheilor Din Arbori B

  8. Stergerea Cheilor Din Arbori B 17 - - - • In acest fel, prin imprumutul unei chei, cele 2 pagini alaturate si-au echilibrat numarul de chei, fiind acum amandoua pagini valide • Imprumutul nu putea fi executat direct deoarece acest lucru ar fi imputat asupra criteriului de ordonare al arborelui B in zona celor 2 pagini • Presupunem ca dorim sa stergem cheia 17 8 13 - - 26 32 - - 10 12 - - 14 16 - - 22 24 - - 28 31 - - 37 39 42 46 2 5 - - Stergerea Cheilor Din Arbori B

  9. Stergerea Cheilor Din Arbori B 17 - - - • La fel ca in cazurile anterioare, gasim cheia 17 chiar in radacina • O vom inlocui cu cea mai mare cheie din subarborele stang – aceasta este cheia 16 • Cheia 16 din pagina terminala trebuie eliminata • Apare o problema, deoarece prin eliminarea lui 16 din pagina terminala, aceasta va ramane cu o singura cheie (toate paginile cu exceptia radacinii trebuie sa contina cel putin 2 chei) • A aparut o noua subdepasire 8 13 - - 26 32 - - 10 12 - - 14 16 - - 22 24 - - 28 31 - - 37 39 42 46 2 5 - - Stergerea Cheilor Din Arbori B

  10. Stergerea Cheilor Din Arbori B 16 - - - • Nu se mai poate pune problema imprumutului de la o pagina alaturata, deoarece singura pagina alaturata paginii cu subdepasire nu-si permite sa imprumute chei, fiind si ea la limita • Situatia se rezolva prin a doua metoda amintita anterior, anume metoda contopirii cu o pagina alaturata • Aceasta metoda se aplica, de regula, doar in situatia in care pagina cu subdepasire nu are nici o pagina alaturata de la care sa poata imprumuta chei 8 13 - - 26 32 - - 10 12 - - 14 - - - 22 24 - - 28 31 - - 37 39 42 46 2 5 - - Stergerea Cheilor Din Arbori B

  11. Stergerea Cheilor Din Arbori B • In general, situatia se prezinta in felul urmator: • O pagina care are subdepasire se contopeste cu o pagina alaturata si “atrage” din pagina parinte cheia comuna celor 2 foste pagini, formand o singura pagina cu 2·N chei Cheia din pagina parinte comuna celor 2 pagini Pointer de la pagina superioara … M … N chei M N-1 chei N chei N-1 chei Pagina cu 2·N chei Pagina alaturata celei cu subdepasire Pagina cu N-1 chei (subdepasire!!!) Stergerea Cheilor Din Arbori B

  12. Stergerea Cheilor Din Arbori B 16 - - - • Prin contopirea celor 2 pagini si “atragerea” din pagina parinte a cheii comune (13), se ajunge in situatia: 8 13 - - 26 32 - - 10 12 - - 14 - - - 22 24 - - 28 31 - - 37 39 42 46 2 5 - - 16 - - - 8 - - - 26 32 - - 10 12 13 14 22 24 - - 28 31 - - 37 39 42 46 2 5 - - Stergerea Cheilor Din Arbori B

  13. Stergerea Cheilor Din Arbori B 16 - - - • Problema s-a mutat la nivelul superior, unde avem o pagina cu subdepasire datorita “atragerii” cheii 13 pe nivelul inferior • Noua subdepasire nu se poate rezolva prin imprumut, deoarece unica pagina alaturata paginii cu subdepasire este si ea la limita • Se va folosi, recursiv, tot metoda contopirii pentru a rezolva situatia • In acest scop, va fi “atrasa” cheia comuna (16) din pagina parinte 8 - - - 26 32 - - 10 12 13 14 22 24 - - 28 31 - - 37 39 42 46 2 5 - - Stergerea Cheilor Din Arbori B

  14. Stergerea Cheilor Din Arbori B • Arborele rezultat este: • Cand propagarea subdepasirii de jos in sus ajunge pana la radacina inclusiv, arborele B va scadea in inaltime • Aceasta este singura situatie in care un arbore B poate sa scada in inaltime 8 16 26 32 10 12 13 14 22 24 - - 28 31 - - 37 39 42 46 2 5 - - Stergerea Cheilor Din Arbori B

  15. Stergerea Cheilor Din Arbori B • In urma stergerilor repetate, la o distributie normala a cheilor de sters, arborele B va scadea destul de rar in inaltime • Operatia de stergere de chei dintr-un arbore B are o performanta logaritmica, deoarece se foloseste criteriul de ordonare a paginilor pentru a parcurge drumul de la radacina pana la ultimul nivel (indiferent daca cheia de sters se afla acolo sau mai sus) dupa care, eventual, se parcurge si drumul invers pentru rezolvarea situatiilor de subdepasire – de regula, drumul invers nu este parcurs in totalitate, ci doar pana nu mai apar situatii de subdepasire • Drumul de la radacina pana la ultimul nivel are o lungime proportionala cu logaritmul numarului total de chei din arbore Stergerea Cheilor Din Arbori B

More Related