Transcript 1 - Gedeon

SKIEROWANE
Marek Bil
Krzysztof Fitrzyk
Krzysztof Godek
2
3
1
5
4
DEFINICJA:
Grafem skierowanym nazywamy strukturę G = (V, E)
złożoną z niepustego zbioru wierzchołków V,
zwanych także węzłami,
oraz zbioru skierowanych krawędzi E,
zwanych inaczej łukami.
Graf skierowany nazywany jest DIGRAFEM
Dwa wierzchołki grafu nazywamy wierzchołkami sąsiednimi, jeśli istnieje łącząca je
krawędź. Mówimy wówczas, że wierzchołki te są incydentne z tą krawędzią, krawędź z tymi
wierzchołkami.
1
2
Podobnie dwie krawędzie grafu są sąsiednie, jeśli mają przynajmniej jeden wspólny
wierzchołek.
1
2
3
Stopień wejściowy
2
3
1
4
Stopień wyjściowy
2
3
1
4
2
3
1
5
4
2
3
1
5
4
2
3
1
5
4
2
1
3
5
Ścieżka to taka droga w
której wierzchołki są różne
1-2-3-4-5
4
Droga to ciąg krawędzi
wzajemnie incydentnych
1-2-3-4-5-1-4
Digraf symetryczny.
1
2
Digraf asymetryczny
1
2
2
1
3
5
4
Cykl to taka droga w której
wierzchołek „startowy” i
„końcowy” to ten sam
wierzchołek
1-2-3-4-5-1
2
1
3
5
4
Graf acykliczny
CYKL EULERA
R
2
3
1
5
4
1–2–3–1–4–5–1
CYKL HAMILTONA
R
2
3
1
5
4
1–3–2–4–5–1
Co można powiedzieć o tym grafie?
1
2
1) Jest acykliczny
2) Posiada dwa wierzchołki i jedną krawędź skierowaną,
wierzchołki są incydentne (sąsiadujące)
3) Wierzchołek 1 to źródło wierzchołek 2 to ujście
Każdy skończony graf acykliczny posiada co
najmniej jedno źródło i jedno ujście
Co można powiedzieć o tym grafie?
1
2
3
4
5
1) Jest acykliczny
2) Posiada pięć wierzchołków i pięć krawędzi skierowanych
3) Wierzchołki 3 i 5 to źródła wierzchołki 4 i 1 to ujścia
Co można powiedzieć o tym grafie?
1
1) Jest cykliczny, „eulerowski” i „hamiltonowski”
2) Posiada jeden wierzchołek i jedną krawędź skierowaną
3) Źródło jest jednocześnie ujściem
Graf z jedną krawędzią skierowaną na jeden i
ten sam wierzchołek nazywamy pętlą
Macierz sąsiedztw
1
4
5
2
3
6
1
1
3
1
2
3
2
4
6
6
1
1
1
1
4
5
5
1
1
1
1
3
1
4
1
4
6
1
3
2
3
5
2
1
3
6
1
1
3
4
2
3
2
4
6
6
3
3
6
1
4
5
5
1
1
2
3
Algorytm Dijkstry
http://optlabserver.sce.carleton.ca/POAnimations2007/Dijk
strasAlgo.html
Dla każdego wierzchołka v
ustawiamy d(v) ← ¥. Dla
wybranego wierzchołka vo
ustawiamy d(vo)← 0.
Ustawiamy również p(v) ←
0.
indeks
1
2
3
4
5
6
d(indeks)
0
¥
¥
¥
¥
¥
p(indeks)
0
0
0
0
0
0
W zbiorze Q szukamy
wierzchołka o najmniejszym
d. Jest to wierzchołek 1 (czyli
nasze vo). Wierzchołek ten
przenosimy do zbioru S.
Następnie sprawdzamy
wartość d wszystkich
sąsiadów przeniesionego
wierzchołka (2 i 4). Jeśli ich d
jest większe od kosztu d(1) +
waga krawędzi do
sprawdzanego wierzchołka,
to modyfikujemy
odpowiednio d i p dla tych
wierzchołków.
indeks
1
2
3
4
5
6
d(indeks)
0
3
¥
3
¥
¥
p(indeks)
0
1
0
1
0
0
W zbiorze Q szukamy
wierzchołka o najmniejszym
d. Są dwa takie wierzchołki:
2 i 4 o d=3. Wybieramy
arbitralnie wierzchołek nr 2 i
przenosimy go do zbioru S.
Wierzchołek 2 posiada tylko
jednego sąsiada - 3.
Modyfikujemy odpowiednio
d[3] i p[3].
indeks
1
2
3
4
5
6
d(indeks)
0
3
5
3
¥
¥
p(indeks)
0
1
2
1
0
0
W zbiorze Q szukamy
wierzchołka o najmniejszym
d. Teraz jest to wierzchołek 4
o d[4] = 3. Przenosimy go do
zbioru S. Wierzchołek 4
posiada tylko jednego
sąsiada - 5. Modyfikujemy
odpowiednio d[5] i p[5].
indeks
1
2
3
4
5
6
d(indeks)
0
3
5
3
4
¥
p(indeks)
0
1
2
1
4
0
W zbiorze Q szukamy
wierzchołka o najmniejszym
d. Jest to wierzchołek 5 o d[5]
= 4. Przenosimy go do zbioru
S. Wierzchołek 5 posiada
dwóch sąsiadów: 3 i 6.
Ponieważ d[3]=5 jest takie
samo jak d[5] + waga(5-3) =
4+1=5, nie modyfikujemy
parametrów d i p dla
wierzchołka 3. Do modyfikacji
jest tylko wierzchołek 6.
indeks
1
2
3
4
5
6
d(indeks)
0
3
5
3
4
6
p(indeks)
0
1
2
1
4
5
W zbiorze Q szukamy
wierzchołka o najmniejszym
d. Jest to wierzchołek 3 o
d[3] = 5. Przenosimy go do
zbioru S. Wierzchołek 3
posiada dwóch sąsiadów: 1 i
6. Ponieważ wierzchołek 1
jest już w zbiorze S, to nie
bierzemy go pod uwagę.
Drugi wierzchołek posiada
d[6]=6, czyli takie samo jak
d[3]+waga(3-6)=5+1=6. Nie
modyfikujemy zatem
wierzchołka 6.
indeks
1
2
3
4
5
6
d(indeks)
0
3
5
3
4
6
p(indeks)
0
1
2
1
4
5
Do zbioru S przenosimy
ostatni wierzchołek z Q.
Wierzchołek ten nie posiada
sąsiadów w Q połączonych z
nim krawędzią, dlatego nic
nie modyfikujemy. Ponieważ
zbiór Q stał się pusty,
algorytm kończymy.
indeks
1
2
3
4
5
6
d(indeks)
0
3
5
3
4
6
p(indeks)
0
1
2
1
4
5
Zastosowanie algorytmów grafów skierowanych
•Programy do nawigacji samochodowych
•W systemach kartograficznych
•W systemach hydrologicznych
•Analizowanie DNA
Graf de Bruijna Gn rzędu n
• 2n-1 wierzchołków – słowa
binarne (n-1)-literowe
• krawędzie:
a1a2…an-1 → a2…an-10 (etykieta:
0)
i a1a2…an-1→a2…an-11
(etykieta: 1)
• cykle Eulera w grafach de
Bruijna odpowiadają ciągom de
Bruijna!
Zastosowania grafu de Bruijna
•
•
•
•
W elektronice,
W sieciach komputerowych,
W biologii obliczeniowej,
W kryptografii
Algorytm Bellmana-Forda
Algorytm służy do rozwiązywania problemu najkrótszych
ścieżek z jednego źródła w ogólnym przypadku, gdzie wagi
mogą być ujemne (w(u,v) ). Algorytm zwraca wartość
FALSE, jeśli w grafie istnieje cykl o ujemnej wadze
osiągalny ze źródła. W przeciwnym wypadku oblicza
najkrótsze ścieżki i ich wagi.
Algorytm Bellmana-Forda
Algorytm znajduje najkrótsze ścieżki między wszystkimi
parami wierzchołków skierowanych w grafie skierowanym
G = (V,E). Zakłada się, że wagi mogą być ujemne, ale brak
jest cykli z wagami ujemnymi. Algorytm wylicza
rekurencyjnie macierz najkrótszych ścieżek .
Algorytm Floyda-Warshalla służy do znajdowania najkrótszych ścieżek
pomiędzy wszystkimi parami wierzchołków w grafie ważonym.
Pseudokod algorytmu Floyda-Warshalla
Kolorowanie grafu
Kolorowanie grafu to przyporządkowanie wierzchołkom
grafu liczb naturalnych w taki sposób, aby końce żadnej
krawędzi nie miały przypisanej tej samej liczby (koloru).
Optymalnym pokolorowaniem grafu nazywamy
pokolorowanie zawierające najmniejszą możliwą liczbę
kolorów. Liczbą chromatyczną grafu G nazywamy liczbę
χ(G) równą minimalnej liczbie kolorów wystarczającej do
prawidłowego pokolorowania wierzchołków grafu G.
Problem znalezienia optymalnego pokolorowania a także
znalezienia liczby chromatycznej jest NP zupełny.
Do kolorowania grafu służą następujące algorytmy:
•Algorytm zachłanny
•Algorytm DSATUR
•Algorytm MAXIS
Algorytm zachłanny - przechodząc kolejno wszystkie
wierzchołki grafu, kolorujemy każdy z nich najmniejszym
możliwym kolorem, tzn. takim, który dotychczas nie został
użyty dla żadnego z sąsiadów rozważanego wierzchołka.
Algorytm DSATUR działa podobnie jak algorytm zachłanny
ale kolejność rozpatrywania wierzchołków grafu
wyznaczana jest dynamicznie w zależności od liczby
kolorów, które mogą być użyte do pomalowania
poszczególnych wierzchołków. Najpierw kolorowane są
te wierzchołki, dla których jest najmniej możliwości.
Algorytm MAXIS opiera się na algorytmie znajdującym
największy zbiór niezależny wśród wierzchołków danego
grafu (żadne dwa wierzchołki takiego zbioru nie sąsiadują
ze sobą).
Kolorowanie grafów ma wiele odmian, m.in.:
•Kolorowanie krawędzi – jest to przyporządkowywanie
krawędziom liczb naturalnych symbolizujących kolory
•Listowe kolorowanie – kolorowanie wierzchołków, przy czym
każdy wierzchołek posiada odpowiadającą mu listę kolorów
•Całkowite kolorowanie – kolorowanie wierzchołków oraz
krawędzi
•Harmoniczne kolorowanie – kolorowanie wierzchołków, gdzie
każda para kolorów użyta jest co najwyżej raz w stosunku do
sąsiadującej pary wierzchołków
•Kompletne kolorowanie - kolorowanie wierzchołków, gdzie
każda para kolorów użyta jest co najmniej raz w stosunku do
sąsiadującej pary wierzchołków
•Dokładne kolorowanie - kolorowanie wierzchołków, gdzie
każda para kolorów użyta jest dokładnie raz w stosunku do
sąsiadującej pary wierzchołków