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

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

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

Algorytmy Grafowe. dr hab. Bożena Woźna-Szcześniak, prof. UJD. Wykład 5 i 6. Uniwersytet Humanistyczno-Przyrodniczy im. Jana Długosza w Częstochowie

Grafy i Zastosowania. 5: Drzewa Rozpinające. c Marcin Sydow. Drzewa rozpinające. Cykle i rozcięcia fundamentalne. Zastosowania

Minimalne drzewa rozpinające

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

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

Ogólne wiadomości o grafach

Graf. Definicja marca / 1

Programowanie dynamiczne i algorytmy zachłanne

Wykład 9. Znajdowanie najlepszej drogi

MATEMATYKA DYSKRETNA - MATERIAŁY DO WYKŁADU GRAFY

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

Matematyczne Podstawy Informatyki

Algorytmiczna teoria grafów

Algorytmy grafowe 2. Andrzej Jastrz bski. Akademia ETI. Politechnika Gda«ska Algorytmy grafowe 2

Matematyka dyskretna - 7.Drzewa

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

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

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

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.

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

KARTA KURSU. Algorytmy, struktury danych i techniki programowania. Algorithms, Data Structures and Programming Techniques

7. Teoria drzew - spinanie i przeszukiwanie

Reprezentacje grafów nieskierowanych Reprezentacje grafów skierowanych. Wykład 2. Reprezentacja komputerowa grafów

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

Digraf. 13 maja 2017

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

Załącznik KARTA PRZEDMIOTU. KARTA PRZEDMIOTU Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2009/2010

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

Znajdowanie skojarzeń na maszynie równoległej

Drzewa poszukiwań binarnych

Algorytmy i Struktury Danych

Sortowanie topologiczne skierowanych grafów acyklicznych

Sprawozdanie do zadania numer 2

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

Matematyczne Podstawy Informatyki

Minimalne drzewa rozpinaj ce

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

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

Podejście zachłanne, a programowanie dynamiczne

Wykład 7. Algorytmy grafowe

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

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

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

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

Drzewa rozpinajace, zbiory rozłaczne, czas zamortyzowany

Wykład 3. Drzewa czerwono-czarne

Wykłady z Matematyki Dyskretnej

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

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

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

Konspekt. 15 października Wykład III (16 października 2014 r.): optymalizacja kombinatoryczna na grafach (metody sieciowe)

Algorytmika Problemów Trudnych

Zagadnienia optymalizacji na grafach

Struktury danych: stos, kolejka, lista, drzewo

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott

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

Wprowadzenie do algorytmów / Thomas H. Cormen [et al.]. - wyd. 7. Warszawa, Spis treści. Wprowadzenie 2

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

Wykład 5. Sortowanie w czasie liniowologarytmicznym

Struktury Danych i Złożoność Obliczeniowa

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne

Drzewa czerwono-czarne.

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

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

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

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

Wstęp do programowania

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

Indukowane Reguły Decyzyjne I. Wykład 3

Drzewa wyszukiwań binarnych (BST)

Matematyka dyskretna

Kolorowanie wierzchołków grafu

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

Drzewa Gomory-Hu Wprowadzenie. Drzewa Gomory-Hu. Jakub Š cki. 14 pa¹dziernika 2009

Wykład 10 Grafy, algorytmy grafowe

ALGORYTMY I STRUKTURY DANYCH

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

TEORIA GRAFÓW I SIECI

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

Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010

Tworzenie gier na urządzenia mobilne

WSTĘP DO INFORMATYKI. Drzewa i struktury drzewiaste

Sortowanie - wybrane algorytmy

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

Programowanie sieciowe. Tadeusz Trzaskalik

Algorytmy dynamiczne. Piotr Sankowski. - p. 1/14

wstęp do informatyki i programowania część testowa (25 pyt. / 60 min.)

Szukanie najkrótszych dróg z jednym ródłem

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

Podstawy Informatyki. Sprawność algorytmów

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

Porządek symetryczny: right(x)

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

Siedem cudów informatyki czyli o algorytmach zdumiewajacych

Algorytmy i Struktury Danych.

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

E ' E G nazywamy krawędziowym zbiorem

Podstawowe struktury danych

Transkrypt:

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

Minimalne drzewo rozpinające - przegląd Definicja problemu Własności minimalnych drzew rozpinających Algorytm Kruskala Algorytm Prima Literatura Cormen, Leiserson, Rivest, Wprowadzenie do algorytmów, rozdz. 4

Problem Mamy dany zbiór wierzchołków i możliwych połączeń wraz z ich wagami, chcemy znaleźć taki podzbiór połączeń, żeby wszystkie wierzchołki były połączone oraz suma wag tych połączeń była minimalna. Przykłady: Komutowanie łącza telefonicznego Tworzenie instalacji elektrycznej w budynku Węzły wraz z wybranymi połączeniami tworzą drzewo! Drzewo to nazywane jest MINIMALNYM DRZEWEM ROZPINAJĄCYM (Minimum Spanning Tree MST) 3

Przykład drzewa rozpinającego (to nie jest minimalne) a 4 8 8 7 b c d 11 i 4 14 7 6 h 1 g f 9 10 e koszt: 51 4

Przykład drzewa rozpinającego (minimalne) a 4 8 8 7 b c d 11 i 4 14 7 6 h 1 g f 9 10 e koszt: 37 5

Drzewa rozpinające Definicja: niech G=(V,E) będzie ważonym i spójnym grafem nieskierowanym. Drzewem rozpinającym dla G nazywamy podzbiór krawędzi T E, taki że podgraf G =(V,T) jest grafem spójnym, nie zawierającym cykli. Minimalnym drzewem rozpinającym (MST) nazywamy drzewo rozpinające, dla którego suma wag wszystkich krawędzi jest minimalna : ( u,v ) ( ) = w( u,v ) w T T 6

