7. Teoria drzew - spinanie i przeszukiwanie

Podobne dokumenty
Matematyka dyskretna - 7.Drzewa

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

Drzewa. Jeżeli graf G jest lasem, który ma n wierzchołków i k składowych, to G ma n k krawędzi. Własności drzew

Graf. Definicja marca / 1

6. Wstępne pojęcia teorii grafów

7a. Teoria drzew - kodowanie i dekodowanie

5c. Sieci i przepływy

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott

Algorytmiczna teoria grafów

Matematyczne Podstawy Informatyki

KURS MATEMATYKA DYSKRETNA

Wykłady z Matematyki Dyskretnej

a) 7 b) 19 c) 21 d) 34

Digraf. 13 maja 2017

SPÓJNOŚĆ. ,...v k. }, E={v 1. v k. i v k. ,...,v k-1. }. Wierzchołki v 1. v 2. to końce ścieżki.

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

Drzewa spinające MST dla grafów ważonych Maksymalne drzewo spinające Drzewo Steinera. Wykład 6. Drzewa cz. II

Teoria grafów dla małolatów. Andrzej Przemysław Urbański Instytut Informatyki Politechnika Poznańska

Instrukcje dla zawodników

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

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

Matematyczne Podstawy Informatyki

Matematyka dyskretna

MATEMATYKA DYSKRETNA - MATERIAŁY DO WYKŁADU GRAFY

Teoria grafów podstawy. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

Minimalne drzewa rozpinające

ALGORYTMY I STRUKTURY DANYCH

6a. Grafy eulerowskie i hamiltonowskie

Ogólne wiadomości o grafach

Elementy teorii grafów Elementy teorii grafów

Zad. 1 Zad. 2 Zad. 3 Zad. 4 Zad. 5 SUMA

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

Programowanie obiektowe

Indukowane Reguły Decyzyjne I. Wykład 3

Suma dwóch grafów. Zespolenie dwóch grafów

Algorytm Dijkstry znajdowania najkrótszej ścieżki w grafie

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

TEORETYCZNE PODSTAWY INFORMATYKI

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne

Podstawowe pojęcia dotyczące drzew Podstawowe pojęcia dotyczące grafów Przykłady drzew i grafów

Przykłady grafów. Graf prosty, to graf bez pętli i bez krawędzi wielokrotnych.

