B+ TREE: wyszukiwanie, wstawianie i usuwanie Operanych
โก Inteligentne podsumowanie
Drzewo B+ to wielopoziomowy, dynamiczny indeks, ktรณry przechowuje wskaลบniki danych tylko w poลฤ czonych wฤzลach liลciowych, co zapewnia dokลadnoลฤ i szybkoลฤ wyszukiwania. Obejmuje on reguลy drzewa B+, rรณลผnice miฤdzy nim a drzewem B oraz operacje wyszukiwania, wstawiania i usuwania.
Co to jest drzewo B+?
A B+ Drzewo Jest wykorzystywany gลรณwnie do implementacji dynamicznego indeksowania na wielu poziomach. W porรณwnaniu z drzewem B, drzewo B+ przechowuje wskaลบniki danych tylko w wฤzลach liลciowych drzewa, co sprawia, ลผe โโproces wyszukiwania jest dokลadniejszy i szybszy.
Zasady dla drzewa B+
Poniลผej przedstawiono podstawowe zasady drzewa B+.
- Liลcie sลuลผฤ do przechowywania rekordรณw danych.
- Rekordy przechowywane sฤ w wewnฤtrznych wฤzลach drzewa.
- Jeลli wartoลฤ klucza docelowego jest mniejsza niลผ wartoลฤ wฤzลa wewnฤtrznego, wรณwczas podฤ ลผany jest wskaลบnik znajdujฤ cy siฤ tuลผ po jego lewej stronie.
- Jeลli wartoลฤ klucza docelowego jest wiฤksza lub rรณwna wartoลci wฤzลa wewnฤtrznego, wรณwczas podฤ ลผany jest wskaลบnik znajdujฤ cy siฤ tuลผ po jego prawej stronie.
- Korzeล ma co najmniej dwรณjkฤ dzieci.
Dlaczego warto uลผywaฤ drzewa B+
Oto powody, dla ktรณrych warto uลผywaฤ drzewa B+:
- Klucze sลuลผฤ przede wszystkim do uลatwienia wyszukiwania poprzez wskazanie wลaลciwego arkusza.
- Drzewo B+ wykorzystuje โwspรณลczynnik wypeลnieniaโ do zarzฤ dzania przyrostem i ubytkiem w drzewie.
- W drzewach B+ na stronie pamiฤci moลผna ลatwo umieลciฤ wiele kluczy, gdyลผ nie posiadajฤ one danych powiฤ zanych z wฤzลami wewnฤtrznymi. Dziฤki temu szybko uzyska dostฤp do danych drzewa znajdujฤ cych siฤ w wฤลบle liลcia.
- Do peลnego skanowania wszystkich elementรณw potrzebny jest tylko jeden przebieg liniowy, poniewaลผ wszystkie wฤzลy liลciowe drzewa B+ sฤ ze sobฤ poลฤ czone.
Drzewo B+ kontra drzewo B
Oto gลรณwne rรณลผnice miฤdzy drzewem B+ a drzewem B.
| B+ Drzewo | Drzewo B |
|---|---|
| Klucze wyszukiwania moลผna powtarzaฤ. | Klucze wyszukiwania nie mogฤ byฤ zbฤdne. |
| Dane sฤ zapisywane tylko w wฤzลach liลci. | Dane mogฤ byฤ przechowywane zarรณwno w wฤzลy liลciowe, jak i wฤzลy wewnฤtrzne. |
| Dane przechowywane w wฤลบle liลcia sprawiajฤ , ลผe wyszukiwanie jest dokลadniejsze i szybsze. | Przeszukiwanie jest powolne ze wzglฤdu na dane przechowywane na liลciach i wฤzลach wewnฤtrznych. |
| Usuniฤcie nie jest trudne, poniewaลผ element usuwa siฤ tylko z wฤzลa liลcia. | Usuwanie elementรณw jest procesem skomplikowanym i czasochลonnym. |
| Poลฤ czone wฤzลy liลci sprawiajฤ , ลผe wyszukiwanie jest wydajne i szybkie. | Nie moลผna ลฤ czyฤ wฤzลรณw liลci. |
Szukaj Operacja
W drzewie B+ wyszukiwanie jest jednฤ z najลatwiejszych procedur do wykonania, a jej wyniki sฤ szybkie i dokลadne.
Moลผna zastosowaฤ nastฤpujฤ cy algorytm wyszukiwania:
- Aby znaleลบฤ wymagany rekord, naleลผy wykonaฤ polecenie wyszukiwanie binarne na dostฤpnych rekordach w Drzewie.
- W przypadku dokลadnego dopasowania do klucza wyszukiwania, odpowiedni rekord jest zwracany uลผytkownikowi.
- W przypadku gdy podczas wyszukiwania nie uda siฤ znaleลบฤ dokลadnego klucza w wฤลบle nadrzฤdnym, bieลผฤ cym lub potomnym, uลผytkownikowi zostanie wyลwietlony komunikat โnie znalezionoโ.
- Proces wyszukiwania moลผna powtรณrzyฤ, aby uzyskaฤ lepsze i dokลadniejsze wyniki.
Szukaj OperaAlgorytm
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."
Wyjลcie: Uลผytkownikowi wyลwietlany jest zestaw rekordรณw dopasowanych do dokลadnego klucza; w przeciwnym razie uลผytkownikowi wyลwietla siฤ informacja o nieudanej prรณbie.
wstawka Operacja
Poniลผszy algorytm ma zastosowanie do operacji wstawiania:
- 50 procent elementรณw w wฤzลach jest przenoszonych do nowego liลcia w celu przechowywania.
- Element nadrzฤdny nowego liลcia jest dokลadnie powiฤ zany z minimalnฤ wartoลciฤ klucza i nowฤ lokalizacjฤ w drzewie.
- Podziel wฤzeล nadrzฤdny na wiฤcej lokalizacji, na wypadek jego peลnego wykorzystania.
- Teraz, aby uzyskaฤ lepsze wyniki, klucz ลrodkowy jest skojarzony z wฤzลem najwyลผszego poziomu danego liลcia.
- Dopรณki nie zostanie znaleziony wฤzeล najwyลผszego poziomu, kontynuuj proces wyjaลniony w powyลผszych krokach.
wstawka OperaAlgorytm
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.
Wyjลcie: Algorytm okreลli element i pomyลlnie wstawi go w wymaganym wฤลบle liลcia.
Powyลผszy przykลadowy przykลad drzewa B+ wyjaลniono w poniลผszych krokach:
- Najpierw mamy 3 wฤzลy, a pierwsze 3 elementy, czyli 1, 4 i 6, dodajemy w odpowiednich miejscach wฤzลรณw.
- Nastฤpnฤ wartoลciฤ w serii danych jest 12, ktรณrฤ naleลผy umieลciฤ w Drzewie.
- Aby to osiฤ gnฤ ฤ, podziel wฤzeล i dodaj 6 jako element wskaลบnikowy.
- Teraz tworzona jest prawa hierarchia drzewa, a pozostaลe wartoลci danych sฤ odpowiednio dostosowywane przez keeping majฤ c na uwadze obowiฤ zujฤ ce zasady wartoลci rรณwnych lub wiฤkszych od wฤzลรณw klucz-wartoลฤ po prawej stronie.
Usuniฤcia Operacja
Zลoลผonoลฤ procedury usuwania w drzewie B+ przewyลผsza zลoลผonoลฤ funkcji wstawiania i wyszukiwania.
Poniลผszy algorytm moลผna zastosowaฤ podczas usuwania elementu z drzewa B+:
- Najpierw musimy zlokalizowaฤ wpis liลcia w drzewie, ktรณry zawiera klucz i wskaลบnik, a nastฤpnie usunฤ ฤ wpis liลcia z drzewa, jeลli liลฤ speลnia dokลadne warunki usuniฤcia rekordu.
- W przypadku gdy wฤzeล liลciowy speลnia jedynie warunek bycia zapeลnionym w poลowie, operacja zostaje zakoลczona; w przeciwnym wypadku wฤzeล liลciowy ma minimalnฤ liczbฤ wpisรณw i nie moลผe zostaฤ usuniฤty.
- Pozostaลe poลฤ czone wฤzลy po prawej i lewej stronie mogฤ zwolniฤ dowolne wpisy, a nastฤpnie przenieลฤ je do liลcia. Jeลli te kryteria nie sฤ speลnione, powinny poลฤ czyฤ wฤzeล liลcia i jego wฤzeล poลฤ czony w hierarchii drzewa.
- Po scaleniu wฤzลa liลcia z jego sฤ siadami po prawej lub lewej stronie, wpisy wartoลci w wฤลบle liลcia lub powiฤ zanym sฤ siedzie wskazujฤ ce na wฤzeล najwyลผszego poziomu zostajฤ usuniฤte.
Powyลผszy przykลad ilustruje procedurฤ usuwania elementu z drzewa B+ o okreลlonym rzฤdzie.
- Najpierw w drzewie identyfikowane sฤ dokลadne lokalizacje elementu do usuniฤcia.
- W tym przypadku element do usuniฤcia moลผna precyzyjnie zidentyfikowaฤ tylko na poziomie liลcia, a nie na podstawie indeksu. W zwiฤ zku z tym element moลผna usunฤ ฤ bez naruszania reguล usuwania, czyli wartoลci klucza minimalnego.
- W powyลผszym przykลadzie musimy usunฤ ฤ 31 z drzewa.
- Musimy zlokalizowaฤ wystฤ pienia 31 w indeksie i liลciu.
- Widzimy, ลผe 31 jest dostฤpne zarรณwno na poziomie wฤzลa indeksowego, jak i wฤzลa liลciowego. Dlatego usuwamy je z obu instancji.
- Musimy jednak uzupeลniฤ indeks wskazujฤ cy na 42. Teraz przyjrzymy siฤ odpowiedniemu dziecku poniลผej 25 roku ลผycia i weลบmiemy minimalnฤ wartoลฤ, ktรณrฤ ustawimy jako indeks. Zatem, poniewaลผ 42 jest jedynฤ obecnฤ wartoลciฤ , stanie siฤ ona indeksem.
Usuniฤcia OperaAlgorytm
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
Wyjลcie: Klucz โKโ zostaje usuniฤty, a w razie potrzeby klucze zostajฤ poลผyczone od wฤzลรณw pokrewnych w celu dostosowania wartoลci w n i jego wฤzลach nadrzฤdnych.