Podstawowy algorytm MST Strategia zachłanna: minimalne drzewo rozpinające rozrasta się poprzez dołączanie do niego w każdym kroku jednej krawędzi, przy jednoczesnym sprawdzaniu zachowania warunków( zachowanie struktury drzewa i warunku minimalności dodawana krawędź jest bezpieczna po jej dodaniu dalej dostajemy podzbiór minimalnego drzewa). Generic-MST(G=(V,E)) T = ; while (T nie tworzy drzewa rozpinającego dla G) do znajdź krawędź e=(u,v) E bezpieczną dla T T = T {e} return T 7

Własności MST Pytanie: jak efektywnie odnaleźć tę bezpieczną krawędź? Twierdzenie 1: niech U V i e=(u,v) będzie krawędzią o minimalnej wadze rozpoczynającą się w U i kończącą w V U. Istnieje wtedy minimalne drzewo rozpinające T, takie że e T. U T V U V 8

Własności MST podział 4 a 8 U 8 7 b c d 11 i 4 14 7 6 h 1 g f V U 9 e 10 9

Własności MST Twierdzenie : niech G=(V,E) będzie spójnym grafem nieskierowanym, A podzbiorem E zawartym w pewnym minimalnym drzewie rozpinającym T dla G. Niech (U, V U) będzie przekrojem G względem A (nie ma krawędzi dla wierzchołków ze zbioru A krzyżujących się z podziałem), i niech e=(u,v) będzie krawędzią lekką (o minimalnej wadze) krzyżującą się z przekrojem (U, V U). Wtedy e jest bezpieczna dla A. T V U U V podział 10

Własności MST Wniosek: niech G=(V,E) będzie spójnym grafem nieskierowanym, A podzbiorem E zawartym w pewnym minimalnym drzewie rozpinającym T dla G, niech dalej C = (V C, E C ) będzie składową (drzewem) w lesie G A = (V,A). Jeśli e jest lekką krawędzią łączącą C z pewną inną składową w G A, wtedy e jest bezpieczne dla A. Dowód: przekrój (V C, V V C ) uwzględnia A, i e jest krawędzią lekką dla tego przekroju. Stad e jest bezpieczne. 11

Algorytmy wyznaczania MST Wykorzystuje się dwa sposoby odnajdowania bezpiecznych krawędzi: 1. Algorytm Kruskala: zbiór A jest lasem i dodawana bezpieczna krawędź jest zawsze najlżejszą krawędzią w grafie łączącą dwa rozdzielone poddrzewa z tego lasu (Tw. ).. Algorytm Prima: zbiór A jest drzewem, a dodawana bezpieczna krawędź jest najlżejszą krawędzią łączącą A z wierzchołkiem spoza A (Tw. 1). 1

Algorytm Kruskala MST-Kruskal(G) A for każdy wierzchołek v V do Make-Set(v) posortuj krawędzie z E niemalejąco względem wag for każda krawędź e = (u,v) E do then return A if Find-Set(u) Find-Set(v) A A {e} Union(u,v) Łączymy drzewa Każdy wierzchołek staje się osobnym drzewem Drzewa są rozdzielone 13

Przykład alg. Kruskala a 4 8X 8 7 b c d 11 i 4 14 7X X6 h 1 g f 9 10 e koszt: 37 14

Analiza alg. Kruskala Poprawność: wynika wprost z Tw.. Złożoność: zależy od implementacji operacji dla zbiorów rozłącznych! Dla asymptotycznie najlepszej znanej dostajemy: Sortowanie krawędzi zajmuje O( E lg E ). Pętla for przebiegająca zbiór krawędzi wykonuje dwie operacje Find-Set i jedną Union. Może być to implementowane w czasie O(1). Ostatecznie dostajemy: O( E lg E ) = O( E lg V ). Dla implementacji naiwnej: O( V E 15

Algorytm Prima MST-Prim(G, root) for każdego v V do key(v) ; π[v] null key(root) 0; Enqueue(Q,V) while Q nie jest pusty do Zmniejszamy Korzystamy z wartość kolejki priorytetowej klucza u Get-Min(Q) for każdego v sąsiada u do if v Q i w(u,v) < key(v) thenπ[v] u key(v) w(u,v) Zmniejszamy wartość klucza 16

Przykład - algorytm Prima 0 a 4 8 8 7 b c d 11 i 4 14 7 6 h 1 g f 9 10 e koszt: 37 17

Analiza algorytmu Prima Poprawność: wynika bezpośrednio z Twierdzenia 1. Złożoność: zależy od implementacji kolejko priorytetowej, dla kopca binarnego mamy: Budowa początkowego kopca O( V ). Extract-Min zajmuje O(lg V ) dla każdego wierzchołka razem O( V lg V ) Pętla for jest wykonywana w czasie O( E ). Test czy jest sąsiadem zajmuje O(1). Zmniejszanie klucza O(lg V ). Ostatecznie dostajemy: O( V lg V + E lg V ) = O( E lg V ). 18

Podsumowanie: MST MST jest drzewem zawierającym wszystkie wierzchołki o minimalnym koszcie Stosuje się dwa zachłanne algorytmy dla znalezienia MST: Kruskala: oparty o krawędzie. Czas wykonania: O( V E ). Prima: oparty o wierzchołki. Czas wykonania: O( E lg V ). Złożoność dla algorytmu Kruskala można poprawić przez zastosowanie struktur Union-Find do O( E lg V ), Złożoność dla algorytmu Prima można poprawić przez zastosowanie kopców Fibonacciego do O( V lg V + E ). 19