Drzewo B w strukturze danych: wyszukiwanie, wstawianie, usuwanie

โšก Inteligentne podsumowanie

B-Drzewo w Strukturze Danych to samobalansujฤ…ce siฤ™ drzewo, ktรณre sortuje dane, umoลผliwiajฤ…c szybkie wyszukiwanie, wstawianie i usuwanie danych z dysku. Wyjaล›nia ono reguล‚y B-Drzewa, jego historiฤ™ oraz algorytmy wyszukiwania, wstawiania i usuwania danych wraz z przykล‚adami.

  • ๐ŸŒฒ Samobalansowanie: Drzewo B utrzymuje wszystkie liล›cie na tym samym poziomie i zachowuje rรณwnowagฤ™ podczas kaลผdej operacji.
  • ๐Ÿ”ข Zamรณwienie (m): Stopieล„ m ustala maksymalnฤ… liczbฤ™ dzieci (m) i kluczy (m โˆ’ 1) na wฤ™zeล‚.
  • ๐Ÿ” Szukanie: Przeszukiwanie zaczyna siฤ™ od korzenia i przesuwa siฤ™ w lewo lub prawo poprzez porรณwnywanie klucza.
  • โž• Wstawiฤ‡: Operacja Insertion polega na znalezieniu odpowiedniego miejsca i oddzieleniu caล‚ego wฤ™zล‚a od jego ล›rodkowego klucza.
  • โž– Kasowaฤ‡: Usuwanie obsล‚uguje przypadki liล›ciowe, wewnฤ™trzne i gล‚รณwne za pomocฤ… poลผyczania i scalania.

B TREE w strukturze danych: Wyszukaj, wstaw, usuล„ OperaPrzykล‚ad

Co to jest drzewo B?

Drzewo B to samorรณwnowaลผฤ…ca siฤ™ struktura danych oparta na okreล›lonym zestawie reguล‚ wyszukiwania, wstawiania i usuwania danych w szybszy i bardziej efektywny sposรณb. Aby to osiฤ…gnฤ…ฤ‡, stosuje siฤ™ poniลผsze reguล‚y, aby utworzyฤ‡ drzewo B.

B-drzewo to specjalny rodzaj drzewa w strukturze danych. W 1972 roku McCreight i Bayer po raz pierwszy wprowadzili tฤ™ metodฤ™, nazywajฤ…c jฤ… Height Balanced m-way Search Tree (Drzewem Wyszukiwania Wysokoล›ci Zrรณwnowaลผonych m-kierunkรณw). Pomaga ona zachowaฤ‡ posortowane dane i umoลผliwia wykonywanie rรณลผnych operacji, takich jak wstawianie, wyszukiwanie i usuwanie, w krรณtszym czasie.

Zasady dla B-Tree

Oto waลผne zasady tworzenia drzewa B:

  • Wszystkie liล›cie zostanฤ… utworzone na tym samym poziomie.
  • Drzewo B jest okreล›lone przez liczbฤ™ stopni, zwanฤ… rรณwnieลผ โ€žkolejnoล›ciฤ…โ€ (okreล›lonฤ… przez aktora zewnฤ™trznego, np. programistฤ™), zwanฤ… m dalej. Wartoล›ฤ‡ m zaleลผy od rozmiaru bloku na dysku, na ktรณrym gล‚รณwnie znajdujฤ… siฤ™ dane.
  • Lewe poddrzewo wฤ™zล‚a bฤ™dzie miaล‚o mniejsze wartoล›ci niลผ prawa strona poddrzewa. Oznacza to, ลผe wฤ™zล‚y sฤ… rรณwnieลผ sortowane w kolejnoล›ci rosnฤ…cej od lewej do prawej.
  • Maksymalnฤ… liczbฤ™ kluczy, jakฤ… moลผe zawieraฤ‡ wฤ™zeล‚ gล‚รณwny i jego wฤ™zล‚y podrzฤ™dne, oblicza siฤ™ wedล‚ug nastฤ™pujฤ…cego wzoru: m โˆ’ 1. Na przykล‚ad:
    m = 4
    max keys: 4 โˆ’ 1 = 3

Zasady dla B-Tree

  • Kaลผdy wฤ™zeล‚, z wyjฤ…tkiem wฤ™zล‚a gล‚รณwnego, musi zawieraฤ‡ minimalnฤ… liczbฤ™ kluczy [m/2] โˆ’ 1. Na przykล‚ad:
    m = 4
    min keys: 4/2 โˆ’ 1 = 1
  • Maksymalna liczba wฤ™zล‚รณw podrzฤ™dnych, jakie moลผe mieฤ‡ wฤ™zeล‚, jest rรณwna jego stopniowi, tj m.
  • Minimalne dzieci, jakie moลผe mieฤ‡ wฤ™zeล‚, to poล‚owa rzฤ™du, czyli m/2 (przyjmowana jest wartoล›ฤ‡ gรณrna).
  • Wszystkie klucze w wฤ™ลบle sฤ… sortowane w kolejnoล›ci rosnฤ…cej.

Dlaczego warto uลผywaฤ‡ B-Tree

Oto powody, dla ktรณrych warto uลผywaฤ‡ drzewa B:

  • Zmniejsza liczbฤ™ odczytรณw wykonywanych na dysku.
  • Drzewa B moลผna ล‚atwo zoptymalizowaฤ‡, dostosowujฤ…c ich rozmiar (czyli liczbฤ™ wฤ™zล‚รณw podrzฤ™dnych) do rozmiaru dysku.
  • Jest to specjalnie zaprojektowana technika obsล‚ugi duลผych iloล›ci danych.
  • Jest to przydatny algorytm dla baz danych i systemรณw plikรณw.
  • Dobry wybรณr, jeล›li chodzi o odczyt i zapis duลผych blokรณw danych.

Historia drzewa B

  • Dane sฤ… przechowywane na dysku w blokach. Po przeniesieniu do pamiฤ™ci gล‚รณwnej (RAM) nazywane sฤ… strukturฤ… danych.
  • W przypadku ogromnych iloล›ci danych przeszukanie jednego rekordu na dysku wiฤ…ลผe siฤ™ z koniecznoล›ciฤ… odczytania caล‚ego dysku. Zwiฤ™ksza to czas i zuลผycie pamiฤ™ci gล‚รณwnej ze wzglฤ™du na duลผฤ… czฤ™stotliwoล›ฤ‡ dostฤ™pu do dysku i rozmiar danych.
  • Aby temu zaradziฤ‡, tworzone sฤ… tabele indeksรณw, ktรณre zapisujฤ… odniesienia do rekordรณw na podstawie blokรณw, w ktรณrych siฤ™ znajdujฤ…. To radykalnie skraca czas i zmniejsza zuลผycie pamiฤ™ci.
  • Poniewaลผ mamy ogromne dane, moลผemy tworzyฤ‡ wielopoziomowe tabele indeksowe.
  • Indeks wielopoziomowy moลผna zaprojektowaฤ‡, uลผywajฤ…c drzewa B do keeping dane posortowano w sposรณb samobalansujฤ…cy.

Szukaj Operacja

Operacja wyszukiwania jest najprostszฤ… operacjฤ… na drzewie B. Zastosowano nastฤ™pujฤ…cy algorytm:

  • Niech kluczem (wartoล›ciฤ…) do przeszukania bฤ™dzie โ€žkโ€.
  • Rozpocznij wyszukiwanie od korzenia i rekurencyjnie przechodลบ w dรณล‚.
  • Jeล›li k jest mniejsze od wartoล›ci pierwiastka, przeszukujemy lewe poddrzewo; jeล›li k jest wiฤ™ksze od wartoล›ci pierwiastka, przeszukujemy prawe poddrzewo.
  • Jeล›li wฤ™zeล‚ ma znalezione k, po prostu zwrรณฤ‡ wฤ™zeล‚.
  • Jeล›li k nie zostanie znalezione w wฤ™ลบle, przejdลบ w dรณล‚ do dziecka z wiฤ™kszym kluczem.
  • Jeล›li k nie zostanie znalezione w drzewie, zwracamy NULL.

wstawka Operacja

Poniewaลผ drzewo B jest drzewem samobalansujฤ…cym, nie moลผna wymusiฤ‡ wstawienia klucza do dowolnego wฤ™zล‚a. Obowiฤ…zuje nastฤ™pujฤ…cy algorytm:

  • Uruchom operacjฤ™ wyszukiwania i znajdลบ odpowiednie miejsce wstawienia.
  • Wstaw nowy klucz we wล‚aล›ciwym miejscu, ale jeล›li wฤ™zeล‚ ma juลผ maksymalnฤ… liczbฤ™ kluczy:
  • Wฤ™zeล‚ wraz z nowo wstawionym kluczem oddzieli siฤ™ od ล›rodkowego elementu.
  • ลšrodkowy element stanie siฤ™ rodzicem dla pozostaล‚ych dwรณch wฤ™zล‚รณw podrzฤ™dnych.
  • Wฤ™zล‚y muszฤ… ponownie uล‚oลผyฤ‡ klucze w kolejnoล›ci rosnฤ…cej.

๐Ÿ’ก WSKAZร“WKA: Oto jest nie prawda o algorytmie wstawiania: โ€žPoniewaลผ wฤ™zeล‚ jest peล‚ny, zostanie podzielony, a nastฤ™pnie zostanie wstawiona nowa wartoล›ฤ‡โ€. Najpierw wstawiany jest klucz, a wฤ™zeล‚ zostanie podzielony dopiero wtedy, gdy przekroczy maksymalnฤ… liczbฤ™ kluczy.

wstawka Operacja

W powyลผszym przykล‚adzie:

  • Wyszukaj odpowiedniฤ… pozycjฤ™ w wฤ™ลบle, aby znaleลบฤ‡ klucz.
  • Wprowadลบ klucz do wฤ™zล‚a docelowego i sprawdลบ reguล‚y.
  • Czy po wstawieniu wฤ™zeล‚ ma co najmniej 1 minimalnฤ… liczbฤ™ kluczy? W tym przypadku odpowiedลบ brzmi: tak. Sprawdลบ kolejnฤ… reguล‚ฤ™.
  • Czy po wstawieniu wฤ™zeล‚ ma wiฤ™cej kluczy niลผ maksymalna liczba, ktรณra wynosi 3? W tym przypadku odpowiedลบ brzmi: nie. Oznacza to, ลผe drzewo B nie narusza ลผadnych reguล‚, a wstawianie jest zakoล„czone.

wstawka Operacja

W powyลผszym przykล‚adzie:

  • Wฤ™zeล‚ osiฤ…gnฤ…ล‚ maksymalnฤ… liczbฤ™ kluczy.
  • Wฤ™zeล‚ zostanie podzielony, a ล›rodkowy klucz stanie siฤ™ wฤ™zล‚em gล‚รณwnym pozostaล‚ych dwรณch wฤ™zล‚รณw.
  • W przypadku parzystej liczby kluczy, ล›rodkowy wฤ™zeล‚ zostanie wybrany poprzez odchylenie w lewo lub w prawo.

wstawka Operacja

W powyลผszym przykล‚adzie:

  • Wฤ™zeล‚ ma mniej niลผ maksymalnฤ… liczbฤ™ kluczy.
  • Obok 3 wstawiono 1, ale naruszono zasadฤ™ kolejnoล›ci rosnฤ…cej.
  • Aby rozwiฤ…zaฤ‡ ten problem, klucze zostaล‚y posortowane.

Podobnie, 13 i 2 moลผna ล‚atwo wstawiฤ‡ do wฤ™zล‚a, poniewaลผ speล‚niajฤ… one reguล‚ฤ™ โ€žkluczy mniejszych od maks.โ€ dla wฤ™zล‚รณw.

