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