Struktura danych = system relacyjny U, U uniwersum systemu - zbiór relacji (operacji) na strukturze danych

Podobne dokumenty
Binarne Diagramy Decyzyjne

Graf skierowany. Graf zależności dla struktur drzewiastych rozgrywających parametrycznie

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:

ALGORYTMY I STRUKTURY DANYCH

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

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

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

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

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

Porządek symetryczny: right(x)

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

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

Sortowanie bąbelkowe

Wstęp do filogenetyki molekularnej. Krzysztof Turowski

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

Próba określenia miary jakości informacji na gruncie teorii grafów dla potrzeb dydaktyki

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

Algorytmy i Struktury Danych

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

Struktury Danych i Złożoność Obliczeniowa

Dobór zmiennych objaśniających do liniowego modelu ekonometrycznego

1. Metoda tabel semantycznych

Wykład 3. Drzewa czerwono-czarne

Algorytmy i struktury danych. wykład 5

Algorytmy i Struktury Danych

Dynamiczne struktury danych

Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania:

Przykładowe B+ drzewo

Drzewa poszukiwań binarnych

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

Matematyka ubezpieczeń majątkowych r.

FIZYKA 2. Janusz Andrzejewski

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

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

Teoretyczne podstawy informatyki

Drzewa poszukiwań binarnych

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

Podstawowe algorytmy i ich implementacje w C. Wykład 9

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

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

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

Podstawy Informatyki. Metody dostępu do danych

MIERNICTWO WIELKOŚCI ELEKTRYCZNYCH I NIEELEKTRYCZNYCH

LIST EMISYJNY nr 3 /2014 Ministra Finansów

Wykład: praca siły, pojęcie energii potencjalnej. Zasada zachowania energii.

Spis treści JĘZYK C - FUNKCJE. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF07Z

Tadeusz Pankowski

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

Algorytmy i Struktury Danych.

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

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

Teoretyczne podstawy informatyki

Algorytmy i struktury danych

Drzewa wyszukiwań binarnych (BST)

Drzewa czerwono-czarne.

Algorytmy i Struktury Danych

PRÓBNY EGZAMIN MATURALNY Z MATEMATYKI

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

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

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

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

II.6. Wahadło proste.

Drzewa AVL definicje

Lista liniowa dwukierunkowa

Modelowanie przepływu cieczy przez ośrodki porowate Wykład III

WYKŁAD 11 OPTYMALIZACJA WIELOKRYTERIALNA

Dynamiczne drzewa. Piotr Sankowski. - p. 1/27

Opis ćwiczeń na laboratorium obiektów ruchomych

Listy, kolejki, stosy

Zawiadomienie o wyborze najkorzystniejszej oferty

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

Wykład 5. Sortowanie w czasie liniowologarytmicznym

STOSY ABSTRACT DATA TYPES (ADT) STOS ADT ZASTOSOWANIA STOSÓW WYJĄTKI PROJEKTOWANIE ALGORYTMÓW I METODY SZTUCZNEJ INTELIGENCJI STOSY, KOLEJKI, LISTY

KRYTERIA OCENIANIA ODPOWIEDZI Próbna Matura z OPERONEM. Matematyka Poziom rozszerzony

Podstawowe struktury danych

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

ROZWIĄZUJEMY PROBLEM RÓWNOWAŻNOŚCI MASY BEZWŁADNEJ I MASY GRAWITACYJNEJ.

Algorytmy i Struktury Danych.

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

ROZKŁAD NORMALNY. 2. Opis układu pomiarowego

Stos LIFO Last In First Out

Literatura. 1) Pojęcia: złożoność czasowa, rząd funkcji. Aby wyznaczyć pesymistyczną złożoność czasową algorytmu należy:

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

Algorytmy i struktury danych

Model klasyczny gospodarki otwartej

Fizyka 1- Mechanika. Wykład 10 7.XII Zygmunt Szefliński Środowiskowe Laboratorium Ciężkich Jonów

Algorytmy i Struktury Danych. Co dziś? Drzewo decyzyjne. Wykład IV Sortowania cd. Elementarne struktury danych

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

XXXVII OLIMPIADA FIZYCZNA ETAP III Zadanie doświadczalne

Definicja pliku kratowego

Wstęp do programowania

WSTĘP DO INFORMATYKI. Drzewa i struktury drzewiaste

