Poj cie grafu
Def. Graf prosty G=(V,E) jest uporz dkowan par dwóch elementów:
zbioru wierzchołków V oraz zbioru kraw dzi E⊂V×V. Kraw d pomi dzy wierzchołkami u oraz v oznaczamy {u,v}. Graf prosty nie zawiera kraw dzi postaci {u,u} oraz pomi dzy ka d par wierzchołków istnieje co najwy ej jedna kraw d .
Def. Wierzchołki u i v s s siednie, gdy {u,v}∈E(G). Wierzchołek u oraz kraw d e s incydentne, gdy u ∈ e.
Przykład:
G = ( { v1, v2, v3, v4}, v1
v2
v4
v3 { {v1, v2}, {v2, v3}, {v3, v4}, {v4, v1},{v2, v4} } ) Uwaga. Rysunek grafu jest reprezentacj zbioru wierzchołków oraz
sposobu ich poł czenia, wi c jego własno ci metryczne nie s istotne.
Multigrafy oraz grafy skierowane
Def. Graf nazywamy digrafem (grafem skierowanym), gdy kraw d ł cz ca u oraz v jest uporz dkowan par postaci (u,v).
Def. Multigraf to graf, w którym pomi dzy dowoln par wierzchołków mo e wyst pi wi cej ni jedna kraw d oraz dopuszczalne s p tle, tzn.
kraw dzie postaci {v,v}, gdzie v∈V(G).
Przykład:
G = ( {u, v, w, x},
{{u,v}, {w,v}, {w,w}, {w,x}, {w,x}, {w,x}, {x,v}, {x,v}} )
u v
w x
D = ( {u, v, w, x},
{(u,v), (w,v), (v,x), (x,w)} )
u v
w x
Stopie wierzchołka
Def. Stopie wierzchołka v jest oznaczany symbolem deg(v) i jest to ilo wierzchołków s siednich z v. Dla danego grafu G
definiujemy parametry:
δ = min { deg(v) : v ∈V(G) }
∆ = max { deg(v) : v ∈V(G) }
Lemat o u ciskach dłoni. Niech G b dzie grafem prostym. Wówczas deg(v1) + ... + deg(vn) = 2m.
Dowód: (indukcja ze wzgl du na liczb kraw dzi grafu) 1. Je li m = 0, to równo jest prawdziwa.
2. Zakładamy, e lemat zachodzi dla pewnego m ≥ 0.
3. Udowodnimy równanie dla m + 1. Niech e∈E(G) b dzie dowoln kraw dzi . Z zało enia indukcyjnego wiadomo, e
deg(v1) + ... + deg(vn) = 2m(G – e),
gdzie deg(vi) jest stopniem vi w grafie G – e. Dla grafu G suma stopni wierzchołków jest o 2 wi ksza ni dla G – e oraz m(G) = m(G – e) + 1, co oznacza, e równanie zachodzi dla grafu G o m + 1 kraw dziach.
Twierdzenie Havla
Def. Ci g stopniowy jest graficzny, gdy jest on ci giem stopni pewnego grafu.
Tw. Havla Ci g stopniowy (k,d1,...,dl) jest graficzny wtedy i tylko wtedy, gdy po posortowaniu ci g (d1 – 1,d2 – 1,..., dk – 1,dk+1,dk+2,...,dl) jest graficzny.
Tw. Ilo wierzchołków nieparzystego stopnia w grafie prostym jest parzysta.
Dowód: Z lematu o u ciskach dłoni wiadomo, e
deg(v1) + ... + deg(vk) + deg(u1) + ... + deg(ul) = 2m,
gdzie vi jest wierzchołkiem o nieparzystym stopni, natomiast ui – parzystym.
Wiadomo, e suma liczb parzystych deg(u1) + ... + deg(ul) jest liczb parzyst , wi c suma deg(v1) + ... + deg(vk) ma równie parzyst warto , co jest
spełnione tylko wtedy, gdy ilo składników jest parzysta (k jest parzyste).
Def. Ci giem stopniowym grafu nazywamy uporz dkowany nierosn co ci g stopni jego wierzchołków.
Ci gi graficzne
Algorytm sprawdzaj cy, czy ci g stopni jest graficzny:
1. Je li d1 = ... = dl = 0, to ci g jest graficzny 2. Je li d1 < 0, to ci g nie jest graficzny
3. Uporz dkuj ci g nierosn co wg stopni
4. Usu z ci gu pierwsz (najwi ksz ) liczb d1 i odejmij 1 od kolejnych d1 liczb ci gu
5. Wró do punktu 1
Przykład: Sprawdzi , czy podany ci g jest graficzny:
( 4, 3, 3, 2, 2 ) ( 2, 2, 1, 1 )
( 0, 0 )
Odpowied : podany ci g stopniowy jest graficzny.
( 1, 0, 1 ) ( 1, 1, 0 )
Ci gi graficzne
Przykład
• Ci g (6,5,4,4,3,3,2) nie jest graficzny, poniewa suma stopni
odpowiedniego grafu wynosiłaby 27, co nie jest mo liwe na podstawie lematu o u ciskach dłoni.
• Ci g stopni (3,3,2,2,2) jest graficzny, poniewa jest on ci giem grafów prostych G1 i G2 pokazanych poni ej.
G1 = G2 =
Przykłady grafów
• Graf pusty Nn=({v1,...,vn},∅).
• Graf pełny Kn=({v1,...,vn},{{vi,vj}: i,j=1,...,n, i≠j}).
• Graf r-regularny jest grafem, dla którego zachodzi równo r = δ = ∆ (tzn. stopie ka dego
wierzchołka jest równy r). Wówczas m=(r·n)/2.
Graf 3-regularny nazywamy grafem kubicznym.
Zdefiniowany wcze niej graf pełny o n wierzchołkach jest (n – 1)-regularny.
Graf K4
Graf kubiczny (graf Petersena)
Operacje sumy i zespolenia
Def. (suma grafów)
G1 ∪ G2 = ( V(G1)∪V(G2), E(G1)∪E(G2) ) Def. (zespolenie grafów)
G1 + G2 = ( V(G1)∪V(G2),
E(G1)∪E(G2)∪{{v1,v2}:v1∈V(G1),v2 ∈V(G2)})
Przykład Zespolenie grafów K2 i N3
+ =
Tw. Je li G = G1+G2, to
n(G) = n(G1) + n(G2),
m(G) = m(G1) + m(G2) + n(G1) · n(G2).
Dopełnienie grafu
Def. Je li G jest grafem prostym, to jego dopełnieniem jest graf , o tym samym zbiorze wierzchołków oraz dwa wierzchołki s
s siednie w G’ wtedy i tylko wtedy, gdy nie s s siednie w G.
G
Uwaga Przykładowe zale no ci:
, , ,
,
1 ,
−
= −
∪
=
=
=
r n r
s s r
r
n n
G G
K K
K
N K
G G
gdzie Gr oznacza dowolny graf r–regularny.
G =
= G
Graf kraw dziowy
Def. Graf kraw dziowy L(G) grafu G to graf, którego wierzchołki
odpowiadaj kraw dziom G. Dwa wierzchołki s s siednie w L(G) wtedy i tylko wtedy, gdy odpowiadaj ce im kraw dzie s s siednie w G.
Uwaga Je li G jest grafem r-regularnym, to L(G) jest 2(r–1)-regularny.
Przykład
G = L(G) =
Poj cie podgrafu
Def. Podgrafem grafu G nazywamy dowolny graf H taki, e V(H) ⊂ V(G) oraz E(H) ⊂ E(G).
Uwaga Podgraf mo na otrzyma usuwaj c pewn liczb kraw dzi i (lub) wierzchołków z grafu G. Je li e ∈E(G), to przez G – e
rozumiemy podgraf powstały przez usuni cie kraw dzi e z grafu G.
Je li F ⊂ E(G) to G – F jest grafem utworzonym z G w wyniku usuni cia kraw dzi nale cych do zbioru F. Analogicznie, je li v, S s odpowiednio wierzchołkiem oraz zbiorem wierzchołków grafu G, to G – v oraz G – S definiujemy jako grafy powstałe poprzez
usuni cie odpowiednio v lub S z grafu G.
Def. Podgraf pełny dowolnego grafu G nazywamy klik . Rozmiar najwi kszej kliki oznaczamy przez ω(G).
Podgraf indukowany
Przykład (podgraf indukowany)
v1
v2
v3 v4
v5 v6
G =
v1
v3 v4
v6
G[{v
1, v
3, v
4, v
6}] =
Def. Podgraf indukowany G[S] grafu G, gdzie S ⊂ V(G), definiujemy nast puj co:
G[S] = ( S, {{u,v} : u,v∈S, {u,v}∈E(G)} ).
Podgraf G, który nie jest podgrafem
indukowanym:
v1
v6 v2
v3 v4
Drogi i cykle
Def.• Marszruta to taki ci g kraw dzi grafu G, e dwie kolejne kraw dzie tego ci gu s s siednie w G lub s identyczne.
• Ła cuch jest marszrut , w której adna kraw d nie wyst puje dwukrotnie.
• Droga to marszruta w której ka dy wierzchołek wyst puje co najwy ej raz.
• Cykl to droga, której wierzchołek pocz tkowy jest równy ko cowemu.
Przykład
G =
v1
v2
v3 v4
v5
v6 marszruta: v1, v6, v3, v6, v4, v5 ła cuch: v6, v1, v2, v3, v6, v4 droga: v1, v2, v3, v6, v4, v5
cykl: v1, v2, v3, v6, v1
Drogi i cykle
Tw. Je li δ = 2, to graf G zawiera cykl.
Dowód:
(a) Mamy m ≥ n, gdy z lematu o u ciskach dłoni wiadomo, e 2m = deg(v1) + ... + deg(vn) ≥ nδ = 2n.
(b) Udowodnimy indukcyjnie wzgl dem n, e je li m ≥ n, to G zawiera cykl.
- Je li n = 2, to G zawiera cykl.
- Zakładamy, e twierdzenie zachodzi dla wszystkich grafów, których rz d nie przekracza n.
- Rozwa my n + 1 wierzchołkowy graf G oraz niech e = {u,v} b dzie jego dowoln kraw dzi . Je li G – e jest spójny, to istnieje cie ka z u do v w G – e wi c ta cie ka w poł czeniu z e tworzy cykl w G. Je li G – e nie jest spójny to oznaczmy G – e = G1 ∪ G2. Gdyby zachodziło m(G1) ≤ n(G1) – 1 oraz m(G2) ≤ n(G2) – 1, to
m(G) = m(G1) + m(G2) + 1 ≤ n(G1) + n(G2) – 1 = n(G) – 1,
co daje sprzeczno z zało eniem. St d mo na przyj , e m(G1) ≥ n(G1) i z zało enia indukcyjnego G1 (wi c równie G) zawiera cykl.
(c) Z (a) oraz (b) wynika teza.
Grafy dwudzielne
• Graf dwudzielny G = (V1∪V2, E), gdzie G[V1] oraz G[V2] s grafami pustymi (istnieje podział V na podzbiory V1 i V2 takie, e ka da kraw d grafu ł czy wierzchołki z ró nych zbiorów Vi). Szczególnym przypadkiem s pełne grafy dwudzielne Ka,b= Na + Nb. W takim przypadku zachodz
wzory.
m(Ka,b) = a · b, n(Ka,b) = a + b.
K
2,3=
Graf dwudzielny (2-regularny)
V
1V
2Grafy dwudzielne
Tw. Graf G jest dwudzielny wtedy i tylko wtedy, gdy ka dy cykl w G ma parzyst długo .
Dowód:
Załó my, e G=(V1 ∪V2,E) jest dwudzielny oraz v1,...,vk jest
dowolnym jego cyklem. Bez straty ogólno ci mo na zało y , e v1∈V1. St d, e v1 i v2 s s siednie wynika, e v2∈V2. Ogólnie, v2p∈V2 oraz
v2p+1∈V1, co oznacza, e wierzchołek vk∈V2 poniewa jest s siedni z v1. Załó my, e ka dy cykl w G ma parzyst długo . Definiujemy
podział V nast puj co: Av = {w∈V : d(v,w) jest parzyste}, Bv = V\Av, gdzie d(v,w) jest długo ci najkrótszej cie ki ł cz cej v z w. Wierzchołki w Av s parami nies siednie, gdy sytuacja x, y ∈Av oraz {x,y} ∈E oznacza, e w G wyst puje nieparzysty cykl o długo ci d(v,x) + d(v,y) + 1,
sprzeczno . Podobnie mo na uzasadni e kraw d pomi dzy elementami Bv implikuje istnienie nieparzystego cyklu w G.
Przykłady grafów
• Cykl Cn = ( {v1,...,vn} , {{v1,v2},...,{vn-1,vn}, {vn,v1}} )
C3 = C4 = C5 =
• Koło Wn= ( {v1,...,vn} , {{v1,v2},...,{vn-1,vn}, {vn,v1}} ) Wn = Cn – 1 + N1
W4 = W5 = W6 =
Hiperkostki
• hiperkostka Qnjest grafem, którego wierzchołki odpowiadaj
wszystkim ci gom zero-jedynkowym długo ci n. Dwa wierzchołki s s siednie, o ile odpowiadaj ce im ci gi ró ni si na jednej pozycji.
0
1
Q
100 10
01 11
Q
2100 110
000 010
101 111
001 011
Q
3Spójno kraw dziowa
Def. Graf jest spójny, gdy pomi dzy ka d par wierzchołków istnieje droga. Zbiór rozspajaj cy grafu to zbiór kraw dzi, których usuni cie rozspaja graf. Rozci cie to zbiór rozspajaj cy, którego aden
wła ciwy podzbiór nie rozspaja grafu. Spójno kraw dziowa jest moc najmniejszego rozci cia (oznaczenie: λ(G)). Składowa
spójno ci grafu G jest podgrafem H takim, e G = H ∪ G’, dla
pewnego G’. Kraw d e nazywamy mostem, gdy {e} jest rozci ciem.
Zbiór rozspajaj cy Rozci cie
Most
Składowe spójno ci grafu G – e e
Przykład
Spójno wierzchołkowa
Def. Zbiór separuj cy grafu to zbiór wierzchołków, których usuni cie rozspaja graf. Separator to zbiór separuj cy, którego aden wła ciwy podzbiór nie rozspaja grafu. Spójno wierzchołkowa jest moc
najmniejszego separatora (oznaczenie: χ(G)). Wierzchołek v nazywamy przegubem, gdy {v} jest separatorem.
Przykład
v
Zbiór separuj cy Separator
Przegub
Składowe spójno ci grafu G – v
Spójno grafu
Tw. Je li graf G posiada k składowych spójno ci, to n – k ≤ m.
Dowód: Dowodzimy twierdzenie indukcyjnie wzgl dem k.
1) Niech k = 1. Graf ma minimaln ilo kraw dzi wówczas, gdy usuni cie dowolnej z nich rozspaja graf. Wybierzmy dowolny wierzchołek b d cy li ciem i usu my go z grafu wraz z incydentn kraw dzi . W wyniku tej operacji liczba kraw dzi i wierzchołków malej o 1. Po pewnej liczbie kroków otrzymujemy graf K2.
2) Zakładamy, e twierdzenie zachodzi dla pewnego k.
3) Dowodzimy dla k + 1. Dodajemy do grafu kraw d e tak, aby
ł czyła dwie składowe spójno ci. Wówczas korzystaj c z zało enia indukcyjnego otrzymujemy:
n(G+e) – (k – 1) ≤ m(G+e).
Po uwzgl dnieniu, e n(G+e) = n(G) oraz m(G+e) = m(G) + 1 otrzymujemy tez .
Spójno grafu
Tw. Je li graf G posiada k składowych spójno ci, to m ≤ (n – k)(n – k + 1)/2.
Dowód: Rozwa my n-wierzchołkowy graf G, o najwi kszej mo liwej
liczbie kraw dzi, który posiada k składowych spójno ci G1,...,Gk takich, e |V(Gi+1)| ≤ |V(Gi)|. Załó my, e wierzchołek u nale y do
najliczniejszej składowej spójno ci , natomiast v nale y do składowej G2. Zauwa my, e je li |V(G2)| > 1, to przeniesienie wierzchołka v z G2 do G1 nie zmieni liczby składowych spójno ci, liczba kraw dzi
natomiast wzro nie, co daje sprzeczno . St d |V(Gi)| = 1 dla i > 1. St d, m(G) = m(Kn – k ) = (n – k)(n – k + 1)/2, co ko czy dowód.
Wniosek Dowolny n-wierzchołkowy graf posiadaj cy wi cej ni (n – 2)(n – 1)/2 kraw dzi jest spójny.
Sprawdzanie spójno ci grafu
Procedure Spójny(G) begin
S := { v }; (* gdzie v jest dowolnym wierzchołkiem grafu G *) while istnieje nieoznaczony
wierzchołek v ∈ S do begin S := S ∪ N(v);
oznacz wierzchołek v;
end;if S = V(G) then
return „graf G jest spójny”;
elsereturn „graf G nie jest spójny”;
end
Przykład Oznaczenia:
•oznaczone elementy S;
•nieoznaczone elementy S;
•bie cy wierzchołek v;
Odp: „graf G jest spójny”
Drzewa
• Drzewo – graf spójny, który nie zawiera podgrafu b d cego cyklem.
Dla tej klasy grafów zachodzi m = n – 1. Wierzchołek o stopniu równym 1 nazywamy li ciem.
- cie ki: Pn = ({v1,...,vn},{{v1,v2}, ...,{vn-1,vn}})
- gwiazdy: K1,n–1 = ({v1,...,vn},{{v1,v2}, ...,{v1,vn}}) = N1 + Nn-1
- kometa – graf powstały poprzez poł czenie pewnego wierzchołka gwiazdy z li ciem nale cym do cie ki
- g sienica – graf, w którym mo na wyró ni tak cie k , e ka dy li w grafie jest s siedni z pewnym wierzchołkiem cie ki
- dwugwiazda – wszystkie wierzchołki, z wyj tkiem dwóch maj stopie równy 1
- drzewo binarne – drzewo, w którym stopie ka dego wierzchołka jest równy co najwy ej 3
Drzewa
Tw. Niech T b dzie drzewem o n wierzchołkach. Wówczas nast puj ce warunki s równowa ne:
(1) T jest drzewem;
(2) T nie zawiera cykli i ma n – 1 kraw dzi;
(3) T jest grafem spójnym i ma n – 1 kraw dzi;
(4) T jest grafem spójnym i ka da kraw d jest mostem;
(5) ka de dwa wierzchołki T s poł czone dokładnie jedn drog ; (6) T nie zawiera cyklu, ale po dodaniu dowolnej kraw dzi
otrzymany graf ma dokładnie jeden cykl.
Dowód: Wyka emy twierdzenie indukcyjnie wzgl dem n. Je li n = 1, to twierdzenie jest prawdziwe. Załó my, e jest prawdziwe
równie dla wszystkich drzew T, których rz d jest mniejszy ni n. Nast pnie wyka emy równowa no warunków dla drzewa T o n wierzchołkach.
Drzewa
Dowód (cd.):
(1) (2) [T jest drzewem T nie zawiera cykli i ma n – 1 kraw dzi]
T jest drzewem, wi c nie zawiera cykli. Po usuni ciu dowolnej kraw dzi e otrzymujemy T – e = T1 ∪ T2. Z zało enia
indukcyjnego mamy m(Ti) = n(Ti) – 1, i = 1,2. St d m(T) = n(T1) – 1 + n(T2) – 1 + 1 = n(T) – 1.
(2) (3) [T nie zawiera cykli i ma n – 1 kraw dzi T jest grafem spójnym i ma n – 1 kraw dzi]
Załó my, e T nie jest grafem spójnym. Wtedy T = T1 ∪ T2. To oznacza, e m(T) = m(T1) + m(T2) = n(T1) + n(T2) – 2,
na mocy zało enia indukcyjnego. St d m(T) = n(T) – 2. Ale z warunku (2) wynika, e m(T) = n(T) – 1, co daje sprzeczno .
Drzewa
Dowód (cd.):
(3) (4) [T jest grafem spójnym i ma n – 1 kraw dzi T jest grafem spójnym i ka da kraw d jest mostem]
Graf T – e nie jest spójny, gdy podali my wcze niej twierdzenie mówi ce, i dla grafu o k składowych spójno ci zachodzi n – k ≤ m.
W przypadku grafu T – e mamy k = 1 oraz m = n – 2.
(4) (5) [T jest grafem spójnym i ka da kraw d jest mostem ka de dwa wierzchołki T s poł czone dokładnie jedn drog ]
Gdyby pomi dzy pewn par wierzchołków istniały dwie drogi, to tworzyłyby one cykl. Usuni cie dowolnej kraw dzi z tego cyklu nie spowoduje rozspojenia grafu, co przeczy zało eniu, i ka da kraw d jest mostem.
Drzewa
Dowód (cd.):
(5) (6) [ka de dwa wierzchołki T s poł czone dokładnie jedn drog T nie zawiera cyklu, ale po dodaniu dowolnej kraw dzi
otrzymany graf ma dokładnie jeden cykl]
Załó my, e graf T zawiera cykl. Wówczas pewne dwa
wierzchołki, nale ce do tego cyklu, s poł czone dwiema ró nymi drogami. Sprzeczno . Po operacji dodania kraw dzi graf T + {u,v}
zawiera cykl, poniewa wierzchołki u oraz v s poł czone w grafie T drog .
(6) (1) [T nie zawiera cyklu, ale po dodaniu dowolnej kraw dzi otrzymany graf ma dokładnie jeden cykl T jest drzewem]
Wystarczy wykaza , e graf T jest spójny. Gdyby tak nie było, to T graf T + {u,v} nie zawiera cyklu, gdzie T = T1 ∪ T2 oraz u ∈V(T1), v ∈V(T2). Sprzeczno .
k-drzewa
Def. (k-drzewo) k-drzewem jest graf pełny Kk. Je li G jest k-drzewem o n wierzchołkach, to (n+1)-wierzchołkowe k-drzewo powstaje z G poprzez dodanie wierzchołka s siedniego do wszystkich wierzchołków pewnej kliki w o k wierzchołkach w G. Cz ciowe k-drzewo to dowolny podgraf k-drzewa.
Przykład
2-drzewo 3-drzewo
Uwaga Ka de drzewo jest 1- drzewem
Macierz s siedztwa
Macierz s siedztwa jest struktur danych słu c do reprezentacji grafów w pami ci komputera. Dla danego grafu G okre lamy
kwadratow tablic M o wymiarach n×n tak , e
∈
= ∉
) ( }
, { gdy ,
1
) ( }
, { gdy ,
] 0 ,
[ v v E G
G E v
j v i M
j i
j i
Przykład
v1
v2
v3 v4
v5 v6
0 0
1 1
0 1
0 0
1 0 0
0
1 1
0 0
0 0
1 0
0 0
1 0
0 0
0 1
0 1
1 0
0 0
1 0
G = M =
Wierzchołek v6 jest s siedni z:
Przykład: s siedztwo wierzchołka v6
v1, v3
i
v4Macierz s siedztwa
Zalety:
• sprawdzenie, czy {v
i,v
j}∈E(G), dodanie oraz usuni cie kraw dzi to operacje dokonywane w stałym czasie
• struktura danych łatwa w implementacji Wady:
• przechowywanie macierzy wymaga O(n
2) pami ci
• przejrzenie zbioru kraw dzi dokonywane w czasie
O(n
2) zamiast O(m)
Lista s siedztwa
Lista s siedztwa jest struktur danych, w której wyst puje n- elementowy wektor N zwany nagłówkiem taki, e N[i] jest wska nikiem na list zawieraj c s siadów wierzchołka vi.
Przykład
v1
v2
v3 v4
v5 v6
G = N =
|
|
|
|
|
|
|
|
|
|
|
|
4 3
1 4
6 5
6 2
3 1
6 2
v v
v v
v v
v v
v v
v v
•
•
•
•
•
•
•
•
•
•
•
•
Przykład: lista s siadów
wierzchołka v6
Wierzchołek v6 jest s siedni z: v1, v3 oraz v4
Lista s siedztwa
Zalety:
• przejrzenie zbioru kraw dzi dokonywane w czasie O(m)
• oszcz dno pami ci – wymagana pami rz du O(m) Wady:
• sprawdzenie, czy {v
i,v
j}∈E(G) wymaga czasu proporcjonalnego do min{deg(v
i), deg(v
j)}
• usuni cie kraw dzi {u,v} wymaga czasu
proporcjonalnego do max{ deg(u), deg(v) }
Izomorfizm grafów
Def. Niech b d dane dwa grafy G1 i G2 o tej samej liczbie wierzchołków.
Powy sze grafy s izomorficzne o ile istnieje bijekcja f:V(G1)→ V(G2) taka, e wierzchołki u i v s s siednie w grafie G1 wtedy i tylko wtedy, gdy wierzchołki f(u) i f(v) s s siednie w G2.
Tw. Je li grafy G1 i G2 s izomorficzne, to 1. | V(G1)| = | V(G2)|
2. | E(G1)| = | E(G2)|
3. Ci gi stopniowe tych grafów s sobie równe Przykład Nast puj ce trzy
grafy s izomorficzne:
Izomorfizm grafów
Uwaga. Warunki podane w powy szym twierdzeniu nie s wystarczaj ce do tego, aby dwa grafy były izomorficzne.
Dla poni szych dwóch grafów G1, G2 mamy 1. | V(G1)| = | V(G2)|
2. | E(G1)| = | E(G2)|
3. Ci gi stopniowe tych grafów s sobie równe, lecz nie s one izomorficzne.
G1 = G2 =
Uwaga Nie wiadomo, czy istnieje wielomianowy algorytm, stwierdzaj cy, czy podane na wej ciu dwa grafy s izomorficzne.
Izomorfizm grafów
Przykład Sze postaci grafu Petersena
Szukanie najkrótszych dróg z
jednym ródłem
Algorytm Dijkstry
Zało enia:
• dany jest spójny graf prosty G z wagami na kraw dziach
• waga w(e) dla ka dej kraw dzi e jest nieujemna
• dany jest wyró niony wierzchołek s
Wyj cie: dla ka dego wierzchołka v algorytm znajduje d[v], długo najkrótszej drogi z wierzchołka s do v. Przez długo drogi rozumiemy sum wag kraw dzi nale cych do drogi.
Uwaga: Algorytm mo na łatwo zmodyfikowa tak, aby oprócz długo ci drogi wyznaczał kraw dzie do niej nale ce oraz tak, aby działał w przypadku grafów skierowanych.
Pseudokod
Procedure Dijkstra(G, s) begin
S := ∅; d[s] = 0; d[ v] = +∞ dla v ≠ s;
for i := 1 to n do begin
znajd v ∈ V\S, posiadaj cy minimaln etykiet d[ v];
S := S ∪ {v};
for ka dy s siad u ∈ V\S do begin
d[ u] := min{d[ u], d[ v] + w({u,v}) };
endend end
Uwaga S jest pomocniczym zbiorem wierzchołków (nazywany zbiorem pewno ci). O wierzchołku v nale cym do S wiadomo, e jego etykieta d[v]
jest równa długo ci najkrótszej drogi z s do v.
Przykład
Procedure Dijkstra(G, s) begin
S := ∅; d[s] = 0; d[ v] = +∞ dla v ≠ s;
for i := 1 to n do begin
znajd v ∈ V\S, o minimalnym d[ v];
S := S ∪ {v};
for ka dy s siad u ∈ V\S do begin
d[ u] := min{d[ u], d[ v] + w({u,v}) };
endend end
Szukamy długo ci najkrótszej drogi z s do t.
Elementy zbioru S oznaczamy kolorem czerwonym.
8 7
4
3 1
2
1 3
2
5 2
6 2
4 4
t 0
4 7 8
7
13
9
11 7
Odpowied : najkrótsza droga z s do t ma długo 16. 16
11
Uwagi o implementacji
• operacje „znajd v ∈ V\S, o minimalnym d[ v]; S := S ∪ {v};” s wykonywane O(n) razy
• operacja „ d[ u] := min{d[ u], d[ v] + w({u,v}) };” jest wykonywana O(m) razy
• do wydajnej implementacji wykorzystujemy kopiec binarny o tej własno ci, e klucz zapami tany w danym w le jest mniejszy od kluczy jego synów
• elementami kopca s wierzchołki V\S, a klucze to liczby d[v]
• w ogólnym przypadku czas budowy kopca to O(nlogn), lecz w algorytmie Dijkstry (wykorzystuj c fakt, e inicjalnie wszystkie klucze, z wyj tkiem d[s]
s identyczne) czas ten jest liniowy
• wyszukiwanie wierzchołka w zbiorze V\S o minimalnym kluczu, dzi ki własno ci kopca, mo e by wykonana w czasie stałym
• usuni cie elementu o minimalnym kluczu (czyli instrukcja „S := S ∪ {v};”) wymaga czasu O(log(|V\S|)) = O(logn)
• operacja „ d[ u] := min{d[ u], d[ v] + w({u,v}) };” wymaga czasu O(log(|V\S|))
• ostatecznie, czas działania algorytmu Dijkstry to O((n+m)logn)
Algorytm Bellmana-Forda
• Wej cie: obci ony spójny digraf G.
• Dozwolone ujemne wagi na kraw dziach.
• Algorytm stwierdza czy istnieje cykl o ujemnej sumie wag.
• Je li taki cykl istnieje, to algorytm zwraca informacj o bł dzie
• Je li powy szego cyklu nie ma, to algorytm znajduje długo ci najkrótszych dróg ze ródła s do wszystkich pozostałych
wierzchołków grafu
Szkic algorytmu
• algorytm szuka długo ci najkrótszych dróg z wyró nionego wierzchołka s do wszystkich pozostałych wierzchołków grafu
• długo znalezionej drogi z s do v jest zapami tana jako d[v]
• inicjalnie d[s] = 0 oraz d[v] = +∞ dla s ≠ v
• główna p tla algorytmu jest wykonywana n – 1 razy
• ka dy przebieg głównej p tli polega na wykonaniu relaksacji ka dej kraw dzi
• relaksacja kraw dzi (u,v) jest zmniejszeniem oszacowania d[v] je li warto dotychczas zapami tana jest wi ksza ni d[u] + w((u,v)), gdzie w((u,v)) to waga kraw dzi (u,v)
• po zako czeniu oblicze w głównej p tli algorytmu nast puje sprawdzenie czy w digrafie istnieje cykl o ujemnej sumie wag, co jest realizowane poprzez sprawdzenie czy mo na dokona relaksacji dowolnej kraw dzi
• je li relaksacja jest mo liwa, to graf zawiera cykl o ujemnej sumie wag, co oznacza, e najkrótszych dróg nie mo na obliczy
• je li relaksacja nie jest mo liwa, to zapami tane warto ci d[v] s szukanymi długo ciami najkrótszych dróg z s
procedure Bellman-Ford( G, w, s ) begin
d[s] = 0;
for each v ∈ V(G)\{s} do d[v] = +∝;
for i := 1 to n – 1 do
for each (u,v) ∈E(G) do
if d[u] + w((u,v)) < d[v] then d[v] := d[u] + w((u,v));
for each (u,v) ∈E(G) do
if d[u] + w((u,v)) < d[v] then return false;
return true;
end
Pseudokod
Przykład
8
6
3 –1
–2
–2 2
3 +∞
+∞
+∞
+∞
+∞
0 8
6
3 –1
–2
–2 2
3 +∞
+∞
+∞
8
6
0 8
6
3 –1
–2
–2 2
3 +∞
4 7 8
6 0
8
6
3 –1
–2
–2 2
3 6
4 7 8
5
0 8
6
3 –1
–2
–2 2
3 6
3 7 8
5
0 8
6
3 –1
–2
–2 2
3 5
3 7 8
5 0
Rys. 1: Sytuacja po inicjalizacji. Rys. 2: Sytuacja po
wykonaniu p tli dla i = 1 Rys. 3: Sytuacja po wykonaniu p tli dla i = 2
Rys. 4: Sytuacja po
wykonaniu p tli dla i = 3 Rys. 5: Sytuacja po
wykonaniu p tli dla i = 4 Rys. 6: Sytuacja po wykonaniu p tli dla i = 5
Poprawno
Tw Je li digraf G nie posiada ujemnych cykli osi galnych ze ródła s, to po zako czeniu algorytmu Bellmana-Forda d[v] jest równe długo ci
najkrótszej cie ki z s do v dla ka dego wierzchołka v osi galnego z s.
Dowód:
• niech s=v0,...,vk=v b dzie najkrótsz cie k z s do v
• mamy k < |V(G)|
• dowodzimy indukcyjnie, e d[vi] jest równe długo ci najkrótszej cie ki z s do vi po i-tym przebiegu „drugiej” p tli for
• je li i=0, to własno wynika z faktu, e w fazie inicjalizacji
algorytmu podstawiamy d[s]=0 i równo ta nie ulega zmianie podczas działania algorytmu
• niech i > 0. Po dokonaniu relaksacji kraw dzi (vi-1,vi) w i-tym
przebiegu p tli liczba d[vi] przyjmuje warto najkrótszej cie ki z s do vi.
Poprawno
Tw. Je li digraf G zawiera cykl o ujemnej wadze osi galny z s, to algorytm Bellmana-Forda zwraca warto false.
Dowód:
• niech v0,...,vk=v0 b dzie cyklem o ujemnej sumie wag, tzn.
• Gdyby algorytm zwrócił warto true, to dla ka dego wierzchołka cyklu mamy d[vi] ≤ d[vi-1] + w((vi-1,vi)).
• Sumuj c nierówno ci parami otrzymujemy
•Warto ci pierwszych dwóch sum w powy szym wyra eniu s sobie równe wi c
co prowadzi do sprzeczno ci.
= − <
k i
i
i v
v w
1
1, )) 0 ((
= −
= −
=
+
≤ k
i
i i
k i
i k
i
i d v w v v
v d
1
1 1
1 1
)) , ((
] [
] [
= − ≥
k i
i
i v
v w
1
1, )) 0 ((
Obliczanie najkrótszych cie ek pomi dzy wszystkimi parami
wierzchołków
metod mno enia macierzy
• problem: szukamy długo ci najkrótszych cie ek pomi dzy wszystkimi parami wierzchołków
• wykorzystanie metody programowania dynamicznego
• zwi zek z problemem mno enia macierzy
• pewne optymalizacje
rozwi zania
Lemat Je li v0,..., vl jest najkrótsz cie k ł cz c v0 z vl, to pod cie ka vs,...,vt, gdzie 0≤s≤t≤l jest najkrótszym poł czeniem pomi dzy wierzchołkami vs i vt.
Oznaczenie: - długo najkrótszej cie ki z i do j zawieraj cej co najwy ej m kraw dzi. Wówczas:
dla m < n oraz
ijm
d
=
≠
=
= − − +
j i
j i n
k w d
dijm dijm ikm kj 0
}) ,..., 1 :
min{
,
min( 1 1
=
≠
∞
= +
j i
j dij i
0
0
Algorytm
Wej cie: macierz Dm współczynników oraz macierz W opisuj ca wagi wij Wyj cie: macierz Dm+1 współczynników
ijm
d m+1
dij
procedure SearchShortestPaths( Dm, W ) begin
for i := 1 to n do
for j := 1 to n do begin for k := 1 to n do return Dend m+1;
end
1 m;
ij m
ij d
d + =
);
,
min( 1
1 m kj
m ik m ij
ij d d w
d + = + +
Przykład
8
6
3 –1
–2
–2 2
3 4
5 3 2
6 1
−
∞
∞
∞
∞
∞
∞
∞
∞
∞
∞
∞
∞
−
∞
∞
∞
∞
∞
∞
−
∞
∞
∞
∞
=
0 2 3
0 2 0
2 3
0 1 0
6 8
0
W
−
∞
∞
∞
∞
∞
∞
∞
∞
∞
∞
−
−
∞
−
∞
−
∞
∞
=
0 2 0
2 3
0 2 0
2 4
3 0 1
3 2
1 0
6 4
7 8 0 D2
−
∞
∞
∞
∞
∞
∞
∞
∞
∞
∞
−
−
−
∞
−
−
−
∞
=
0 2 0
2 3
0 2
0
2 4
2 0
1
3 5
2 1 0
5 4
6 7
8 0 D3
−
∞
∞
∞
∞
∞
∞
∞
∞
∞
∞
−
−
−
∞
−
−
−
−
∞
=
0 2 0
2 3
0 2
0
2 4
2 0
1
3 5
3 1
0
5 3
6 7 8 0 D4
−
∞
∞
∞
∞
∞
∞
∞
∞
∞
∞
−
−
−
∞
−
−
−
−
∞
=
0 2 0
2 3
0 2
0
2 4
2 0
1
3 5
3 1 0
5 3
5 7 8 0 D5
Zwi zek z mno eniem macierzy
procedure SearchShortestPaths( Dm, W ) begin
for i := 1 to n do
for j := 1 to n do begin for k := 1 to n do return Dend m+1;
end
procedure MatrixMultiplication( A, B ) begin
for i := 1 to n do
for j := 1 to n do begin cij:= 0;
for k := 1 to n do cij:= cij + aik· bkj; return C;end
end
1 = +∞;
+ ijm
d
);
,
min( 1
1 m kj
m ik m ij
ij d d w
d + = + +
St d notacja: Dm+1 = Dm·W
Optymalizacje
Uwagi:
• (n – 1)-krotne wykonanie mno enia wg. schematu Dn – 1 = ( ... (((D0 ·W) · W) · W) ... ) · W
powoduje, e czas działania algorytmu wynosi O(n4)
• Z punktu widzenia ko cowego rozwi zania istotna jest tylko macierz Dn – 1
• Zwi kszenie wydajno ci algorytmu uzyskuje si poprzez rezygnacj z obliczania wi kszo ci macierzy po rednich Dk
Sposób post powania:
• zamierzamy obliczy macierz o numerze , która stanowi poprawne rozwi zanie, gdy Dk = Dn – 1 dla ka dego k > n – 1
• wykonujemy k razy podnoszenie macierzy do kwadratu obliczaj c tylko macierze o indeksach b d cych pot gami 2:
D1 = W, D2 = D1·D1, D4= D2·D2, ..., czas działania takiego algorytmu to O(n3logn)
) 1
2 log( −
= n
k
1 1 2 2
2k =D k−D k− D
Algorytm Johnsona
• algorytm znajduje najkrótsze cie ki pomi dzy wszystkimi parami wierzchołków
• algorytmy Dijkstry oraz Bellmana-Forda s wykorzystywane jako podprogramy
• asymptotyczny czas działania to O(n2logn + nm), gdzie n i m to odpowiednio liczba wierzchołków oraz kraw dzi grafu
Zmiana funkcji wagowej
Uwaga Algorytm wywołuje algorytm Dijkstry dla ka dego wierzchołka.
Graf wej ciowy mo e zawiera kraw dzie o ujemnych wagach. Aby algorytm działał poprawnie modyfikowana jest funkcja wagowa w.
Nowa funkcja wagowa w’ musi spełnia poni sze własno ci:
1. cie ka P jest najkrótszym poł czeniem pomi dzy wierzchołkami u,v przy funkcji wagowej w wtedy i tylko wtedy, gdy P jest
najkrótsz cie k pomi dzy u i v z funkcj wagow w’
2. w’(e) ≥ 0 dla ka dej kraw dzi e Def. w’((u,v)) = w((u,v)) + h(u) – h(v)
Lemat Je li P jest cie k zło on z v0,...,vk, to w’(P) = w(P)+h(v0)–h(vk)
Dowód: = = + − =
−
−
−
k
i i
i i
k
i
i v w v v h v h v
v w P
w
1 1 1
1 (' 1, ) ( ( , ) ( ) ( ))
) ('
− +
=
− +
= k w vi− vi h v h vk w P h v h vk
1 ( 1, ) ( 0) ( ) ( ) ( 0) ( )
Zmiana funkcji wagowej
Lemat cie ka P zawieraj ca wierzchołki v0,...,vk, jest najkrótsz
drog z v0 do vk, przy funkcji wagowej w wtedy i tylko wtedy, gdy P jest najkrótsz cie k z v0 do vk, przy f-cji wagowej w’.
Dowód: ( ) (implikacj przeciwn dowodzi si analogicznie)
Dowodzimy implikacj metod nie wprost. Załó my, e istnieje inna cie ka P’ taka, e w’(P’) < w’(P). Korzystaj c z poprzedniego lematu
w(P’)+h(v0)–h(vk) = w’(P’) < w’(P) = w(P)+h(v0)–h(vk).
To oznacza, e w(P’) < w(P) i prowadzi do sprzeczno ci.
Lemat Graf G ma ujemny cykl przy funkcji wagowej w wtedy i tylko wtedy, gdy ma ujemny cykl przy funkcji w’.
Dowód:
Niech C b dzie dowolnym cyklem w G zawieraj cym wierzchołki v0,...,vk=v0. Wówczas:
w’(C) = w(C) + h(v0) – h(vk) = w (C), co ko czy dowód.
Konstrukcja funkcji h
Uwaga Celem jest dobranie takiej funkcji h, aby w’(e) ≥ 0 dla ka dej kraw dzi e. W tym celu tworzymy nowy graf G’ powstały z G poprzez dodanie wierzchołka s, z którego wychodzi łuk o wadze 0 do ka dego innego wierzchołka grafu G.
s
0 0 0
0
Uwagi:
• G nie ma cykli o ujemnych wagach ⇔ G’ nie ma cykli o ujemnych wagach
• definiujemy, dla ka dego wierzchołka v h(v) = d(v) – długo najkrótszej
cie ki z s do v
• Własno : h(v) ≤ h(u) + w((u,v)) dla wszystkich kraw dzi (u,v)
• Definiujemy: w’((u,v)) = w((u,v)) + h(u) – h(v) ≥ 0
Przykład
Rys. 1: Utworzenie grafu G’
poprzez dodanie wierzchołka s.
8
6 3
–1
–2
–2 2
3 d
e c b
f a
0 0
0 0 0
0
s
Rys. 2: Wyznaczenie długo ci najkrótszych cie ek z s do pozostałych wierzchołków za pomoc alg. Bellmana-Forda.
8
6 3
–1
–2
–2 2
3 –3
–5 –1 0
–3 0
0 0
0 0 0
0
0
Rys. 3: Utworzenie funkcji wagowej w’ dla grafu G’ wg wzoru:
w’((u,v)) = w((u,v)) + d(u) – d(v) . 8
9 0
0
0
0 0
5 –3
–5 –1 0
–3 0
0 3
0 1 5
3
0
Algorytm Johnsona
procedure Johnson( G ) begin
wyznacz graf G’;
if Bellamn-Ford( G’, w, s ) = false then return false;
else begin
for each v ∈ V(G’) do
h(v) := d(v); /* obliczone w algorytmie Bellmana-Forda */
for each (u,v) ∈ E(G’) do
w’((u,v)) := w((u,v)) + h(u) – h(v);
for each v ∈ V(G) do Dijkstra( G, w’, v );
for each u ∈ V(G) do
d[u,v] := [dł. najkr. cie ki z v do u w G’] + h(v) – h(u);
endend
Przykład c.d.
Skonstruujemy jeden wiersz tablicy wyj ciowej, mianowicie d[a,*], co odpowiada wykonaniu jednego obiegu odpowiedniej p tli alg. Johnsona:
• wierzchołek a – kolor czerwony
• niebieskie etykiety – najkrótsza droga z wierzchołka a
• obliczone warto ci dla grafu G’:
• po przekształceniu odwrotnym wynik dla G:
8
9 3
0
0
0 0
5 8
8 8 8
8 0
0 3
0 1 5
3
+∞ 8
f
∞ 8
8 8 8 0 a
s e
d c b a
5 f 3 5 7 8 0 a
e d c b –3 a
f
0 –5
–3 –1
0 0
h
s e
d c
b a
Wyznaczyli my wcze nie funkcj pomocnicz h:
Grafy hamiltonowskie, problem komiwoja era –
algorytm optymalny
Grafy hamiltonowskie
Def. Cykl (droga) Hamiltona jest to cykl (droga), w którym ka dy wierzchołek grafu wyst puje dokładnie raz. Graf jest hamiltonowski (półhamiltonowski), o ile posiada cykl (drog ) Hamiltona.
Przykład
Graf półhamiltonowski Graf nie jest ani hamiltonowski ani półhamiltonowski
Graf hamiltonowski
Grafy hamiltonowskie
Tw. (Ore, 1960) Je li G jest grafem prostym o n ≥ 3 wierzchołkach i deg(u) + deg(v) ≥ n dla ka dej pary nies siednich wierzchołków u i v, to graf G jest hamiltonowski.
Dowód: Załó my, e istnieje graf G o podanych zało eniach ale nie jest hamiltonowski. Mo emy zało y , e G posiada drog Hamiltona
v1→v2→...→vn oraz {v1,vn}∉E(G). St d wynika, e deg(v1) + deg(vn) ≥ n a to oznacza, e istnieje indeks i taki, e {v1,vi}∈E(G) oraz {vi-1,vn}∈E(G), co pokazano na rysunku. To prowadzi do sprzeczno ci, gdy
v1→v2→...→vi-1→vn→vn-1→... →vi→v1 jest cyklem Hamiltona.
v1
v2
v3
vi-1 vi vn-2 vn-1
vn