B TREE w strukturze danych: Wyszukaj, wstaw, usuń OperaPrzykład (2024)

Przez: Alyssa Walker

Zaktualizowano

Co to jest drzewo B?

Drzewo B to samorównoważąca się struktura danych oparta na określonym zestawie reguł dla searching, wstawianie i usuwanie danych w szybszy i efektywniejszy sposób. Aby to osiągnąć, należy wykonać następujące czynnościwing zasady są przestrzegane, aby utworzyć drzewo B.

B-Drzewo to szczególny rodzaj drzewa w strukturze danych. W 1972 roku metoda ta została po raz pierwszy wprowadzona przez McCreighta, a firma Bayer nazwała ją drzewem wyszukiwania m-way Height Balanced. Pomaga zachować dane posortowane i dozwolone w różny sposób operatakie jak Wstawianie, searching i usuwanie w krótszym czasie.

Zasady dla B-Tree

Oto ważne zasady tworzenia B_Tree

  • Każdy węzeł, z wyjątkiem roota, musi zawierać minimalną liczbę kluczy
    [m/2]-1

    Na przykład:

    m = 4min 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 korzystania z B-Tree

  • Zmniejsza liczbę odczytów dokonywanych na dysku
  • B Drzewa 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. Dane te po przeniesieniu do pamięci głównej (lub RAM) nazywane są strukturą danych.
  • W przypadku dużych ilości danych, searchiw przypadku jednego rekordu na dysku konieczne jest odczytanie 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 indeksowe, w których zapisywane są odniesienia do rekordów w oparciu o bloki, w których się one znajdują. To drastycznie zmniejsza czas i zużycie pamięci.
  • Ponieważ mamy ogromne dane, możemy tworzyć wielopoziomowe tabele indeksowe.
  • Indeks wielopoziomowy można zaprojektować przy użyciu drzewa B w celu uporządkowania danych w sposób samorównoważący.

Szukaj Operacja

Poszukiwanie operajest najprostsza operana drzewie B.

Following stosowany jest algorytm:

  • Niech klucz (wartość) będzie wyszukiwany przez „k”.
  • Zacznij searching od korzenia i rekurencyjnie przechodź w dół.
  • Jeśli k jest mniejsze niż wartość korzenia, przeszukaj lewe poddrzewo, jeśli k jest większe niż wartość pierwiastka, przeszukaj 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ż B Tree jest drzewem samobalansującym, nie można wymusić wstawienia klucza do dowolnego węzła.

Following algorytm ma zastosowanie:

  • Uruchom wyszukiwanie operai znajdź odpowiednie miejsce do włożenia.
  • 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.
TIPFollowing nie jest prawdą w przypadku algorytmu wstawiania:

Ponieważ węzeł jest pełny, dlatego zostanie podzielony, a następnie zostanie wstawiona nowa wartość

W powyższym przykładzie:

  • Wyszukaj klucz w odpowiedniej pozycji w węźle
  • Włóż klucz do węzła docelowego i sprawdź reguły
  • Czy po wstawieniu węzeł ma większą niż minimalną liczbę kluczy, czyli 1? W tym przypadku tak. Sprawdź następną regułę.
  • Czy po wstawieniu węzeł ma więcej niż maksymalna liczba kluczy, czyli 3? W tym przypadku nie, tak nie jest. Oznacza to, że drzewo B nie narusza żadnych zasad i wstawianie zostało zakończone.

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.

W powyższym przykładzie:

  • Węzeł ma mniej kluczy niż maksymalna
  • 1 wstawia się obok 3, ale zostaje naruszona zasada kolejności rosnącej
  • Aby temu zaradzić, klucze są sortowane

Podobnie liczby 13 i 2 można łatwo wstawić do węzła, ponieważ spełniają one regułę kluczy mniejszych niż maksymalne dla węzłów.