Wykład 1. Elementy rachunku prawdopodobieństwa. Przestrzeń probabilistyczna.

Pole magnetyczne. 5.1 Oddziaływanie pola magnetycznego na ładunki. przewodniki z prądem Podstawowe zjawiska magnetyczne

ALGORYTMY I STRUKTURY DANYCH

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

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

Fizyka 10. Janusz Andrzejewski

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

Transkrypt:

Temat: Stuktuy dzewiste 1. Stuktua słownika { } I Stuktua danych = system elacyjny U, i i U uniwesum systemu { i } i I - zbió elacji (opeacji) na stuktuze danych Fomalna definicja stuktuy danych składa się z : sygnatuy systemu elacyjnego, sygnatu wszystkich opeacji stuktuy specyfikacji (opisu) opeacji stuktuy Def. Stuktuą słownika nazywamy system: E D, seach, inset, gdzie: E- niepusty zbió możliwych danych D- niepusty zbió zwany zbioem słowników seach: E D inset : E D : E D D oolean D (oolean typ logiczny o watościach tue i false) Specyfikacja opeacji słownikowych 1. Opeacja seach(e, d) zwaca watość tue, gdy element e znajduje się w słowniku d, a false w pzypadku pzeciwnym.. Opeacja inset(e,d) wstawia element e do słownika d, o ile seach(e, d) = false. 3. Opeacja (e,d) usuwa element e ze słownika d, o ile seach(e, d) = tue.

. Implementacje słownika w stuktuach liniowych a) Implementacja tablicowa tablica nieupoządkowana n - ozmia słownika: opeacja elementana - poównania Koszt pesymistyczny: seach Tmax ( n) ( n) = T ( n) = Θ( n) inset = Tmax max Koszt edni: T seach ( n) = T inset ( n) = T ( n) = Θ( n) b) Implementacja tablicowa tablica upoządkowana n - ozmia słownika: opeacja elementana - poównania Koszt pesymistyczny: T Koszt edni: T seach max seach inset ( n) = Tmax max ( n) = T ( n) = Θ( logn) ( n) = T ( n) = ( logn) inset ( n) = T Θ Ale!!! Tzeba pzyjąć, że opeacją elementaną pzy ealizacji opeacji inset oaz są pzestawienia elementów tablicy. Wówczas: seach Tmax ( n) Θ, inset ( logn) T ( n) = T ( n) = Θ( n) = max max T seach ( n) inset ( logn) T ( n) = T ( n) = Θ( n) = Θ,

- kozeń dzewa węzeł, któy nie ma popzednika (ojca) s- lewy potomek (syn) węzła v pawy potomek (syn) węzła t-liść-węzeł, któy nie ma ani lewego ani pawego potomka (syna) s- kozeń lewego poddzewa węzła v kozeń pawego poddzewa węzła głębokość węzła nume poziomu, na któym leży węzeł w dzewie. oziom kozenia ma nume 0. Węzły s i v leżą na poziomie nume 1. c) Implementacja listowa opeacja elemntana: poównania Koszt pesymistyczny: seach Tmax ( n) ( n) = T ( n) = Θ( n) inset = Tmax max Koszt edni: T seach ( n) = T inset ( n) = T ( n) = Θ( n) 3. Dzewo ST ( z ang. inay Seach Tee) Def. Dzewo ST to dzewo binane z elacją poządku symetycznego Def. Dzewo binane to gaf skieowany, bez cykli, z wyóżnionym węzłem zwanym kozeniem dzewa. Każdy z węzłów dzewa ma stopień ówny co najwyżej dwa. Do każdego z węzłów opócz kozenia dochodzi dokładnie jedna kawędź. Nazewnictwo: s v t

-s-t pzykład ścieżki w dzewie długość ścieżki nume poziomu liścia w ścieżce wysokość dzewa nume poziomu liścia w najdłuższej ścieżce. Wysokość dzewa na ysunku wynosi. Def. Poządek symetyczny polega na tym, że dla każdego węzła dzewa x dzewa jest spełniony następujący waunek: Jeżeli y leży w lewym poddzewie x, to key(y) key(x). Jeżeli y leży w pawym poddzewie x, to key(x) key(y). Relacja jest elacją poządku liniowego, a key(x) jest watością pola (klucza) danych, na któym elacja jest okeślona. ędziemy zakładali w dalszych ozważaniach, że dane umieszczane w dzewie to liczby całkowite. Pzykład Węzeł dzewa ST to ades na stuktuę (ekod) z polami: dane pole do pzechowywania danych, left, ight adesy węzłów potomnych dane left ight 10 kozeń dzewa 6

4. Algoytmy opeacji słownikowych na dzewie ST a) Opeacja seach seach(e, ); e liczba szukana, kozeń dzewa seach(e,)=1, gdy e jest w słowniku, seach(e,)=0, gdy e nie należy do słownika cuent=; while (cuent!=null) 9 if (cuent->dane==e) etun 1; else if (cuent->dane>e) cuent=cuent->left else cuent=cuent->ight if (cuent==null) etun 0; cuent 3 6 cuent=null seach(3, )=1 seach(10, )=0 W implementacji opeacji inset i niezwykle pzydatna okazuje się zmodyfikowana funkcja seach (seach1), któa zwaca ades węzła, w któym znajduje się poszukiwany element e oaz dodatkowo ades p ojca węzła z daną e. W szczególności, gdy wynikiem funkcji jest kozeń dzewa, to p jest adesem pustym. Gdy danych e nie ma w słowniku, to zwacany jest ades pusty, a p ustawia się na adesie potencjalnego ojca węzła z daną e. seach1(e,, p); 10 p 10 6 cuent cuent=seach1(,, p) p 6 seach1(1,, p)=null

cuent cuent=seach1(,, p) 10 p=null 6 b) Opeacja inset inset(e, ); Pzypadki: dzewo jest puste, inset(, ) dana e już jest w słowniku wówczas dzewo się nie zmienia dana e jeszcze nie znajduje się w słowniku wówczas nowy węzeł z daną e jest podwiązywany do dzewa jako liść i odpowiedni (lewy albo pawy) potomek węzła p zwóconego w funkcji seach1. 9 inset(11,) 10 p 6 11

c)opeacja (e, ); Pzypadki: Element e nie należy do słownika. Wywołanie funkcji seach1(e,, p) zwaca wówczas ades pusty. Słownik w tym pzypadku nie zmienia się po wykonaniu opeacji. Element e znajduje się w kozeniu dzewa i kozeń dzewa jest jedynym węzłem dzewa. Wywołanie funkcji seach1(e,, p) zwaca wówczas ades i adesy left i ight w kozeniu są puste. Słownik w tym pzypadku staje się pusty do wykonaniu opeacji. Pzed (, ) Po (, ) = NULL

Element e znajduje się w węźle o adesie v i węzeł v ma puste lewe albo pawe podzewo. Wywołanie funkcji seach1(e,, p) zwaca wtedy ades niepusty v i albo ades left albo ight w węźle v jest pusty. Ustalmy, że ades ight w węźle v jest pusty. Wówczas nowym potomkiem węzła p będzie lewy potomek usuwanego węzła v. Może się zdazyć, że kozeń dzewa musi być uaktualniony w tym pzypadku. achodzi to wtedy, gdy v=. Pzed (, ) Po (, ) p v 9 9 6 6

Element e znajduje się w węźle o adesie v i węzeł v ma niepuste lewe albo pawe podzewo. Wywołanie funkcji seach1(e,, p) zwaca wtedy ades niepusty v adesy left i ight w węźle v są niepuste. Ustalamy wówczas ades takiego węzła, któy zawiea największy element lewego podzewa węzła v albo najmniejszy element pawego poddzewa węzła v. Oznaczmy znaleziony węzeł pzez f. Dane z węzła f kopiujemy do węzła v, a sam węzeł f usuwamy wg algoytmu z popzedniego pzypadku, gdyż ma on na pewno puste co najmniej jedno z poddzew. Może się zdazyć, że kozeń dzewa musi być uaktualniony w tym pzypadku. achodzi to wtedy, gdy v=. Pzed (, ) Po (, ) 10 p 10 v 11 v 11 3 9 3 9 f 4 4

. Koszt opeacji słownikowych na dzewie ST Opeacja elementana: poównania między elementem wstawianym, wyszukiwanym lub usuwanym, a elementami słownika. Rozmia zadania: n ilość danych w słowniku pzed ealizacją opeacji słownikowej. Koszt opeacji słownikowych zasadniczo zależy od kosztu opeacji seach (seach1): Koszt seach: pesymistyczny T ( n) = n = Θ( n) max - pzypadek dzewa zdegeneowanego edni O(logn) okeślony na postawie wyników ekspeymentów, ale nie udowodniony. 6. Dzewa AVL Nazwa dzewo AVL pochodzi od nazwisk dwóch specjalistów teoii algoytmów i stuktu danych: Adelsona-Velskii i Landisa. Def. Dzewo AVL to wyważone dzewo ST. Dzewo jest wyważone, kiedy dla każdego wiezchołka, wysokości dwóch jego poddzew óżnią się co najwyżej o jeden. Dzewo wyważone Dzewo, któe nie jest wyważone

. Wysokość dzewa AVL Lemat Wysokość dzewa AVL o n wiezchołkach (n 1) jest nie większa niż log n. Dowód: Niech D h będzie dzewem AVL o wysokości h, któe ma najmniejszą, możliwą liczbę wiezchołków wód dzew AVL o wysokości h. Niech n h będzie liczbą wiezchołków w dzewie D h. Gdy: h = 0, to D 0 n 0 = 1 h = 1, to D 1 n 1 = h =, to D n = 4 h = 3, to D 3 n 3 = Ogólnie: D h-1 D h- n h = n h-1 + n h- +1

Udowodnimy pzez indukcję, że: ałożenie indukcyjne: n h = n h nh dla h >1 n h 1 h 1 h 1 h h 1 h h h 1 1 h 1 + nh + 1 + + 1 = + + 1 = + + 1 Czyli Stąd 1 log n h h log h nh. udowa węzła dzewa AVL Stuktua węzła dzewa AVL jest wzbogacona o wagę w taką, że: w(dzewo_puste)= -1, w(v)=h(l) - h(p), gdzie h(l) i h(p) to odpowiednio wysokość lewego i pawego poddzewa węzła v. v L P Pzykład watości wagi w dla węzłów dzewa o kozeniu -1 +1 +1 0 0 +1 0

9. Opeacje słownikowe na dzewie AVL seach(e, d) - opeacja ealizowana tak samo jak dla dzewa ST inset(e, d) - opeacja ealizowana w piewszej fazie tak samo jak dla dzewa ST. Duga faza to ewentualne wyważenie powstałego dzewa. (e, d) - opeacja ealizowana w piewszej fazie tak samo jak dla dzewa ST. Duga faza to ewentualne wyważenie powstałego dzewa. Podczas ealizacji piewszej fazy opeacji inset i należy na stosie odłożyć adesy węzłów ze ścieżki, któą odwiedza wywołanie funkcji seach1. Stos jest niezbędny do zealizowania dugiej fazy algoytmu, tj. spawdzenia waunku wyważenia na podstawie wag węzłów ze stosu. atem funkcja seach1 zwacać powinna, w pzypadku dzew AVL, ades wiezchołka takiego stosu, zamiast adesu p. 10. Rotacje powadzące do wyważenia dzewa po usunięciu albo wstawieniu elementu Rotacje w pawo +; +1 + 0 A +1 A * 0 * pojedyncza otacja w pawo względem

+; -1 C + 0-1 A U A C 0 U * * podwójna otacja w pawo: otacja pojedyncza w lewo względem A i pojedyncza w pawo względem C Rotacje w lewo -; -1 - A 0 A -1 0 * pojedyncza otacja w lewo względem

-; +1 C - 0 U A +1 0 C +1 A U * otacja podwójna w lewo: pojedyncza w pawo względem A i pojedyncza w lewo względem C * Uwaga Rotacje w pocesie wyważania wykonywane są tylko na jednej ścieżce w dzewie. Opeacja ealizowana na dzewie AVL wymaga wykonania co najwyżej log n otacji. Opeacja inset ealizowana na dzewie AVL wymaga wykonania co najwyżej jednej otacji. Może się zdazyć, że po zealizowaniu piewszej fazy opeacji zajdzie konieczność wykonania otacji o układzie wag +;0 albo ;0. Wykonujemy wówczas odpowiednio pojedyncza otacje w lewo albo pawo względem węzła z wagą odpowiednio + albo -. Wniosek Ponieważ dzewo AVL ma pesymistyczną wysokość O(logn), a ewentulane otacje wykonywane podczas wstawiania albo usuwania elementów ealizowane są kosztem O(logn), to opeacje słownikowe zealizowane na dzewie AVL mają koszt pesymistyczny O(logn).