Professional Documents
Culture Documents
Wykªad 1.
Podstawowe poj¦cia.
Grafy - podstawowe poj¦cia
Denicja
Grafem (nieskierowanym) G nazywamy uporz¡dkowan¡ trójk¦
G = (V , E , γ), gdzie V 6= ∅ jest zbiorem wierzchoªków, E zbiorem
kraw¦dzi, γ jest funkcj¡ odwzorowuj¡c¡ zbiór E w zbiór
{{p, q} : p, q ∈ V }.
Denicja
Grafem (nieskierowanym) G nazywamy uporz¡dkowan¡ trójk¦
G = (V , E , γ), gdzie V 6= ∅ jest zbiorem wierzchoªków, E zbiorem
kraw¦dzi, γ jest funkcj¡ odwzorowuj¡c¡ zbiór E w zbiór
{{p, q} : p, q ∈ V }.
Denicja
Kraw¦d¹ e ª¡cz¡c¡ wierzchoªek w ze samym sob¡ nazywamy p¦tl¡.
γ(e) = {w , w } = {w }.
Denicja
Kraw¦d¹ e ª¡cz¡c¡ wierzchoªek w ze samym sob¡ nazywamy p¦tl¡.
γ(e) = {w , w } = {w }.
Denicja
Graf który zawiera kraw¦dzie wielokrotne nazywamy multigrafem.
Tzn. istniej¡ wi , wj ∈ V oraz ep , eq ∈ E , p 6= q takie, »e
γ(ep ) = γ(eq ) = {wi , wj }.
Denicja
Kraw¦d¹ e ª¡cz¡c¡ wierzchoªek w ze samym sob¡ nazywamy p¦tl¡.
γ(e) = {w , w } = {w }.
Denicja
Graf który zawiera kraw¦dzie wielokrotne nazywamy multigrafem.
Tzn. istniej¡ wi , wj ∈ V oraz ep , eq ∈ E , p 6= q takie, »e
γ(ep ) = γ(eq ) = {wi , wj }.
Denicja
Graf w którym nie ma p¦tli i kraw¦dzi wielokrotnych nazywamy grafem
prostym.
Przykªad:
V = {1, 2, 3, 4, 5} E = {a, b, c, d, e, f , g , h}
kraw¦d¹ e γ(e)
a {1, 2}
b {2, 3}
c {2, 5}
d {2, 5}
e {2, 5}
f {4, 5}
g {4, 5}
h {3, 3} = {3}
Denicja
Dwa grafy G = (V (G ), E (G ), γG ) i H = (V (H), E (H), γH ) s¡ identyczne
je»eli V (G ) = V (H), E (G ) = E (H), oraz γG = γH .
Denicja
Dwa grafy G = (V (G ), E (G ), γG ) i H = (V (H), E (H), γH ) s¡ identyczne
je»eli V (G ) = V (H), E (G ) = E (H), oraz γG = γH .
V (G ) = V (H)
E (G ) = E (H)
γG = γH
Denicja
Dwa grafy G = (V (G ), E (G ), γG ) i H = (V (H), E (H), γH ) s¡ identyczne
je»eli V (G ) = V (H), E (G ) = E (H), oraz γG = γH .
V (G ) = V (H)
E (G ) = E (H)
γG = γH
V (G ) = V (H)
E (G ) = E (H)
γG 6= γH
Dwa ró»ne (zgodnie z formaln¡ denicj¡) grafy, mog¡ mie¢ bardzo podobne
wªa±ciwo±ci (taki sam rysunek).
Np. grafy na poni»szym rysunku b¦d¡ identyczne je»eli zamienimy jedynie
nazwy wierzchoªków
Denicja
Dwa grafy G = (V (G ), E (G ), γG ) i H = (V (H), E (H), γH ) s¡
izomorczne je»eli istniej¡ bijekcje
θ : V (G ) → V (H)
φ : E (G ) → E (H)
takie, »e
γG (e) = {u, v }
wtedy i tylko wtedy
γH (φ(e)) = {θ(u), θ(v )}
Denicja
Grafem skierowanym lub digrafem (ang. directed graph) G nazywamy
uporz¡dkowan¡ trójk¦ G = (V , E , γ), gdzie V 6= ∅ jest zbiorem
wierzchoªków, E zbiorem kraw¦dzi, γ jest funkcj¡ odwzorowuj¡c¡ zbiór E w
zbiór V × V (γ : E → V × V ).
Denicja
Grafem skierowanym lub digrafem (ang. directed graph) G nazywamy
uporz¡dkowan¡ trójk¦ G = (V , E , γ), gdzie V 6= ∅ jest zbiorem
wierzchoªków, E zbiorem kraw¦dzi, γ jest funkcj¡ odwzorowuj¡c¡ zbiór E w
zbiór V × V (γ : E → V × V ).
Przykªad: V = {1, 2, 3, 4}, E = {a, b, c, d, e, f }
e kraw¦d¹ a b c d e f
γ(e) (1,2) (3,2) (4,1) (3,4) (2,4) (4,2)
1 2 3 4 5
1 0 0 1 0 0
2 1 0 0 1 1
3 0 1 0 0 0
4 1 0 0 0 1
5 0 0 0 1 1
Uwagi:
Macierz s¡siedztwa grafu nieskierowanego jest macierz¡ symetryczn¡.
Uwagi:
Macierz s¡siedztwa grafu nieskierowanego jest macierz¡ symetryczn¡.
Je»eli graf nieskierowany nie posiada p¦tli to na gªównej przek¡tnej
macierzy wyst¦puj¡ same zera.
Uwagi:
Macierz s¡siedztwa grafu nieskierowanego jest macierz¡ symetryczn¡.
Je»eli graf nieskierowany nie posiada p¦tli to na gªównej przek¡tnej
macierzy wyst¦puj¡ same zera.
1 2 3 4 5
1 0 1 1 1 0
2 1 0 1 1 1
3 1 1 0 0 0
4 1 1 0 0 1
5 0 1 0 1 0
Uwagi:
Macierz s¡siedztwa grafu nieskierowanego jest macierz¡ symetryczn¡.
Je»eli graf nieskierowany nie posiada p¦tli to na gªównej przek¡tnej
macierzy wyst¦puj¡ same zera.
1 2 3 4 5
1 0 1 1 1 0
2 1 0 1 1 1
3 1 1 0 0 0
4 1 1 0 0 1
5 0 1 0 1 0
Uwagi:
Zªo»ono±¢ pami¦ciowa: O(V ∗ V ).
Uwagi:
Zªo»ono±¢ pami¦ciowa: O(V ∗ V ).
Sprawdzenie istnienia jednej kraw¦dzi: O(1).
Uwagi:
Zªo»ono±¢ pami¦ciowa: O(V ∗ V ).
Sprawdzenie istnienia jednej kraw¦dzi: O(1).
Sprawdzenie nast¦pników\poprzedników wierzchoªka: O(V ).
1 2 9
2 1 3 4
3 2
4 2 5
5 4 6 7 8
6 5
7 5 9
8 5 11
9 1 7 10
10 9 11
11 8 10
1 2 9
2 1 3 4
3 2
4 2 5
5 4 6 7 8
6 5
7 5 9
8 5 11
9 1 7 10
10 9 11
11 8 10
Uwaga: Listy s¡siedztwa najlepiej nadaj¡ si¦ do reprezentowania grafów
"rzadkich", tzn. takich które maj¡ maªo kraw¦dzi w porównaniu do liczby
wierzchoªków.
Wykªad 1. Podstawowe poj¦cia.
Komputerowa reprezentacja grafów
Uwagi:
Zªo»ono±¢ pami¦ciowa: O(V + E ).
Uwagi:
Zªo»ono±¢ pami¦ciowa: O(V + E ).
Sprawdzenie istnienia jednej kraw¦dzi: O(V ).
Uwagi:
Zªo»ono±¢ pami¦ciowa: O(V + E ).
Sprawdzenie istnienia jednej kraw¦dzi: O(V ).
Sprawdzenie nast¦pników (poprzedników) wierzchoªka: O(V ).
a b c d e f g h
1 1 1 0 1 0 0 0 0
2 0 1 1 0 1 1 0 0
3 1 0 1 0 0 0 0 0
4 0 0 0 1 1 1 1 0
5 0 0 0 0 0 0 1 2
a b c d e f g h i
1 -1 1 0 1 0 0 0 0 0
2 0 -1 1 0 -1 -1 0 0 0
3 1 0 -1 0 0 0 0 0 0
4 0 0 0 -1 1 1 -1 1 0
5 0 0 0 0 0 0 1 -1 2
Uwagi:
Zªo»ono±¢ pami¦ciowa: O(V ∗ E ).
Uwagi:
Zªo»ono±¢ pami¦ciowa: O(V ∗ E ).
Sprawdzenie istnienia jednej kraw¦dzi: O(E ).
Uwagi:
Zªo»ono±¢ pami¦ciowa: O(V ∗ E ).
Sprawdzenie istnienia jednej kraw¦dzi: O(E ).
Sprawdzenie nast¦pników\poprzedników wierzchoªka: O(V ∗ E ).
Wykªad 2.
Schemat klasy
Klasa wierzchoªek
class Node {
int n ;
int weight ;
string label ;
public :
Node ( int , int , string );
operator int () { return n; }
int get_nr () const { return n; }
int get_w () const { return weight ; }
string sh_node ();
};
Klasa graf
typedef vector < Node > node_vector ;
typedef vector < node_vector * > pnt_vector ;
class Graph
{
bool directed ;
pnt_vector pointers ;
public :
Graph ( int , bool );
Graph ( const Graph &g );
~ Graph ();
bool is_edge ( Node , Node ) const ;
bool add_edge ( Node , Node , int ) const ;
bool rem_edge ( Node p , Node q) const ;
string sh_graph () const ;
};
Wykªad 2. Przeszukiwanie grafów wszerz i w gª¡b.
Przeszukiwanie grafu w gª¡b (DFS)
Graf G
0 1 2
1 0 3 4
2 0
3 1 5
4 1 5 6
5 3 4
6 4
Graf G
0 1 2
1 0 3 4
2 0
3 1 5
4 1 5 6
5 3 4
6 4
Graf G
0 1 2
1 0 3 4
2 0
3 1 5
4 1 5 6
5 3 4
6 4
Graf G
0 1 2
1 0 3 4
2 0
3 1 5
4 1 5 6
5 3 4
6 4
Graf G
0 1 2
1 0 3 4
2 0
3 1 5
4 1 5 6
5 3 4
6 4
Graf G
0 1 2
1 0 3 4
2 0
3 1 5
4 1 5 6
5 3 4
6 4
Graf G
0 1 2
1 0 3 4
2 0
3 1 5
4 1 5 6
5 3 4
6 4
Graf G
0 1 2
1 0 3 4
2 0
3 1 5
4 1 5 6
5 3 4
6 4
Graf G
0 1 2
1 0 3 4
2 0
3 1 5
4 1 5 6
5 3 4
6 4
Graf G
0 1 2
1 0 3 4
2 0
3 1 5
4 1 5 6
5 3 4
6 4
Graf G
0 1 2
1 0 3 4
2 0
3 1 5
4 1 5 6
5 3 4
6 4
Graf G
0 1 2
1 0 3 4
2 0
3 1 5
4 1 5 6
5 3 4
6 4
Graf G
0 1 2
1 0 3 4
2 0
3 1 5
4 1 5 6
5 3 4
6 4
Graf G
0 1 2
1 0 3 4
2 0
3 1 5
4 1 5 6
5 3 4
6 4
Graf G
0 1 2
1 0 3 4
2 0
3 1 5
4 1 5 6
5 3 4
6 4
Graf G
0 1 2
1 0 3 4
2 0
3 1 5
4 1 5 6
5 3 4
6 4
Wykªad 3.
Drogi w grae.
Droga w grae
Denicja
Niech G = (V , E , γ) b¦dzie grafem (nieskierowanym). Drog¡ (walk) w
grae G nazywamy ci¡g
Denicja
Drog¦ nazywamy drog¡ prost¡ (trail) je»eli wszystkie jej kraw¦dzie s¡
parami ró»ne.
Denicja
Drog¦ nazywamy drog¡ prost¡ (trail) je»eli wszystkie jej kraw¦dzie s¡
parami ró»ne.
Denicja
Je»eli w drodze prostej dodatkowo wszystkie wierzchoªki s¡ parami ró»ne to
tak¡ drog¦ nazywamy ±cie»k¡ (path).
Denicja
Drog¦ nazywamy drog¡ prost¡ (trail) je»eli wszystkie jej kraw¦dzie s¡
parami ró»ne.
Denicja
Je»eli w drodze prostej dodatkowo wszystkie wierzchoªki s¡ parami ró»ne to
tak¡ drog¦ nazywamy ±cie»k¡ (path).
Denicja
Drog¦ w której vp0 = vpn (wierzchoªek pocz¡tkowy i ko«cowy s¡ równe)
nazywamy drog¡ zamkni¦t¡.
Denicja
Zamkni¦t¡ drog¦ prost¡ nazywamy cyklem.
Denicja
Zamkni¦t¡ drog¦ prost¡ nazywamy cyklem.
Uwaga:
Cykl mo»e zawiera¢
powtarzaj¡ce si¦ wierzchoªki
(nie tylko pierwszy i ostatni).
Denicja
Graf nazywamy dwudzielnym je»eli zbiór jego wierzchoªków mo»na
podzieli¢ na dwa niepuste rozª¡czne zbiory X i Y takie, »e ka»da kraw¦d¹
ma jeden koniec w zbiorze X a drugi w zbiorze Y .
Denicja
Graf nazywamy dwudzielnym je»eli zbiór jego wierzchoªków mo»na
podzieli¢ na dwa niepuste rozª¡czne zbiory X i Y takie, »e ka»da kraw¦d¹
ma jeden koniec w zbiorze X a drugi w zbiorze Y .
Twierdzenie
Graf jest dwudzielny wtedy i tylko wtedy gdy nie zawiera nieparzystych
cykli.
Denicja
Dwa wierzchoªki u i v grafu G nazywamy poª¡czonymi je»eli istnieje
±cie»ka w grae G o pocz¡tku w wierzchoªku u i ko«cu w wierzchoªku v .
Denicja
Dwa wierzchoªki u i v grafu G nazywamy poª¡czonymi je»eli istnieje
±cie»ka w grae G o pocz¡tku w wierzchoªku u i ko«cu w wierzchoªku v .
Uwaga: Zbiór wierzchoªków V mo»na podzieli¢ na rozª¡cznie niepuste
zbiory V1 , V2 , . . . , Vk , takie »e dwa wierzchoªki u, v ∈ V s¡ poª¡czone
wtedy i tylko wtedy gdy nale»¡ do jednego ze zbiorów Vi .
Denicja
Dwa wierzchoªki u i v grafu G nazywamy poª¡czonymi je»eli istnieje
±cie»ka w grae G o pocz¡tku w wierzchoªku u i ko«cu w wierzchoªku v .
Uwaga: Zbiór wierzchoªków V mo»na podzieli¢ na rozª¡cznie niepuste
zbiory V1 , V2 , . . . , Vk , takie »e dwa wierzchoªki u, v ∈ V s¡ poª¡czone
wtedy i tylko wtedy gdy nale»¡ do jednego ze zbiorów Vi .
Denicja
Podgrafy G (V1 ), G (V2 ), . . . , G (Vk ) nazywamy skªadowymi grafu G .
Denicja
Dwa wierzchoªki u i v grafu G nazywamy poª¡czonymi je»eli istnieje
±cie»ka w grae G o pocz¡tku w wierzchoªku u i ko«cu w wierzchoªku v .
Uwaga: Zbiór wierzchoªków V mo»na podzieli¢ na rozª¡cznie niepuste
zbiory V1 , V2 , . . . , Vk , takie »e dwa wierzchoªki u, v ∈ V s¡ poª¡czone
wtedy i tylko wtedy gdy nale»¡ do jednego ze zbiorów Vi .
Denicja
Podgrafy G (V1 ), G (V2 ), . . . , G (Vk ) nazywamy skªadowymi grafu G .
Denicja
Je»eli graf ma dokªadnie jedn¡ skªadow¡ to taki graf nazywamy spójnym.
Denicja
Stopniem wierzchoªka v w grae G nazywamy ilo±¢ kraw¦dzi incydentnych
(poª¡czonych) z wierzchoªkiem v (kraw¦dzie p¦tle liczymy podwójnie).
Stopie« wierzchoªka v oznaczamy dG (v ), minimaly stopie« wierzchoªka
oznaczamy δ(G ), maksymalny ∆(G ).
Denicja
Stopniem wierzchoªka v w grae G nazywamy ilo±¢ kraw¦dzi incydentnych
(poª¡czonych) z wierzchoªkiem v (kraw¦dzie p¦tle liczymy podwójnie).
Stopie« wierzchoªka v oznaczamy dG (v ), minimaly stopie« wierzchoªka
oznaczamy δ(G ), maksymalny ∆(G ).
Twierdzenie
Suma stopni wszystkich wierzchoªków w grae jest równa podwojonej
liczbie kraw¦dzi
d(v ) = 2E .
X
v ∈V
Denicja
Stopniem wierzchoªka v w grae G nazywamy ilo±¢ kraw¦dzi incydentnych
(poª¡czonych) z wierzchoªkiem v (kraw¦dzie p¦tle liczymy podwójnie).
Stopie« wierzchoªka v oznaczamy dG (v ), minimaly stopie« wierzchoªka
oznaczamy δ(G ), maksymalny ∆(G ).
Twierdzenie
Suma stopni wszystkich wierzchoªków w grae jest równa podwojonej
liczbie kraw¦dzi
d(v ) = 2E .
X
v ∈V
Wniosek
W ka»dym grae ilo±¢ wierzchoªków o stopniu nieparzystym jest parzysta.
Denicja
Drog¦ w grae nazywamy drog¡ Eulera je»eli przechodzi ona przez ka»d¡
kraw¦d¹ dokªadnie jeden raz.
Denicja
Drog¦ w grae nazywamy drog¡ Eulera je»eli przechodzi ona przez ka»d¡
kraw¦d¹ dokªadnie jeden raz.
Denicja
Cykl w grae nazywamy cyklem Eulera je»eli przechodzi on przez ka»d¡
kraw¦d¹ dokªadnie jeden raz.
Denicja
Drog¦ w grae nazywamy drog¡ Eulera je»eli przechodzi ona przez ka»d¡
kraw¦d¹ dokªadnie jeden raz.
Denicja
Cykl w grae nazywamy cyklem Eulera je»eli przechodzi on przez ka»d¡
kraw¦d¹ dokªadnie jeden raz.
Twierdzenie
Niech G b¦dzie (nieskierowanym) grafem spójnym.
W grae G istnieje cykl Eulera wtedy i tylko wtedy gdy wszystkie
wierzchoªki s¡ parzystego stopnia.
W grae G istniej niezamkni¦ta droga Eulera wtedy i tylko wtedy gdy
dokªadnie dwa wierzchoªki s¡ nieparzystego stopnia.
Mosty królewieckie
Mosty królewieckie
Algorytm Fleury'ego
Algorytm Fleury'ego
Algorytm Fleury'ego
Algorytm Fleury'ego
Algorytm Fleury'ego
Denicja
Drog¦ w grae nazywamy drog¡ Hamiltona
je»eli przechodzi ona przez ka»dy wierzchoªek
dokªadnie jeden raz.
Denicja
Drog¦ w grae nazywamy drog¡ Hamiltona
je»eli przechodzi ona przez ka»dy wierzchoªek
dokªadnie jeden raz.
Denicja
Cykl w grae nazywamy cyklem Hamiltona
je»eli przechodzi on przez ka»dy wierzchoªek
dokªadnie jeden raz (poza pierwszym i
ostatnim).
ω(G \ S) ≤ |S|
Przykªad
W grae nie istnieje cykl
Hamiltona.
Przykªad
W grae nie istnieje cykl
Hamiltona.
Usuwamy trzy wierzchoªki
|S| = 3.
Przykªad
W grae nie istnieje cykl
Hamiltona.
Usuwamy trzy wierzchoªki
|S| = 3.
Po usuni¦ciu wierzchoªków (i
incydentnych kraw¦dzi)
otrzymujemy cztery skªadowe
ω(G \ S) = 4.
Uwaga: Odwrotne twierdzenie nie jest prawdziwe, tzn. dla pewnego grafu
mo»e nie istnie¢ cykl Hamiltona pomimo, »e nierówno±¢ ω(G \ S) ≤ |S|
jest speªniona dla ka»dego podzbioru wierzchoªków.
Przykªadem takiego grafu jest graf Petersena (w grae tym istnieje droga
Hamiltona ale nie istnieje cykl Hamiltona).
Twierdzenie
Je»eli G jest grafem prostym maj¡cym co najmniej trzy wierzchoªki
(|V | ≥ 3) oraz
δ ≥ |V |/2
(δ - stopie« najmniejszego wierzchoªka)wtedy w grae G istnieje cykl
Hamiltona.
Twierdzenie
Je»eli G jest grafem prostym maj¡cym co najmniej trzy wierzchoªki
(|V | ≥ 3) oraz
δ ≥ |V |/2
(δ - stopie« najmniejszego wierzchoªka)wtedy w grae G istnieje cykl
Hamiltona.
Twierdzenie
Je»eli G jest grafem prostym maj¡cym co najmniej trzy wierzchoªki
(|V | ≥ 3) oraz
d(u) + d(v ) ≥ |V |
(d - stopie« wierzchoªka) dla ka»dej pary nieincydentnych wierzchoªków
u, v wtedy w grae G istnieje cykl Hamiltona.