W powyższym przykładzie:

  • Węzeł ma klucze równe maksymalnej liczbie kluczy.
  • Klucz jest wstawiany do węzła docelowego, ale narusza zasadę 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.

Usuń Operacja

Usuń operama więcej reguł niż wstawianie i wyszukiwanie operaTions.

Following algorytm ma zastosowanie:

  • Uruchom wyszukiwanie operai znajdź klucz docelowy w węzłach
  • Zastosowano trzy warunki w zależności od lokalizacji klucza docelowego, jak wyjaśniono poniżejwing działy

Jeśli klucz docelowy znajduje się w węźle liścia

  • Cel znajduje się w węźle liścia, więcej niż min kluczy.
  • Usunięcie tego nie naruszy własności B Tree
  • Cel znajduje się w węźle liścia, ma minimalne kluczowe węzły
  • Usunięcie tego spowoduje naruszenie własności B Tree
  • Węzeł docelowy może pożyczyć klucz od najbliższego lewego węzła lub bezpośredniego prawego węzła (rodzeństwo)
  • Rodzeństwo powie tak jeśli ma więcej niż minimalną liczbę kluczy
  • Klucz zostanie pożyczony z węzła nadrzędnego, maksymalna wartość zostanie przesłana do węzła nadrzędnego, maksymalna wartość węzła nadrzędnego zostanie przeniesiona do węzła docelowego i usunie wartość docelową
  • Cel znajduje się w węźle liścia, ale żadne rodzeństwo nie ma więcej niż minimalna liczba kluczy
  • Wyszukaj klucz
  • Scal z rodzeństwem i minimalną liczbą węzłów nadrzędnych
  • Całkowita liczba kluczy będzie teraz większa niż min
  • Klucz docelowy zostanie zastąpiony minimum węzła nadrzędnego

Jeśli klucz docelowy znajduje się w węźle wewnętrznym

  • Wybierz albo w kolejności poprzednika, albo w kolejności następcy
  • W przypadku poprzednika w kolejności wybrany zostanie klucz maksymalny z jego lewego poddrzewa
  • W przypadku następcy w kolejności wybrany zostanie klucz minimalny z jego prawego poddrzewa
  • Jeśli poprzednik klucza docelowego ma więcej kluczy niż min, tylko wtedy może zastąpić klucz docelowy maksimum poprzednika w kolejności
  • Jeśli poprzednik klucza docelowego w kolejności nie ma więcej niż kluczy min, poszukaj klucza minimalnego następcy 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 maksymalnym elementem poddrzewa poprzednika w kolejności
  • Jeśli po usunięciu cel ma mniej niż min kluczy, wówczas węzeł docelowy pożyczy maksymalną wartość od swojego rodzeństwa za pośrednictwem rodzica rodzeństwa.
  • Maksymalna wartość rodzica zostanie pobrana przez cel, ale z węzłami maksymalnej wartości rodzeństwa.

Teraz zrozumiemy usunięcie operaz przykładem.

Powyższy diagram przedstawia różne przypadki usunięcia operaw drzewie B. To B-drzewo jest rzędu 5, co oznacza, że ​​minimalna liczba węzłów podrzędnych, jakie może mieć każdy węzeł, wynosi 3, a maksymalna liczba węzłów podrzędnych, jakie może mieć każdy węzeł, wynosi 5. Podczas gdy minimalna i maksymalna liczba kluczy w dowolnym węźle mogą mieć odpowiednio 2 i 4.

W powyższym przykładzie:

  • Węzeł docelowy ma klucz docelowy do usunięcia
  • Węzeł docelowy ma więcej kluczy niż minimalna liczba kluczy
  • Po prostu usuń klucz

W powyższym przykładzie:

  • Węzeł docelowy ma klucze równe minimalnej liczbie kluczy, więc nie można go usunąć bezpośrednio, ponieważ naruszy to warunki

A teraz co następujewing diagram wyjaśnia, jak usunąć ten klucz:

  • Węzeł docelowy pożyczy klucz od bezpośredniego rodzeństwa, w tym przypadku od poprzednika w kolejności (lewe rodzeństwo), ponieważ nie ma żadnego następcy w kolejności (prawe rodzeństwo)
  • Maksymalna wartość poprzednika inorder zostanie przekazana do rodzica, a rodzic przekaże maksymalną wartość do węzła docelowego (patrz diagram poniżej)

Following przykład ilustruje, jak usunąć klucz, który wymaga wartości, z jego następcy w kolejności.

  • Węzeł docelowy pożyczy klucz od bezpośredniego rodzeństwa, w tym przypadku następcy w kolejności (prawe rodzeństwo), ponieważ jego poprzednik w kolejności (lewe rodzeństwo) ma klucze równe minimalnym kluczom.
  • 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 rodzeństwa, które mogłoby przekazać swój klucz węzłowi docelowemu. Dlatego konieczne jest połączenie.

Zobacz procedurę usuwania takiego klucza:

  • Połącz węzeł docelowy z dowolnym z jego bezpośrednich rodzeństwa wraz z kluczem nadrzędnym
  • Wybierany jest klucz z węzła nadrzędnego, który znajduje się pomiędzy dwoma łączącymi się węzłami
  • Usuń klucz docelowy z połączonego węzła

Usuń OperaPseudokod

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 }}

Wydajność:

Największy element zostanie usunięty z drzewa B.

Podsumowanie

  • B Tree to samorównoważąca się struktura danych ułatwiająca wyszukiwanie, wstawianie i usuwanie danych z dysku.
  • B Drzewo jest regulowane według określonego stopnia
  • B Klucze i węzły drzewa są ułożone w porządku rosnącym.
  • Poszukiwanie operaNajprostsza jest metoda drzewa B, która zawsze zaczyna się od korzenia i zaczyna sprawdzanie, czy klucz docelowy jest większy, czy mniejszy od wartości węzła.
  • Wkładka operaMetoda B Tree jest dość szczegółowa i polega na tym, że najpierw znajduje się odpowiednie miejsce wstawienia klucza docelowego, wstawia go, ocenia ważność B Tree w różnych przypadkach, a następnie odpowiednio restrukturyzuje węzły B Tree.
  • Usuń operaFunkcja B Tree najpierw wyszukuje klucz docelowy do usunięcia, usuwa go, ocenia ważność na podstawie kilku przypadków, takich jak klucze minimalne i maksymalne węzła docelowego, rodzeństwa i rodzica.

Możesz lubić:

  • Samouczek DAA PDF: Projektowanie i analiza Algorithms
  • Algorytm sortowania sterty (z kodem w Pythonie i C++)
  • Algorytm Kadence'a: ciągła podtablica o największej sumie
  • Algorytm sortowania radiacyjnego w strukturze danych
  • Lista podwójnie połączona: C++, Python (przykład kodu)
  • Lista pojedynczo połączona w strukturach danych
  • Algorytm Prime Factor: C, przykład Pythona
  • Algorytm Wieży Hanoi: Python, kod C++
B TREE w strukturze danych: Wyszukaj, wstaw, usuń OperaPrzykład (2024)
Top Articles
Latest Posts
Article information

Author: Allyn Kozey

Last Updated:

Views: 5894

Rating: 4.2 / 5 (63 voted)

Reviews: 86% of readers found this page helpful

Author information

Name: Allyn Kozey

Birthday: 1993-12-21

Address: Suite 454 40343 Larson Union, Port Melia, TX 16164

Phone: +2456904400762

Job: Investor Administrator

Hobby: Sketching, Puzzles, Pet, Mountaineering, Skydiving, Dowsing, Sports

Introduction: My name is Allyn Kozey, I am a outstanding, colorful, adventurous, encouraging, zealous, tender, helpful person who loves writing and wants to share my knowledge and understanding with you.