(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

Matematyka dyskretna - 8. Egzaminy próbne. Uwaga! Niektórych z tych zadań nie obejmuje program dla studiów zaocznych - proszę się tym nie niepokoić -

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

Programowanie obiektowe

WSTĘP DO INFORMATYKI. Drzewa i struktury drzewiaste

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

Teoretyczne podstawy informatyki

Czy istnieje zamknięta droga spaceru przechodząca przez wszystkie mosty w Królewcu dokładnie jeden raz?

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je.

KURS MATEMATYKA DYSKRETNA

Lista 4. Kamil Matuszewski 22 marca 2016

Algorytmy grafowe. Wykład 2 Przeszukiwanie grafów. Tomasz Tyksiński CDV

MATEMATYKA DYSKRETNA - KOLOKWIUM 2

Podstawowe własności grafów. Wykład 3. Własności grafów

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

Matematyka dyskretna. Andrzej Łachwa, UJ, B/14

Segmentacja obrazów cyfrowych z zastosowaniem teorii grafów - wstęp. autor: Łukasz Chlebda

Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, Grafy dzielimy na grafy skierowane i nieskierowane:

Łyżwy - omówienie zadania

Programowanie sieciowe. Tadeusz Trzaskalik

Algorytmiczna teoria grafów

Tadeusz Pankowski

Opracowanie prof. J. Domsta 1

Podstawą w systemie dwójkowym jest liczba 2 a w systemie dziesiętnym liczba 10.

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

Teoretyczne podstawy informatyki

Algorytmy grafowe. Wykład 1 Podstawy teorii grafów Reprezentacje grafów. Tomasz Tyksiński CDV

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

Złożoność obliczeniowa klasycznych problemów grafowych

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

Programowanie dynamiczne i algorytmy zachłanne

Kolorowanie wierzchołków Kolorowanie krawędzi Kolorowanie regionów i map. Wykład 8. Kolorowanie

Sortowanie topologiczne skierowanych grafów acyklicznych

Podejście zachłanne, a programowanie dynamiczne

Struktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott

KODY SYMBOLI. Kod Shannona-Fano. Algorytm S-F. Przykład S-F

Matematyczne Podstawy Informatyki

Matematyka dyskretna - 5.Grafy.

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

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II

MODELE SIECIOWE 1. Drzewo rozpinające 2. Najkrótsza droga 3. Zagadnienie maksymalnego przepływu źródłem ujściem

Wprowadzenie do maszyny Turinga

Struktury Danych i Złożoność Obliczeniowa

TEORIA GRAFÓW I SIECI

Działanie algorytmu oparte jest na minimalizacji funkcji celu jako suma funkcji kosztu ( ) oraz funkcji heurystycznej ( ).

Drzewa rozpinajace, zbiory rozłaczne, czas zamortyzowany

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

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

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

Algorytmy i Struktury Danych

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

Rekurencja. Przykład. Rozważmy ciąg

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

Porządek symetryczny: right(x)

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

1 Automaty niedeterministyczne

Sortowanie - wybrane algorytmy

Transkrypt:

7. Teoria drzew - spinanie i przeszukiwanie Grzegorz Kosiorowski Uniwersytet Ekonomiczny w Krakowie zima 2016/2017 rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 1 / 46

1 Drzewa spinające 2 Drzewa binarne i przeszukiwania rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 2 / 46

Przypomnienie definicji Las Las to graf prosty, acykliczny. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 3 / 46

Przypomnienie definicji Las Las to graf prosty, acykliczny. Drzewo Drzewo to graf prosty, spójny, acykliczny (czyli spójny las). Wierzchołki drzewa nazywamy węzłami. Podgraf spójny drzewa nazywamy poddrzewem. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 3 / 46

Przypomnienie definicji Las Las to graf prosty, acykliczny. Drzewo Drzewo to graf prosty, spójny, acykliczny (czyli spójny las). Wierzchołki drzewa nazywamy węzłami. Podgraf spójny drzewa nazywamy poddrzewem. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 3 / 46

Charakteryzacja drzew Charakteryzacja drzew Dla grafu T = (V, E) następujące warunki są równoważne: 1. T jest drzewem. 2. T nie zawiera cykli i ma V 1 krawędzi. 3. T jest spójny i ma V 1 krawędzi (czyli nie da się zmniejszyć liczby krawędzi, by drzewo nadal było spójne). 4. T jest spójny i każda jego krawędź jest mostem. 5. Dowolne dwa wierzchołki grafu są połączone dokładnie jedną drogą prostą. 6. T nie zawiera cykli, lecz dodanie dowolnej nowej krawędzi tworzy dokładnie jeden cykl. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 4 / 46

Motywacja Motywacja badań drzew: rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 5 / 46

Motywacja Motywacja badań drzew: Przechowywanie informacji, umożliwiające szybki dostęp do każdego poziomu struktury. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 5 / 46

Motywacja Motywacja badań drzew: Przechowywanie informacji, umożliwiające szybki dostęp do każdego poziomu struktury. Unikanie redundancji. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 5 / 46

Motywacja Motywacja badań drzew: Przechowywanie informacji, umożliwiające szybki dostęp do każdego poziomu struktury. Unikanie redundancji. Opis zjawisk związanych z hierarchią (starszeństwa, zwierzchnictwa, katalogów, sekwencji czasowej). rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 5 / 46

Drzewo spinające Drzewo spinające Drzewem spinającym (rozpinającym) grafu G nazywamy podgraf G zawierający wszystkie jego wierzchołki i będący drzewem. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 6 / 46

Drzewo spinające Drzewo spinające Drzewem spinającym (rozpinającym) grafu G nazywamy podgraf G zawierający wszystkie jego wierzchołki i będący drzewem. Łatwo zauważyć, że drzewo spinające jest minimalnym (ze względu na zawieranie zbioru krawędzi) podgrafem spójnym łączącym wszystkie wierzchołki grafu G. Dlatego wyznaczanie drzew spinających jest przydatne, gdy wierzchołki grafu symbolizują cele, jakie chcemy osiągnąć. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 6 / 46

Drzewo spinające - przykład Przykładowe drzewo spinające w grafie Petersena: Tu na czerwono. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 7 / 46

Drzewo spinające - przykład Przykładowe drzewo spinające w grafie Petersena: Tu na czerwono. A tu bez reszty grafu. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 7 / 46

Drzewo spinające - istnienie O istnieniu drzewa spinającego Każdy skończony graf ma drzewo spinające wtedy i tylko wtedy, gdy jest spójny. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 8 / 46

Drzewo spinające - istnienie O istnieniu drzewa spinającego Każdy skończony graf ma drzewo spinające wtedy i tylko wtedy, gdy jest spójny. Oczywiście, zazwyczaj takie drzewo nie jest jedyne. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 8 / 46

Drzewo spinające - istnienie O istnieniu drzewa spinającego Każdy skończony graf ma drzewo spinające wtedy i tylko wtedy, gdy jest spójny. Oczywiście, zazwyczaj takie drzewo nie jest jedyne. Algorytm znajdowania takiego drzewa, jeśli nie wymagamy nic więcej, jest tak prosty, jak tylko można sobie wymarzyć. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 8 / 46

Algorytm wyznaczania drzewa spinającego Algorytm wyznaczania drzewa spinającego Dane: Graf spójny skończony G = (V (G), E(G)), v - wierzchołek grafu spójnego G. Zmienne: E - zbiór krawędzi, V - zbiór wierzchołków. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 9 / 46

Algorytm wyznaczania drzewa spinającego Algorytm wyznaczania drzewa spinającego Dane: Graf spójny skończony G = (V (G), E(G)), v - wierzchołek grafu spójnego G. Zmienne: E - zbiór krawędzi, V - zbiór wierzchołków. I. Niech V := {v}, E :=. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 9 / 46

Algorytm wyznaczania drzewa spinającego Algorytm wyznaczania drzewa spinającego Dane: Graf spójny skończony G = (V (G), E(G)), v - wierzchołek grafu spójnego G. Zmienne: E - zbiór krawędzi, V - zbiór wierzchołków. I. Niech V := {v}, E :=. II. Dopóki istnieją w grafie G krawędzie łączące wierzchołki ze zbioru V z wierzchołkami, które nie należą do V : wybierz krawędź uw łączącą wierzchołek u V z wierzchołkiem w / V, dołącz w do V i dołącz uw do E. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 9 / 46

Algorytm wyznaczania drzewa spinającego Algorytm wyznaczania drzewa spinającego Dane: Graf spójny skończony G = (V (G), E(G)), v - wierzchołek grafu spójnego G. Zmienne: E - zbiór krawędzi, V - zbiór wierzchołków. I. Niech V := {v}, E :=. II. Dopóki istnieją w grafie G krawędzie łączące wierzchołki ze zbioru V z wierzchołkami, które nie należą do V : wybierz krawędź uw łączącą wierzchołek u V z wierzchołkiem w / V, dołącz w do V i dołącz uw do E. Rezultat: E to zbiór krawędzi drzewa spinającego grafu G. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 9 / 46

Uwagi na temat algorytmu wyznaczania drzewa spinającego rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 10 / 46

Uwagi na temat algorytmu wyznaczania drzewa spinającego Algorytm działa wyjątkowo prosto - startujemy z dowolnego wierzchołka i dokładamy kolejne krawędzie, łącząc już stworzoną część nowego grafu z kolejnymi wierzchołkami, które nie zostały jeszcze podłączone do naszego drzewa, aż nie pozostanie ani jeden niepołączony wierzchołek lub skończą się krawędzie łączące wierzchołki połączone z niepołączonymi. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 10 / 46

Uwagi na temat algorytmu wyznaczania drzewa spinającego Algorytm działa wyjątkowo prosto - startujemy z dowolnego wierzchołka i dokładamy kolejne krawędzie, łącząc już stworzoną część nowego grafu z kolejnymi wierzchołkami, które nie zostały jeszcze podłączone do naszego drzewa, aż nie pozostanie ani jeden niepołączony wierzchołek lub skończą się krawędzie łączące wierzchołki połączone z niepołączonymi. Tego algorytmu można też użyć do badania, czy graf jest spójny. Jeśli algorytm skończy działanie i zbiór V nie zawiera wszystkich wierzchołków G, to G jest niespójny. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 10 / 46

Uwagi na temat algorytmu wyznaczania drzewa spinającego Algorytm działa wyjątkowo prosto - startujemy z dowolnego wierzchołka i dokładamy kolejne krawędzie, łącząc już stworzoną część nowego grafu z kolejnymi wierzchołkami, które nie zostały jeszcze podłączone do naszego drzewa, aż nie pozostanie ani jeden niepołączony wierzchołek lub skończą się krawędzie łączące wierzchołki połączone z niepołączonymi. Tego algorytmu można też użyć do badania, czy graf jest spójny. Jeśli algorytm skończy działanie i zbiór V nie zawiera wszystkich wierzchołków G, to G jest niespójny. Czas działania tego algorytmu to O( V (G) + E(G) ). rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 10 / 46

Przykłady zastosowań wyznaczania drzewa spinającego rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 11 / 46

Przykłady zastosowań wyznaczania drzewa spinającego Wyznaczanie minimalnej koniecznej struktury (np. minimalnej sieci wodociągowej docierającej do wszystkich domów w miejscowości). rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 11 / 46

Przykłady zastosowań wyznaczania drzewa spinającego Wyznaczanie minimalnej koniecznej struktury (np. minimalnej sieci wodociągowej docierającej do wszystkich domów w miejscowości). Broadcasting - wyznaczenie dozwolonych ścieżek po których sygnał ma iść od nadajnika do odbiorców, tak, by nie docierał do nich kilkukrotnie (unikanie redundancji). rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 11 / 46

Minimalne drzewo spinające Drzewa spinające są przydatne, ale by zoptymalizować ich użyteczność, czasem potrzeba czegoś więcej. Na przykład, rozważając konieczną do zaopatrzenia wszystkich domów w miejscowości sieć wodociągową, możemy zażądać, by była ona jak najkrótsza (w sensie całkowitej długości rur). Wtedy poszukujemy tzw. minimalnego drzewa spinającego. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 12 / 46

Minimalne drzewo spinające Drzewa spinające są przydatne, ale by zoptymalizować ich użyteczność, czasem potrzeba czegoś więcej. Na przykład, rozważając konieczną do zaopatrzenia wszystkich domów w miejscowości sieć wodociągową, możemy zażądać, by była ona jak najkrótsza (w sensie całkowitej długości rur). Wtedy poszukujemy tzw. minimalnego drzewa spinającego. Minimalne drzewo spinające W grafie G z wagami minimalnym drzewem spinającym nazywamy takie drzewo, które jest spinające i jego waga (czyli suma wag jego krawędzi) jest nie większa niż waga jakiegokolwiek innego drzewa spinającego w tym samym grafie. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 12 / 46

Minimalne drzewo spinające Drzewa spinające są przydatne, ale by zoptymalizować ich użyteczność, czasem potrzeba czegoś więcej. Na przykład, rozważając konieczną do zaopatrzenia wszystkich domów w miejscowości sieć wodociągową, możemy zażądać, by była ona jak najkrótsza (w sensie całkowitej długości rur). Wtedy poszukujemy tzw. minimalnego drzewa spinającego. Minimalne drzewo spinające W grafie G z wagami minimalnym drzewem spinającym nazywamy takie drzewo, które jest spinające i jego waga (czyli suma wag jego krawędzi) jest nie większa niż waga jakiegokolwiek innego drzewa spinającego w tym samym grafie. Na szczęście, również wyznaczanie minimalnych drzew spinających jest dość proste. Działają tutaj dwa algorytmy zachłanne: algorytm Kruskala i algorytm Prima. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 12 / 46

Algorytm Kruskala Algorytm Kruskala Dane: G - skończony graf spójny z wagami, którego krawędzie są uporządkowane wg wzrastających wag e 1,..., e n, n = E(G). Zmienne: E - zbiór krawędzi. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 13 / 46

Algorytm Kruskala Algorytm Kruskala Dane: G - skończony graf spójny z wagami, którego krawędzie są uporządkowane wg wzrastających wag e 1,..., e n, n = E(G). Zmienne: E - zbiór krawędzi. I. Podstaw E :=. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 13 / 46

Algorytm Kruskala Algorytm Kruskala Dane: G - skończony graf spójny z wagami, którego krawędzie są uporządkowane wg wzrastających wag e 1,..., e n, n = E(G). Zmienne: E - zbiór krawędzi. I. Podstaw E :=. II. Dla j = 1 do n wykonuj: jeśli graf E {e j } jest acykliczny, dołącz e j do E. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 13 / 46

Algorytm Kruskala Algorytm Kruskala Dane: G - skończony graf spójny z wagami, którego krawędzie są uporządkowane wg wzrastających wag e 1,..., e n, n = E(G). Zmienne: E - zbiór krawędzi. I. Podstaw E :=. II. Dla j = 1 do n wykonuj: jeśli graf E {e j } jest acykliczny, dołącz e j do E. Rezultat: E to zbiór krawędzi minimalnego drzewa spinającego G. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 13 / 46

Algorytm Kruskala - przykład Należy znaleźć minimalne drzewo spinające w grafie powyżej za pomocą algorytmu Kruskala. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 14 / 46

Algorytm Kruskala - przykład Należy znaleźć minimalne drzewo spinające w grafie powyżej za pomocą algorytmu Kruskala. Przygotowanie do algorytmu wymaga wypisania krawędzi w kolejności wzrastających wag (jeśli wagi dwu krawędzi są równe, to ich kolejność jest dowolna). rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 14 / 46

Algorytm Kruskala - przykład Należy znaleźć minimalne drzewo spinające w grafie powyżej za pomocą algorytmu Kruskala. Przygotowanie do algorytmu wymaga wypisania krawędzi w kolejności wzrastających wag (jeśli wagi dwu krawędzi są równe, to ich kolejność jest dowolna). W tym przypadku to uporządkowanie może wyglądać np. tak: BD, rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 14 / 46

Algorytm Kruskala - przykład Należy znaleźć minimalne drzewo spinające w grafie powyżej za pomocą algorytmu Kruskala. Przygotowanie do algorytmu wymaga wypisania krawędzi w kolejności wzrastających wag (jeśli wagi dwu krawędzi są równe, to ich kolejność jest dowolna). W tym przypadku to uporządkowanie może wyglądać np. tak: BD, AC, rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 14 / 46

Algorytm Kruskala - przykład Należy znaleźć minimalne drzewo spinające w grafie powyżej za pomocą algorytmu Kruskala. Przygotowanie do algorytmu wymaga wypisania krawędzi w kolejności wzrastających wag (jeśli wagi dwu krawędzi są równe, to ich kolejność jest dowolna). W tym przypadku to uporządkowanie może wyglądać np. tak: BD, AC, BE, rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 14 / 46

Algorytm Kruskala - przykład Należy znaleźć minimalne drzewo spinające w grafie powyżej za pomocą algorytmu Kruskala. Przygotowanie do algorytmu wymaga wypisania krawędzi w kolejności wzrastających wag (jeśli wagi dwu krawędzi są równe, to ich kolejność jest dowolna). W tym przypadku to uporządkowanie może wyglądać np. tak: BD, AC, BE, AB, rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 14 / 46

Algorytm Kruskala - przykład Należy znaleźć minimalne drzewo spinające w grafie powyżej za pomocą algorytmu Kruskala. Przygotowanie do algorytmu wymaga wypisania krawędzi w kolejności wzrastających wag (jeśli wagi dwu krawędzi są równe, to ich kolejność jest dowolna). W tym przypadku to uporządkowanie może wyglądać np. tak: BD, AC, BE, AB, AD, rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 14 / 46

Algorytm Kruskala - przykład Należy znaleźć minimalne drzewo spinające w grafie powyżej za pomocą algorytmu Kruskala. Przygotowanie do algorytmu wymaga wypisania krawędzi w kolejności wzrastających wag (jeśli wagi dwu krawędzi są równe, to ich kolejność jest dowolna). W tym przypadku to uporządkowanie może wyglądać np. tak: BD, AC, BE, AB, AD, CD, rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 14 / 46

Algorytm Kruskala - przykład Należy znaleźć minimalne drzewo spinające w grafie powyżej za pomocą algorytmu Kruskala. Przygotowanie do algorytmu wymaga wypisania krawędzi w kolejności wzrastających wag (jeśli wagi dwu krawędzi są równe, to ich kolejność jest dowolna). W tym przypadku to uporządkowanie może wyglądać np. tak: BD, AC, BE, AB, AD, CD, BC, rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 14 / 46

Algorytm Kruskala - przykład Należy znaleźć minimalne drzewo spinające w grafie powyżej za pomocą algorytmu Kruskala. Przygotowanie do algorytmu wymaga wypisania krawędzi w kolejności wzrastających wag (jeśli wagi dwu krawędzi są równe, to ich kolejność jest dowolna). W tym przypadku to uporządkowanie może wyglądać np. tak: BD, AC, BE, AB, AD, CD, BC, CE, rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 14 / 46

Algorytm Kruskala - przykład Należy znaleźć minimalne drzewo spinające w grafie powyżej za pomocą algorytmu Kruskala. Przygotowanie do algorytmu wymaga wypisania krawędzi w kolejności wzrastających wag (jeśli wagi dwu krawędzi są równe, to ich kolejność jest dowolna). W tym przypadku to uporządkowanie może wyglądać np. tak: BD, AC, BE, AB, AD, CD, BC, CE, CF, rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 14 / 46

Algorytm Kruskala - przykład Należy znaleźć minimalne drzewo spinające w grafie powyżej za pomocą algorytmu Kruskala. Przygotowanie do algorytmu wymaga wypisania krawędzi w kolejności wzrastających wag (jeśli wagi dwu krawędzi są równe, to ich kolejność jest dowolna). W tym przypadku to uporządkowanie może wyglądać np. tak: BD, AC, BE, AB, AD, CD, BC, CE, CF, EF, rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 14 / 46

Algorytm Kruskala - przykład Należy znaleźć minimalne drzewo spinające w grafie powyżej za pomocą algorytmu Kruskala. Przygotowanie do algorytmu wymaga wypisania krawędzi w kolejności wzrastających wag (jeśli wagi dwu krawędzi są równe, to ich kolejność jest dowolna). W tym przypadku to uporządkowanie może wyglądać np. tak: BD, AC, BE, AB, AD, CD, BC, CE, CF, EF, DF. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 14 / 46

Algorytm Kruskala - przykład Kolejność krawędzi: BD,AC,BE,AB,AD,CD,BC,CE,CF,EF,DF. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 15 / 46

Algorytm Kruskala - przykład Kolejność krawędzi: BD,AC,BE,AB,AD,CD,BC,CE,CF,EF,DF. Działanie algorytmu zapisujemy w takiej tabelce: Nr kroku wybrana krawędź krawędzie odrzucone przed wyborem 1?? 2?? Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 15 / 46

Algorytm Kruskala - przykład Dołączenie pierwszych 4 krawędzi: BD,AC,BE,AB nie sprawia żadnych problemów. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 16 / 46

Algorytm Kruskala - przykład Dołączenie pierwszych 4 krawędzi: BD,AC,BE,AB nie sprawia żadnych problemów. Nr kroku wybrana krawędź krawędzie odrzucone przed wyborem 1 BD - 2 AC - 3 BE - 4 AB - rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 16 / 46

Algorytm Kruskala - przykład Kolejność krawędzi: BD,AC,BE,AB,AD,CD,BC,CE,CF,EF,DF. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 17 / 46

Algorytm Kruskala - przykład Kolejność krawędzi: BD,AC,BE,AB,AD,CD,BC,CE,CF,EF,DF. Nie możemy teraz dołączyć krawędzu AD, gdyż stworzyłoby to cykl ABDA. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 17 / 46

Algorytm Kruskala - przykład Kolejność krawędzi: BD,AC,BE,AB,AD,CD,BC,CE,CF,EF,DF. Nie możemy teraz dołączyć krawędzu AD, gdyż stworzyłoby to cykl ABDA. Krawędź CD również odpada (cykl ACDBA), Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 17 / 46

Algorytm Kruskala - przykład Kolejność krawędzi: BD,AC,BE,AB,AD,CD,BC,CE,CF,EF,DF. Nie możemy teraz dołączyć krawędzu AD, gdyż stworzyłoby to cykl ABDA. Krawędź CD również odpada (cykl ACDBA), podobnie BC (cykl ABCA), Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 17 / 46

Algorytm Kruskala - przykład Kolejność krawędzi: BD,AC,BE,AB,AD,CD,BC,CE,CF,EF,DF. Nie możemy teraz dołączyć krawędzu AD, gdyż stworzyłoby to cykl ABDA. Krawędź CD również odpada (cykl ACDBA), podobnie BC (cykl ABCA), CE tworzy cykl ACEBA. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 17 / 46

Algorytm Kruskala - przykład Kolejność krawędzi: BD,AC,BE,AB,AD,CD,BC,CE,CF,EF,DF. Nie możemy teraz dołączyć krawędzu AD, gdyż stworzyłoby to cykl ABDA. Krawędź CD również odpada (cykl ACDBA), podobnie BC (cykl ABCA), CE tworzy cykl ACEBA. Dopiero krawędź CF pasuje. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 17 / 46

Algorytm Kruskala - przykład Kolejność krawędzi: BD,AC,BE,AB,AD,CD,BC,CE,CF,EF,DF. Nie możemy teraz dołączyć krawędzu AD, gdyż stworzyłoby to cykl ABDA. Krawędź CD również odpada (cykl ACDBA), podobnie BC (cykl ABCA), CE tworzy cykl ACEBA. Dopiero krawędź CF pasuje. Jednocześnie, dołączenie tej krawędzi powoduje, że wszystkie wierzchołki grafu są połączone, więc otrzymaliśmy nasze drzewo spinające (dołączenie dowolnej z następnych krawędzi musiałoby stworzyć cykl). Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 17 / 46

Algorytm Kruskala - przykład Działanie algorytmu opisuje tabelka: rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 18 / 46

Algorytm Kruskala - przykład Działanie algorytmu opisuje tabelka: Nr kroku wybrana krawędź krawędzie odrzucone przed wyborem 1 BD - 2 AC - 3 BE - 4 AB - 5 CF AD,CD,BC,CE Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 18 / 46

Algorytm Kruskala - przykład Wynikiem algorytmu jest powyższe minimalne drzewo spinające. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 19 / 46

Algorytm Kruskala - przykład Wynikiem algorytmu jest powyższe minimalne drzewo spinające. Waga tego drzewa wynosi 13 (suma wag krawędzi). rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 19 / 46

Algorytm Kruskala - uwagi rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 20 / 46

Algorytm Kruskala - uwagi Algorytm Kruskala działa poprawnie, nawet jeśli graf G ma pętle i krawędzie wielokrotne. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 20 / 46

Algorytm Kruskala - uwagi Algorytm Kruskala działa poprawnie, nawet jeśli graf G ma pętle i krawędzie wielokrotne. Nie trzeba nawet zakładać spójności - jednak wtedy znajdziemy nie drzewo, a las spinający. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 20 / 46

Algorytm Kruskala - uwagi Algorytm Kruskala działa poprawnie, nawet jeśli graf G ma pętle i krawędzie wielokrotne. Nie trzeba nawet zakładać spójności - jednak wtedy znajdziemy nie drzewo, a las spinający. Wadą tego algorytmu jest to, że przed jego zastosowaniem musimy jakoś uporządkować krawędzie według wzrastających wag. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 20 / 46

Algorytm Kruskala - uwagi Algorytm Kruskala działa poprawnie, nawet jeśli graf G ma pętle i krawędzie wielokrotne. Nie trzeba nawet zakładać spójności - jednak wtedy znajdziemy nie drzewo, a las spinający. Wadą tego algorytmu jest to, że przed jego zastosowaniem musimy jakoś uporządkować krawędzie według wzrastających wag. Jednakże, nawet razem z tym uporządkowaniem, algorytm Kruskala zajmuje tylko O( E(G) log E(G) ) czasu. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 20 / 46

Algorytm Kruskala - uwagi Algorytm Kruskala działa poprawnie, nawet jeśli graf G ma pętle i krawędzie wielokrotne. Nie trzeba nawet zakładać spójności - jednak wtedy znajdziemy nie drzewo, a las spinający. Wadą tego algorytmu jest to, że przed jego zastosowaniem musimy jakoś uporządkować krawędzie według wzrastających wag. Jednakże, nawet razem z tym uporządkowaniem, algorytm Kruskala zajmuje tylko O( E(G) log E(G) ) czasu. Problemem może być jedynie sytuacja, gdy na początku tego uporządkowania krawędzi nie da się uzyskać (np. dane o wagach uzyskujemy w miarę tworzenia się naszego drzewa). W takiej sytuacji lepiej zastosować algorytm Prima. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 20 / 46

Algorytm Prima Algorytm Prima Dane: G - skończony graf spójny z wagami. Zmienne: E - zbiór krawędzi, V - zbiór wierzchołków. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 21 / 46

Algorytm Prima Algorytm Prima Dane: G - skończony graf spójny z wagami. Zmienne: E - zbiór krawędzi, V - zbiór wierzchołków. I. Podstaw E :=. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 21 / 46

Algorytm Prima Algorytm Prima Dane: G - skończony graf spójny z wagami. Zmienne: E - zbiór krawędzi, V - zbiór wierzchołków. I. Podstaw E :=. II. Wybierz w - dowolny wierzchołek ze zbioru V (G) i niech V := {w}. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 21 / 46

Algorytm Prima Algorytm Prima Dane: G - skończony graf spójny z wagami. Zmienne: E - zbiór krawędzi, V - zbiór wierzchołków. I. Podstaw E :=. II. Wybierz w - dowolny wierzchołek ze zbioru V (G) i niech V := {w}. III. Dopóki V V (G) wykonuj: wybierz w zbiorze E(G) krawędź uv o najmniejszej możliwej wadze, taką, że u V i v V (G) \ V, a następnie dołącz krawędź uv do zbioru E i wierzchołek v do zbioru V. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 21 / 46

Algorytm Prima Algorytm Prima Dane: G - skończony graf spójny z wagami. Zmienne: E - zbiór krawędzi, V - zbiór wierzchołków. I. Podstaw E :=. II. Wybierz w - dowolny wierzchołek ze zbioru V (G) i niech V := {w}. III. Dopóki V V (G) wykonuj: wybierz w zbiorze E(G) krawędź uv o najmniejszej możliwej wadze, taką, że u V i v V (G) \ V, a następnie dołącz krawędź uv do zbioru E i wierzchołek v do zbioru V. Rezultat: E to zbiór krawędzi minimalnego drzewa spinającego G. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 21 / 46

Algorytm Prima - przykład Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 22 / 46

Algorytm Prima - przykład Będziemy wybierać krawędzie do drzewa, zaczynając od wierzchołka A. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 22 / 46

Algorytm Prima - przykład Będziemy wybierać krawędzie do drzewa, zaczynając od wierzchołka A. Kolejne kroki algorytmu zapisujemy w takiej tabeli: Nr etapu wybór krawędzi alternatywne, dozwolone wybory 1?? 2?? Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 22 / 46

Algorytm Prima - przykład Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 23 / 46

Algorytm Prima - przykład V = {A}. Możliwe połączenia między V, a V (G) \ V to AB, AC i AD. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 23 / 46

Algorytm Prima - przykład V = {A}. Możliwe połączenia między V, a V (G) \ V to AB, AC i AD. Z nich, najmniejszą wagę ma AC, więc dołączamy AC do drzewa, a C do zbioru V. Nr etapu wybór krawędzi alternatywne, dozwolone wybory 1 AC - Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 23 / 46

Algorytm Prima - przykład Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 24 / 46

Algorytm Prima - przykład V = {A, C}. Możliwe połączenia między V, a V (G) \ V to AB, AD, CB, CD, CE, CF. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 24 / 46

Algorytm Prima - przykład V = {A, C}. Możliwe połączenia między V, a V (G) \ V to AB, AD, CB, CD, CE, CF. Z nich, najmniejsze wagi mają AB, AD i CD. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 24 / 46

Algorytm Prima - przykład V = {A, C}. Możliwe połączenia między V, a V (G) \ V to AB, AD, CB, CD, CE, CF. Z nich, najmniejsze wagi mają AB, AD i CD. Wybieramy dowolną z nich (np. CD) dołączając ją do drzewa, drugi jej koniec (czyli D) dołączamy do V, a pozostałe z tych krawędzi zaznaczamy w tabelce jako alternatywne, dozwolone wybory. Nr etapu wybór krawędzi alternatywne, dozwolone wybory 2 CD AB,AD Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 24 / 46

Algorytm Prima - przykład Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 25 / 46

Algorytm Prima - przykład V = {A, C, D}. Możliwe połączenia między V, a V (G) \ V to wszystkie czarne krawędzie powyższego grafu poza AD, BE i EF. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 25 / 46

Algorytm Prima - przykład V = {A, C, D}. Możliwe połączenia między V, a V (G) \ V to wszystkie czarne krawędzie powyższego grafu poza AD, BE i EF. Z nich, najmniejszą wagę ma BD, więc dołączamy BD do drzewa, a B do zbioru V. Nr etapu wybór krawędzi alternatywne, dozwolone wybory 3 BD - rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 25 / 46

Algorytm Prima - przykład Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 26 / 46

Algorytm Prima - przykład V = {A, B, C, D}. Możliwe połączenia między V, a V (G) \ V to BE, CE, CF i DF. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 26 / 46

Algorytm Prima - przykład V = {A, B, C, D}. Możliwe połączenia między V, a V (G) \ V to BE, CE, CF i DF. Z nich, najmniejszą wagę ma BE, więc dołączamy BE do drzewa, a E do zbioru V. Nr etapu wybór krawędzi alternatywne, dozwolone wybory 4 BE - Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 26 / 46

Algorytm Prima - przykład Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 27 / 46

Algorytm Prima - przykład V = {A, B, C, D, E}. Możliwe połączenia między V, a V (G) \ V to CF i DF. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 27 / 46

Algorytm Prima - przykład V = {A, B, C, D, E}. Możliwe połączenia między V, a V (G) \ V to CF i DF. Z nich, najmniejszą wagę ma CF, więc dołączamy CF do drzewa, a F do zbioru V. Nr etapu wybór krawędzi alternatywne, dozwolone wybory 5 CF - Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 27 / 46

Algorytm Prima - przykład Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 28 / 46

Algorytm Prima - przykład V = {A, B, C, D, E, F } = V (G), więc algorytm się kończy. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 28 / 46

Algorytm Prima - przykład V = {A, B, C, D, E, F } = V (G), więc algorytm się kończy. Działanie algorytmu Prima opisuje tabela: Nr etapu wybór krawędzi alternatywne, dozwolone wybory 1 AC - 2 CD AB, AD 3 BD - 4 BE - 5 CF - rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 28 / 46

Algorytm Prima - przykład Wynikiem algorytmu jest powyższe minimalne drzewo spinające. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 29 / 46

Algorytm Prima - przykład Wynikiem algorytmu jest powyższe minimalne drzewo spinające. Waga tego drzewa wynosi 13 (suma wag krawędzi). rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 29 / 46

Algorytm Prima - przykład Wynikiem algorytmu jest powyższe minimalne drzewo spinające. Waga tego drzewa wynosi 13 (suma wag krawędzi). Warto zauważyć, że minimalne drzewo spinające, które otrzymaliśmy za pomocą algorytmu Prima jest inne niż otrzymane za pomocą algorytmu Kruskala. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 29 / 46

Algorytm Prima - przykład Wynikiem algorytmu jest powyższe minimalne drzewo spinające. Waga tego drzewa wynosi 13 (suma wag krawędzi). Warto zauważyć, że minimalne drzewo spinające, które otrzymaliśmy za pomocą algorytmu Prima jest inne niż otrzymane za pomocą algorytmu Kruskala. Jednakże ich waga jest taka sama (obydwa są minimalne). rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 29 / 46

Algorytm Prima - uwagi rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 30 / 46

Algorytm Prima - uwagi Złożoność obliczeniowa algorytmu Prima to O( V (G) 2 ). rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 30 / 46

Algorytm Prima - uwagi Złożoność obliczeniowa algorytmu Prima to O( V (G) 2 ). Pętle i krawędzie wielokrotne nie przeszkadzają w działaniu tego algorytmu. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 30 / 46

Algorytm Prima - uwagi Złożoność obliczeniowa algorytmu Prima to O( V (G) 2 ). Pętle i krawędzie wielokrotne nie przeszkadzają w działaniu tego algorytmu. Jeśli graf jest niespójny i chcemy otrzymać na końcu spinający las (czyli po jednym drzewie spinającym na każdą składową), to musimy algorytm nieco zmodyfikować (ćwiczenie). rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 30 / 46

Drzewo z wyróżnionym korzeniem Drzewo z wyróżnionym korzeniem Drzewo z wyróżnionym korzeniem jest to drzewo z wyróżnionym jednym wierzchołkiem, nazywanym korzeniem. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 31 / 46

Drzewo z wyróżnionym korzeniem Drzewo z wyróżnionym korzeniem Drzewo z wyróżnionym korzeniem jest to drzewo z wyróżnionym jednym wierzchołkiem, nazywanym korzeniem. Tradycyjnie, drzewa z wyróżnionym korzeniem rysuje się tak, by korzeń był na samej górze. Czasem interpretuje się je jako grafy skierowane ze strzałkami skierowanymi w dół. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 31 / 46

Drzewo z wyróżnionym korzeniem Drzewo z wyróżnionym korzeniem Drzewo z wyróżnionym korzeniem jest to drzewo z wyróżnionym jednym wierzchołkiem, nazywanym korzeniem. Tradycyjnie, drzewa z wyróżnionym korzeniem rysuje się tak, by korzeń był na samej górze. Czasem interpretuje się je jako grafy skierowane ze strzałkami skierowanymi w dół. A jest korzeniem poniższego drzewa. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 31 / 46

Liście Liść Liść drzewa to wierzchołek stopnia 1, który nie jest wyróżniony jako korzeń. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 32 / 46

Liście Liść Liść drzewa to wierzchołek stopnia 1, który nie jest wyróżniony jako korzeń. Niebieskie wierzchołki w tym drzewie to liście. A jest korzeniem, więc choć jest stopnia 1, to nie jest liściem. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 32 / 46

Rodzice i dzieci Rodzice i dzieci Jeśli para (v, w) jest krawędzią drzewa z wyróżnionym korzeniem, to v jest rodzicem w, a w jest dzieckiem v. Ogólniej, w jest potomkiem v, jeśli w v i v jest wierzchołkiem jedynej drogi prostej z korzenia do wierzchołka w. v nazywamy wtedy przodkiem w. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 33 / 46

Rodzice i dzieci Rodzice i dzieci Jeśli para (v, w) jest krawędzią drzewa z wyróżnionym korzeniem, to v jest rodzicem w, a w jest dzieckiem v. Ogólniej, w jest potomkiem v, jeśli w v i v jest wierzchołkiem jedynej drogi prostej z korzenia do wierzchołka w. v nazywamy wtedy przodkiem w. Wszystkie wierzchołki są potomkami A, ale tylko B, C i D są jego dziećmi. D jest rodzicem G, a B jest przodkiem I. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 33 / 46

Poziom wierzchołka Poziom wierzchołka Poziomem wierzchołka v nazywamy długość jedynej drogi prostej od korzenia do v. Wysokość drzewa z wyróżnionym korzeniem to największy możliwy poziom wierzchołka tego drzewa. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 34 / 46

Poziom wierzchołka Poziom wierzchołka Poziomem wierzchołka v nazywamy długość jedynej drogi prostej od korzenia do v. Wysokość drzewa z wyróżnionym korzeniem to największy możliwy poziom wierzchołka tego drzewa. Poniższe drzewo ma wysokość 3. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 34 / 46

Poziom wierzchołka Poziom wierzchołka Poziomem wierzchołka v nazywamy długość jedynej drogi prostej od korzenia do v. Wysokość drzewa z wyróżnionym korzeniem to największy możliwy poziom wierzchołka tego drzewa. Poniższe drzewo ma wysokość 3. B, C i D są wierzchołkami poziomu 1, E,F i G - poziomu 2, a H i I - poziomu 3. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 34 / 46

Poddrzewo Drzewo po prawej jest poddrzewem drzewa po lewej o korzeniu B. Poddrzewo Poddrzewo o korzeniu v jest to drzewo T v, składające się z korzenia v, wszystkich jego potomków i wszystkich krawędzi (potencjalnie skierowanych) łączących ich. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 35 / 46

Przykłady zastosowań drzew z wyróżnionym korzeniem rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 36 / 46

Przykłady zastosowań drzew z wyróżnionym korzeniem Struktura uporządkowania katalogów, podkatalogów i plików rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 36 / 46

Przykłady zastosowań drzew z wyróżnionym korzeniem Struktura uporządkowania katalogów, podkatalogów i plików Opis jakiejkolwiek struktury hierarchicznej (np. władze uczelni) rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 36 / 46

Przykłady zastosowań drzew z wyróżnionym korzeniem Struktura uporządkowania katalogów, podkatalogów i plików Opis jakiejkolwiek struktury hierarchicznej (np. władze uczelni) Drzewo genealogiczne rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 36 / 46

Przykłady zastosowań drzew z wyróżnionym korzeniem Struktura uporządkowania katalogów, podkatalogów i plików Opis jakiejkolwiek struktury hierarchicznej (np. władze uczelni) Drzewo genealogiczne Drzewkowy zapis algorytmu postępowania (np. przepis kucharski, poradnik diagnostyczno-medyczny). rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 36 / 46

Drzewo binarne Drzewo binarne Drzewo binarne jest to drzewo z wyróżnionym korzeniem, w którym każdy węzeł ma co najwyżej dwoje dzieci, wśród których wyróżniamy dzieci prawe i lewe. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 37 / 46

Drzewo binarne Drzewo binarne Drzewo binarne jest to drzewo z wyróżnionym korzeniem, w którym każdy węzeł ma co najwyżej dwoje dzieci, wśród których wyróżniamy dzieci prawe i lewe. Zielone wierzchołki to lewe dzieci swoich rodziców, a czerwone - prawe. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 37 / 46

Drzewo binarne Drzewo binarne Drzewo binarne jest to drzewo z wyróżnionym korzeniem, w którym każdy węzeł ma co najwyżej dwoje dzieci, wśród których wyróżniamy dzieci prawe i lewe. Zielone wierzchołki to lewe dzieci swoich rodziców, a czerwone - prawe. Warto zauważyć, że wierzchołek D ma tylko dziecko lewe. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 37 / 46

Drzewo binarne - przykład Przykładem drzewa binarnego jest łatwa do przeszukiwania alfabetyczna baza danych (np. pacjentów szpitala), będąca szczególnym przypadkiem tzw. drzewa poszukiwań binarnych. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 38 / 46

Drzewo poszukiwań binarnych Drzewo poszukiwań binarnych Drzewo poszukiwań binarnych jest to drzewo binarne składające się z węzłów z uporządkowanymi etykietami (węzłów indeksowanych zbiorem uporządkowanym), w którym lewe poddrzewo każdego węzła zawiera wyłącznie węzły o etykietach nie większych niż etykieta węzła a prawe poddrzewo zawiera wyłącznie węzły o etykietach nie mniejszych niż etykieta węzła. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 39 / 46

Drzewo poszukiwań binarnych Drzewo poszukiwań binarnych Drzewo poszukiwań binarnych jest to drzewo binarne składające się z węzłów z uporządkowanymi etykietami (węzłów indeksowanych zbiorem uporządkowanym), w którym lewe poddrzewo każdego węzła zawiera wyłącznie węzły o etykietach nie większych niż etykieta węzła a prawe poddrzewo zawiera wyłącznie węzły o etykietach nie mniejszych niż etykieta węzła. W ten sposób tworzy się bazy danych, których etykiety są np. liczbami lub słowami (uporządkowanymi alfabetycznie), i które bardzo szybko można przeszukać i znaleźć dany węzeł. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 39 / 46

Drzewo poszukiwań binarnych - przeszukiwanie Przeszukiwanie drzewa poszukiwań binarnych jest rekurencyjne: PRZESZUKIWANIE(v,x) Dane: Drzewo poszukiwań binarnych z korzeniem v, x - poszukiwana wartość etykiety. Zmienne: w - węzeł. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 40 / 46

Drzewo poszukiwań binarnych - przeszukiwanie Przeszukiwanie drzewa poszukiwań binarnych jest rekurencyjne: PRZESZUKIWANIE(v,x) Dane: Drzewo poszukiwań binarnych z korzeniem v, x - poszukiwana wartość etykiety. Zmienne: w - węzeł. I. Podstawiamy w = v. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 40 / 46

Drzewo poszukiwań binarnych - przeszukiwanie Przeszukiwanie drzewa poszukiwań binarnych jest rekurencyjne: PRZESZUKIWANIE(v,x) Dane: Drzewo poszukiwań binarnych z korzeniem v, x - poszukiwana wartość etykiety. Zmienne: w - węzeł. I. Podstawiamy w = v. II. Porównujemy etykietę w i x. Jeśli etykiety są równe: STOP. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 40 / 46

Drzewo poszukiwań binarnych - przeszukiwanie Przeszukiwanie drzewa poszukiwań binarnych jest rekurencyjne: PRZESZUKIWANIE(v,x) Dane: Drzewo poszukiwań binarnych z korzeniem v, x - poszukiwana wartość etykiety. Zmienne: w - węzeł. I. Podstawiamy w = v. II. Porównujemy etykietę w i x. Jeśli etykiety są równe: STOP. III. Jeśli etykieta v jest większa od x, to w := lewe dziecko v i przechodzimy do kroku V. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 40 / 46

Drzewo poszukiwań binarnych - przeszukiwanie Przeszukiwanie drzewa poszukiwań binarnych jest rekurencyjne: PRZESZUKIWANIE(v,x) Dane: Drzewo poszukiwań binarnych z korzeniem v, x - poszukiwana wartość etykiety. Zmienne: w - węzeł. I. Podstawiamy w = v. II. Porównujemy etykietę w i x. Jeśli etykiety są równe: STOP. III. Jeśli etykieta v jest większa od x, to w := lewe dziecko v i przechodzimy do kroku V. IV. Jeśli etykieta v jest mniejsza od x, to w := prawe dziecko v i przechodzimy do kroku V. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 40 / 46

Drzewo poszukiwań binarnych - przeszukiwanie Przeszukiwanie drzewa poszukiwań binarnych jest rekurencyjne: PRZESZUKIWANIE(v,x) Dane: Drzewo poszukiwań binarnych z korzeniem v, x - poszukiwana wartość etykiety. Zmienne: w - węzeł. I. Podstawiamy w = v. II. Porównujemy etykietę w i x. Jeśli etykiety są równe: STOP. III. Jeśli etykieta v jest większa od x, to w := lewe dziecko v i przechodzimy do kroku V. IV. Jeśli etykieta v jest mniejsza od x, to w := prawe dziecko v i przechodzimy do kroku V. V. Wykonujemy PRZESZUKIWANIE(w,x). rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 40 / 46

Drzewo poszukiwań binarnych - przeszukiwanie Przeszukiwanie drzewa poszukiwań binarnych jest rekurencyjne: PRZESZUKIWANIE(v,x) Dane: Drzewo poszukiwań binarnych z korzeniem v, x - poszukiwana wartość etykiety. Zmienne: w - węzeł. I. Podstawiamy w = v. II. Porównujemy etykietę w i x. Jeśli etykiety są równe: STOP. III. Jeśli etykieta v jest większa od x, to w := lewe dziecko v i przechodzimy do kroku V. IV. Jeśli etykieta v jest mniejsza od x, to w := prawe dziecko v i przechodzimy do kroku V. V. Wykonujemy PRZESZUKIWANIE(w,x). Rezultat: w to węzeł o etykiecie x. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 40 / 46

Przeszukiwanie - przykład Załóżmy, że za pomocą powyższego algorytmu szukamy w bazie opisanej powyższym drzewem etykiety Kowalski. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 41 / 46

Przeszukiwanie - przykład Załóżmy, że za pomocą powyższego algorytmu szukamy w bazie opisanej powyższym drzewem etykiety Kowalski. Wykonujemy wtedy algorytm PRZESZUKIWANIE(Nowak,Kowalski). Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 41 / 46

Przeszukiwanie - przykład Nowak Kowalski, więc nie kończymy algorytmu. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 42 / 46

Przeszukiwanie - przykład Nowak Kowalski, więc nie kończymy algorytmu. Ponieważ alfabetycznie Kowalski<Nowak, przesuwamy się do lewego dziecka Nowaka, którym jest Kowalczyk rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 42 / 46

Przeszukiwanie - przykład Nowak Kowalski, więc nie kończymy algorytmu. Ponieważ alfabetycznie Kowalski<Nowak, przesuwamy się do lewego dziecka Nowaka, którym jest Kowalczyk i odpalamy algorytm PRZESZUKIWANIE(Kowalczyk,Kowalski). rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie zima 2016/2017 42 / 46