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

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

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

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

Algorytmiczna teoria grafów

Matematyczne Podstawy Informatyki

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

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

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

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

Ogólne wiadomości o grafach

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

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

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

MATEMATYKA DYSKRETNA - MATERIAŁY DO WYKŁADU GRAFY

Matematyczne Podstawy Informatyki

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

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

Algorytmy wyznaczania centralności w sieci Szymon Szylko

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

Wykład 10 Grafy, algorytmy grafowe

TEORETYCZNE PODSTAWY INFORMATYKI

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

Sprawozdanie do zadania numer 2

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

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

E ' E G nazywamy krawędziowym zbiorem

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

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

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

Opracowanie prof. J. Domsta 1

Wybrane podstawowe rodzaje algorytmów

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

Grafy i sieci w informatyce - opis przedmiotu

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

Algorytmy i Struktury Danych.

TEORIA GRAFÓW I SIECI

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

Kolorowanie wierzchołków

Matematyka dyskretna

Programowanie dynamiczne i algorytmy zachłanne

Kombinowanie o nieskończoności. 2. Wyspy, mosty, mapy i kredki materiały do ćwiczeń

Wykłady z Matematyki Dyskretnej

SKOJARZENIA i ZBIORY WEWN. STABILNE WIERZCH. Skojarzeniem w grafie G nazywamy dowolny podzbiór krawędzi parami niezależnych.

Digraf. 13 maja 2017

Algorytmika Problemów Trudnych

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

Kolorowanie wierzchołków grafu

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

Droga i cykl Eulera Przykłady zastosowania drogi i cyku Eulera Droga i cykl Hamiltona. Wykład 4. Droga i cykl Eulera i Hamiltona

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

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

Grafy dla każdego. dr Krzysztof Bryś. Wydział Matematyki i Nauk Informacyjnych Politechnika Warszawska.

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

TEORIA GRAFÓW I SIECI

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.

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

G. Wybrane elementy teorii grafów

Wykłady z Matematyki Dyskretnej

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

Programowanie dynamiczne cz. 2

Wykład 4. Droga i cykl Eulera i Hamiltona

Algorytmy i Struktury Danych.

Wykład 7. Algorytmy grafowe

Metody Programowania

Podejście zachłanne, a programowanie dynamiczne

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

TEORIA GRAFÓW I SIECI

MATEMATYKA DYSKRETNA - KOLOKWIUM 2

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

WSTĘP DO INFORMATYKI. Grafy i struktury grafowe

Złożoność obliczeniowa zadania, zestaw 2

KURS MATEMATYKA DYSKRETNA

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

Programowanie obiektowe

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

ĆWICZENIE 1: Przeszukiwanie grafów cz. 1 strategie ślepe

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

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

Matematyka dyskretna - 7.Drzewa

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

Złożoność problemów. 1 ruch na sekundę czas wykonania ok lat 1 mln ruchów na sekundę czas wykonania ok.

Załącznik Nr 5 do Zarz. Nr 33/11/ Kod przedmiotu:aisd2

Wstęp do Programowania potok funkcyjny

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

Luty 2001 Algorytmy (4) 2000/2001

Programowanie sieciowe. Tadeusz Trzaskalik

7. Teoria drzew - spinanie i przeszukiwanie

Rozwiązywanie problemów metodą przeszukiwania

Kombinatoryczne problemy optymalizacyjne to problemy wyboru najlepszego rozwiązania z pewnego zbioru rozwiązań

Schemat programowania dynamicznego (ang. dynamic programming)

Wstęp do Programowania potok funkcyjny

Programowanie obiektowe

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

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

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.

Marek Miszczyński KBO UŁ. Wybrane elementy teorii grafów 1

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

Transkrypt:

Złożoność obliczeniowa klasycznych problemów grafowych Oznaczenia: G graf, V liczba wierzchołków, E liczba krawędzi 1. Spójność grafu Graf jest spójny jeżeli istnieje ścieżka łącząca każdą parę jego wierzchołków. Spójność grafu można zbadać za pomocą algorytmu przeszukiwania w głąb (DFS, ang. depth-first search), który dla reprezentacji grafu w postaci listy sąsiedztwa ma złożoność liniową proporcjonalną do sumy wierzchołków i krawędzi O(V+E). W przypadku reprezentacji grafu w postaci macierzy sąsiedztwa algorytm DFS ma złożoność kwadratową względem liczby wierzchołków O(V 2 ). Metoda DFS Rekurencyjnie przeszukujemy graf. Odwiedzając wierzchołek zaznaczamy, że został już odwiedzony, a następnie rekurencyjnie odwiedzamy wszystkie sąsiednie wierzchołki, które nie zostały oznaczone jako odwiedzone. 2. Ścieżka Eulera Ścieżka Eulera to ścieżka łącząca dwa dane wierzchołki, która przebiega przez każdą krawędź w grafie dokładnie raz. Jeżeli jest taka potrzeba, to przez wierzchołki można przechodzić wielokrotnie. Jeżeli wierzchołek końcowy pokrywa się z początkowym, to mówimy o trasie Eulera. Problem został sformułowany po raz pierwszy przez Leonarda Eulera w 1736 roku, a jego szczególny przypadek nie mający rozwiązania, to tzw. problem 7 mostów królewieckich. Rozwiązanie trasy i ścieżki Eulera warunkują następujące własności. Graf posiada cykl (trasę) Eulera, jeżeli jest spójny i wszystkie jego wierzchołki mają parzysty stopień (parzystą ilość krawędzi przylegających do wierzchołka). Graf posiada ścieżkę Eulera, jeżeli jest spójny i dokładnie dwa jego wierzchołki mają nieparzysty stopień. Stopień wierzchołka V i oznaczamy jako deg(v i ). Jeżeli istnieje cykl Eulera to możemy go wyznaczyć w czasie liniowym O(E).

3. Ścieżka Hamiltona Ścieżka Hamiltona to ścieżka w grafie łącząca dwa dane wierzchołki, która przebiega przez każdy wierzchołek w grafie dokładnie jeden raz. Jeżeli wierzchołek końcowy pokrywa się z początkowym, to mówimy o trasie (cyklu) Hamiltona. Wyznaczenie ścieżki Hamiltona w sposób rekurencyjny wymaga czasu wykładniczego O(V!) i jest to problem NP-zupełny. Rozszerzeniem problemu Hamiltona jest problem komiwojażera (TSP, ang. traveling salesman problem). Polega on na znalezieniu minimalnego cyklu Hamiltona w pełnym grafie ważonym. Nazwa wzięła się stąd, że wierzchołki interpretujemy jako miasta, a wagi krawędzi jako odległości między miastami. Jest to także klasyczny problem NP-zupełny. 4. Dopasowanie Problem polega na wyznaczeniu możliwie największego podzbioru krawędzi grafu, mających tę własność, że żadne dwie spośród krawędzi nie prowadzą do/od tego samego wierzchołka. Rozwiązanie tego problemu wymaga czasu proporcjonalnego do wielomianu zależnego od ilości wierzchołków i krawędzi O(p(V,E)). Dopasowanie dwudzielne (graf dwudzielny) Problem j/w, ale mamy dwa różne typy wierzchołków i wyszukujemy tylko te krawędzie, które łączą wierzchołek pierwszego typu z wierzchołkiem drugiego typu. 5. Planarność Czy możemy narysować dany graf, bez wzajemnego przecinania się krzywych reprezentujących jego krawędzie? Wyjaśnia to Twierdzenie Kuratowskiego (1930): Graf jest planarny, jeżeli po zredukowaniu wierzchołków stopnia 2 nie zawiera podgrafu pełnego o pięciu wierzchołkach (graf 5), ani podgrafu pełnego dwudzielnego o sześciu wierzchołkach, w którym każdy z trzech wierzchołków w pierwszej grupie jest połączony z każdym z wierzchołków w drugiej grupie (graf 3,3). graf 5 graf 3,3 Innymi słowy można to ująć: graf jest planarny wtedy i tylko wtedy, gdy nie zawiera podgrafu, który można otrzymać z grafów graf 5 i graf 3,3 przez podział krawędzi

wierzchołkami o stopniu 2. Graf homeomorficzny (podobny) to graf, który można otrzymać z danego grafu wstawiając w krawędziach dodatkowe wierzchołki stopnia 2. Bezpośrednia implementacja ma złożoność wielomianową O(n 6 ). Tarjan i Hopcroft w 1971 podali algorytm o złożoności O(n log(n)). A w 1974 przedstawili zawiłą wersję o złożoności liniowej O(n). Najładniejszy graf planarny w 1994 roku 6. Maksymalna klika Jaki jest rozmiar największego podgrafu pełnego w grafie (kliki)? (podgraf pełny podzbiór wierzchołków grafu wraz z krawędziami pomiędzy tymi wierzchołkami tworzący graf, w którym każdy wierzchołek jest połączony ze wszystkimi pozostałymi). Jest to problem klasy NP. 7. Kolorowanie grafu Problem polega na rozstrzygnięciu, czy istnieje taki sposób przypisania jednego z k kolorów każdemu wierzchołkowi w grafie tak, aby każda para wierzchołków, połączonych wspólną krawędzią miała różne kolory. Liczbą chromatyczną grafu nazywamy najmniejszą możliwą liczbę kolorów potrzebnych do pokolorowania wierzchołków w w/w sposób. Dwukolorowalność Problem rozstrzygamy dla k=2, czyli dla dwóch kolorów. Problem ten jest równoważny problemowi sprawdzania, czy graf jest dwudzielny. Graf dwudzielny graf, którego zbiór wierzchołków można podzielić na dwa rozłączne zbiory tak, że krawędzie nie łączą wierzchołków tego samego zbioru. Problem ten może być rozwiązywany z zastosowaniem metody przeszukiwania grafu wszerz (BFS, ang. breadth-first search), która dla reprezentacji grafu w postaci listy sąsiedztwa ma złożoność O(V+E), a w przypadku reprezentacji grafu w postaci macierzy sąsiedztwa O(V 2 ). Metoda BFS Wykorzystuje się strukturę danych typu kolejka (FIFO). Zdejmując ze stosu wierzchołek umieszczamy na stosie wszystkie jego sąsiednie nieodwiedzone wierzchołki. Odwiedzone wierzchołki zaznaczamy.

Trójkolorowalność Problem sformułowany jak w dwukolorowalności, ale wierzchołkom przypisujemy jeden z trzech kolorów. Problem potrafimy rozwiązywać tylko algorytmami siłowymi, czyli ma złożoność wykładniczą O(3 V ) i jest NP-zupełny. Używając programowania dynamicznego, uzyskujemy złożoność obliczeniową O(2,445 V ). Znane są także szybsze algorytmy o złożoności O(V2 V ), O(1,7504 V ) i O(1,3289 V ). Programowanie dynamiczne Jest przykładem programowania wstępującego, polegającego na rozwiązywaniu kolejnych coraz większych realizacji problemu, aż do osiągnięcia realizacji koocowej. Najpierw rozwiązywane są najmniejsze realizacje problemu, otrzymane wyniki są zapamiętywane, a potem są wykorzystywane przy rozwiązywaniu coraz to większych realizacji problemu (bez potrzeby ich ponownego wielokrotnego wyliczania). Algorytmy programowania dynamicznego na ogół opisuje się w postaci iteracyjnej. Czterokolorowalność Twierdzenie o czterech kolorach: Każdy graf planarny jest czterokolorowalny Po raz pierwszy hipoteza o prawdziwości tego twierdzenia została postawiona w roku 1852. Jednakże dowód przedstawiono dopiero ponad sto lat później w 1976 roku. Dowód opiera się niestety na sprawdzeniu aż 1936 przypadków szczególnych, a wykonać to można tylko przy pomocy komputera. Dlatego z dowodem czekano, aż do czasów komputerów o wystarczających mocach obliczeniowych. Nikt dotąd nie udowodnił twierdzenia o czterech barwach bez komputerowego wspomagania, choć wymyślono pewne uproszczenia oryginalnego dowodu. 8. Najkrótsza ścieżka Problem wyznaczania w grafie ważonym najkrótszej ścieżki między dwoma wierzchołkami. Istnieją dwa klasyczne algorytmy: Dijkstry: Wyznaczana jest najkrótsza ścieżka pomiędzy danym wierzchołkiem, a wszystkimi wierzchołkami w grafie. Algorytm Dijkstry jest przykładem algorytmu zachłannego. Algorytm zachłanny Algorytm, w którym w celu uzyskania rozwiązania problemu w każdym kroku dokonuje się wyboru najlepiej rokującego w danym momencie rozwiązania częściowego, tzn. wybieramy zachłannie. Najprostsza implementacja złożoność obliczeniowa O(V 2 ). Gdy graf ma dużo mniej krawędzi niż graf pełny stosuje się kolejkę priorytetową zrealizowana w postaci kopca binarnego złożoność obliczeniowa wynosi wtedy O(E logv). Złożoność można jeszcze polepszyć do wartości O(V logv+e) (stosuje się wtedy kopiec Fibonacciego).

Algorytm Dijkstry Algorytm korzysta z węzłów oznaczanych jako nieosiągalne, nieustalone i ustalone. W kolejnych krokach algorytmu obliczenia odległości wykonuje się tylko dla węzłów nieustalonych i nieosiągalnych. Wagi krawędzi muszą byd dodatnie. 1. Na początku wszystkie wierzchołki są oznaczone jako nieosiągalne z wierzchołka początkowego. 2. Zaczynamy od oznaczenia wierzchołka początkowego jako ustalonego. Dla wszystkich wierzchołków połączonych z nim obliczamy ich odległości od tego wierzchołka, a następnie wierzchołek o minimalnej odległości oznaczamy jako ustalony. 3. W następnym kroku dla wszystkich wierzchołków sąsiadujących z aktualnym wierzchołkiem ustalonym obliczamy ich odległości od wierzchołka początkowego (liczone poprzez aktualny wierzchołek ustalony). Jeżeli dla któregoś z wierzchołków odległośd ta jest mniejsza niż dotychczasowa, to ją uaktualniamy. 4. Spośród wierzchołków nieustalonych wyszukujemy wierzchołek o minimalnej odległości od wierzchołka początkowego i czynimy go aktualnym wierzchołkiem ustalonym. 5. Powtarzamy kroki 3 i 4 aż do osiągnięcia wierzchołka koocowego i oznaczenia go jako wierzchołek ustalony (mamy wtedy wyznaczoną najkrótszą drogę do tego wierzchołka) lub po ustawieniu wszystkich wierzchołków jako ustalonych (mamy wtedy wyznaczoną najkrótszą drogę do wszystkich wierzchołków w grafie). krok A B C D E F G H 0 N N N N N N N N 1 0 (*) 16 7 min 21 N N N N 2 0 * 15 min 7 (*) 21 15 N N N 3 0 * 15 (*) 7 * 21 15 min N 27 N 4 0 * 15 * 7 * 20 min 15 (*) 25 23 N 5 0 * 15 * 7 * 20 (*) 15 * 24 23 min N 6 0 * 15 * 7 * 20 * 15 * 24 min 23 (*) 32 7 0 * 15 * 7 * 20 * 15 * 24 (*) 23 * 31 min 8 0 * 15 * 7 * 20 * 15 * 24 * 23 * 31 (*) Bellmana-Forda: pesymistyczna złożoność obliczeniowa O(VE). Stosuje się także dwa algorytmy wyznaczające najkrótsze ścieżki pomiędzy wszystkimi parami wierzchołków: Floyda-Warshalla: pesymistyczna złożoność obliczeniowa O(V 3 ). Algorytm Floyda-Warshalla Algorytm wyznacza minimalne odległości pomiędzy wszystkimi parami wierzchołków w grafie. W tym algorytmie wagi węzłów mogą byd ujemne, ale nie może jednak występowad cykl o łącznej ujemnej wadze osiągalny ze źródła. Działanie algorytmu jest następujące: 1. Po kolei rozpatrujemy kolejne wierzchołki grafu jako elementy centralne c. 2. Dla każdej pary wierzchołków u i v, jeżeli suma etykiet krawędzi u-c i c-v jest mniejsza od wartości etykiety krawędzi u-v, to w macierzy sąsiedztwa reprezentującej graf zamieniamy tą etykietę na etykietę będącą sumą etykiet krawędzi u-c i c-v. Johnsona: pesymistyczna złożoność obliczeniowa O(V 2 log(v)+ve).

9. Najdłuższa ścieżka Problem wyznaczania w grafie ważonym najdłuższej ścieżki między dwoma wierzchołkami. Podobieństwo tego problemu do problemu najkrótszej ścieżki jest tylko pozorne. Problem ten jest wersją problemu trasy Hamiltona, czyli jest to problem NP-zupełny. 10. Silna spójność Czy istnieje ścieżka skierowana łącząca każdą parę wierzchołków w grafie skierowanym? Złożoność obliczeniowa jest liniowa względem sumy wierzchołków i krawędzi O(V+E) (dwukrotne wykonanie algorytmu spójności dla grafu nieskierowanego). Problem ten redukuje się do problemu spełnialności formuł logicznych w postaci 2SAT, co oznacza, że problem 2SAT jest problemem klasy P. 11. Cykl nieparzystej długości Czy dany graf skierowany posiada cykl o nieparzystej długości? Problem ten jest równoważny problemowi dwukolorowalności, a więc ma złożoność wielomianową. Graf niezawierający cykli nieparzystej długości jest dwukolorowalny. 12. Cykl parzystej długości Czy dany graf skierowany posiada cykl o parzystej długości? Problem ten jest równoważny problemowi dwudzielności, a więc ma złożoność wielomianową. W grafie dwudzielnym wszystkie cykle są parzyste. 13. Minimalne drzewo rozpinające Minimalne drzewo rozpinające definiuje się dla grafu ważonego nieskierowanego jako zbiór wszystkich wierzchołków grafu oraz podzbiór jego krawędzi spełniające trzy warunki: krawędzie łączą wszystkie wierzchołki grafu w grafie nie występują cykle suma etykiet krawędzi jest minimalna Algorytm Kruskala - wyznaczanie minimalnego drzewa rozpinającego Algorytm polega na łączeniu minimalnych drzew rozpinających. Przeglądamy kolejne krawędzie grafu w kolejności rosnących wartości etykiet. Jeżeli wierzchołki kolejnej rozważanej krawędzi należą do dwóch różnych drzew, to krawędź tą dołączamy do minimalnego drzewa rozpinającego, w przeciwnym razie (wierzchołki znajdują się w obrębie jednego drzewa) nie dołączamy. Algorytm Kruskala: złożoność obliczeniowa O(E log (E))

Stosuje się także dwa algorytmy wyznaczające minimalne drzewo rozpinające: Prima: złożoność obliczeniowa O(E log(v)). Boruvki: złożoność obliczeniowa O(E log(v) log(e)). Tab. Złożoności obliczeniowe klasycznych problemów grafowych rodzaj grafu rodzaj problemu problemy P łatwe problemy P trudne problemy NP-zupełne grafy nieskierowane spójność ścieżka Eulera ścieżka Hamiltona dopasowanie dwudzielne dopasowanie maksymalne planarność maksymalna klika 2-kolorowalność 3-kolorowalność najkrótsza ścieżka najdłuższa ścieżka grafy skierowane silna spójność cykl nieparzystej długości cykl parzystej długości grafy ważone minimalne drzewo rozpinające problem komiwojażera