Algorytmika - wykªad 7
dr Anna Sasak-Oko«
Uniwersytet Marii Curie-Skªodowskiej w Lublinie
25.11.2019
Denicja
Graf(nieskierowany) G = (V , E) jest to para skªadaj¡ca si¦ ze sko«czonego zbioru wierzchoªków V oraz ze zbioru kraw¦dzi E, gdzie kraw¦dzie to pary wierzchoªków E ⊆ {{u, v}|u, v ∈ V , u 6= v}.
Dla danej kraw¦dzi e = {u, v} ∈ E mówimy, »e wierzchoªki u i v s¡
incydentne z kraw¦dzi¡ e. Wierzchoªki incydentne z dan¡ kraw¦dzi¡
nazywamy s¡siednimi.
Denicja
Stopie« wierzchoªka v, oznaczamy przez d(v) i jest to liczba kraw¦dzi wychodz¡cych z v.
Lemat o u±ciskach dªoni, Euler 1736
W dowolnym grae G = (V , E) z m = |E| kraw¦dziami mamy:
1.Σv ∈Vd (v ) =2m
2.Liczba wierzchoªków o nieparzystych stopniach jest parzysta Denicja
Graf H = (VH, EH) nazywamy podgrafem grafu G = (VG, EG) je»eli VH ⊆ VG oraz EH ⊆ EG
Denicja
Graf peªny o n wierzchoªkach, oznaczany przez Kn jest to graf z n wierzchoªkami, w którym ka»de dwa wierzchoªki poª¡czone s¡
kraw¦dzi¡.
Denicja
Graf nazywamy regularnym lub d-regularnym, je»eli wszystkie jego wierzchoªki maja ten sam stopie« d.
Denicja
Grafem kubicznym nazywany jest graf 3-regularny.
Dwa grafy regularne o tej samej liczbie wierzchoªków i tym samym stopniu wierzchoªków nie musz¡ by¢ izomorczne.
Graf peªny Kn jest grafem regularnym stopnia n-1.
Ciekawym przykªadem grafu regularnego, jest graf Petersena.
jest silnie regularny stopnia 3
jest trójspójny i trójspójny kraw¦dziowo(usuni¦cie mniej ni» 3 dowolnych wierzchoªków/kraw¦dzi nie powoduje jego
rozspójnienia)
ma ±cie»k¦ Hamiltona ale nie ma cyklu Hamiltona jest trójdzielny i symetryczny
nie jest grafem planarnym
Denicja
Graf G=(V,E) jest dwudzielny, je»eli zbiór jego wierzchoªków mo»na rozbi¢ na dwie cz¦±ci, V = V1∪ V2, V1∩ V2=60, tak »e ka»da kraw¦d¹ e ∈ E ma ko«ce w obu zbiorach, V1 i V2
Peªny graf dwudzielny Km,n ma zbiór wierzchoªków rozbity na dwa podzbiory: V1= {v1, .., vm}i V2= {w1, ..., wn}, a kraw¦dzie ª¡cz¡
ka»dy wierzchoªek z V1 z ka»dym wierzchoªkiem z V2, czyli E = {{vi, ej}|1 6 i 6 m, 1 6 j 6 n}.
Denicja
Izomorzmem grafu G = (V − G, EG) na graf H = (VH, EH) nazywamy funkcj¦ wzajemnie jednoznaczn¡ h : VG → VH, speªniaj¡c¡ warunek:
{u, v } ∈ EG wwtedy, gdy {h(u), h(v)} ∈ EH
Grafy Reprezentacja grafów Algorytmy
przykªad
grafy kubiczne
czy te grafy s¡ izomorczne?
przykªad
grafy kubiczne
czy te grafy s¡ izomorczne?
i 1 2 3 4 5 6 7 8
f(i) a b c d e f g h
Twierdzenie
Je»eli grafy G = (VG, EG) i H = (VH, EH) s¡ izomorczne, to:
1. G i H maj¡ tyle samo wierzchoªków, |VG| = |VH|, 2. G i H maja tyle samo kraw¦dzi, |EG| = |EH|,
3. G i H maj¡ tyle samo wierzchoªków stopnia k, dla ka»dego k Denicja
Graf planarny to graf który mo»na narysowa¢ na pªaszczy¹nie bez przeci¦¢ kraw¦dzi. Odwzorowanie grafu planarnego na pªaszczyzn¦
z zachowaniem tej wªasno±ci nazywa si¦ jego rysunkiem pªaskim.
przykªad
Graf K4 i jego trzy przedstawienia na pªaszczy¹nie: jedno niepªaskie i dwa pªaskie:
Kryterium Kuratowskiego
Dwa minimalne grafy, które nie s¡ planarne to K5 i K3,3.
Twierdzenie Kuratowskiego 1930
Graf sko«czony jest planarny wwtedy, gdy nie zawiera podgrafu homeomorcznego z grafem K5 ani z grafem K3,3
(*) Dwa grafy s¡ homeomorczne je»eli mo»na je otrzyma¢ z pewnego grafu poprzez sko«czon¡ sekwencj¦ operacji
elementarnego podziaªu i.e. sciagni¦cia i usuni¦cia kraw¦dzi.
Denicja
Droga lub ±cie»ka w grae jest to ci¡g wierzchoªków v0, v1, ..., vk, taki »e dla ka»dego i, 1 6 i 6 k, wierzchoªki vi −1, vi s¡ poª¡czone kraw¦dzi¡, czyli {Vi −1, vi} ∈ EG
O drodze v0, v1, ...vk mówimy, »e ª¡czy wierzchoªki v0 i vk. Mówimy tak»e »e wierzchoªek vk jest osi¡galny z wierzchoªka v1. Droga jest zamkni¦ta, je»eli v0 = vk.
Droga jest prosta, je»eli wszystkie wyst¦puj¡ce w niej wierzchoªki s¡
ró»ne.
Drog¦ v0, v1, ..., vk nazywamy cyklem, je»eli v0 = vk, k > 3 oraz wszystkie wierzchoªki v1, v2, ..., vk s¡ ró»ne.
W przypadku ±cie»ek w grae skierowanym wymagamy, aby wszystkie kraw¦dzie byªy skierowane w odpowiedni¡ stron¦.
Dªugo±ci¡ ±cie»ki nazywamy liczb¦ wierzchoªków wchodz¡cych w skªad scie»ki minus 1.
Czesto rozwa»a si¦ grafy, w których kraw¦dzie maj¡ okre±lone ró»ne dªugo±ci, wówczas dªugo±ci¡ ±ciezki nazywamy sum¦ dªugo±ci wchodz¡cych w jej skªad kraw¦dzi
Denicja
Graf G jest spójny, je»eli dla ka»dych dwóch wierzchoªków u, v ∈ VG istnieje ±cie»ka ª¡cz¡ca u i v. Skªadowa spójno±ci to maksymalny spójny podgraf grafu.
Lemat
W dowolnym grae G:
1. Je»eli istnieje droga ª¡cz¡ca wierzchoªki u i v, u 6= v, to istnieje te» droga prosta ª¡cz¡ca u i v
2. Je»eli istniej¡ dwa wierzchoªki u i v u 6= v, które mo»na poª¡czy¢
dwoma ró»nymi drogami prostymi, to istnieje te» cykl.
3. Graf jest acykliczny (nie ma cykli) wwtedy, gdy ka»de dwa jego wierzchoªki mo»na poª¡czy¢ co najwy»ej jedn¡ drog¡ prost¡.
Denicja
Spójny i acykliczny graf to drzewo.
Lemat
Graf jest drzewem wwtedy, gdy ka»de dwa jego wierzchoªki mo»na poª¡czy¢ dokªadnie jedn¡ prost¡ drog¡
Twierdzenie
Nast¦puj¡ce trzy warunki s¡ równowa»ne:
1. graf G jest drzewem
2. G jest acykliczny, ale dodanie dowolnej kraw¦dzi psuje acykliczno±¢; dodana kraw¦d¹ wraz z innymi kraw¦dziami grafu tworzy cykl.
3. G jest spójny, ale usuni¦cie dowolnej kraw¦dzi {u, v} psuje spójno±¢; tzn. bez kraw¦dzi {u, v} nie ma drogi ª¡cz¡cej u i v.
Lemat
W drzewie z n wierzchoªkami mamy n-1 krawedzi
Reprezentacje grafów
Wybór struktury do reprezentacji danych mo»e znacz¡co wpªywa¢
na czas oblicze« i zu»ycie pami¦ci. Grafy nie s¡ (na ogóª) strukturami hierarchicznymi (jak drzewa), co wi¦cej mog¡ istniec grupy w¦zªów nie poª¡czone z innymi. Dlatego te» reprezentacja grafu powinna zapewnia¢ dost¦p do wszystkch wierzchoªków bez wzgl¦du na ich wzajemne poª¡czenia kraw¦dziami - takie cechy posiadaj¡ tablice i macierze.
Mo»liwe sposoby reprezentacji grafów:
macierz s¡siedztwa macierz incydencji lista s¡siedztwa p¦ki wyj±ciowe
Macierz s¡siedztwa
Graf G=(V,E) przedstawiamy jako dwuwymiarow¡ tablic¦ A o wymiarach |V|x|V| gdzie element A[i][j]6=0 wwtedy gdy istnieje kraw¦d¹ od wierzchoªka vi do wierzchoªka vj
W grafach nieskierowanych A[i][j]=A[j][i]. (A symetryczna wzgl¦dem gªównej przek¡tnej)
Wymagania pami¦ciowe: O(|V |2) Dodanie nowej kraw¦dzi: czas staªy
Sprawdzenie czy dana kraw¦d¹ istnieje: czas staªy Sprawdzenie stopnia danego wierzchoªka: O(|V|) Usuni¦cie kraw¦dzi: czas staªy
przykªad 1
przykªad 2
Macierz incydencji
Graf G=(V,E) przedstawiamy jako macierz A o wymiarze n x m, gdzie n=|V|, m=|E|. Ka»dy wiersz tej macierzy odwzorowuje jeden wierzchoªek grafu. Ka»da kolumna odwzorowuje jedn¡ kraw¦d¹.
Zawarto±¢ komórki A[i,j] okre±la powi¡zanie (incydencj¦) wierzchoªka vi z kraw¦dzi¡ ej w sposób nast¦puj¡cy:
A[i ][j ] =
0 gdy vi 6∈ ej 1 gdy vi ∈ ej dla grafu skierowanego:
A[i ][j ] =
0 gdy vi 6∈ ej
1 gdy vi jest pocz¡tkiem ej
−1 gdy vi jest ko«cem ej
przykªad 1
przykªad 2
Lista S¡siedztwa
Graf G=(V,E) przedstawiamy jako tablic¦ n elementow¡ (n=|V|) list tab tak¡, »e tab[vi] zawiera s¡siadów wierzchoªka vi
Wymagania pami¦ciowe: O(|E|) Dodanie nowej kraw¦dzi: czas staªy
Sprawdzenie czy dana kraw¦d¹ istnieje: O(|E|) Sprawdzenie stopnia danego wierzchoªka: O(|E|) Usuni¦cie kraw¦dzi: O(|E|)
przykªad 1
przykªad 2
P¦ki wyj±ciowe
Je»eli w trakcie dziaªania algorytmu teoriografowego graf nie ulega zmianie, to mo»na zrezygnowa¢ ze wska¹ników i zapami¦ta¢
wszystkie kraw¦dzie po kolei w jednym wektorze.
Uporz¡dkowany zbiór wszystkich s¡siadów wierzchoªka i nosi nazw¦
peków wyj±ciowych tego wierzchoªka.
Dla ka»dego i=2,...,n s¡siedzi wierzchoªka i s¡ umieszczeni bezpo±rednio za wierzchoªkami-s¡siadami wierzchoªka i-1.
Taka struktura wykorzystuje wi¦c dwie tablice:
pierwsza (Pntr) dªugo±ci |V|+1, której numery indeksu odpowiadaj¡
kolejnym wierzchoªkom grafu, a warto±ci pod indeksem i-tym i i+1 wskazuj¡ odpowiednio na pocz¡tek i koniec fragmentu drugiej tablicy (EndVertex) z jego s¡siadami,
druga tablica (EndVertex) w którym s¡ wymienieni kolejno s¡siedzi kolejnych wierzchoªków z tablicy Pntr
Dzi¦ki temu mo»na wyliczy¢ stopie« wierzchoªka w czasie staªym odejmuj¡c po prostu warto±ci w tablicy pod indeksem i oraz i+1 (deg(vi) = Pntr[i]-Pntr[i+1]).
Dla grafu nieskierowanego p¦ki wyj±ciowe wymagaj¡ (|V|+1) + 2|E| komórek pami¦ci (wierzchoªki + wartownik + podwójnie zapisane kraw¦dzie ).
Przypadek grafów skierowanych zmniejsza ilo±¢ zajmowanego miejsca |V|+1 + |E|, gdy» kraw¦dzie nie s¡ powielane.
Wymagania pami¦ciowe: O(|V|+|E|) Dodanie nowej kraw¦dzi: O(|V|+|E|)
Sprawdzenie czy dana kraw¦d¹ istnieje: O(log|V|) Sprawdzenie stopnia danego wierzchoªka: O(1) Usuni¦cie kraw¦dzi: O(|V|+|E|)
przykªad 1
przykªad 2
Uwagi
Macierz s¡siedztwa pozwala szybciej stwierdzi¢ czy konkrentne dwa wierzchoªki s¡ poª¡czone
Kiedy chcemy przejrze¢ wszystkich s¡siadów jakiego±
wierzchoªka, to lepiej sprawdzaj¡ si¦ listy s¡siedztwa ( w przypadku macierzy s¡siedztwa niezale»nie od liczby s¡siadów musimy przejrze¢ caª¡ kolumn¦ co mo»e wpªyn¡¢ na zªo»ono±¢
algorytmu)
Dla grafów rzadkich listy s¡siedztwa zajmuj¡ mniej miejsca, a tak»e w prosty sposób pozwalaj¡ reprezentowac p¦tle oraz kraw¦dzie wielokrotne.
w praktyce cz¦sto lista s¡siedztwa okazuje sie najefektywniejsz¡ reprezentacj¡ grafu
Przeszukiwanie w gª¡b - DFS - O(n)
WE: graf G=(V,E) oraz wierzchoªek pocz¡tkowy v ∈ V odªó» wierzchoªek v na stos i oznacz jako odwiedzony dopóki stos nie jest pusty powtarzaj:
dla wierzchoªka v b¦d¡cego na wierzchoªku stosu, sprawd¹ czy istnieje wierzchoªek u incydentny do niego, który nie byª odwiedzony
je»eli takie u istnieje, to odªó» go na stos i oznacz jako odwiedzony
w przeciwnym przypadku, zdejmij v ze stosu
W metodzie przeszukiwania w gª¡b po ka»dym kroku algorytmu wierzchoªki znajduj¡ce si¦ na stosie tworz¡ drog¦ od wierzchoªka wej±ciowego do wierzchoªka aktualnie odwiedzanego.
Wierzchoªek stos
a a
b ab
c abc
d abcd
c abc
g abcg
f abcgf
g abcg
c abc
b ab
e abe
b ab
a a
Przeszukiwanie wszerz - BSF
WE: G=(V,E) oraz wierzchoªek pocz¡tkowy v ∈ V
umie±¢ wierzchoªek v w kolejce i oznacz jako odwiedzony dopóki kolejka nie jest pusta powtarzaj:
we¹ wierzchoªek v z pocz¡tku kolejki
wszystkie wierzchoªki które s¡ nieodwiedzone i poª¡czone z v, umie±¢ na ko«cu kolejki i oznacz jako odwiedzone
W metodzie przeszukiwania wszerz wierzchoªki s¡ przeszukiwane w kolejno±ci od wierzchoªków b¦d¡cych najbli»ej wierzchoªka
pocz¡tkowego do wierzchoªków b¦d¡cych dalej.
Wierzchoªek kolejka
a a
b,c,d,e bcde
f cdef
g defg
efg fgg
Liczenie skªadowych spójnych
Algorytmów przeszukiwania grafów mozna u»y¢ np. do liczenia skªadowych spójnych.
WE:G=(V,E) lsp=0
dopóki s¡ nieodwiedzone wierzchoªki powtarzaj:
we¹ jeden nieodwiedzony jeszcze wierzchoªek v lsp+=1
przeszukaj wybranym algorytmem wszystkie wierzchoªki osi¡galne z v i zaznacz je jako odwiedzone
Denicja
Drzewo spinaj¡ce (rozpinaj¡ce) grafu G = (V , E) to dowolne drzewo T = (V , ET), speªniaj¡ce warunek ET ⊆ E (zauwa»my »e T ma taki sam zbiór wierzchoªków co G).
Twierdzenie
Ka»dy graf spójny zawiera jako podgraf drzewo spinaj¡ce.
Algorytm konstruowania drzewa spinaj¡cego przy przeszukiwaniu grafu w gª¡b
WE: G=(V,E) oraz wierzchoªek pocz¡tkowy v0 ∈ V WY: drzewo spinaj¡ce T = (V , ET)
ET =60
wierzchoªek v0 oznacz jako odwiedzony i odªó» na stos dopóki stos nie jest pusty powtarzaj:
niech v b¦dzie wierzchoªkiem na wierzchu stosu
sprawd¹ czy istnieje nieodwiedzony wierzchoªek u, który jest poª¡czony z v
je»eli takie u istnieje:
odªó» u na stos i oznacz jako odwiedzony kraw¦d¹ {v, u} dodaj do drzewa spinaj¡cego w przeciwnym wypadku zdejmij v ze stosu
Problem najkrótszej scie»ki w grae
Problem najkrótszej ±cie»ki to problem, w którym na wej±ciu otrzymujemy graf G i dwa jego wierzchoªki, a pytamy o najkrótsz¡
±cie»k¦ w grae G pomiedzy podanymi wierzchoªkami.
W grae bez wag G=(V,E), w którym szukamy najkrótszych
±cie»ek z vierzchoªka v do pozostaªych wierzchoªków, optymalny jest algorytm wykorzystuj¡cy przeszukiwanie wszerz (BSF)
Algorytm z BSF
k - kolejka z odwiedzonymi wierzchoªkami
Tab - tablica odlegªo±ci poszczególnych wierzchoªków od v, pocz¡tkowo ∞
Tab[v]=0
wstaw v na koniec kolejki
dopóki kolejka nie jest pusta powtarzaj:
we¹ z kolejki wierzchoªek w
dla kazdego q nieodwiedzonego s¡siada w wykonaj:
je»eli Tab[q]=∞ :
przypisz Tab[q]=Tab[w]+1;
dodaj q na koniec kolejki i oznacz jako odwiedzony
Wierzchoªek kolejka a
Tab:
a b c d e f g
0 ∞ ∞ ∞ ∞ ∞ ∞
Wierzchoªek kolejka
a bcdea
Tab:
a b c d e f g
0 1 1 1 1 ∞ ∞
Wierzchoªek kolejka
a bcdea
b cde f
Tab:
a b c d e f g
0 1 1 1 1 2 ∞
Wierzchoªek kolejka
a bcdea
b cde f
c def g
Tab:
a b c d e f g 0 1 1 1 1 2 2
Wierzchoªek kolejka
a bcdea
b cde f
c def g
d efg
e fg
f g
g Tab:
a b c d e f g 0 1 1 1 1 2 2
uwagi
przedstawiony algorytm znajduje tylko dªugo±¢ najkrótszej
±cie»ki a nie sam¡ ±cie»k¦
jezeli interesuje nas ±cie»ka, to nale»y u»y¢ dodatkowej tablicy, przechowujacej pod indeksem w indeks przedostatniego wierzchoªka na najkrótszej sciezce ze zródªa do w.
Warto±ci dodatkowej tablicy aktualizujemy za kazdym razem gdy aktualizujemy tablice d.
Zªo»ono±¢ czasowa przedstawionego algorytmu dla grafu G = (V, E) to: O(|E| + |V|).
Algorytm Dijkstry
Opracowany przez holenderskiego informatyka Edsgera Dijkstr¦, sªu»y do znajdowania najkrótszej ±cie»ki z
pojedynczego ¹ródªa w grae o nieujemnych wagach kraw¦dzi.
Podobny do alg. BSF, ró»ni si¦ strategi¡ wyboru nast¦pnego wierzchoªka do odwiedzenia strategia zachªanna.
W ka»dej iteracji wybierany jest ten spo±ród nieodwiedzonych wierzchoªków, do którego mo»na dotrze¢ najmniejszym kosztem.
Po wyznaczeniu ±cie»ki do konkretnego wierzchoªka nie zostanie ona zmodykowana w trakcie wykonywania dalszej cz¦±ci algorytmu.
Zªo»óno±¢ dla implementacji tablicowej O(|V |2) optymalna dla grafów g¦stych, dla implementacji kolejki przez kopiec O(Elog|V|) korzystniejsza dla grafów rzadkich.
Utwórz dwa zbiory wierzchoªków Q i S: Q=V, S =6 0.
Dla wszystkich wierzchoªków grafu vi za wyj¡tkiem startowego v0 ustaw koszt doj±cia d(vi) = ∞, d(v0) =0.
Ustaw poprzedniki p(vi) ka»dego wierzchoªka grafu na niezdeniowany Poprzedniki b¦d¡ wyznaczaªy w kierunku odwrotnym najkrótsze ±cie»ki od wierzchoªków vi do wierzchoªka startowego v0.
Dopóki zbiór Q zawiera wierzchoªki, wykonuj:
Wybierz ze zbioru Q wierzchoªek v o najmniejszym koszcie doj±cia d(v).
Wybrany wierzchoªek v usu« z Q i dodaj do S.
Dla ka»dego s¡siada w wierzchoªka v ∈ Q : sprawd¹, czy d(w) > d(v) + waga kraw¦dzi vw.
Je±li tak, to nowy koszt doj±cia do wierzchoªka w:
d(w) = d(v) + waga kraw¦dzi uw.
Co nale»y wiedzie¢?
Zna¢ podstawowe poj¦cia zwi¡zane z budow¡ grafu - incydencja, graf peªny, regularny, kubiczny, graf Petersena, izomorzm, graf planarny, kryterium Kuratowskiego, droga,
±cie»ka, graf spójny, skªadowa spójno±ci, drzewo
metody reprezentacji grafów w pami¦ci - macierz s¡siedztwa, macierz incydencji, lista s¡siedztwa, p¦ki wyj±ciowe
algorytmy przeszukiwanie w gª¡b i w szerz, liczenie skªadowych spójnych, konstruowanie drzewa spinaj¡cego, wyszukiwanie najkrótszej ±cie»ki w grae (BSF i Dijsktra)