wstawka Operacja

W powyลผszym przykล‚adzie:

  • Wฤ™zeล‚ ma klucze rรณwne maksymalnej liczbie kluczy.
  • Klucz zostaล‚ wstawiony do wฤ™zล‚a docelowego, ale narusza to reguล‚ฤ™ maksymalnej liczby kluczy.
  • Wฤ™zeล‚ docelowy jest podzielony, a ล›rodkowy klawisz z odchyleniem w lewo jest teraz rodzicem nowych wฤ™zล‚รณw podrzฤ™dnych.
  • Nowe wฤ™zล‚y sฤ… uล‚oลผone w kolejnoล›ci rosnฤ…cej.

Podobnie, w oparciu o powyลผsze zasady i przypadki, pozostaล‚e wartoล›ci moลผna ล‚atwo wstawiฤ‡ do drzewa B.

wstawka Operacja

Usuniฤ™cia Operacja

Operacja usuwania ma wiฤ™cej reguล‚ niลผ operacje wstawiania i wyszukiwania. Obowiฤ…zuje nastฤ™pujฤ…cy algorytm:

  • Uruchom operacjฤ™ wyszukiwania i znajdลบ klucz docelowy w wฤ™zล‚ach.
  • W zaleลผnoล›ci od lokalizacji klucza docelowego stosowane sฤ… trzy warunki, jak wyjaล›niono w poniลผszych sekcjach.

Jeล›li klucz docelowy znajduje siฤ™ w wฤ™ลบle liล›cia

  • Target znajduje siฤ™ w wฤ™ลบle liล›cia, wiฤ™cej niลผ min kluczy. Usuniฤ™cie tego nie naruszy wล‚aล›ciwoล›ci drzewa B.
  • Target znajduje siฤ™ w wฤ™ลบle liล›cia i ma wฤ™zล‚y o minimalnym kluczu. Usuniฤ™cie tego elementu naruszy wล‚aล›ciwoล›ฤ‡ drzewa B.
  • Wฤ™zeล‚ docelowy moลผe poลผyczyฤ‡ klucz od najbliลผszego wฤ™zล‚a lewego lub najbliลผszego wฤ™zล‚a prawego (rodzeล„stwa).
  • Rodzeล„stwo powie tak jeล›li ma wiฤ™cej niลผ minimalnฤ… liczbฤ™ kluczy.
  • Klucz zostanie poลผyczony od wฤ™zล‚a nadrzฤ™dnego, wartoล›ฤ‡ maksymalna zostanie przesล‚ana do wฤ™zล‚a nadrzฤ™dnego, wartoล›ฤ‡ maksymalna wฤ™zล‚a nadrzฤ™dnego zostanie przesล‚ana do wฤ™zล‚a docelowego, a wartoล›ฤ‡ docelowa zostanie usuniฤ™ta.
  • Target znajduje siฤ™ w wฤ™ลบle liล›ciastym, ale ลผadne z rodzeล„stwa nie ma wiฤ™kszej liczby kluczy niลผ minimalna: wyszukaj klucz, poล‚ฤ…cz z rodzeล„stwem i minimalnฤ… liczbฤ… wฤ™zล‚รณw nadrzฤ™dnych, caล‚kowita liczba kluczy bฤ™dzie teraz wiฤ™ksza niลผ minimalna, a klucz docelowy zostanie zastฤ…piony minimalnฤ… liczbฤ… wฤ™zล‚รณw nadrzฤ™dnych.

Jeล›li klucz docelowy znajduje siฤ™ w wฤ™ลบle wewnฤ™trznym

  • Wybierz poprzednika lub nastฤ™pcฤ™ w kolejnoล›ci chronologicznej.
  • W przypadku poprzednika o kolejnoล›ci in-order wybrany zostanie maksymalny klucz z jego lewego poddrzewa.
  • W przypadku nastฤ™pnika uporzฤ…dkowanego zostanie wybrany minimalny klucz z jego prawego poddrzewa.
  • Tylko wtedy, gdy poprzednik klucza docelowego ma wiฤ™cej kluczy niลผ klucze min, moลผna zastฤ…piฤ‡ klucz docelowy kluczem maksimum poprzednika w kolejnoล›ci.
  • Jeล›li poprzednik klucza docelowego w kolejnoล›ci nie ma wiฤ™cej niลผ min kluczy, naleลผy poszukaฤ‡ minimalnego klucza nastฤ™pnika w kolejnoล›ci.
  • Jeล›li poprzednik i nastฤ™pnik klucza docelowego majฤ… mniej niลผ min kluczy, poล‚ฤ…cz poprzednika i nastฤ™pcฤ™.

Jeล›li klucz docelowy znajduje siฤ™ w wฤ™ลบle gล‚รณwnym

  • Zastฤ…p elementem maksymalnym poddrzewa poprzedniego rzฤ™du.
  • Jeลผeli po usuniฤ™ciu wฤ™zeล‚ docelowy ma mniej niลผ min kluczy, wรณwczas wฤ™zeล‚ docelowy poลผyczy wartoล›ฤ‡ max od swojego rodzeล„stwa za poล›rednictwem wฤ™zล‚a nadrzฤ™dnego rodzeล„stwa.
  • Maksymalna wartoล›ฤ‡ elementu nadrzฤ™dnego zostanie przejฤ™ta przez element docelowy, ale z wฤ™zล‚ami o maksymalnej wartoล›ci elementu rodzeล„stwa.

Teraz wyjaล›nimy operacjฤ™ usuwania na przykล‚adzie.

Usuniฤ™cia Operacja

Powyลผszy diagram przedstawia rรณลผne przypadki operacji usuwania w drzewie B. To drzewo B jest rzฤ™du 5, co oznacza, ลผe โ€‹โ€‹minimalna liczba wฤ™zล‚รณw potomnych, jakฤ… moลผe mieฤ‡ kaลผdy wฤ™zeล‚, to 3, a maksymalna liczba wฤ™zล‚รณw potomnych, jakฤ… moลผe mieฤ‡ kaลผdy wฤ™zeล‚, to 5. Natomiast minimalna i maksymalna liczba kluczy, jakฤ… moลผe mieฤ‡ kaลผdy wฤ™zeล‚, to odpowiednio 2 i 4.

Usuniฤ™cia Operacja

W powyลผszym przykล‚adzie:

  • Wฤ™zeล‚ docelowy ma klucz docelowy do usuniฤ™cia.
  • Wฤ™zeล‚ docelowy ma wiฤ™cej kluczy niลผ wynosi minimalna liczba kluczy.
  • Po prostu usuล„ klucz.

Usuniฤ™cia Operacja

W powyลผszym przykล‚adzie:

  • Wฤ™zeล‚ docelowy ma klucze rรณwne minimalnej liczbie kluczy, wiฤ™c nie moลผemy go usunฤ…ฤ‡ bezpoล›rednio, gdyลผ naruszyล‚oby to warunki.

Poniลผszy diagram wyjaล›nia, jak usunฤ…ฤ‡ ten klucz:

Usuniฤ™cia Operacja

  • Wฤ™zeล‚ docelowy poลผyczy klucz od bezpoล›redniego rodzeล„stwa, w tym przypadku od poprzednika w kolejnoล›ci (lewego rodzeล„stwa), poniewaลผ nie posiada ลผadnego nastฤ™pcy w kolejnoล›ci (prawego rodzeล„stwa).
  • Maksymalna wartoล›ฤ‡ poprzednika w kolejnoล›ci zostanie przekazana do wฤ™zล‚a nadrzฤ™dnego, a wฤ™zeล‚ nadrzฤ™dny przekaลผe maksymalnฤ… wartoล›ฤ‡ do wฤ™zล‚a docelowego (patrz poniลผszy diagram).

Poniลผszy przykล‚ad ilustruje sposรณb usuwania klucza, ktรณry wymaga wartoล›ci z jego nastฤ™pnika w kolejnoล›ci.

Usuniฤ™cia Operacja

  • Wฤ™zeล‚ docelowy poลผyczy klucz od bezpoล›redniego rodzeล„stwa, w tym przypadku nastฤ™pnika w kolejnoล›ci (prawego rodzeล„stwa), poniewaลผ jego poprzednik w kolejnoล›ci (lewy rodzeล„stwo) ma klucze rรณwne kluczom minimalnym.
  • Minimalna wartoล›ฤ‡ nastฤ™pnika w kolejnoล›ci zostanie przesล‚ana do elementu nadrzฤ™dnego, a element nadrzฤ™dny przekaลผe wartoล›ฤ‡ maksymalnฤ… do wฤ™zล‚a docelowego.

W poniลผszym przykล‚adzie wฤ™zeล‚ docelowy nie ma ลผadnego wฤ™zล‚a siostrzanego, ktรณry mรณgล‚by przekazaฤ‡ mu swรณj klucz. W zwiฤ…zku z tym wymagane jest scalenie. Zobacz procedurฤ™ usuwania takiego klucza:

Usuniฤ™cia Operacja

  • Poล‚ฤ…cz wฤ™zeล‚ docelowy z dowolnym z jego bezpoล›rednich rodzeล„stwa i kluczem nadrzฤ™dnym.
  • Wybierany jest klucz z wฤ™zล‚a nadrzฤ™dnego, ktรณry znajduje siฤ™ pomiฤ™dzy dwoma ล‚ฤ…czonymi wฤ™zล‚ami.
  • Usuล„ klucz docelowy ze scalonego wฤ™zล‚a.

Usuniฤ™cia Operacja Pseudo Code

private int removeBiggestElement()
{
    if (root has no child)
        remove and return the last element
    else {
        answer = subset[childCount-1].removeBiggestElement()
        if (subset[childCount-1].dataCount < MINIMUM)
            fixShort (childCount-1)
        return answer
    }
}

Wyjล›cie: Najwiฤ™kszy element zostanie usuniฤ™ty z drzewa B.

FAQ

Tak. Narzฤ™dzia AI mogฤ… generowaฤ‡ diagramy krok po kroku lub animacje wstawieล„, podziaล‚รณw i usuniฤ™ฤ‡ dla danej kolejnoล›ci. Pomaga to uczniom zrozumieฤ‡, jak drzewo siฤ™ rebalansuje, choฤ‡ kaลผdy krok naleลผy zweryfikowaฤ‡ pod kฤ…tem reguล‚ drzewa B.

Drzewa B i ich warianty indeksujฤ… duลผe zbiory danych i bazy wektorรณw, z ktรณrych korzystajฤ… systemy sztucznej inteligencji, dziฤ™ki czemu wyszukiwanie w danych treningowych lub osadzonych przebiega szybko. To baza danych, a nie model, korzysta z drzewa B, aby ograniczyฤ‡ liczbฤ™ odczytรณw z dysku.

Wฤ™zeล‚ drzewa poszukiwaล„ binarnych ma maksymalnie dwoje dzieci i jeden klucz. Wฤ™zeล‚ drzewa B moลผe przechowywaฤ‡ wiele kluczy i dzieci,ping Drzewo jest krรณtkie i ogranicza liczbฤ™ odczytรณw z dysku, co czyni je idealnym rozwiฤ…zaniem dla baz danych i systemรณw plikรณw.

Przeszukaj, wstaw i usuล„ kaลผdy przebieg w czasie O(log n), gdzie n to liczba kluczy. Poniewaลผ kaลผdy wฤ™zeล‚ przechowuje wiele kluczy, drzewo pozostaje pล‚ytkie, wiฤ™c liczba dostฤ™pรณw do dysku jest bardzo maล‚a.

Podsumuj ten post nastฤ™pujฤ…co: