Drzewa AVL definicje

Podobne dokumenty
Drzewa podstawowe poj

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:

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

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

Algorytmy i struktury danych. wykład 5

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

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

ALGORYTMY I STRUKTURY DANYCH

Tadeusz Pankowski

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

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

WSTĘP DO INFORMATYKI. Drzewa i struktury drzewiaste

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

Algorytmy i struktury danych

Drzewa wielokierunkowe trie

Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania:

Algorytmy i Struktury Danych

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

Podstawy Informatyki. Metody dostępu do danych

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

Drzewa czerwono-czarne.

Struktury Danych i Złożoność Obliczeniowa

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

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

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

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

Tablice hashowe. indeksowana

Sortowanie bąbelkowe

prowadzący dr ADRIAN HORZYK /~horzyk tel.: Konsultacje paw. D-13/325

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

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

Drzewa decyzyjne. Nguyen Hung Son. Nguyen Hung Son () DT 1 / 34

Wykład 3. Drzewa czerwono-czarne

Teoretyczne podstawy informatyki

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 poszukiwań binarnych

Drzewa poszukiwań binarnych

ALGORYTMY I STRUKTURY DANYCH

Algorytmy i struktury danych

Wyk lad 7: Drzewa decyzyjne dla dużych zbiorów danych

Systemy decyzyjne Wyk lad 4: Drzewa decyzyjne

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

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

Egzamin, AISDI, I termin, 18 czerwca 2015 r.

Grzegorz Mazur. Zak lad Metod Obliczeniowych Chemii UJ. 14 marca 2007

Teoretyczne podstawy informatyki

Algorytmy i Struktury Danych

Lista liniowa dwukierunkowa

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

Porządek symetryczny: right(x)

Indeksy. Wprowadzenie. Indeksy jednopoziomowe indeks podstawowy indeks zgrupowany indeks wtórny. Indeksy wielopoziomowe

Bazy danych. Andrzej Łachwa, UJ, /15

Sortowanie. Bartman Jacek Algorytmy i struktury

Przykładowe B+ drzewo

ALGORYTMY I STRUKTURY DANYCH

PODSTAWY INFORMATYKI wykład 6.

Algorytmy i Struktury Danych

Paradygmaty programowania. Paradygmaty programowania

BAZY DANYCH. Microsoft Access. Adrian Horzyk OPTYMALIZACJA BAZY DANYCH I TWORZENIE INDEKSÓW. Akademia Górniczo-Hutnicza

Algorytmy i Struktury Danych.

Algorytmy i struktury danych

Koszt zamortyzowany. Potencjał - Fundusz Ubezpieczeń Kosztów Algorytmicznych

Definicja pliku kratowego

AiSD zadanie drugie. Gliwiński Jarosław Marek Kruczyński Konrad Marek Grupa dziekańska I5. 10 kwietnia 2008

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

Kompresja danych Streszczenie Studia Dzienne Wykład 10,

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

Algorytmy i struktury danych

Algorytm obejścia drzewa poszukiwań i zadanie o hetmanach szachowych

Wstęp do programowania

Sortowanie - wybrane algorytmy

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

BAZY DANYCH. Microsoft Access. Adrian Horzyk OPTYMALIZACJA BAZY DANYCH I TWORZENIE INDEKSÓW. Akademia Górniczo-Hutnicza

Wstęp do programowania. Listy. Piotr Chrząstowski-Wachtel

Metody Kompilacji Wykład 7 Analiza Syntaktyczna

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne

Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to

Ćwiczenie 6. Hurtownie danych

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

P. Urzyczyn: Materia ly do wyk ladu z semantyki. Uproszczony 1 j. ezyk PCF

Kierunek: Informatyka. Przedmiot:

Język programowania PASCAL

OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) Algorytmy i Struktury Danych PIŁA

Wykład 5. Sortowanie w czasie liniowologarytmicznym

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Listy, kolejki, stosy

Twój wynik: 4 punktów na 6 możliwych do uzyskania (66,67 %).

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne

Zmienne dynamiczne. nazwy; odwo lania do nich sa za pomoca być tworzone jawnie procedura zmienne dynamiczne maja

