ALGORYTMY I STRUKTURY DANYCH

Slides:



Advertisements
Podobne prezentacje
ALGORYTMY I STRUKTURY DANYCH
Advertisements

STRUKTURY DANYCH.
Grażyna Mirkowska PJWSTK, 10 stycznia 2001
ALGORYTMY GRAFOWE.
Grażyna Mirkowska PJWSTK 15 listopad 2000
Metody Analizy Programów Wykład 02
Wykład 10 Metody Analizy Programów Specyfikacja Struktur Danych
Wykład 06 Metody Analizy Programów System Hoare
Wykład 6 Najkrótsza ścieżka w grafie z jednym źródłem
Minimalne drzewa rozpinające
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
Elementarne struktury danych Piotr Prokopowicz
Współprogramy III Ten wykład ma na celu pokazanie kolejnej ciekawej możliwości, którą oferują współprogramy. Wspólprogramy reprezentujące wyrażenia regularne.
Współprogramy II W tym wykładzie pogłębimy naszą znajomość z współprogramami. Omówimy współpracę procedur rekurencyjnych i współprogramów, wprowadzimy.
pseudokody algorytmów
ZŁOŻONOŚĆ OBLICZENIOWA
ALGORYTMY GEOMETRYCZNE.
ALGORYTMY I STRUKTURY DANYCH
Model danych oparty na listach
Materiały pomocnicze do wykładu
Dynamiczne struktury danych 1
12 grudnia 2001Matematyka Dyskretna, Elementy Kombinatoryki G.Mirkowska, PJWSTK 1 Wykład 11 Elementy Kombinatoryki.
Analiza kosztu zamortyzowanego
FP-Growth Adam Pieśkiewicz Kamil Niezręcki Krzysztof Grześkowiak
ALGORYTMY I STRUKTURY DANYCH
Matematyka Dyskretna, G.Mirkowska PJWSTK
Algorytmy i struktury danych
Algorytmy i struktury danych
Podstawy programowania II
Algorytmy i Struktury Danych Sortowanie
Sortowanie przez kopcowanie
DRZEWA BINARNE Emilia Krukowska.
Geometria obliczeniowa Wykład 8
Geometria obliczeniowa Wykład 3
Geometria obliczeniowa Wykład 4
ALGORYTMY I STRUKTURY DANYCH
Algorytmy i Struktury Danych
ALGORYTMY I STRUKTURY DANYCH WYKŁAD 03 cd. Wyszukiwanie Grażyna Mirkowska PJWSTK, 2003/2004.
WYKŁAD 06 Programowanie dynamiczne Grażyna Mirkowska.
ALGORYTMY I STRUKTURY DANYCH WYKŁAD 04 k-ty co do wielkości. Stosy Grażyna Mirkowska PJWSTK, ITN semestr letni 2002.
Algorytmy i Struktury Danych Struktury Danych
Algorytmy i Struktury Danych Drzewa BTS, AVL
Algorytmy grafowe Minimalne drzewa rozpinające
Algorytmy równoległe Algorytm równoległy pozwala na wykonywanie w danej chwili więcej niż jednej operacji. EREW - wyłączny odczyt i wyłączny zapis; CREW.
Teoretyczne Podstawy Informatyki - Rok I - kierunek IS w IFAiIS UJ – 2006/ /11/2006Prof. dr hab. Elżbieta Richter-Wąs Wykład 6 Model danych oparty.
Zbiory dynamiczne.
ALGORYTMY I STRUKTURY DANYCH
Indeksy drzewiaste. ISAM ISAM - INDEXED SEQUENTIAL ACCESS METHOD Problem: –Dany jest plik uporządkowany – w jaki sposób zrealizować efektywnie zapytanie.
Listy.
Kolejka priorytetowa.
Drzewa.
Zbiory rozłączne.
ALGORYTMY I STRUKTURY DANYCH
Współprogramy II W tym wykładzie pogłębimy naszą znajomość z współprogramami. Omówimy współpracę procedur rekurencyjnych i współprogramów, wprowadzimy.
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
Algorytmy i struktury danych
Algorytmy i struktury danych
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
Zapis prezentacji:

ALGORYTMY I STRUKTURY DANYCH WYKŁAD 08 Drzewa binarnych poszukiwań Grażyna Mirkowska PJWSTK, 2004

G. Mirkowska, ASD_08 Drzewa binarnych poszukiwań Plan wykładu Drzewa BST Wstawianie Koszt utworzenia drzewa Usuwanie elementu z drzewa BST Sortowanie z BST Drzewo AVL Rotacje Koszty operacji 2019-04-19 G. Mirkowska, ASD_08 Drzewa binarnych poszukiwań

G. Mirkowska, ASD_08 Drzewa binarnych poszukiwań Sprawdzian Data 6 grudnia, sobota Godz.  10-12 sale  aula + A1 + A2 2019-04-19 G. Mirkowska, ASD_08 Drzewa binarnych poszukiwań

Wstawianie elementu do drzewa BST Zadanie Do zbioru reprezentowanego przez drzewo D dołączyć element e, o ile nie należy on jeszcze do etykiet drzewa D. insert : BST ET BST Rozpoczynając od korzenia drzewa D przeglądamy wierzchołki tak, jak w operacji wyszukiwania: Jeśli znajdziemy wierzchołek z etykietą e, to wynikiem operacji jest dane drzewo D. Jeśli e nie jest etykietą drzewa D, to tworzymy nowy wierzchołek z etykietą e i dowiązujemy go 1. jako lewego syna wierzchołka v takiego, że e< et(v) i LP jest puste lub 2. jako prawego syna v, gdy et(v)< e, oraz PD jest puste. Metoda 2019-04-19 G. Mirkowska, ASD_08 Drzewa binarnych poszukiwań

G. Mirkowska, ASD_08 Drzewa binarnych poszukiwań Przykład 6 5 9 12 5 9 6 5 6 6 5 9 12 8 6 5 9 12 8 2019-04-19 G. Mirkowska, ASD_08 Drzewa binarnych poszukiwań

G. Mirkowska, ASD_08 Drzewa binarnych poszukiwań Algorytm wstawiania { bool := false; x:= root ; while not bool { if x.et= e then bool := true else if (e < x.et) then if ( x.lewy <>null) then x := x.lewy else y := New node(e); x.lewy := y; bool := true fi else {//analogicznie dla prawego //poddrzewa} fi fi }} Lemat Algorytm insert zatrzymuje się dla wszystkich danych początkowych. Otrzymane w wyniku drzewo ma w zbiorze swoich etykiet e. insert Koszt : A(n) = O(lg n) 2019-04-19 G. Mirkowska, ASD_08 Drzewa binarnych poszukiwań

Koszt utworzenia drzewa BST UWAGA Koszt utworzenia i struktura drzewa zależą od kolejności wkładanych elementów. Najgorszy przypadek = wkładane elementy tworzą ciąg uporządkowany W(n) = O(n2) 9 8 7 6 Średni koszt utworzenia drzewa BST o n wierzchołkach wynosi O(n lg n), por. uzasadnienie. Lemat 2019-04-19 G. Mirkowska, ASD_08 Drzewa binarnych poszukiwań

G. Mirkowska, ASD_08 Drzewa binarnych poszukiwań Koszt utworzenia c.d. Niech wkładane do drzewa elementy będą permutacją liczb 1...n i niech prawdopodobieństwo tego, że i-tym elementem jest k będzie takie samo dla wszystkich k=1,2,...n. i LD PD Każdy wkładany element jest porównywany z korzeniem Hipoteza : A(i)  k * i *lg i 2019-04-19 G. Mirkowska, ASD_08 Drzewa binarnych poszukiwań

Operacja usuwania elementu delete : BST Et  BST delete(D, e) (1) Znajdujemy wierzchołek x o etykiecie e stosując algorytm member i zapamiętujemy jego ojca y. (2) Dalsze postępowanie zależy od liczby następników x: - Usuwamy wierzchołek x, jeśli jest on liściem. - Zastępujemy wierzchołek x jego następnikiem, jeśli x ma tylko jednego syna. - Zastępujemy etykietę wierzchołka x, najmniejszą etykietą w jego prawym poddrzewie (lub największą w jego lewym poddrzewie), a wierzchołek o tej etykiecie usuwamy z drzewa, stosując zasadę (1) lub(2). Metoda 2019-04-19 G. Mirkowska, ASD_08 Drzewa binarnych poszukiwań

G. Mirkowska, ASD_08 Drzewa binarnych poszukiwań Usuwanie - ilustracja 1 1 Przypadek : x nie ma synów, tzn. jest liściem (rz(x)=0) y PD y x LD y LD y x PD Usuwamy wierzchołek x. 2019-04-19 G. Mirkowska, ASD_08 Drzewa binarnych poszukiwań

G. Mirkowska, ASD_08 Drzewa binarnych poszukiwań Usuwanie - ilustracja 2 2. Przypadek : x ma jednego syna, tzn. rz(x) = 1. y x PD LD(x) y LD(x) PD y.lewy := x.lewy; Usuwamy wierzchołek x. Postępowanie jest analogiczne, gdy x ma tylko prawego syna. 2019-04-19 G. Mirkowska, ASD_08 Drzewa binarnych poszukiwań

G. Mirkowska, ASD_08 Drzewa binarnych poszukiwań Usuwanie - ilustracja 3 3. Przypadek : x ma dwóch synów, tzn. rz(x) = 2. y x PD LD(x) PD’(x) y x PD LD(x) PD(x) Et(x)=Et(z) z z := min(PD(x)); Et(x) := et(z); x.prawy:= delete(PD(x), et(z)); Zastępujemy wierzchołek x jego bezpośrednim następnikiem w drzewie . 2019-04-19 G. Mirkowska, ASD_08 Drzewa binarnych poszukiwań

Zastosowanie: wyszukiwanie i sortowanie Zadanie A Dany jest zbiór n elementów należących do pewnego uporządkowanego zbioru. Zbadać, czy dany element należy, czy nie należy do tego zbioru. Zadanie B Dany jest zbiór n elementów należących do pewnego uporządkowanego zbioru. Uporządkować elementy tego zbioru w porządku niemalejącym. 1.Zbudować drzewo BST, 2.Odczytać jego wierzchołki w porządku inorder (infixowym) sortowanie w tablicy z użyciem listy dynamicznej z użyciem drzewa BST Rozwiązanie 2019-04-19 G. Mirkowska, ASD_08 Drzewa binarnych poszukiwań

G. Mirkowska, ASD_08 Drzewa binarnych poszukiwań Drzewo wyważone AVL Powiemy, że drzewo binarne jest wyważone, jeżeli dla wszystkich jego wierzchołków, wysokości lewego i prawego poddrzewa różnią się co najwyżej o 1. Definicja Wyważone drzewo BST nazywamy drzewem AVL (Adelson-Velskii-Landis) 6 5 9 12 8 2 3 6 5 9 12 8 Przykład Drzewo AVL A to nie jest drzewo AVL 2019-04-19 G. Mirkowska, ASD_08 Drzewa binarnych poszukiwań

Obliczanie wag wierzchołków Niech w będzie funkcją określoną na wierzchołkach drzewa BST taką, że w( x) = h(LD) - h(PD), gdzie LD i PD są odpowiednio lewym i prawym poddrzewem drzewa o korzeniu w x. 2 -1 +1 6 5 9 12 8 2 3 Uwaga Drzewo binarnych poszukiwań D jest drzewem AVL wttw dla każdego xD.V , w(x) {-1, 0, +1}. 2019-04-19 G. Mirkowska, ASD_08 Drzewa binarnych poszukiwań

G. Mirkowska, ASD_08 Drzewa binarnych poszukiwań Operacje na AVL member : AVL  Et  Bo insert : AVL  Et  AVL delete : AVL  Et  AVL Wykonuje się tak jak na drzewach BST, ale... Usunięcie jakiegoś elementu z drzewa BST może zmniejszyć wysokość jakiegoś poddrzewa! +1 +1 +2 -1 6 5 9 12 8 2 6 5 9 12 8 -1 -2 5 5 3 Dołączenie nowego elementu do drzewa BST może zwiększyć wysokość jakiegoś poddrzewa! 2019-04-19 G. Mirkowska, ASD_08 Drzewa binarnych poszukiwań

G. Mirkowska, ASD_08 Drzewa binarnych poszukiwań Rotacja w prawo A B Z X * Y +2 +1 B A Z X * Y Po rotacji * 2019-04-19 G. Mirkowska, ASD_08 Drzewa binarnych poszukiwań

G. Mirkowska, ASD_08 Drzewa binarnych poszukiwań Rotacja w lewo Pojedyncza rotacja w lewo wzgl. B B A Z X * Y -2 A B Z X * Y -1 * Po rotacji 2019-04-19 G. Mirkowska, ASD_08 Drzewa binarnych poszukiwań

Podwójna rotacja w prawo W lewo względem A i w prawo wzgl. C A C U X Y * +2 -1 B Z +1 C B U X Z -1 A Y Po rotacji * 2019-04-19 G. Mirkowska, ASD_08 Drzewa binarnych poszukiwań

Podwójna rotacja w lewo W prawo względem A i w lewo wzgl. C C B U X Z A Y * A C U X Y * -2 B Z -1 +1 Po rotacji 2019-04-19 G. Mirkowska, ASD_08 Drzewa binarnych poszukiwań

Ile rotacji trzeba wykonać? Jeśli wkładamy element do drzewa AVL, to musimy wykonać co najwyżej 1 rotację. Koszt 1 rotacji jest stały! pokaz Jeśli usuwamy element z AVL, to może się zdarzyć, że będziemy musieli wykonać tyle rotacji ile jest poziomów w drzewie. Przy usuwaniu jednego elementu z AVL o n wierzchołkach, liczba rotacji wynosi co najwyżej lg n. 2019-04-19 G. Mirkowska, ASD_08 Drzewa binarnych poszukiwań

G. Mirkowska, ASD_08 Drzewa binarnych poszukiwań Przykład 3 2 4 1 5 +1 -1 3 2 1 5 +1 -1 USUWAM 4 11 9 7 6 8 10 13 12 14 -1 +2 Po rotacji wzgl. 5 5 2 7 9 13 11 10 6 8 12 14 -1 1 3 2 1 3 5 -2 11 9 7 6 8 10 13 12 14 -1 Po rotacji wzgl.3 2019-04-19 G. Mirkowska, ASD_08 Drzewa binarnych poszukiwań

G. Mirkowska, ASD_08 Drzewa binarnych poszukiwań Koszt operacji w AVL Jaka jest minimalna liczba wierzchołków w drzewie AVL o wysokości h? LD PD h h-1 h-2 N0=1 N h= N h-1 + N h-2 +1 Można udowodnić przez indukcję, że Nh  2 h/2 Wniosek Koszty operacji min, member, insert i delete są rzędu O(lg n). Stąd h  2 lg Nh 2019-04-19 G. Mirkowska, ASD_08 Drzewa binarnych poszukiwań