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

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

Podejście zachłanne, a programowanie dynamiczne

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

Wykład 10 Grafy, algorytmy grafowe

Digraf. 13 maja 2017

Matematyczne Podstawy Informatyki

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

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

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

Ogólne wiadomości o grafach

Wstęp do programowania

Algorytmiczna teoria grafów

Algorytmy i Struktury Danych.

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

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

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

MATEMATYKA DYSKRETNA - MATERIAŁY DO WYKŁADU GRAFY

Programowanie dynamiczne i algorytmy zachłanne

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne

Porównanie algorytmów wyszukiwania najkrótszych ścieżek międz. grafu. Daniel Golubiewski. 22 listopada Instytut Informatyki

Matematyka dyskretna - 7.Drzewa

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

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

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

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

TEORETYCZNE PODSTAWY INFORMATYKI

Wstęp do programowania

Sprawozdanie do zadania numer 2

Graf. Definicja marca / 1

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.

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

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

Algorytmy i Struktury Danych.

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

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

Algorytmika Problemów Trudnych

Algorytmy wyznaczania centralności w sieci Szymon Szylko

Algorytmy zachłanne. dr inż. Urszula Gałązka

Badania operacyjne: Wykład Zastosowanie kolorowania grafów w planowaniu produkcji typu no-idle

Matematyka dyskretna

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

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

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

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

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

Programowanie obiektowe

Programowanie dynamiczne

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

Wybrane podstawowe rodzaje algorytmów

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

WSTĘP DO INFORMATYKI. Drzewa i struktury drzewiaste

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

7. Teoria drzew - spinanie i przeszukiwanie

Algorytmy i Struktury Danych

0-0000, , , itd

Wykład 7. Algorytmy grafowe

Sortowanie topologiczne skierowanych grafów acyklicznych

Programowanie sieciowe. Tadeusz Trzaskalik

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

TEORIA GRAFÓW I SIECI

Drzewa rozpinajace, zbiory rozłaczne, czas zamortyzowany

Programowanie obiektowe

Wykłady z Matematyki Dyskretnej

Matematyczne Podstawy Informatyki

Temat: Algorytmy zachłanne

Minimalne drzewa rozpinające

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

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

Algorytmy z powracaniem

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.

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

Zagadnienie najkrótszej drogi w sieci

ALGORYTMY I STRUKTURY DANYCH

Struktury Danych i Złożoność Obliczeniowa

Digraf o V wierzchołkach posiada V 2 krawędzi, zatem liczba różnych digrafów o V wierzchołkach wynosi 2 VxV

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

Egzaminy i inne zadania. Semestr II.

Algorytmy i Struktury Danych.

Matematyczne Podstawy Informatyki

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

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

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

Algorytm wyznaczania najkrótszej ścieżki w grafie skierowanym w zbiorze liczb rozmytych

