Temat: Struktury do przechowywania danych w pamici zewntrznej. B - drzewa. B * - drzewa. B + - drzewa.

Podobne dokumenty
Bazy danych. Plan wykładu. Metody organizacji pliku rekordów. Pojcie indeksu. Wykład 11: Indeksy. Pojcie indeksu - rodzaje indeksów

Temat: Liniowe uporzdkowane struktury danych: stos, kolejka. Specyfikacja, przykładowe implementacje i zastosowania. Struktura słownika.

Bazy danych. Plan wykładu. Klucz wyszukiwania. Pojcie indeksu. Wykład 8: Indeksy. Pojcie indeksu - rodzaje indeksów

Wysokość drzewa Głębokość węzła

Listy, kolejki, stosy

Temat: Geometria obliczeniowa cz II. Para najmniej odległych punktów. Sprawdzenie, czy istnieje para przecinajcych si odcinków.

Porządek symetryczny: right(x)

.! $ Stos jest list z trzema operacjami: dodawanie elementów na wierzch stosu, zdejmowanie elementu z wierzchu stosu, sprawdzanie czy stos jest pusty.

< K (2) = ( Adams, John ), P (2) = adres bloku 2 > < K (1) = ( Aaron, Ed ), P (1) = adres bloku 1 >

Temat: Struktury danych do reprezentacji grafów. Wybrane algorytmy grafowe.

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Drzewa poszukiwań binarnych

Podstawy Informatyki. Metody dostępu do danych

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium 7. 2 Drzewa poszukiwań binarnych

Algorytmy i. Wykład 5: Drzewa. Dr inż. Paweł Kasprowski

Przyspieszenie knn. Plan wykładu. Klasyfikacja w oparciu o przykładach. Algorytm klasyfikacji. Funkcja odległoci

PLAN WYKŁADU BAZY DANYCH INDEKSY - DEFINICJE. Indeksy jednopoziomowe Indeksy wielopoziomowe Indeksy z użyciem B-drzew i B + -drzew

Wykład 2. Drzewa zbalansowane AVL i 2-3-4

Temat: Problem najkrótszych cieek w grafach waonych, cz. I: Algorytmy typu label - setting.

Drzewo. Drzewo uporządkowane ma ponumerowanych (oznaczonych) następników. Drzewo uporządkowane składa się z węzłów, które zawierają następujące pola:

Każdy węzeł w drzewie posiada 3 pola: klucz, adres prawego potomka i adres lewego potomka. Pola zawierające adresy mogą być puste.

Drzewa wyszukiwań binarnych (BST)

Sposoby przekazywania parametrów w metodach.

Tworzenie bazy danych Biblioteka tworzenie tabel i powiza, manipulowanie danymi. Zadania do wykonani przed przystpieniem do pracy:

Wykład 6. Drzewa poszukiwań binarnych (BST)

Algorytmy zwiazane z gramatykami bezkontekstowymi

Wykład 2. Drzewa poszukiwań binarnych (BST)

1) Grafy eulerowskie własnoci algorytmy. 2) Problem chiskiego listonosza

Bazy danych. Plan wykładu. Podzapytania - wskazówki. Podzapytania po FROM. Wykład 5: Zalenoci wielowartociowe. Sprowadzanie do postaci normalnych.

Tadeusz Pankowski

Wstp. Warto przepływu to

Algorytmy i Struktury Danych, 9. ćwiczenia

Drzewa binarne. Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0. jest drzewem binarnym Np.

Przykładowe B+ drzewo

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.

Wykład 8. Drzewa AVL i 2-3-4

Bazy danych. Andrzej Łachwa, UJ, /15

Listy i operacje pytania

Szukanie najkrótszych dróg z jednym ródłem

. Podstawy Programowania 2. Drzewa bst - część druga. Arkadiusz Chrobot. 12 maja 2019

Drzewa czerwono-czarne.

Wyszukiwanie w BST Minimalny i maksymalny klucz. Wyszukiwanie w BST Minimalny klucz. Wyszukiwanie w BST - minimalny klucz Wersja rekurencyjna

Bazy danych - BD. Indeksy. Wykład przygotował: Robert Wrembel. BD wykład 7 (1)

Bazy danych. Plan wykładu. Zalenoci funkcyjne. Wykład 4: Relacyjny model danych - zalenoci funkcyjne. SQL - podzapytania A B

Gramatyki regularne i automaty skoczone

Temat: Technika zachłanna. Przykłady zastosowania. Własno wyboru zachłannego i optymalnej podstruktury.

Algorytmy i Struktury Danych

Drzewa BST i AVL. Drzewa poszukiwań binarnych (BST)

Bazy danych. Plan wykładu. Model logiczny i fizyczny. Operacje na pliku. Wykład 10: Fizyczna organizacja danych w bazie danych

Wstęp do programowania. Drzewa podstawowe techniki. Piotr Chrząstowski-Wachtel

Zadania do wykonaj przed przyst!pieniem do pracy:

Studium przypadku Case Study CCNA2-ROUTING

Algorytmy i struktury danych. Wykład 6 Tablice rozproszone cz. 2

Plan wykładu. Reguły asocjacyjne. Przykłady asocjacji. Reguły asocjacyjne. Jeli warunki to efekty. warunki efekty

Definicja pliku kratowego

Sortowanie bąbelkowe

ALGORYTMY I STRUKTURY DANYCH

Wykład X. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2016 Janusz Słupik

Przypomnij sobie krótki wstęp do teorii grafów przedstawiony na początku semestru.

Rekurencyjne struktury danych

oraz spełnia warunki: (*) dla wszystkich wierzchołków

. Podstawy Programowania 2. Drzewa bst - część pierwsza. Arkadiusz Chrobot. 22 maja 2016

Drzewa podstawowe poj

rysunek. Standardowym Przybornika Elips.

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

Plan wykładu. Klucz wyszukiwania. Pojęcie indeksu BAZY DANYCH. Pojęcie indeksu - rodzaje indeksów Metody implementacji indeksów.

struktury danych dla operacji słownikowych

Poradnik korzystania z serwisu UNET: Dostp do poczty elektronicznej ze strony WWW

Kompilacja image z CVS

Projektowanie algorytmów rekurencyjnych

Mikrokontroler ATmega32. Tryby adresowania Rejestry funkcyjne

WYKŁAD 12. Wzorce projektowe czynnociowe State Mediator

Temat: Problem minimalnego drzewa Steinera. Definicja problemu. Zastosowania. Algorytm dokładny Hakimi. Algorytmy aproksymacyjne.

Kompresja danych Streszczenie Studia Dzienne Wykład 10,

Distributed Hash Tables i ich zastosowania

Bazy danych. Plan wykładu. Model logiczny i fizyczny. Operacje na pliku. Dyski. Mechanizmy składowania

Bazy danych. Plan wykładu. Proces modelowania i implementacji bazy danych. Elementy ERD. Wykład 2: Diagramy zwizków encji (ERD)

Skojarzenia. Najliczniejsze skojarzenia: Dokładne skojarzenia o maksymalnej sumie wag w obcionych pełnych grafach dwudzielnych.

Bazy danych. Plan wykładu. Przetwarzanie zapyta. Etapy przetwarzania zapytania. Wykład 12: Optymalizacja zapyta. Etapy przetwarzanie zapytania

Bazy danych. Plan wykładu. Pierwsza posta normalna. Druga posta normalna. Wykład 7: Sprowadzanie do postaci normalnych. DDL, DML

Kolejka priorytetowa. Często rozważa się kolejki priorytetowe, w których poszukuje się elementu minimalnego zamiast maksymalnego.

Wzorce (szablony) template<class T> {definicja wzorca} lub template<class TypElementu> lub template<class TypElementu1, class TypElementu2>

Algorytmy i struktury danych

Klonowanie MAC adresu oraz TTL

I Powiatowy Konkurs Matematyka, Fizyka i Informatyka w Technice Etap finałowy 10 kwietnia 2013 grupa elektryczno-elektroniczna

geometry a w przypadku istnienia notki na marginesie: 1 z 5

System midzybankowej informacji gospodarczej Dokumenty Zastrzeone MIG DZ ver Aplikacja WWW ver. 2.1 Instrukcja Obsługi

Zastosowanie programu Microsoft Excel do analizy wyników nauczania

Instalacja programu Sprzeda

Program Sprzeda wersja 2011 Korekty rabatowe

Drzewo binarne BST. LABORKA Piotr Ciskowski

Zaawansowane algorytmy i struktury danych

Program SMS4 Monitor

Algorytmy sortujące i wyszukujące

Wektor o pocztku i kocu odpowiednio w punktach. Prosta zawierajca punkty p i q: pq Półprosta zaczynajca si w punkcie p i zawierajca punkt q:.

Zadania z kolokwiów ze Wst pu do Informatyki. Semestr II.