Algorytmy i struktury danych Struktury danych - drzewa IS/IO, WIMiIP

Drzewa wyszukiwań binarnych (BST)

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

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

Egzaminy i inne zadania. Semestr II.

Wyk lad 14 Cia la i ich w lasności

TEORETYCZNE PODSTAWY INFORMATYKI

Wykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy

Operacje na plikach. Organizacja systemu plików. Typy plików. Struktury plików. Pliki indeksowane. Struktura wewn etrzna

Stos LIFO Last In First Out

Wykład 7 Abstrakcyjne typy danych słownik (lista symboli)

Transkrypt:

Drzewa AVL definicje Uporzadkowane drzewo binarne jest drzewem AVL 1, jeśli dla każdego wez la różnica wysokości dwóch jego poddrzew wynosi co najwyżej 1. M D S C H F K Z typowe drzewo AVL minimalne drzewa AVL W lasności drzew AVL gwarantuja, że nawet w najgorszym przypadku wysokość drzewa wyniesie 1.44 log(n + 2). 1 Drzewa te wprowadzili w 1962 roku dwaj rosyjscy matematycy: G.M.Adelson-Welskij i E.M.Landis, i od ich nazwisk (w angielskoj ezycznej transkrypcji) pochodzi nazwa AVL. Drzewa AVL 1

Drzewa AVL tworzenie Procedura wstawiania elementu do drzewa AVL jest nastepuj aca: 1. użyj standardowej procedury wstawiania elementu do uporzadkowanego drzewa binarnego, oraz, 2. jeżeli drzewo utraci lo w lasność AVL, to przywróć ja poprzez wykonanie jednej z czterech rotacji omówionych poniżej. Implementacja tego schematu wykorzystuje rekurencyjna procedure dodawania elementu i dodatkowe trójwartościowe pole balans w każdym weźle drzewa. TYPE DrzewoAVL = ^WezelAVL; WezelAVL = RECORD info: T_Element; lewe, prawe: DrzewoAVL; balans : -1..1; { 1 oznacza prawe poddrzewo wyzsze, -1 ozn.wyzsze jest lewe poddrzewo, END; 0 ozn.poddrzewa rownej wysokosci} Drzewa AVL 2

Drzewa AVL pojedyncza prawa rotacja B A A B h-1 h D 1 D 2 D 3 D 1 D 2 D 3 zauważmy ciekawe w lasności rotacji: jeśli ca le drzewo by lo uporzadkowane przed dodaniem elementu, to jest również uporzadkowane po wykonaniu rotacji jeśli przed dodaniem elementu poddrzewa D 1,D 2,D 3 mia ly w lasność AVL to ca le drzewo ma t e w lasność po dodaniu elementu i wykonaniu rotacji Drzewa AVL 3

Drzewa AVL podwójna prawa rotacja ciag dalszy w lasności rotacji: rotacja pozostawia drzewo o tej samej wysokości co przed dodaniem elementu, zatem ca la operacja nie narusza w lasności AVL z punktu widzenia żadnego nadrzednego elementu drzewa (inaczej mówiac, rotacja kasuje naruszenie w lasności AVL, jeśli takie nastapi lo) B C A A B C h-1 h D 1 D 2 D 3 D 4 D 1 D 2 D 3 D 4 Drzewa AVL 4

Drzewa AVL implementacja dodawania elementu dodawanie elementu do drzewa można zrealizować zwyk lym rekurencyjnym algorytmem dodawania elementu do drzew uporzadkowanych, jeśli uwzgledni sie, za pomoca pola balans, możliwy wzrost wysokości drzewa i konieczność wykonania rotacji (patrz funkcja DodajAVL): poprzedni przyrost przyrost nowy przyrost balans lewego prawego balans drzewa komentarz poddrzewa poddrzewa -1 0 0 b.z. 0 drzewo bez zmian -1 1(sk)/-1(we) 0-2 0 0 prawa rotacja -1 0 1(sk)/-1(we) 0 0 poprawi lo sie 0 0 0 b.z. 0 drzewo bez zmian 0 1(sk)/-1(we) 0-1 1 dopuszcz.wzrost 0 0 1(sk)/-1(we) 1 1 dopuszcz.wzrost 1 0 0 b.z. 0 drzewo bez zmian 1 1(sk)/-1(we) 0 0 0 poprawi lo sie 1 0 1(sk)/-1(we) 2 0 0 lewa rotacja Drzewa AVL 5

FUNCTION DodajAVL(VAR korzen : DrzewoAVL; element : DrzewoAVL; FUNCTION PorownajEl(e1, e2 : T_Element) : CHAR) : INTEGER; {zwraca 0 gdy wysokosc drzewa nie wzrosla; -1/1 gdy wzrosla przez lewe/prawe poddrzewo} VAR l_wzr, p_wzr : -1..1; BEGIN IF korzen=nil THEN BEGIN korzen := Element; korzen^.balans := 0; DodajAVL := 1; {w tym przypadku wartosc 1 lub -1 nie ma znaczenia} END ELSE BEGIN l_wzr := 0; {wartosc wzrostu lewego lub prawego poddrzewa potrzebna dla...} p_wzr := 0; {wybrania rotacji: pojedynczej lub podwojnej, i prawej lub lewej} CASE PorownajEl(element^.info, korzen^.info) OF < : l_wzr := DodajAVL(korzen^.lewe, element, PorownajEl); = : ; (* blad - element jest juz w/na drzewie *) > : p_wzr := DodajAVL(korzen^.prawe, element, PorownajEl); END; (**** teraz rozwaz mozliwe przypadki (patrz tabela): - wykonaj odpowiednia rotacje jesli to konieczne, - ustaw pole balans, i wylicz wlasciwa wartosc funkcji. *) END; END; {DodajAVL} Drzewa AVL 6

Drzewa AVL usuwanie elementu Usuwanie elementu z drzewa AVL jest zrealizowane analogicznie: element jest usuwany procedura rekurencyjna, i po powrocie z wywo lań rekurencyjnych na kolejnych poziomach aktualizowane jest pole balans, a w razie potrzeby wykonywana jest odpowiednia rotacja. Jednak w przypadku usuwania wez lów rotacja nie pozostawia drzewa o tej samej wysokości, co przed usunieciem wez la, a o 1 niższe. Dlatego jednorazowe wykonanie rotacji nie kasuje do końca zaburzenia, które propaguje sie dalej i na wyższych poziomach moga być konieczne kolejne rotacje. Skrajnym przyk ladem takiej sytuacji jest ekstremalne drzewo AVL, które na każdym poziomie posiada maksymalne niezrównoważenie dopuszczalne przez w lasność AVL. Usuni ecie w tym drzewie w ez la z niższej ga l ezi drzewa powoduje kaskad e rotacji na wszystkich poziomach. Drzewa AVL 7

Skrajny przyk lad usuwania w ez la z drzewa AVL: B M 3 E... A C H D F G I J K L Usuniecie elementu A powoduje naruszenie równowagi w weźle B. Aby to skorygować należy wykonać lewa rotacje wynoszac a element C w góre, a element B w dó l, i zmniejszajac a w efekcie wysokość drzewa B-C-D. To jednak powoduje naruszenie równowagi w weźle E i konieczność ponownej lewej rotacji wynoszacej do góry weze l H. Wysokość tego poddrzewa maleje, i może z kolei spowodować naruszenie równowagi w weźle M, powodujac konieczność wykonania w tym punkcie rotacji, itd. Drzewa AVL 8

B-drzewa definicja i w lasności B-drzewem 2 nazywamy sortowane drzewo rzedu 2D + 1 (niebinarne), w którym każdy weze l, z wyjatkiem korzenia, zawiera od D do 2D elementów (kluczy), a wszystkie ścieżki od korzenia do wszystkich liści maja te sama d lugość. Przyk ladowe B-drzewo rz edu 3 (liczba D = 1): 15 1 7 20 23 30 80 40 35 45 46 3 90 87 89 91 Jak wynika z definicji, w B-drzewie liście wystepuj a tylko na najniższym poziomie. Z konstrukcji drzewa rzedu > 2 wynika, że każdy weze l drzewa, który zawiera k kluczy, posiada dok ladnie k + 1 poddrzew, przy czym w B-drzewie wszystkie te poddrzewa musza być niepuste, z wyjatkiem liści. 2 B-drzewa zosta ly wprowadzone w roku 1972 przez dwóch matematyków: Niemca Rudolfa Bayera i Amerykanina Edwarda M. McCreighta. Nie wiadomo skad wzieli nazwe B-drzewa. B-drzewa 9

Zauważmy również, że korzeń B-drzewa jest jedynym wez lem, który może zawierać nieograniczona liczbe od 1 do 2D elementów. Cześciowe zrównoważenie B-drzew powoduje, że ich wysokość w najgorszym przypadku jest również logarytmem (rzedu D) liczby wez lów. Nadaja sie one zatem do przechowywania dużych ilości danych, w szczególności w plikach dyskowych, zw laszcza jeśli wartość D jest tak duża, że wielkość wez la zajmuje ca l a jednostke alokacji pamieci dyskowej, lub jej wielokrotność. Dlatego typowy rzad B-drzewa może wynosić nawet kilkaset, i wtedy nawet bardzo duże drzewo może mieć tylko 3-4 poziomy. B-drzewa definicja typu danych CONST BDrzewoMax = 500; TYPE TypElementu = INTEGER; BDrzewo = ^WezelB; WezelB = RECORD naddrzewo:bdrzewo; elementy :ARRAY[1..BDrzewoMax] OF TypElementu; poddrzewa:array[0..bdrzewomax] OF BDrzewo; liczba :INTEGER; END; B-drzewa 10

B-drzewa dodawanie kluczy proste dodawanie kluczy - zawsze do liścia 10 20 30 10 20 30 40 30 10 20 40 50 przelewanie kluczy miedzy sasiednimi liściami 30 10 20 25 40 42 44 50 40 10 20 25 30 41 42 44 50 B-drzewa 11

B-drzewa dodawanie kluczy (2) rozpo lawianie wez la z propagacja klucza w góre 40 10 20 25 30 41 42 44 50 40 43 10 20 25 30 41 42 44 50 32 43 10 20 25 30 34 40 41 42 44 50 20 32 43 10 15 25 30 34 40 41 42 44 50 20 32 43 56 3 10 15 25 30 34 40 41 42 44 50 58 60 B-drzewa 12

B-drzewa usuwanie kluczy usuwanie kluczy z liści i zapadanie si e drzewa 30 38 10 20 25 32 34 40 41 42 50 56 44 46 52 54 58 60 30 38 42 10 20 25 32 34 40 41 44 50 56 B-drzewa 13

B-drzewa usuwanie kluczy (2) usuwanie kluczy z liści i l aczenie sasiednich liści 30 38 42 10 20 25 32 34 40 41 44 50 56 25 38 42 10 20 30 34 40 41 44 50 56 25 42 10 20 30 38 40 41 44 50 56 B-drzewa 14

Operacje na poznanych typach drzew Wysokość drzewa w przypadku: Drzewa: najgorszym najlepszym średnim zrównoważone log 2 (N + 1) log 2 (N + 1) log 2 (N + 1) niezrównoważone N log 2 (N + 1) 1.39 log 2 (N) drzewa AVL 1.44 log 2 (N) log 2 (N + 1) log 2 (N) + 0.25 B-drzewa log D+1 ( N+1 2 ) + 1 log 2D+1(N + 1) log 1.38D+1 ( N D+1 ) + 1 Drzewa: wyszukiwania elementu Z lożoność obliczeniowa operacji: dodawania elementu usuwania elementu przegladania uporzadkowanego nieuporzadkowane O(N) O(1) O(1) O(N log N) uporzadkowane O(N) O(N) O(N) O(N) zrównoważone O(log N) O(log N) O(log N) O(N) drzewa AVL O(log N) O(log N) O(log N) O(N) B-drzewa O(log N) O(log N) O(log N) O(N) Drzewa zrównoważone podsumowanie 15