(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

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

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

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

Temat: Struktury danych do reprezentacji grafów. Wybrane algorytmy grafowe.

Instrukcje dla zawodników

Struktury danych: stos, kolejka, lista, drzewo

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

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

Wstęp do Programowania potok funkcyjny

G. Wybrane elementy teorii grafów

MATEMATYKA DYSKRETNA - KOLOKWIUM 2

Metoda podziału i ograniczeń

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

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

Podstawy Programowania 2 Grafy i ich reprezentacje. Plan. Wstęp. Teoria grafów Graf skierowany. Notatki. Notatki. Notatki. Notatki.

. Podstawy Programowania 2. Grafy i ich reprezentacje. Arkadiusz Chrobot. 9 czerwca 2016

Transkrypt:

Wykład Algorytmy grafowe metoda zachłanna. Właściwości algorytmu zachłannego:. W przeciwieństwie do metody programowania dynamicznego nie występuje etap dzielenia na mniejsze realizacje z wykorzystaniem właściwości rekurencyjnej.. Algorytm zachłanny znajduje rozwiązanie w wyniku podjęcia szeregu decyzji, z których każda wydaje się w danym momencie najlepsza. Oznacza to, że każdy wybór jest optymalny lokalnie.. Takie podejście nie zapewnia, że rozwiązanie globalne będzie optymalne.. Czasem takie rozwiązanie optymalne globalnie istnieje, jednak należy to zawsze dodatkowo wykazać.. Ogólna charakterystyka algorytmu zachłannego. Utwórz zbiór pusty.. Powtarzaj, aż otrzymasz rozwiązanie realizacji problemu:.. Wykonaj procedurę wyboru, która służy do wybrania kolejnego elementu dodawanego do zbioru. Wybór jest wykonywany zgodnie z kryterium zachłannym, który spełnia warunek optymalny lokalnie... Wykonaj procedurę sprawdzenia wykonalności, która służy do określenia, czy zbiór jest akceptowalny dzięki sprawdzeniu, czy istnieje możliwość uzupełnienia go w taki sposób, który zapewni osiągnięcie realizacji problemu... Wykonaj procedurę sprawdzania rozwiązania, służąca do określenia, czy ów zbiór stanowi rozwiązanie realizacji problemu. Definicje:. Droga w grafie nieskierowanym: sekwencja wierzchołków, w którym każdy wierzchołek u i jego następnik v łączy krawędź.. Graf nazywamy spójnym, gdy między każdą parą wierzchołków istnieje droga.. Cyklem prostym w grafie nieskierowanym nazywamy drogę prowadzącą z wierzchołka do niego samego, która zawiera co najmniej trzy wierzchołki i wierzchołki pośrednie są różne.. Graf nieskierowany, który nie zawiera żadnych cykli prostych jest określano jako graf acykliczny.. Drzewo swobodne jest acyklicznym spójnym grafem nieskierowanym. Żaden wierzchołek nie jest wyróżniony jako korzeń.. Drzewo korzeniowe posiada wyróżniony wierzchołek zwany korzeniem i jest kojarzone z potocznym rozumieniem drzewa. 7. Drzewo rozpinające grafu G jest to spójny podgraf, który zawiera wszystkie wierzchołki należące do G i jest drzewem.. Minimalne drzewo rozpinające grafu posiada najmniejszą wagę. Jeśli krawędzie grafu posiadają związane ze sobą wartości, są one nazywane wagami, a graf określa się jako graf ważony. Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład,

. Algorytmy grafowe.. Algorytm Prima: Minimalne drzewo rozpinające Problem: określ minimalne drzewo rozpinające Zastosowanie: budowa sieci dróg Dane wejściowe: spójny ważony graf nieskierowany zawierający n wierzchołków, gdzie n>=. Graf jest reprezentowany przez macierz sąsiedztwa Graf, gdzie element Graf[i][j] reprezentuje wagę krawędzi łączącej wierzchołki i oraz j. G= {V, E}, gdzie V jest zbiorem wierzchołków (węzłów) i E zbiorem krawędzi odwiedzony numer wierzchołka przodka u danego wierzchołka v klucz minimalna waga spośród wag krawędzi łączących dany wierzchołek v z wierzchołkami drzewa r wierzchołek, od którego budowane jest minimalne drzewo rozpinające Kolejka_P kolejka priorytetowa zawierająca wszystkie wierzchołki spoza rozrastającego się drzewa rozpinającego zwracająca element o najmniejszej wadze Tablica wierzcholki będzie zawierać elementy zawierające zbiór krawędzi drzewa rozpinającego: (v, wierzcholki[v].odwiedzony) wierzcholek { odwiedzony; klucz;} wierzcholek wierzcholki[v[g]] Graf(u, v) macierz sąsiedztwa; wagi gałęzi (u,v) testowane w celu znalezienia najlżejszej gałązi należącej do przekroju rozrastającego się minimalnego drzewa rozpinającego. Przekrojem drzewa są wszystkie gałęzie łączące wierzchołki czarne z białymi. PRIM (Graf(G), r). Załaduj wszystkie wierzchołki grafu G do Kolejka_P. dla każdego wierzchołka u należącego do Kolejka_P wierzcholki[u].klucz = NS //NS nieskończoność. wierzcholki[r].klucz = 0. wierzcholki[r].odwiedzony = 0. Dopóki Kolejka_P nie jest pusta.. u = Usun(Kolejka_P).. Dla każdego wierzchołka v należącego do macierzy sąsiedztwa wierzchołka u (Graf[u]) jeśli v należy do Kolejka_P i Graf[u][v] < wierzcholki [v].klucz to //znaleziono najlżejszą gałąź z przekroju grafu... { wierzcholki[v].odwiedzony = u wierzcholki[v].klucz = Graf [u][v] } Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład,

7 Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład,

Kolejka priorytetowa Kolejka_P wszystkie wierzcholki 7 Pozycja w kolejce 7 Numer wierzchołka 7 Numer wierzchołka 0 odwiedzony 0 NS NS NS NS NS NS klucz Kolejka priorytetowa Kolejka_P wszystkie wierzcholki 7 Pozycja w kolejce 7 Numer wierzchołka 0 odwiedzony 0 NS NS NS NS NS NS klucz Kolejka priorytetowa Kolejka_P sześć wierzchołków 7 Pozycja w kolejce 7 Numer wierzchołka 7 Numer wierzchołka 0 odwiedzony 0 NS NS NS NS NS klucz Kolejka priorytetowa Kolejka_P sześć wierzchołków(wersja bliższa implementacji) 7 Pozycja w kolejce 7 Numer wierzchołka 0 odwiedzony NS NS NS NS NS 0 klucz Kolejka priorytetowa Kolejka_P pięć wierzchołków 7 Pozycja w kolejce 7 Numer wierzchołka 7 Numer wierzchołka 0 odwiedzony 0 NS NS NS klucz Kolejka priorytetowa Kolejka_P pięć wierzchołków (wersja bliższa implementacji) 7 Pozycja w kolejce 7 Numer wierzchołka 0 odwiedzony NS NS NS 0 klucz Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład,

Kolejka priorytetowa Kolejka_P cztery wierzchołki 7 Pozycja w kolejce Numer wierzchołka 7 Numer wierzchołka 0 odwiedzony 0 NS klucz Kolejka priorytetowa Kolejka_P cztery wierzchołki (wersja bliższa implementacji) 7 Pozycja w kolejce Numer wierzchołka 0 odwiedzony NS 0 klucz Kolejka priorytetowa Kolejka_P trzy wierzchołki 7 Pozycja w kolejce Numer wierzchołka 7 Numer wierzchołka 0 odwiedzony 0 NS klucz Kolejka priorytetowa Kolejka_P trzy wierzchołki (wersja bliższa implementacji) 7 Pozycja w kolejce Numer wierzchołka 0 odwiedzony NS 0 klucz Kolejka priorytetowa Kolejka_P dwa wierzchołki 7 Pozycja w kolejce 7 Numer wierzchołka 7 Numer wierzchołka 0 7 odwiedzony 0 NS klucz Kolejka priorytetowa Kolejka_P dwa wierzchołki (wersja bliższa implementacji) 7 Pozycja w kolejce 7 Numer wierzchołka 7 0 odwiedzony NS 0 klucz Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład,

Kolejka priorytetowa Kolejka_P jeden wierzchołek 7 Pozycja w kolejce Numer wierzchołka 7 Numer wierzchołka 0 7 odwiedzony 0 klucz Kolejka priorytetowa Kolejka_P jeden wierzchołek (wersja zbliżona do implementacji) 7 Pozycja w kolejce Numer wierzchołka 0 7 odwiedzony 0 klucz Kolejka priorytetowa Kolejka_P - pusta 7 Pozycja w kolejce Numer wierzchołka 7 Numer wierzchołka 0 7 odwiedzony 0 klucz Czas działania algorytmu Prima O(VlgV + E lg V) = O(E lgv). Zakłada się, że kolejka priorytetowa Kolejka_P jest zaimplementowana jako kopiec. Oznacza czas działania linii algorytmu - równy O(V).. Czas działania pętli głównej w linii wynosi O(V). Każde wykonanie Usun(Kolejka_P) wynosi O(lgV), stąd łączny czas wynosi O(V lgv).. Suma długości wszystkich list sąsiedztwa jest równa E, czyli czas działania pętli w linii. wynosi O(E), a operacji w linii.. jest równy O(lgV) działanie na kopcu polegające na zmianie klucza i przebudowie kopca Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład,

.. Algorytm Dijkstry najkrótsza ścieżka z jednym źródłem Problem: określ najkrótsze ścieżki z jednego źródła w ważonym grafie skierowanym, gdy wagi są nieujemne. Zastosowanie: budowa sieci dróg Dane wejściowe: spójny ważony graf skierowany zawierający n wierzchołków, gdzie n>=. Graf jest reprezentowany przez macierz sąsiedztwa Graf, gdzie element Graf[i][j] reprezentuje wagę krawędzi łączącej wierzchołki i oraz j. G= {V, E}, gdzie V jest zbiorem wierzchołków (węzłów) i E zbiorem krawędzi S zbiór zawierający te wierzchołki, dla których wagi najkrótszych ścieżek ze źródła s zostały już obliczone Kolejka_P kolejka priorytetowa zawierająca wszystkie wierzchołki spoza rozrastającego się zbioru S (V - S) odwiedzony numer wierzchołka przodka u danego wierzchołka v klucz wartość ograniczająca od góry wagę najkrótszej ścieżki ze źródła s do wierzchołka v. s wierzchołek, od którego budowane są najkrótsze ścieżki Tablica wierzcholki będzie zawierać elementy zawierające zbiór krawędzi należących do najkrótszych ścieżek z s: (v, wierzcholki[v].odwiedzony) wierzcholek { odwiedzony; klucz;} wierzcholek wierzcholki[v[g]] w(u, v) waga gałęzi (u, v). Dijkstra (Graf, s). Dla każdego wierzchołka v należącego do zbioru wierzchołków V { wierzcholki[v].klucz = NS //NS nieskończoność wierzcholki[v].odwiedzony = 0 }. wierzcholki[v].klucz = 0. Zbiór S inicjuje się jako pusty. Załaduj wszystkie wierzcholki grafu G do kolejki priorytetowej Kolejka_P. Dopóki Kolejka_P nie jest pusta.. u = Usun(Kolejka_P) //usuwanie wierzchołka z najmniejszym kluczem.. Do zbioru S dodaj wierzchołek u.. Dla każdego wierzcholka v należącego do macierzy sąsiedztwa wierzcholka u (Graf[u]) Jeżeli wierzcholki[v].klucz > wierzcholki[u].klucz + Graf[u][v], to { wierzcholki[v].klucz = wierzcholki[u].klucz + Graf[u][v] wierzcholki[v].odwiedzony = u } Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład, 7

(0) (N) (N) (N) (0) () (N) (N) (0) () (N) (N) (N) (N) () () () () (0) () () () (N) () (0) (0) () () () () () () () () () () Czas trwania algorytmu: O((V+E)lgV) lub O(E lgv). Każdy wierzchołek jest dokładnie raz usuwany z kolejki Kolejka_P i wstawiany do zbioru S, czyli liczba iteracji jest równa V. Do zbioru S jest dodawany najlżejszy wierzchołek z Kolejka_P z szybkością kopca O(lgV) Usun(Kolejka_P). Wykonuje się V takich operacji. Przypisanie: wierzcholki[v].klucz = wierzcholki[u].klucz + Graf[u][v] wykonywane jest z szybkością O(lgV). Jest to operacja, która przebudowuje kopiec dla węzła v. Takich operacji jest co najwyżej E. Łączny czas wynosi O((V+E)lgV). Jeśli wszystkie wierzchołki są osiągalne ze źródła, to czas ten jest równy O(E lgv) Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład,