Decyklizacja grafów
Transkrypt
Decyklizacja grafów
Przedstawienie problemu Rozwiązanie problemu Informacje techniczne Decyklizacja grafów Bartłomiej Gałkowski, Marek Kembrowski Instytut Informatyki Wrocław, 23 czerwca 2008 Bartłomiej Gałkowski, Marek Kembrowski Decyklizacja grafów Przedstawienie problemu Rozwiązanie problemu Informacje techniczne Decyklizacja grafów Bartłomiej Gałkowski, Marek Kembrowski Instytut Informatyki Wrocław, 23 czerwca 2008 Bartłomiej Gałkowski, Marek Kembrowski Decyklizacja grafów Przedstawienie problemu Rozwiązanie problemu Informacje techniczne Spis Treści 1 Przedstawienie problemu Dlaczego jest ważny? Dlaczego jest trudny? 2 Rozwiązanie problemu Podejście siłowe Algorytm z nawrotami Inne podejście Metody aproksymacyjne 3 Informacje techniczne Format danych wejściowych Bartłomiej Gałkowski, Marek Kembrowski Decyklizacja grafów Przedstawienie problemu Rozwiązanie problemu Informacje techniczne Dlaczego jest ważny? Dlaczego jest trudny? Definicja Dany jest graf (skierowany) G =< V , E > chcemy znaleźć najmniejszy taki zbiór F ⊂ V , że podgraf G indukowany przez zbiór V /F jest acykliczny. Definicja alternatywna Dany jest graf (skierowany) G =< V , E > chcemy znaleźć najmniejszy taki zbiór E 0 ⊂ E , że podgraf G 0 =< V , E /E 0 > jest acykliczny. Bartłomiej Gałkowski, Marek Kembrowski Decyklizacja grafów Przedstawienie problemu Rozwiązanie problemu Informacje techniczne Dlaczego jest ważny? Dlaczego jest trudny? 1. Powód Gdyż cykle mogą reprezentować niepożądane sprzężenia zwrotne, jeśli graf interpretujemy jako obwód elektryczny. Bartłomiej Gałkowski, Marek Kembrowski Decyklizacja grafów Przedstawienie problemu Rozwiązanie problemu Informacje techniczne Dlaczego jest ważny? Dlaczego jest trudny? 1. Powód Gdyż cykle mogą reprezentować niepożądane sprzężenia zwrotne, jeśli graf interpretujemy jako obwód elektryczny. 2. Powód Gdyż mogą oznaczać zakleszczenia zasobów, jeśli graf traktujemy jako sieć Petriego. Bartłomiej Gałkowski, Marek Kembrowski Decyklizacja grafów Przedstawienie problemu Rozwiązanie problemu Informacje techniczne Dlaczego jest ważny? Dlaczego jest trudny? 1. Powód Gdyż cykle mogą reprezentować niepożądane sprzężenia zwrotne, jeśli graf interpretujemy jako obwód elektryczny. 2. Powód Gdyż mogą oznaczać zakleszczenia zasobów, jeśli graf traktujemy jako sieć Petriego. 3. Powód Gdyż mogą oznaczać odwołujące się do siebie biblioteki, jeśli interpretujemy graf jako strukturę plików źródłowych. Bartłomiej Gałkowski, Marek Kembrowski Decyklizacja grafów Przedstawienie problemu Rozwiązanie problemu Informacje techniczne Dlaczego jest ważny? Dlaczego jest trudny? Liczba cykli w grafie może być wykładnicza względem liczby wierzchołków, więc samo ich znajdowanie, będzie co najmniej takie[1]. Bartłomiej Gałkowski, Marek Kembrowski Decyklizacja grafów Przedstawienie problemu Rozwiązanie problemu Informacje techniczne Dlaczego jest ważny? Dlaczego jest trudny? Liczba cykli w grafie może być wykładnicza względem liczby wierzchołków, więc samo ich znajdowanie, będzie co najmniej takie[1]. Czy musimy znajdować wszystkie cykle? Tak, jeśli chcemy znaleźć najmniejszy zbiór usuwający cykle. Bartłomiej Gałkowski, Marek Kembrowski Decyklizacja grafów Przedstawienie problemu Rozwiązanie problemu Informacje techniczne Dlaczego jest ważny? Dlaczego jest trudny? Liczba cykli w grafie może być wykładnicza względem liczby wierzchołków, więc samo ich znajdowanie, będzie co najmniej takie[1]. Czy musimy znajdować wszystkie cykle? Tak, jeśli chcemy znaleźć najmniejszy zbiór usuwający cykle. Cykle fundamentalne W czasie O(|E | ∗ |V |) potrafimy znaleźć wszystkie cykle fundamentalne grafu. W przypadku grafu skierowanego, możemy to zrobić w czasie O(|E | + |V |) [3] Bartłomiej Gałkowski, Marek Kembrowski Decyklizacja grafów Przedstawienie problemu Rozwiązanie problemu Informacje techniczne Podejście siłowe Algorytm z nawrotami Inne podejście Metody aproksymacyjne 1 Ustal jako tymczasowe rozwiązanie: wyrzucenie wszystkich wierzchołków. 2 Dla każdego podzbioru P wszystkich wierzchołków sprawdzić: czy graf indukowany przez P nie zawiera cykli i czy P nie posiada więcej wierzchołków niż tymczasowe rozwiązanie. Jeśli tak to przyjmij P jako nowe tymczasowe rozwiązanie. 3 Zwróć tymczasowe rozwiązanie. Bartłomiej Gałkowski, Marek Kembrowski Decyklizacja grafów Przedstawienie problemu Rozwiązanie problemu Informacje techniczne Podejście siłowe Algorytm z nawrotami Inne podejście Metody aproksymacyjne Będziemy rozważać podzbiory wierzchołków o których zadecydowaliśmy czy pierwsze 1, 2, ..., k wierzchołki należą czy nie. Rodzinę takich zbiorów oznaczymy Pk . Jeśli liczba wierzchołków które wyrzuciliśmy z każdego ze zbiorów aktualnie rozważanej rodziny Pk jest większa niż liczba wyrzuconych z tymczasowo najlepszego rozwiązania, to nie musimy się dalej zajmować zbiorami z rodziny PK , gdyż na pewno nie dadzą lepszego rozwiązania niż mamy. Bartłomiej Gałkowski, Marek Kembrowski Decyklizacja grafów Podejście siłowe Algorytm z nawrotami Inne podejście Metody aproksymacyjne Przedstawienie problemu Rozwiązanie problemu Informacje techniczne Niech zbiór T = ∅ będzie najlepszym dotychczasowym rozwiązaniem. ZnajdźDecyklizator(rodzina podzbiorów Pk , liczba k ) S 1 Jeśli graf indukowany przez Pk ma cykl, skończ nie zgłaszając lepszego rozwiązania. 2 Jeśli | Pk | + (|V | − k) < |T |, skończ nie zgłaszając lepszego rozwiązania. 3 Jeśli rodzina jest jednoelementowa Pk = {X } oraz |X | > |T | czyli X jest lepszym rozwiązaniem niż dotychczasowe T to ustal X jako aktualne najlepsze rozwiązanie: T := X . 4 jeśli rodzina Pk zawiera więcej niż jeden zbiór zdefiniuj: A = {X ∈ Pk : k ∈ X }, B = {X ∈ Pk : k ∈ / X }. Wykonaj ZnajdźDecyklizator(A,k + 1) oraz wykonaj ZnajdźDecyklizator(B,k + 1) S Bartłomiej Gałkowski, Marek Kembrowski Decyklizacja grafów Przedstawienie problemu Rozwiązanie problemu Informacje techniczne Podejście siłowe Algorytm z nawrotami Inne podejście Metody aproksymacyjne Jak sprawdzić, czy graf ma cykle? Graf nieskierowany Wystarczy wykonać na każdej spójnej składowej przeszukiwanie w głąb. Jeśli natrafimy dwukrotnie na ten sam wierzchołek – to znaczy, że mamy cykl. Graf skierowany Wystarczy spróbować posortować topologicznie. Bartłomiej Gałkowski, Marek Kembrowski Decyklizacja grafów Przedstawienie problemu Rozwiązanie problemu Informacje techniczne Podejście siłowe Algorytm z nawrotami Inne podejście Metody aproksymacyjne Jak sprawdzić, czy graf ma cykle? Graf nieskierowany Wystarczy wykonać na każdej spójnej składowej przeszukiwanie w głąb. Jeśli natrafimy dwukrotnie na ten sam wierzchołek – to znaczy, że mamy cykl. Graf skierowany Wystarczy spróbować posortować topologicznie. Co to znaczy? Staramy się poukładać jego wierzchołki w linii poziomej aby wszystkie strzałki wskazywały z lewej na prawą. Jeśli to nie możliwe to oczywiście mamy cykl! Bartłomiej Gałkowski, Marek Kembrowski Decyklizacja grafów Przedstawienie problemu Rozwiązanie problemu Informacje techniczne Podejście siłowe Algorytm z nawrotami Inne podejście Metody aproksymacyjne Przykład Bartłomiej Gałkowski, Marek Kembrowski Decyklizacja grafów Przedstawienie problemu Rozwiązanie problemu Informacje techniczne Podejście siłowe Algorytm z nawrotami Inne podejście Metody aproksymacyjne Macierz sąsiedztwa W [1] pokazano, że DAG jest acykliczny wtedy i tylko wtedy, gdy wierzchołki potrafimy posortować w taki sposób, aby macierz sąsiedztwa była macierzą trójkątną (czyli posortowana topologicznie). Jedna z metod decyklizacji grafu polega na przekształceniu macierzy sąsiedztwa po przez wymianę kolumn (i odpowiednich wierszy), aby uczynić ją jak najbliższą macierzy trójkątnej, a następnie usunięcie odpowiednich kolumn i wierszy. Jeśli chcemy znaleźć najmniejszy zbiór krawędzi usuwających cykle, usuwamy pojedyncze pola. Znalezienie optymalnego zbioru jest w tym przypadku trudnym zadaniem kombinatorycznym, jednak nie wymaga od nas znajdowania wszystkich cykli. Bartłomiej Gałkowski, Marek Kembrowski Decyklizacja grafów Przedstawienie problemu Rozwiązanie problemu Informacje techniczne Podejście siłowe Algorytm z nawrotami Inne podejście Metody aproksymacyjne Wyrażenie CNF Pomysł polega na znalezieniu wszystkich cykli w grafie, a następnie przypisaniu każdemu łukowi zmiennej. Każdy cykl staje się alternatywą zmiennych (łuków), zaś cały problem koniunkcją alternatyw (postać CNF). Następnie przekształcamy formułę do postaci DNF (po przez zwykłą transformację oraz upraszczanie wyrażeń). Po zakończeniu, każda koniunkcja reprezentuje pewien zbiór łuków, których usunięcie niszczy wszystkie cykle, najmniejsza taka koniunkcja jest naszym rozwiązaniem. Bartłomiej Gałkowski, Marek Kembrowski Decyklizacja grafów Przedstawienie problemu Rozwiązanie problemu Informacje techniczne Podejście siłowe Algorytm z nawrotami Inne podejście Metody aproksymacyjne W przypadku algorytmów przybliżających optymalne rozwiązanie rozważa się różne funkcje wagowe dla wierzchołków lub krawędzi, wspomnimy o dwóch przypadkach. Bartłomiej Gałkowski, Marek Kembrowski Decyklizacja grafów Przedstawienie problemu Rozwiązanie problemu Informacje techniczne Podejście siłowe Algorytm z nawrotami Inne podejście Metody aproksymacyjne W przypadku algorytmów przybliżających optymalne rozwiązanie rozważa się różne funkcje wagowe dla wierzchołków lub krawędzi, wspomnimy o dwóch przypadkach. Graf skierowany Przypadek, gdy chcemy usunąć krawędzie Bartłomiej Gałkowski, Marek Kembrowski Decyklizacja grafów Przedstawienie problemu Rozwiązanie problemu Informacje techniczne Podejście siłowe Algorytm z nawrotami Inne podejście Metody aproksymacyjne W przypadku algorytmów przybliżających optymalne rozwiązanie rozważa się różne funkcje wagowe dla wierzchołków lub krawędzi, wspomnimy o dwóch przypadkach. Graf skierowany Przypadek, gdy chcemy usunąć krawędzie Graf nieskierowany Przypadek, gdy chcemy usunąć wierzchołki Bartłomiej Gałkowski, Marek Kembrowski Decyklizacja grafów Przedstawienie problemu Rozwiązanie problemu Informacje techniczne Podejście siłowe Algorytm z nawrotami Inne podejście Metody aproksymacyjne Usuwanie krawędzi – graf skierowany Pomysł jest podobny do metody zachłannej stosowanej w algorytmie Kruskala. Niestety w naszym przypadku nie dostajemy optymalnego rozwiązania, a jedynie jego aproksymację. Nadamy każdej krawędzi pewną wagę i będziemy dodawać kolejne krawędzie poczynając od najlżejszych, o ile tylko nie powodują powstania cyklu. Oczywiście nie znamy liczby cykli, na jakich leży dana krawędź. Będziemy się starali tą liczbę przybliżyć po przez liczbę krawędzi wchodzących i wychodzących z wierzchołków, które łączy nasza krawędź e. w (e) = degin (start(e)) − degout (start(e)) + degout (end(e)) − degin (end(e)) Bartłomiej Gałkowski, Marek Kembrowski Decyklizacja grafów Przedstawienie problemu Rozwiązanie problemu Informacje techniczne Podejście siłowe Algorytm z nawrotami Inne podejście Metody aproksymacyjne Usuwanie wierzchołków – graf nieskierowany W przypadku określania wagi dla wierzchołków stosujemy tak zwaną funkcję cyklomatyczną. Na początku każdy wierzchołek ma startową wagę w (v ) = 1. Oprócz tego będziemy potrzebować funkcji δG (v ). Definicja δG (v ) oznacza spadek liczby cyklomatycznej G , czyli wymiaru przestrzeni cykli prostych G , spowodowanej usunięciem v . Bartłomiej Gałkowski, Marek Kembrowski Decyklizacja grafów Przedstawienie problemu Rozwiązanie problemu Informacje techniczne Podejście siłowe Algorytm z nawrotami Inne podejście Metody aproksymacyjne Algorytm H := G , w 0 := w , i := 0 Dopóki H zawiera cykl, wykonuj: 0 (u) c := minu∈H { wδH (u) } Gi := H, ti := c. δGi , w 0 := w 0 − ti H := podgraf Gi indukowany przez zbiór {u|w 0 (u) > 0} i + +, k := i, Gi := H Utwórz zbiór usuwający cykle. Zbiór na końcu jest tworzony po kolei od Gk aż do G0 po przez dodawanie minimalnego podzbioru Pi ⊂ Vi−1 − Vi , takiego, że Pi−1 ∪ Pi usuwa cykle Gi−1 . Algorytm Długi dowód poprawności (2-aproksymacji) algorytmu znajduje się w [4]. Bartłomiej Gałkowski, Marek Kembrowski Decyklizacja grafów Przedstawienie problemu Rozwiązanie problemu Informacje techniczne Format danych wejściowych Program wczytuje dane w postaci: Pierwszy wiersz zawiera jedną liczbę n, równą liczbie wierzchołków W kolejnych n wierszach znajdują się ciągi liczb w postaci: ki1 i2 ...ik Jeśli powyższy ciąg znajdował się w j − tym wierszu, oznacza to, że z wierzchołka vj−2 wychodzi k krawędzi w postaci < j − 2, i1 >, ..., < j − 2, ik >. Wierzchołki numerujemy od 0. Każda krawędź może wystąpić tylko raz. Bartłomiej Gałkowski, Marek Kembrowski Decyklizacja grafów Przedstawienie problemu Rozwiązanie problemu Informacje techniczne Format danych wejściowych N. Deo, Teoria grafów i jej zastosowania w technice i informatyce, Wydawnictwo Naukowo-Techniczne, 1986. Thomas H. Cormen, Wprowadzenie do algorytmów, Wydawnictwo Naukowo-Techniczne, 2004. W. Lipski, Kombinatoryka dla informatykówWydawnictwo Naukowo-Techniczne, 2004. Vijay V. Vazirani Algorytmy aproksymacyjne, Bartłomiej Gałkowski, Marek Kembrowski Decyklizacja grafów