Porządek symetryczny: right(x)

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

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

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

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

Drzewa wyszukiwań binarnych (BST)

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

Drzewa poszukiwań binarnych

Listy, kolejki, stosy

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

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.

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

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 czerwono-czarne.

Algorytmy i Struktury Danych, 9. ćwiczenia

Drzewa poszukiwań binarnych

Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania:

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

Wykład 3. Drzewa czerwono-czarne

Algorytmy i Struktury Danych

Przykładowe B+ drzewo

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

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

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

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.

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

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

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

Algorytmy i struktury danych. wykład 5

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

Algorytmy i Struktury Danych

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

Podstawy Informatyki. Metody dostępu do danych

Lista liniowa dwukierunkowa

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych.

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

ALGORYTMY I STRUKTURY DANYCH

Sortowanie bąbelkowe

ALGORYTMY I STRUKTURY DANYCH

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

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

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

Tadeusz Pankowski

PODSTAWY INFORMATYKI wykład 6.

Algorytmy i struktury danych

Drzewa podstawowe poj

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

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

WSTĘP DO INFORMATYKI. Drzewa i struktury drzewiaste

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

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

Stos LIFO Last In First Out

Algorytmy i Struktury Danych. (c) Marcin Sydow. Słownik. Tablica mieszająca. Słowniki. Słownik uporządkowany. Drzewo BST.

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

Poprawność semantyczna

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

Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

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

Obliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303

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

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

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

Teoretyczne podstawy informatyki

Struktury Danych i Złożoność Obliczeniowa

Algorytmy i struktury danych

Teoretyczne podstawy informatyki

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

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

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

Algebrą nazywamy strukturę A = (A, {F i : i I }), gdzie A jest zbiorem zwanym uniwersum algebry, zaś F i : A F i

Struktury danych: stos, kolejka, lista, drzewo

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

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew

Drzewo binarne BST. LABORKA Piotr Ciskowski

dodatkowe operacje dla kopca binarnego: typu min oraz typu max:

Podstawy Informatyki Metody dostępu do danych

Analiza algorytmów zadania podstawowe

Wstęp do programowania

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

Dynamiczne struktury danych

Metoda Tablic Semantycznych

Programowanie obiektowe

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

Definicja pliku kratowego

Algorytm selekcji Hoare a. Łukasz Miemus

Podstawy Informatyki. Wykład 6. Struktury danych

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

Algorytmy i struktury danych Struktury danych IS/IO, WIMiIP

Algorytmy i struktury danych. wykład 8

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe

Matematyka dyskretna - 7.Drzewa

Egzaminy i inne zadania. Semestr II.

(4) x (y z) = (x y) (x z), x (y z) = (x y) (x z), (3) x (x y) = x, x (x y) = x, (2) x 0 = x, x 1 = x

Algorytmy i Struktury Danych.

Wstęp do programowania

Struktury danych. przez użytkownika, jak to ma miejsce w przypadku zwykłych zmiennych statycznych.

Sortowanie topologiczne skierowanych grafów acyklicznych

Transkrypt:

Porządek symetryczny: x lef t(x) right(x) Własność drzewa BST: W drzewach BST mamy porządek symetryczny. Dla każdego węzła x spełniony jest warunek: jeżeli węzeł y leży w lewym poddrzewie x, to key(y) key(x); jeżeli węzeł y leży w prawym poddrzewie x, to key(x) key(y). Drzewem poszukiwań binarnych (drzewem BST) nazywamy dowolne drzewo binarne, w którym wartości kluczy wpisane są do węzłów zgodnie z porządkiem symetrycznym. Następnik węzła następny węzeł odwiedzany w czasie przechodzenia drzewa w porządku Inorder. Twierdzenie 13.1 [T. H. Cormen] Następujące operacje na zbiorach dynamicznych: SEARCH, MINIMUM, MAXIMUM, SUCCESSOR oraz PREDECESSOR są wykonywane na drzewie binarnym o wysokości h w czasie O(h). 1

Zadanie 1 1. Należy narysować drzewa BST o wysokości 2, 3,, 5 oraz zawierające następujący zbiór kluczy: {1,, 5,,,, }. wysokość = 2 1 5 wysokość = 3 5 1 5 1 5 1 5 1 1 1 5 5 2

1 1 5 5 2. Należy przejść te drzewa w porządku Inorder. Przy każdym przejściu należy wypisać ciąg następników. 3. Zwróć uwagę, że przy przechodzeniu drzewa w takim porządku, ciąg wartości kluczy następników jest w porządku rosnącym.. Wykaż, że czas przechodzenia drzewa w porządku Inorder jest liniowy. Rozwiązanie. Przechodzenie drzewa binarnego: T (n) = T (k) + T (n k 1) + d. Metoda zgadywania: T (n) = An + B = Ak + B + A(n k 1) + B + d = A(n 1) + 2B + d. Stąd wynika, że A = B + d. Z warunku początkowego T (1) = c mamy A + B = c, czyli 2B + d = c, B = c d, A = c+d. Ostatecznie 2 2 T (n) = c + d 2 n + c d 2. 3

Zadanie 2 Szukanie minimum procedure TreeMin(r : node); {r korzeń drzewa} begin x := r; if x (NIL) then while (Left(x) (NIL)) do x := Left(x); end if return x; end Złożoność czasowa: liniowa ze względu na wysokość drzewa. Zadanie 3 Szukanie maksimum procedure TreeMax(r : node); {r korzeń drzewa} begin x := r; if x (NIL) then while (Right(x) (NIL)) do x := Right(x); end if return x; end Złożoność czasowa: liniowa ze względu na wysokość drzewa. Zadanie Szukanie klucza k w drzewie BST procedure Znajdz(k : key; r : node); var x : node; begin x := r; while (x (NIL)) and (key(x) k) if k < key(x) then x := Left(x); else x := Right(x); end if return x; end {r korzeń drzewa}

Zadanie 5 Procedura wstawiania opiera się na procedurze wyszukiwania. Jeżeli klucz k nie występował w drzewie, podczas procedura wyszukiwania doprowadzi nas do liścia. Jest to węzeł, do którego dowiążemy nowy węzeł z kluczem k. Oczywiście musimy znać dowiązanie do tego węzła. 13 18 20 1 W którym miejscu wstawimy nowy węzeł z kluczem 11? Rozwiązanie. 13 18 20 11 1 Zadanie Mając zadany ciąg kluczy konstrukcja drzewa BST polega na wstawianiu ich do pustego drzewa binarnego. Należy skonstruować drzewo BST mając zadany zbiór kluczy: {,, 12, 7, 9, 2,,,, 1, 15}. Rozwiązanie. 7 2 9 12 15 5

Zadanie 7 Załóżmy, że w drzewie BST znajdują się liczby od 1 do 00 i chcemy wyszukać liczbę 33. Które z poniższych ciągów węzłów nie mogą wystąpić w procedurze Search? a) 2, 252, 01, 398, 330, 3, 397, 33 b) 92, 220, 911, 2, 898, 258, 32, 33 c) 925, 202, 911, 20, 912, 25, 33 Rozwiązanie 911, 20, 912 d) 2, 399, 387, 9, 2, 382, 381, 278, 33 e) 935, 278, 37,, 299, 392, 358, 33 Rozwiązanie 37,, 299 Rozwiązanie. Warunek aby ciąg był ścieżką przeszukiwań w drzewie BST jest następujący: i 0 (a i+1 > a i j>i+1 a j > a i ) (a i+1 < a i j>i+1 a j < a i ). Zaprzeczenie tego warunku ma postać: i 0 (a i+1 > a i j>i+1 a j < a i ) (a i+1 < a i j>i+1 a j > a i ). Zadanie 8 Należy pokazać, że jeżeli węzeł w drzewie BST ma dwóch synów, to jego następnik nie ma lewego syna (bo to on byłby następnikiem), a jego poprzednik nie ma prawego syna (bo to on byłby poprzednikiem). 15 18 3 7 20 2 13 9 Następnikiem węzła z kluczem 15 jest węzeł z kluczem, a następnikiem węzła z kluczem 13 jest węzeł z kluczem 15. Następnikiem węzła z kluczem jest węzeł z kluczem 7, a poprzednikiem węzła z kluczem jest węzeł z kluczem.

Zadanie 9 Przypuśćmy, że ścieżka poszukiwania klucza k w drzewie BST kończy się na liściu. Rozważmy trzy zbiory: A klucze po lewej stronie ścieżki poszukiwań; B klucze na scieżce poszukiwań; C klucze na prawo od ścieżki poszukiwań. Czy prawdziwe jest twierdzenie, że dla dowolnych trzech kluczy a A, b B, c C spełniony musi być warunek a b c? 1 0 5 3 2 Zadanie Niech T będzie drzewem BST, x liściem w tym drzewie, a y jego ojcem. a) Należy wykazać, że key(y) jest albo najmniejszym kluczem w T większym niż key(x), albo największym kluczem w T mniejszym niż key(x). Dowód a.a. Założmy, że key(y) jest większy niż key(x), oraz istnieje węzeł z taki, że key(y) > key(z) > key(x). Rozpatrzmy dwa przypadki: 1. węzeł z znajduje się na ścieżce wiodącej z korzenia drzewa do węzła y. Oznacza to, że y musiałby być w prawym poddrzewie z, a x w lewym poddrzewie. Jest to sprzeczne z warunkiem, że x jest synem y. 2. węzły z i y mają wspólnego przodka w i znajdują się w oddzielnych jego poddrzewach. Ponieważ key(y) > key(z), więc y znajduje się w prawym podrzewie w, a z w lewym. Oznacza to, że key(w) > key(z). Ponieważ x jest synem y więc też znajduje się w prawym poddrzewie w, czyli key(x) > key(w) > key(z). Jest to sprzeczne z warunkiem key(y) > key(x). Wykluczenie drugiej możliwości, czyli przypadku, że key(y) jest mniejszy niż key(x), oraz istnieje węzeł z taki, że key(y) < key(z) < key(x) przebiega podobnie. 7

b) Należy pokazać, że warunek, że x jest liściem jest znaczący. Zadanie 11 Czy operacja usuwania węzłów w drzewie BST jest przemienna, tzn. czy po usunięciu węzłów x oraz y z drzewa BST otrzymamy takie samo drzewo niezależnie od kolejności usuwania tych węzłów? Zadanie 12 Jaka jest różnica pomiędzy własnością drzewa BST, a własnością kopca? czy własność kopca umożliwia wypisywanie kluczy drzewa o n węzłach w czasie O(n) we właściwej kolejności? 8