ALGORYTMY I STRUKTURY DANYCH

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

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 BST i AVL. Drzewa poszukiwań binarnych (BST)

Struktury Danych i Złożoność Obliczeniowa

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

ALGORYTMY I STRUKTURY DANYCH

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

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

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

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

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

Drzewa czerwono-czarne.

WSTĘP DO INFORMATYKI. Drzewa i struktury drzewiaste

Algorytmy i struktury danych. wykład 5

Algorytmy i Struktury Danych

Wykład 3. Drzewa czerwono-czarne

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

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

Algorytmy i Struktury Danych

Sortowanie bąbelkowe

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

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

Porządek symetryczny: right(x)

Algorytmy i Struktury Danych

Drzewa poszukiwań binarnych

Teoretyczne podstawy informatyki

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

Algorytmy i Struktury Danych.

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

Podstawy Informatyki. Metody dostępu do danych

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

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

Lista liniowa dwukierunkowa

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

Tadeusz Pankowski

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

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

dr inż. Paweł Myszkowski Wykład nr 11 ( )

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

Struktury danych: stos, kolejka, lista, drzewo

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

Listy, kolejki, stosy

Drzewo binarne BST. LABORKA Piotr Ciskowski

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

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

Teoretyczne podstawy informatyki

Podstawy Informatyki. Wykład 6. Struktury danych

Drzewa podstawowe poj

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

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

Programowanie obiektowe

Egzaminy i inne zadania. Semestr II.

Definicja pliku kratowego

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

Drzewa AVL definicje

Matematyka dyskretna - 7.Drzewa

Drzewa poszukiwań binarnych

Typy danych. 2. Dane liczbowe 2.1. Liczby całkowite ze znakiem i bez znaku: 32768, -165, ; 2.2. Liczby rzeczywiste stało i zmienno pozycyjne:

Bazy danych. Andrzej Łachwa, UJ, /15

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

Algorytmy i Struktury Danych, 9. ćwiczenia

liniowa - elementy następują jeden za drugim. Graficznie możemy przedstawić to tak:

Instrukcje dla zawodników

Programowanie obiektowe

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne

Grafy (3): drzewa. Wykłady z matematyki dyskretnej dla informatyków i teleinformatyków. UTP Bydgoszcz

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

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

Drzewa wyszukiwań binarnych (BST)

7. Teoria drzew - spinanie i przeszukiwanie

Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1

Sortowanie - wybrane algorytmy

Wstęp do programowania

Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania:

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

Sortowanie. Bartman Jacek Algorytmy i struktury

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

Algorytmy i struktury danych

UNIWERSYTET GDAŃSKI MATERIAŁY DYDAKTYCZNE DO PRZEDMIOTU MATEMATYKA DYSKRETNA. pod redakcją: Hanna Furmańczyk Karol Horodecki Paweł Żyliński

Wykład 8. Drzewo rozpinające (minimum spanning tree)

Grafika komputerowa Wykład 6 Krzywe, powierzchnie, bryły

Metody teorii gier. ALP520 - Wykład z Algorytmów Probabilistycznych p.2

TEORETYCZNE PODSTAWY INFORMATYKI

0-0000, , , itd

TEORETYCZNE PODSTAWY INFORMATYKI

Poprawność semantyczna

Co to są drzewa decyzji

STRUKTURY DANYCH I ZŁOŻONOŚĆ OBLICZENIOWA STRUKTURY DANYCH I ZŁOŻONOŚĆ OBLICZENIOWA. Część 3. Drzewa Przeszukiwanie drzew

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

JAO - lematy o pompowaniu dla jezykow bezkontekstowy

Wykład 5. Sortowanie w czasie liniowologarytmicznym

Jeśli czas działania algorytmu zależy nie tylko od rozmiaru danych wejściowych i przyjmuje różne wartości dla różnych danych o tym samym rozmiarze,

PODSTAWY INFORMATYKI wykład 6.

Ogólne wiadomości o drzewach

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Dynamiczne drzewa. Marian M. Kędzierski. 26 listopada Wstęp Euler-Tour Trees Dynamiczna spójność Algorytm Dinica Link-Cut Trees

TEORETYCZNE PODSTAWY INFORMATYKI

Wyznaczanie strategii w grach

Wykłady z Matematyki Dyskretnej

Transkrypt:

LGORTM I STRUKTUR DNH Temat 6: Drzewa ST, VL Wykładowca: dr inż. bigniew TRPT e-mail: bigniew.tarapata@isi.wat.edu.pl http://www.tarapata.strefa.pl/p_algorytmy_i_struktury_danych/ Współautorami wykładu są:.najgebauer, D.Pierzchała Wykład : lgorytmy przetwarzania struktur drzewiastych drzewa poszukiwań binarnych; podstawowe operacje na drzewach ST; drzewa VL; algorytmy rotacji;

Przypomnienie struktura drzewiasta Drzewiastą strukturą danych nazywamy strukturę danych S=(D, R, e), w której relacja porządkująca N opisuje kolejne, rekurencyjne powiązania pomiędzy danymi elementarnymi drzewa, tworzącymi kolejne poddrzewa. Przykład struktury drzewiastej Uniwersytet Wydział Wydział Wydział Wydział Instytut Instytut Instytut Instytut Instytut Element struktury drzewiastej Element drzewa zawiera: Dane elementarne, Realizację relacji następstwa dowiązania do następników; Korzeń Dane Dowiązanie na lewego potomka Dowiązanie na prawego potomka Przodek Potomek Liść 4

Drzewa poszukiwań binarnych Wysokość węzła x: Największa liczba węzłów na drodze prostej z węzła x do liści (bez węzła x); Inaczej jest to liczba krawędzi na tej drodze; Wysokość drzewa: Wysokość korzenia; Wpływa na złożoność operacji na drzewie; Głębokość węzła x: Największa liczba węzłów na drodze prostej z korzenia do węzła x (bez korzenia); Inaczej jest to liczba krawędzi na tej drodze; Głębokość drzewa: Głębokość najodleglejszego liścia; Drzewa poszukiwań binarnych Drzewo binarne: Każdy węzeł ma co najwyżej dwóch potomków; upełne drzewo binarne (dwójkowe): Każdy węzeł, z wyjątkiem liści, ma dokładnie dwóch potomków niepustych; Drzewo poszukiwań binarnych (ST): Dla każdego węzła (nie liścia) wszystkie wartości przechowywane w lewym poddrzewie są mniejsze od jego wartości oraz przeciwnie dla drzewa prawego; Drzewo binarne zrównoważone: Dla każdego węzła różnica wysokości obu poddrzew wynosi co najwyżej 1; Drzewo doskonale zrównoważone: Wszystkie liście znajdują się na jednym poziomie; 6

Drzewa poszukiwań binarnych Ograniczenia w drzewie poszukiwań binarnych (ST): Podstawowe operacje realizują się szybko, dzięki symetrycznemu porządkowi; Jeśli jednak będziemy do drzewa wstawiać elementy np. posortowane, drzewo rozrośnie się w jedną ze stron (może w skrajnym przypadku być zdegenerowane do listy powiązanej); Wtedy złożoność przeszukiwania (a tym samym wszystkich innych operacji) jest liniowa: O(n); by równoważyć drzewa ST wymyślono ich różne odmiany, np. drzewa VL, czerwono-czarne, splay; Dzięki zrównoważeniu nie stracimy podstawowej zalety struktury drzewiastej: złożoności obliczeniowej mniejszej niż liniowa; 7 Drzewa poszukiwań binarnych Lemat 1 Liczba węzłów w drzewie doskonale zrównoważonym wynosi: h+1 ; Dowód (przez indukcję) Przyjmijmy, że dowolny poziom mają numer l, l=1..h; Liczba wszystkich węzłów wynosi: h l h 1 = + 1 Przez indukcję: dla : a dla H+1: l= l= H + 1 l= l = = 1 + 1 1 = 1 = 1 H l l H + 1 H + 1 H + 1 = + l= = 1+ H + = 1 8

Drzewa VL Drzewo VL (196 delson-velskii, Landis) Drzewo VL jest rozwinięciem drzewa ST; Dla każdego wierzchołka w drzewie VL wysokości dwóch poddrzew różnią się o co najwyżej 1 poziom; Węzeł oprócz pól danych, lewego i prawego dowiązania ma też pole opisujące różnicę wysokości lewego i prawego poddrzewa; z definicji wynika, że to pole może mieć wartość z podzbioru {,, 1}; 9 Operacje na drzewie VL Wyszukanie: drzewo VL jest też drzewem ST, zatem operacja wygląda tak jak dla drzew ST; Wstawianie: polega na wyszukaniu miejsca w drzewie a potem wstawieniu elementu (jak w ST); ponieważ podczas operacji struktura drzewa zmienia się i może nie zostać zachowany warunek VL (o różnicy w wysokości poddrzew), trzeba tę strukturę przywrócić; 1

Operacje na drzewie VL Usuwanie: polega na wyszukaniu elementu w drzewie a potem jego usunięciu (patrz ST) podczas operacji należy utrzymać zrównoważoną strukturę drzewa (j.w.); Rotacja: zmiana konfiguracji węzłów; celem jest przywrócenie struktury drzewa VL; wyróżniamy rotacje: lewe i prawe, pojedyncze i podwójne; 11 Operacje na drzewie VL Obliczanie wag wierzchołków: Dla każdego wierzchołka drzewa: w( x) = h(ld) - h(pd), gdzie LD i PD są odpowiednio lewym i prawym poddrzewem drzewa o korzeniu w x; 6 Pamiętaj! Drzewo ST jest drzewem VL +1 9 dla każdego wierzchołka w: w(x) {,, +1} 8 1 1

Operacje na drzewie VL Wstawianie niespełniony warunek VL: Wstawienie nowego elementu do drzewa ST może zwiększyć wysokość poddrzewa (wymagana rotacja); +1 6 + +1 9 8 1 1 Operacje na drzewie VL Usuwanie niespełniony warunek VL: Usunięcie elementu z drzewa ST może zmniejszyć wysokość poddrzewa (wymagana rotacja)! - 6 9 8 1 14

Operacje na drzewie VL Rotacja: Lewa rotacja (lub w lewo ): Polega na obrocie wokół wyróżnionego węzła (x) przeciwnie do ruchu wskazówek zegara; W wyniku rotacji węzeł y staje się nowym korzeniem poddrzewa, węzeł x zostaje jego lewym synem a lewy syn węzła y zostaje prawym synem węzła x; Można ją wykonać, jeżeli prawy syn węzła y nie jest NULL; y x x c a y a b b c 1 Operacje na drzewie VL Rotacja: Prawa rotacja (lub w prawo ): Działa symetrycznie do lewej rotacji; Rotację rozpoczynamy od węzła z wagą równą ±; Kierunek zależy od znaku; Przy wstawianiu elementu do drzewa VL musimy wykonać co najwyżej 1 rotację; Przy usuwaniu elementu z VL może się zdarzyć, że będziemy musieli wykonać tyle rotacji ile jest poziomów w drzewie; 16

Operacje na drzewie VL Rotacja lewa wokół : -! *! 17 Operacje na drzewie VL Rotacja prawa wokół : + +1 *!! 18

Operacje na drzewie VL Rotacja lewa wokół i prawa wokół : + +1 U U *! 19 Operacje na drzewie VL Rotacja prawa wokół i lewa wokół : - U +1 U *!!

1 Operacje na drzewie VL Przykład rotacja pojedyncza: VL spełniony 4 7 6 9 1 8 4 7 6 9 1 8 y x y x Operacje na drzewie VL Przykład rotacja pojedyncza: VL niespełniony 4 8 6 9 1 7 4 8 6 9 1 7 y x y x

1 Operacje na drzewie VL +1 4 Jeszcze jeden przykład rotacja podwójna: VL spełniony Usunięcie 4 9 + 7 11 6 8 1 1 1 +1 Rotacja wokół 1 14 9 - o teraz? 11 9 7 1 1 1 7 11 1 6 8 1 14 6 8 1 1 1 14 Po rotacji wokół Operacje na drzewie VL Koszt operacji wstawiania i usuwania w VL: Rotacje działają w czasie O(1); mieniają tylko wartości wskaźników a pozostałe pola węzłów są bez zmian; Dla drzewa o n wierzchołkach: minimalna liczba wierzchołków w drzewie VL o wysokości h? N =1 N h = N h + N h- +1 Można udowodnić przez h indukcję, że N h h/ h PD Stąd h lg N h LD Liczba rotacji (koszt operacji) wynosi co najwyżej lg n ; h- 4

Dziękuję za uwagę