zdefiniowanie kilku grup dyskusyjnych, z których chcemy odbiera informacje, dodawanie, usuwanie lub edycj wczeniej zdefiniowanych grup dyskusyjnych,

Rodzina B-drzew [ ]

Haszowanie. dr inż. Urszula Gałązka

Transkrypt:

Temat: Struktury do przechowywania danych w pamici zewntrznej. B - drzewa. B * - drzewa. B + - drzewa. Podstawow jednostk w operacjach wejcia - wyjcia zwizanych z dyskiem (pamici zewntrzn) jest blok. czas dostpu czas szukania cieki + bezwładno obrotowa (ok. 1/2 obrotu) + czas przesyłania 1

Przykład Załómy, e dysk ma nastpujce parametry: 40 ms trwa znalezienie cieki, wykonuje 3000 obrotów na minut, przesyła dane do pamici wewntrznej z prdkoci 1000 kb/s. 1. Odczytujemy blok 5kB z dysku i przesyłamy do pamici wewntrznej: czas dostpu = 40 ms + 10 ms +5 ms = 55 ms 2. Odczytujemy dwa bloki po 5 kb z dysku i przesyłamy do pamici wewntrznej: czas dostpu = 2 ( 40 ms + 10 ms + 5 ms) = 110 ms 3. Odczytujemy blok 10 kb z dysku i przesyłamy do pamici wewntrznej: czas dostpu = 40 ms + 10 ms +10 ms = 60 ms Kady dostp do dysku jest bardzo kosztowny. Dane w pamici zewntrznej powinny by ujte w tak struktur, która minimalizuje liczb dostpów. 2

Przyjmijmy, e w pliku znajduje si n danych. Rozmiar bloku danych, który przesyłamy do pamici wewntrznej wynosi k. Rozwaamy algorytmy realizacji operacji słownikowych: search(d, S) - wyszukiwanie danych d w zbiorze S insert(d, S) - dodanie danych d do zbioru S delete(d, S) - usuwanie danych d ze zbioru S. 1. Pliki nieuporzdkowane Jeden dostp do pliku realizuje zapis albo odczyt bloku zawierajcego k danych. search(d, S) : Algorytm wyszukiwania polega na przesłaniu co najwyej n/k bloków. insert(d, S) : Algorytm wstawianiu wymaga przesłania co najwyej n/k bloków w celu sprawdzenia, czy element d S. Jeeli ostatni blok jest pełny i d S, to element d jest wstawiany do nowego, n/k+1 bloku i nowy blok jest przesłany (zapisywany) w pliku. Tak wic koszt pesymistyczny całej operacji wynosi n/k+1. 3

delete(d, S) : Algorytm usuwania wymaga przesłania co najwyej n/k bloków w celu sprawdzenia, czy element d S. Jeeli element d znajdował si w bloku o numerze i, to blok ten jest uzupełniany ostatnim elementem z bloku o numerze n/k, a nastpnie zostaje zapisany jako blok o numerze i. Zmieniony ostatni blok pliku jest równie zapisywany na dysku, o ile po usuniciu z niego elementu ni stał si pusty. Koszt całkowity operacji delete wynosi wic: i+1+2. Jeeli i = n/k-1, to koszt wynosi: n/k-1+1+2=n/k+2 i jest to koszt pesymistyczny operacji delete. l l d 1 2 3... i... n/k-1 n/k Podstawow wad tej struktury jest: - długi czas działania operacji, - zestaw danych jest nieuporzdkowany. Podstawow zalet natomiast jest to, e: - nie jest uywana dodatkowa pami, - prostota algorytmów. 4

Struktura plików nieuporzdkowanych moe by zastosowana, gdy dane s zawsze przetwarzane sekwencyjnie, bez wykorzystania porzdku. 2. Struktury danych realizujce wyłcznie wyszukiwanie w pliku danych a) Pliki z funkcj mieszajc Załómy, e mamy okrelon funkcj mieszajc: { 0,1,... n / k 1} h : U, gdzie U jest uniwersum słownika Wartoci funkcji haszujcej jest numer bloku, w którym powinien znajdowa si wyszukiwany element. Tablica haszujca zawiera adresy bloków. Tablica ta jest równie zapisana na dysku. Algorytm wyszukiwania polega na przesłaniu do pamici wewntrznej bloku o numerze h(d). Koszt operacji jest zatem stały. Zalet tej metody jest bardzo szybki czas realizacji operacji search. Wad jest zuycie dodatkowej pamici dyskowej na tablic haszujc. Struktura taka nie powinna by uywana, gdy słownik jest modyfikowany, czyli realizowane jest usuwanie bd wstawianie. 5

b) Sekwencyjne pliki indeksowe W tej metodzie dane przechowywane s w tzw. pliku głównym, uporzdkowanym wg danej relacji. Oprócz pliku głównego tworzony jest plik pomocniczy nazywany indeksem rzadkim. Dla kadego bloku pliku głównego w indeksie rzadkim znajduje si para (v, b), gdzie b jest adresem (numerem) bloku, a v najmniejsz dan w bloku według relacji porzdkujcej. Plik główny i indeks rzadki (1, 1) (9, 2) (17, 3) (51, 4)... 1: 1 2 5 8 2: 9 10 13 15 3: 17 18 45 49 4: 51 53 80 91 Zauwamy, e plik główny ma n/k bloków, a indeks rzadki n/k 2 bloków. Algorytm wyszukiwania search(d, S) realizuje albo: sekwencyjne przegldanie bloków indeksu rzadkiego, a do momentu: (*) znalezienia bloku (v, b) w pliku indeksu rzadkiego takiego, e v>d. Do pamici wewntrznej przesyłany jest blok b-1. Jeeli dla wszystkich par indeksu rzadkiego warunek v>d nie jest spełniony, to przesyłamy ostatni blok pliku głównego. Koszt pesymistyczny operacji wyszukiwania wynosi 1+n/k 2 6

albo binarne wyszukiwanie bloku spełniajcego warunek (*). Koszt pesymistyczny operacji wyszukiwania wynosi wówczas 2+log 2 n/k 2. Zalet tej struktury jest niski czas wyszukiwania (zwłaszcza przy zastosowaniu wyszukiwania binarnego) i fakt, e dane w pliku s uporzdkowane. Wad natomiast jest konieczno utworzenia dodatkowego pliku indeksu rzadkiego i fakt, e nie opłaca si w tej strukturze, ze wzgldu na wysoki koszt czasowy, realizacja pozostałych operacji słownikowych. 3. Definicja B - drzewa ( B - drzewo klasyczne) B - drzewo T jest drzewem wielokierunkowym z korzeniem o nastpujcych własnociach: 1. Kady wzeł x ma nastpujce pola: (a) n[x] - liczba kluczy aktualnie zapamitanych w wle x, (b) n[x] kluczy zapamitanych w porzdku niemalejcym key 1 [x] key 2 [x]... key n[x] [x] (key i [x]- i - ty klucz w wle x) (c) leaf[x] - pole logiczne, którego wartoci jest 1, jeli x jest liciem albo 0, jeli x jest wzłem wewntrznym. Typ wskanika na wzeł B - drzewa oznaczmy przez wsk. 7

2. Jeli x jest wzłem wewntrznym, to zawiera take n[x]+1 wskaników do synów c 1 [x], c 2 [x], c n[x]+1 [x]. Licie nie maj synów, wic ich pola c i nie s zdefiniowane. Schemat budowy wzła wewntrznego x typu wsk n[x] key 1 [x] key 2 [x]... key n[x] [x] leaf[x] c 1 [x] c 2 [x]... c n[x] [x] c n[x]+1 [x] 3. Klucze key i [x] rozdzielaj przedziały kluczy pamitanych w poddrzewach: Jeli k i jest dowolnym kluczem z poddrzewa o korzeniu c i [x], to k key [ x] k 2 key 2[ x] key n[ x][ x] k n[ x] 1 1 1... + 4. Wszystkie licie le na tej samej głbokoci. 5. Istniej dolne i górne ograniczenia na liczb kluczy w danym wle. Ograniczenia te zale od ustalonej liczby całkowitej t 2 nazywanej minimalnym stopniem B-drzewa. (a) Kady wzeł róny od korzenia musi mie co najmniej t-1 kluczy. Kady wzeł wewntrzny róny od korzenia ma zatem co najmniej t synów. Jeli drzewo jest niepuste, to korze musi mie co najmniej jeden klucz. (b) Kady wzeł moe zawiera co najwyej 2t-1 kluczy. Dlatego kady wzeł wewntrzny moe mie co 8

najwyej 2t synów. Powiemy, e wzeł jest pełny, jeli zawiera dokładnie 2t-1 kluczy. Najprostsze B-drzewo ma minimalny stopie t = 2. Kady wzeł wewntrzny ma wtedy 1, 2 lub 3 synów. W praktyce uywa si duo wikszych wartoci t (co najmniej 100). Przykład B-drzewo o minimalnym stopniu t = 3. Kady wzeł wewntrzny róny od korzenia ma co najmniej t-1=2 kluczy i co najwyej 2t-1=5 kluczy. Kady wzeł wewntrzny ma 6 wskaników. 1 30 0 2 10 20 0 2 40 60 0 3 1 3 4 1 4 12 13 14 18 1 4 22 24 26 28 1......... 4. Maksymalna wysoko B- drzewa Mona si spodziewa, e koszt operacji słownikowych zrealizowanych na B-drzewie zasadniczo zaley od jego wysokoci. Przez n oznaczymy rozmiar słownika. Jaka bdzie maksymalna wysoko B-drzewa dla danego n 1 i minimalnego stopnia t 2? 9

Jeeli B - drzewo ma wysoko h, to liczba jego wzłów jest najmniejsza, gdy korze zawiera jeden klucz, a wszystkie pozostałe wzły zawieraj t-1 kluczy. 1... t-1 t-1 t-1... t-1 t-1... t-1 t-1... t-1 t-1... t-1 t-1... t-1 t-1... t-1 Głboko Liczba wzłów 0 1 1 2 2 2t 3 2t 2 4 Std: n 1+ h 1 1 i 1 h ( t 1) 2t = 1+ 2( t 1) = 2t 1 i= 1 n + 1 h logt 2 t t h 4. Wyszukiwanie w B-drzewie x - wskanik na B-drzewo, k - poszukiwany klucz Jeeli k znajduje si w drzewie, to wartoci funkcji B_tree_search jest wskanik na wzeł, w którym znajduje si poszukiwany klucz. Jeeli k nie ma w drzewie, to funkcja zwraca adres pusty. 10

B_tree_search(x, k) i=1; while (i<=n[x] && k>key i [x]) i++; if (i<= n[x] && (k == key i [x]) return x; if (leaf[x]) return NULL; else { Disk_Read(c i [x]); return B_tree_search(c i [x],k); } Złoono czasowa Liczba dostpów do stron na dysku w funkcji B_tree_search wynosi Θ ( h) = Θ( logt n), gdzie h jest wysokoci drzewa, a n liczb zapisanych w nim kluczy. 6. Tworzenie pustego B-drzewa Wstawienie pierwszego klucza do B - drzewa jest poprzedzone utworzeniem pustego wzła, który bdzie korzeniem drzewa (adres root). B_tree_Create (root) przydziel pam dla root ; leaf[root]=1; n[root]=0; Disk_Write(root); 11

Koszt czasowy operacji tworzenia pustego B-drzewa jest O(1) ze wzgldu na liczb dostpów dyskowych. 7. Rozbijanie wzła w B-drzewie Kluczowym elementem algorytmu wstawiania do B - drzewa jest rozbijanie "pełnego" wzła y na dwa wzły o t-1 kluczach. Wzeł y jest rozbijany wzgldem rodkowego klucza key t [y], który jest przesuwany do ojca wzła y. Załómy tymczasowo, e ojciec wzła y nie jest "pełny". Jeeli wzeł y jest korzeniem drzewa (nie ma ojca), to wysoko drzewa po rozbiciu ronie o 1. x - "niepełny" wzeł wewntrzny, znajdujcy si w pamici wewntrznej, i - indeks z zakresu 1..n[x]+1, y - "pełny" wzeł taki, e y = c i [x]. Procedura B_tree_Split_Child rozbija y na dwa wzły i zmienia x tak, aby był uwzgldniony jego nowy syn. B_tree_Split_Child(x, i, y) przydziel adres nowemu wzłowi z ; leaf[z]=leaf[y]; n[z]=t-1; for (j=1; j<=t-1; j++) key j [z]= key j+t [y]; if (!leaf[y]) for (j=1; j<=t; j++) c j [z]= c j+t [y]; n[y]=t-1; for (j=n[x]+1;j>=i+1;j--) c j+1 [x]= c j [x]; c i+1 [x]= z; for (j=n[x]; j>=i; j--) do key j+1 [x]= key j [x]; key i [x]= key t [y]; n[x]=n[x]+1; Disk_Write(y); Disk_Write(z); Disk_Write(x); 12

x Przykład... N, W... key i-1 [x] key i [x] x key i+1 [x] key i [x] key i-1 [x]... N, S, W... y=c i [x] P Q R S T U V y=c i [x] P Q R z=c i+1 [x] T U V Rozbijanie wzła z t = 4. Wzeł y jest rozbijany na dwa wzły: y oraz z, rodkowy klucz S z y zostaje przesunity do ojca y. root H s A D F H L N P r r A D F L N P Rozbijanie korzenia z t = 4. Korze r jest rozbijany na dwa wzły i jest tworzony nowy korze s. Nowy korze zawiera rodkowy klucz z r, a oba wzły powstałe z rozbicia zostaj jego synami. Rozbicie korzenia powoduje zwikszenie wysokoci drzewa o 1. 13

Koszt czasowy realizacji procedury B_tree_Split_Child jest równie O(1). 8. Wstawianie klucza do B drzewa root korze drzewa, k- wstawiany element B_tree_Insert(root, k) r=root; if (n[r]==2t-1) { przydziel pami wzłowi s ; root=s; leaf[s]=0; n[s]=0; c 1 [s]=r; B_tree_Split_Child(s, 1, r); B_tree_Insert_NoFull(s, k); } else B_tree_Insert_NoFull(r, k); B_tree_Insert_NoFull(x, k); i=n[x]; if (leaf[x]) { while (i>=1 && k<key i [x]) do { key i+1 [x]= key i [x]; i=i--; } key i+1 [x]=k; n[x]=n[x]+1; Disk_Write(x); } else { while (i>=1 && (k<key i [x]) i--; i++; 14

} Disk_Read(c i [x]); if (n[c i [x]]=2t-1) { B_tree_Split_Child(x, i, c i [x]); if (k> key i [x]) i++; } B_tree_Insert_NoFull(c i [x], k); Przykład (t = 3) a) pocztkowe drzewo G M P X A C D E J K N 0 R S T U V Y Z b) po wstawieniu B G M P X A BC D E J K N 0 R S T U V Y Z c) po wstawieniu Q G M P T X A BC D E J K N 0 Q R S U V Y Z d) po wstawieniu L P G M T X A BC D E J K L N 0 Q R S U V Y Z 15

e) po wstawieniu F P C G M T X A B D E F J K L N 0 Q R S U V Y Z Koszt pesymistyczny operacji wstawiania do B - drzewa jest rzdu wysokoci drzewa O(h)=O(log t n). Jak czsto mona si spodziewa koniecznoci rozdzielania wzłów? Rozdzielanie korzenia B-drzewa powoduje powstanie dwóch nowych wzłów. We wszystkich pozostałych przypadkach rozdzielanie zwiksza liczb wzłów w B - drzewie tylko o 1. Podczas konstruowania B - drzewa o p - wzłach rozdzielenie wzła trzeba wykona p - h razy, gdzie h jest wysokoci B - drzewa. W B - drzewie o p wzłach i minimalnym stopniu t jest co najmniej 1+ ( t 1)( p 1) kluczy. Proporcja liczby rozdziele do liczby kluczy w B - drzewie dana jest zatem wzorem: p h 1+ ( t 1)( p 1) Po podzieleniu licznika i mianownika przez p-h i obserwacji, e 1 p h dy do 0, a p 1 p h dy do 1 ze wzrostem p, wnioskujemy, e rednie prawdopodobiestwo rozdzielania 1 wynosi: t 1. Na przykład, gdy t = 5 prawdopodobiestwo to jest równe 0,25, ale dla t=500 wynosi tylko 0,002. Jest to zgodnie z oczekiwaniem; im wiksza pojemno jednego wzła, tym rzadziej trzeba wzły rozdziela. 16

9. Usuwanie klucza z B drzewa Załómy, e chcemy usun klucz k z poddrzewa o korzeniu w wle x. Zakładamy równie, e gdy z korzenia x zostaj usunite wszystkie klucze i x jest wzłem wewntrznym, to jest on wtedy usuwany, a jego jedyny syn c i [x] zostaje nowym korzeniem drzewa. W ten sposób wysoko drzewa jest zmniejszana o jeden, a własno, e korze drzewa zawiera co najmniej jeden klucz, jest zachowana (chyba, e drzewo jest puste). Opis algorytmu usuwania klucza z B - drzewa 1. Jeli klucz k jest w wle x i x jest liciem, to usu klucz k z x. 2. Jeli klucz k jest w wle x i x jest wzłem wewntrznym, to wykonaj: a) Niech y bdzie synem x poprzedzajcym k. Jeli y ma co najmniej t kluczy, to w poddrzewie o korzeniu y wyznacz poprzednik k ' klucza k. Rekurencyjnie usu k ' i w wle x zastp k przez k '. b) Symetrycznie, jeli syn z, który wystpuje po k w wle x, ma co najmniej t kluczy, to wyznacz nastpnik k ' dla k w poddrzewie o korzeniu w z. Rekurencyjnie usu k ' i zastp k przez k ' w x. c) Jeli obaj synowie y i z maj tylko po t-1 kluczy, to przenie k i wszystko z wzła z do y. W wyniku tej operacji klucz k i wskanik do z zostaj usunite z x. Nastpnie zwolnij pami przydzielon dla z i usu rekurencyjnie k z y. 3. Jeeli klucz k nie wystpuje w wewntrznym wle x, to wyznacz korze c i [x] poddrzewa, w którym musi znajdowa si k (jeli tylko jest w drzewie). Jeli c i [x] ma tylko t-1 kluczy, to wykonaj krok 3a) lub 3b) w celu zagwarantowania, e zejcie rekurencyjne nastpuje do 17

wzła zawierajcego co najmniej t kluczy. Nastpnie usu rekurencyjnie k z właciwego poddrzewa. a) Jeli w wle c i [x] jest tylko t-1 kluczy, ale jeden z jego ssiednich braci ma t kluczy, to umie w c i [x] dodatkowy klucz, przesuwajc odpowiedni klucz z x, a w jego miejsce przenoszc klucz z lewego lub prawego brata - z tego, który zawiera t kluczy. Na koniec przesu jeszcze z wybranego brata do c i [x] wskanik do odpowiedniego syna. b) Jeli c i [x] i ssiedni bracia maj po t-1 kluczy, to połcz c i [x] z jednym z ssiednich braci, przesuwajc odpowiedni klucz z x do nowo powstałego wzła. Przesunity klucz jest kluczem rodkowym w nowym wle. Poniewa wikszo kluczy w B - drzewie znajduje si w liciach, moemy oczekiwa, e włanie te klucze s usuwane najczciej. W tym przypadku usuwanie jest wykonywane w jednym przejciu od korzenia do licia. Jeli jest usuwany klucz z wzła wewntrznego, to oprócz przejcia "w dół" drzewa moe by jeszcze konieczny powrót do wzła, którego klucz jest usuwany, w celu zastpienia go przez poprzednik lub nastpnik w drzewie. Złoono czasowa operacji usuwania klucza z B - drzewa jest taka sama (zarówno pesymistyczna jak i rednia) operacji wstawiania. 18

Przykład (t = 3) a) Pocztkowe drzewo P C G M T X A B D E F J K L N O Q R S X b) Po usuniciu F: przypadek 1 U V Y Z P C G M T X A B D E J K L N O Q R S X c) Po usuniciu M: przypadek 2a U V Y Z P C G L T X A B D E J K N O Q R S X d) Po usuniciu G: przypadek 2c U V Y Z P C L T X A B D E J K N O Q R S X U V Y Z 19

e) Po usuniciu D: przypadek 3b C L P T X A B E J K N O Q R S X U V Y Z f) Po usuniciu N: przypadek 3a C L Q T X A B E J K O P R S U V Y Z Z definicji B - drzewa wynika, e s one wypełnione w co najmniej 50%. Moe si wic zdarzy, e 50% miejsca si w nich "marnuje". Analiza i symulacje wykazuj jednak, e po duej liczbie losowych wstawie i usuni B - drzewo jest wypełnione w około 69%, a póniejsze zmiany w proporcji zajtego miejsca s ju bardzo niewielkie. To, e B - drzewo bdzie wypełnione całkowicie, jest równie mało prawdopodobne, celowe wic wydaje si przyjcie dodatkowych warunków. 20

10. B * - drzewa B * - drzewo jest odmian B - drzewa wprowadzon przez Donalda Knutha, a nazwan tak przez Douglasa Comera. W B * - drzewie wszystkie wzły z wyjtkiem korzenia musz by wypełnione przynajmniej w dwóch trzecich, a nie tylko w połowie, jak w zwykłym B - drzewie. Dokładniej, liczba kluczy k, w nie bdcym korzeniem wle B * - drzewa, o minimalnym stopniu t spełnia warunek: 4t 2 2 1 3 k t Czsto rozdzielania wzłów zmniejszamy, opóniajc operacj rozdzielania, a w odpowiednim momencie rozdzielajc dwa wzły na trzy zamiast jednego na dwa. Operacj rozdzielenia opónia si, próbujc przemieszcza klucze midzy wzłem, a jego bratem, kiedy wzeł jest pełny. 21

Przykład (t = 4) a) Drzewo pocztkowe K A B C F G H I M O R S T W Y b)po wstawieniu E G O A B C E H I K M R S T W Y Zwrómy uwag, e równo zostały podzielone nie tylko klucze, ale i wolne miejsca, dziki czemu wzeł, który jest pełny, moe teraz pomieci jeszcze jeden klucz. Jeli brat pełnego wzła jest take pełny, to trzeba wykona operacj rozdzielania: tworzy si jeden nowy wzeł, klucze z wzła i jego brata (wraz z rozdzielajcym je kluczem z ojca) s równo dzielone midzy trzy wzły, a dwa oddzielajce je klucze s umieszczane w ojcu. Wszystkie trzy wzły biorce udział w operacji rozdzielania pozostaj wypełnione przynajmniej w dwóch trzecich. 22

11. B + - drzewa Jak zrealizowa w klasycznym B - drzewie algorytm wypisania wszystkich kluczy w porzdku rosncym? Mona by uy łatwej do zaimplementowania metody inorder, ale dla wszystkich wzłów wewntrznych byłby wypisywany jednorazowo tylko jeden klucz naraz, a potem nastpny krok wymagałby wczytania innego bloku. W B - drzewie odwołania do danych wystpuj w kadym wle drzewa, natomiast w B + - drzewie - jedynie w liciach. Wewntrzne wzły B + - drzewa słu jako indeksy umoliwiajce szybki dostp do danych; ta cz drzewa jest nazywana zbiorem indeksowym. Licie s zazwyczaj połczone w list. Przegldanie tej listy daje sekwencyjny dostp do danych. Wstawianie klucza do licia, w którym jest jeszcze wolne miejsce, wymaga ustawienia kluczy w tym liciu we właciwej kolejnoci. Nie zmienia si przy tym zbiór indeksowy. Jeli klucz jest wstawiany do pełnego licia, to li ten jest rozdzielany, nowy li jest włczany do listy, klucze s rozdzielane równomiernie midzy stary i nowy li, a pierwszy klucz z nowego wzła jest kopiowany (a nie przemieszczany, jak w B - drzewie) do ojca jako separator pomidzy tymi limi. Jeli ojciec nie jest pełny, moe to wymaga lokalnej reorganizacji kluczy w tym wle. Nowy li jest tworzony i włczany do listy, klucze s rozdzielane midzy te dwa licie, a nowy separator zostaje skopiowany z nowego licia do ojca. Jeli ojciec jest pełny, to proces rozdzielania postpuje jak w zwykłym B - drzewie - zbiór indeksowy jest przecie B - drzewem. 23

Przykład (t = 3) a) Drzewo pocztkowe P G K... A B D E F G H I K O b) Po wstawieniu C P D G K... A B C D E F G H I K O Usunicie klucza z licia, jeli nie powoduje wystpienia niedoboru, ogranicza si do poprawienia ustawienia pozostałych kluczy w kolejnoci, bez zmian w zbiorze indeksowym. W szczególnoci, jeli trzeba skasowa klucz wystpujcy nie tylko w liciu, to po prostu usuwa si go z licia, ale pozostawia w wle wewntrznym. Powodem takiego postpowania jest to, e klucz ten nadal pomaga znale właciw ciek podczas wdrówki w dół B + - drzewa, poniewa wci poprawnie separuje klucze dwóch ssiednich synów swojego wzła, chocia sam separator nie wystpuje w adnym z tych dwóch poddrzew. 24

Przykład a) Drzewo pocztkowe P C F K... A B C D F H I K O b) Po usuniciu B P F K... A C D F H I K O Jeli usunicie klucza z licia powoduje niedobór, to albo klucze z tego licia i jego brata s równo rozdzielane midzy te dwa wzły, albo li zostaje usunity, a jego pozostałe klucze s przenoszone do jego brata. Powyszy rysunek ilustruje ten ostatni przypadek. Po usuniciu B pojawia si niedobór i dwa licie s łczone w jeden. Pierwszy klucz prawego ssiada wzła powstajcego po połczeniu jest kopiowany do ojca, a klucze w ojcu s porzdkowane. Obydwie te operacje wymagaj uaktualnienia mieszczcego si w ojcu klucza separujcego dwa licie. Usunicie licia moe te wywoła seri złcze wzłów w zbiorze indeksowym. 25