You are on page 1of 105

Teoria grafów i sieci

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 }.

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 }.

Przykªad: V = {1, 2, 3, 4}, E = {a, b, c, d, e}


kraw¦d¹ e a b c d e
γ(e) {1, 2} {1, 4} {2, 3} {1, 3} {2, 4}

Wykªad 1. Podstawowe poj¦cia.


Grafy - podstawowe poj¦cia

Denicja
Kraw¦d¹ e ª¡cz¡c¡ wierzchoªek w ze samym sob¡ nazywamy p¦tl¡.
γ(e) = {w , w } = {w }.

Wykªad 1. Podstawowe poj¦cia.


Grafy - podstawowe poj¦cia

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 }.

Wykªad 1. Podstawowe poj¦cia.


Grafy - podstawowe poj¦cia

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.

Wykªad 1. Podstawowe poj¦cia.


Grafy - podstawowe poj¦cia

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}

Wykªad 1. Podstawowe poj¦cia.


Grafy - podstawowe poj¦cia

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 .

Wykªad 1. Podstawowe poj¦cia.


Grafy - podstawowe poj¦cia

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

Wykªad 1. Podstawowe poj¦cia.


Grafy - podstawowe poj¦cia

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

Wykªad 1. Podstawowe poj¦cia.


Grafy - podstawowe poj¦cia

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

O takich grafach mówimy, »e s¡ izomorczne.

Wykªad 1. Podstawowe poj¦cia.


Grafy - podstawowe poj¦cia

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 )}

Wykªad 1. Podstawowe poj¦cia.


Grafy - podstawowe poj¦cia

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 ).

Wykªad 1. Podstawowe poj¦cia.


Grafy - podstawowe poj¦cia

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)

Wykªad 1. Podstawowe poj¦cia.


Komputerowa reprezentacja grafów

Wybrane sposoby reprezentacji grafów:


macierz s¡siedztwa
listy s¡siedztwa
macierz incydencji

Wykªad 1. Podstawowe poj¦cia.


Komputerowa reprezentacja grafów

Macierz s¡siedztwa (graf skierowany / nieskierowany) jest to macierz


wymiaru V × V w której w i -tym wierszu i k -tej kolumnie znajduje si¦:
1 je»eli w grae istnieje kraw¦d¹ pozwalaj¡ca przej±¢ od wierzchoªka i do
wierzchoªka k ,
0 w przeciwnym przypadku.

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

Wykªad 1. Podstawowe poj¦cia.


Komputerowa reprezentacja grafów

Uwagi:
Macierz s¡siedztwa grafu nieskierowanego jest macierz¡ symetryczn¡.

Wykªad 1. Podstawowe poj¦cia.


Komputerowa reprezentacja grafów

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.

Wykªad 1. Podstawowe poj¦cia.


Komputerowa reprezentacja grafów

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

Wykªad 1. Podstawowe poj¦cia.


Komputerowa reprezentacja grafów

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

Macierz s¡siedztwa najlepiej nadaje si¦ do reprezentacji grafów


"g¦stych", tzn. takich które maj¡ du»o kraw¦dzi.

Wykªad 1. Podstawowe poj¦cia.


Komputerowa reprezentacja grafów

Uwagi:
Zªo»ono±¢ pami¦ciowa: O(V ∗ V ).

Wykªad 1. Podstawowe poj¦cia.


Komputerowa reprezentacja grafów

Uwagi:
Zªo»ono±¢ pami¦ciowa: O(V ∗ V ).
Sprawdzenie istnienia jednej kraw¦dzi: O(1).

Wykªad 1. Podstawowe poj¦cia.


Komputerowa reprezentacja grafów

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 ).

Wykªad 1. Podstawowe poj¦cia.


Komputerowa reprezentacja grafów

Listy s¡siedztwa jest to reprezentacja grafu polegaj¡ca na przechowywaniu


dla ka»dego wierzchoªka listy jego nast¦pników (poprzedników).

Wykªad 1. Podstawowe poj¦cia.


Komputerowa reprezentacja grafów

Listy s¡siedztwa jest to reprezentacja grafu polegaj¡ca na przechowywaniu


dla ka»dego wierzchoªka listy jego nast¦pników (poprzedników).

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

Wykªad 1. Podstawowe poj¦cia.


Komputerowa reprezentacja grafów

Listy s¡siedztwa jest to reprezentacja grafu polegaj¡ca na przechowywaniu


dla ka»dego wierzchoªka listy jego nast¦pników (poprzedników).

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 ).

Wykªad 1. Podstawowe poj¦cia.


Komputerowa reprezentacja grafów

Uwagi:
Zªo»ono±¢ pami¦ciowa: O(V + E ).
Sprawdzenie istnienia jednej kraw¦dzi: O(V ).

Wykªad 1. Podstawowe poj¦cia.


Komputerowa reprezentacja grafów

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 ).

Wykªad 1. Podstawowe poj¦cia.


Komputerowa reprezentacja grafów

Macierz incydencji (graf nieskierowany) jest to macierz wymiaru


V × E w której w i -tym wierszu i k -tej kolumnie znajduje si¦:
1 je»eli wierzechoªek i jest incydentny z kraw¦dzi¡ k ,
0 je»eli wierzchoªek i nie ª¡czy si¦ z kraw¦dzi¡ k ,
2 je»eli kraw¦d¹ k jest p¦tl¡ o pocz¡tku i ko«cu w wierzchoªku i .

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

Wykªad 1. Podstawowe poj¦cia.


Komputerowa reprezentacja grafów

Macierz incydencji (graf skierowany) jest to macierz wymiaru V × E w


której w i -tym wierszu i k -tej kolumnie znajduje si¦:
-1 je»eli wierzchoªek i jest pocz¡tkiem kraw¦dzi k ,
1 je»eli wierzechoªek i jest ko«cem kraw¦dzi k ,
0 je»eli wierzchoªek i nie ª¡czy si¦ z kraw¦dzi¡ k ,
2 je»eli kraw¦d¹ k jest p¦tl¡ o pocz¡tku i ko«cu w wierzchoªku i .

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

Wykªad 1. Podstawowe poj¦cia.


Komputerowa reprezentacja grafów

Uwagi:
Zªo»ono±¢ pami¦ciowa: O(V ∗ E ).

Wykªad 1. Podstawowe poj¦cia.


Komputerowa reprezentacja grafów

Uwagi:
Zªo»ono±¢ pami¦ciowa: O(V ∗ E ).
Sprawdzenie istnienia jednej kraw¦dzi: O(E ).

Wykªad 1. Podstawowe poj¦cia.


Komputerowa reprezentacja grafów

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 1. Podstawowe poj¦cia.


Teoria grafów i sieci

Wykªad 2.

Przeszukiwanie grafów wszerz i w gª¡b.


Klasa graf

Schemat klasy

Wykªad 2. Przeszukiwanie grafów wszerz i w gª¡b.


Klasa graf

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 ();
};

Wykªad 2. Przeszukiwanie grafów wszerz i w gª¡b.


Klasa graf

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)

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

Wykªad 2. Przeszukiwanie grafów wszerz i w gª¡b.


Przeszukiwanie grafu w gª¡b (DFS)

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

Wykªad 2. Przeszukiwanie grafów wszerz i w gª¡b.


Przeszukiwanie grafu w gª¡b (DFS)

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

Wykªad 2. Przeszukiwanie grafów wszerz i w gª¡b.


Przeszukiwanie grafu w gª¡b (DFS)

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

Wykªad 2. Przeszukiwanie grafów wszerz i w gª¡b.


Przeszukiwanie grafu w gª¡b (DFS)

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

Wykªad 2. Przeszukiwanie grafów wszerz i w gª¡b.


Przeszukiwanie grafu w gª¡b (DFS)

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

Wykªad 2. Przeszukiwanie grafów wszerz i w gª¡b.


Przeszukiwanie grafu w gª¡b (DFS)

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

Wykªad 2. Przeszukiwanie grafów wszerz i w gª¡b.


Przeszukiwanie grafu w gª¡b (DFS)

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

Wykªad 2. Przeszukiwanie grafów wszerz i w gª¡b.


Przeszukiwanie grafu w gª¡b (DFS)

Rekurencyjna implementacje przeszukiwania DFS

odwiedzone - tablica zainicjowana zerami


void DFS_rekur ( Wierz w )
{
odwiedzone [w ] = 1;
cout << w; // " odwiedzenie "
for ( /* przeszukuj nast¦pniki wierzchoªka w */ )
if ( odwiedzone [ /* nr nast¦pnika */ ] == 0)
DFS_rekur ( /* nr nast¦pnika */ )
}

Wykªad 2. Przeszukiwanie grafów wszerz i w gª¡b.


Przeszukiwanie grafu w gª¡b (DFS)

Implementacja przeszukiwania DFS z jawnym u»yciem stosu

void DFS_stos ( Wierz w) {


stos . push (w );
while (! stos . empty ()) {
w = stos . top (); stos . pop ();
if ( odwiedzone [w ]==0){
cout << w; // odwiedzamy
for ( /* przeszukuj nast¦pniki wierzchoªka w */ )
if ( odwiedzone [ /* nr nast¦pnika */ ] == 0)
stos . push ( /* znaleziony nast¦pnik */ );
}
}

Wykªad 2. Przeszukiwanie grafów wszerz i w gª¡b.


Przeszukiwanie grafu w szerz (BFS)

Przeszukiwanie grafu w szerz (BFS)

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 2. Przeszukiwanie grafów wszerz i w gª¡b.


Przeszukiwanie grafu w szerz (BFS)

Przeszukiwanie grafu w szerz (BFS)

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 2. Przeszukiwanie grafów wszerz i w gª¡b.


Przeszukiwanie grafu w szerz (BFS)

Przeszukiwanie grafu w szerz (BFS)

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 2. Przeszukiwanie grafów wszerz i w gª¡b.


Przeszukiwanie grafu w szerz (BFS)

Przeszukiwanie grafu w szerz (BFS)

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 2. Przeszukiwanie grafów wszerz i w gª¡b.


Przeszukiwanie grafu w szerz (BFS)

Przeszukiwanie grafu w szerz (BFS)

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 2. Przeszukiwanie grafów wszerz i w gª¡b.


Przeszukiwanie grafu w szerz (BFS)

Przeszukiwanie grafu w szerz (BFS)

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 2. Przeszukiwanie grafów wszerz i w gª¡b.


Przeszukiwanie grafu w szerz (BFS)

Przeszukiwanie grafu w szerz (BFS)

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 2. Przeszukiwanie grafów wszerz i w gª¡b.


Przeszukiwanie grafu w szerz (BFS)

Przeszukiwanie grafu w szerz (BFS)

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 2. Przeszukiwanie grafów wszerz i w gª¡b.


Przeszukiwanie grafu w szerz (BFS)

Implementacja przeszukiwania BFS

void BFS ( Wierz w ) {


queue . push (w ); odwiedzone [ w] = 1;
while (! queue . empty ()) {
w = queue . top (); queue . pop ();
cout << w;
for ( /* przeszukuj nast¦pniki wierzchoªka w */ )
if ( odwiedzone [ /* nr nast¦pnika */ ] == 0) {
odwiedzone [ /* nr nast¦pnika */ ] = 1;
queue . push ( /* znaleziony nast¦pnik */ );
}
}

Wykªad 2. Przeszukiwanie grafów wszerz i w gª¡b.


Teoria grafów i sieci

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

vp0 , eq1 , vp1 , eq2 , . . . , eqn , vpn

skªadaj¡cy si¦ z wierzchoªków i kraw¦dzi wyst¦puj¡cych na przemian taki, »e

γ(eqi ) = {vpi−1 , vpi } dla ka»dego i = 1, 2, . . . , n

tzn. ka»da kraw¦d¹ ª¡czy s¡siaduj¡ce z ni¡ wierzchoªki.

Wykªad 3. Drogi w grae.


Droga w grae

Wykªad 3. Drogi w grae.


Droga w grae

Uwaga: w grae prostym do wyznaczenia drogi wystarczy poda¢ ci¡g


wierzchoªków
vp0 , vp1 , . . . , vpn

Wykªad 3. Drogi w grae.


Droga w grae

Denicja
Drog¦ nazywamy drog¡ prost¡ (trail) je»eli wszystkie jej kraw¦dzie s¡
parami ró»ne.

Wykªad 3. Drogi w grae.


Droga w grae

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).

Wykªad 3. Drogi w grae.


Droga w grae

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¡.

Wykªad 3. Drogi w grae.


Droga w grae

Denicja
Zamkni¦t¡ drog¦ prost¡ nazywamy cyklem.

Wykªad 3. Drogi w grae.


Droga w grae

Denicja
Zamkni¦t¡ drog¦ prost¡ nazywamy cyklem.

Uwaga:
Cykl mo»e zawiera¢
powtarzaj¡ce si¦ wierzchoªki
(nie tylko pierwszy i ostatni).

Wykªad 3. Drogi w grae.


Droga w grae

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 .

Wykªad 3. Drogi w grae.


Droga w grae

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.

Wykªad 3. Drogi w grae.


Droga w grae

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 .

Wykªad 3. Drogi w grae.


Droga w grae

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 .

Wykªad 3. Drogi w grae.


Droga w grae

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 .

Wykªad 3. Drogi w grae.


Droga w grae

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.

Wykªad 3. Drogi w grae.


Stopie« wierzchoªka

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 ).

Wykªad 3. Drogi w grae.


Stopie« wierzchoªka

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

Wykªad 3. Drogi w grae.


Stopie« wierzchoªka

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.

Wykªad 3. Drogi w grae.


Cykl Eulera

Denicja
Drog¦ w grae nazywamy drog¡ Eulera je»eli przechodzi ona przez ka»d¡
kraw¦d¹ dokªadnie jeden raz.

Wykªad 3. Drogi w grae.


Cykl Eulera

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.

Wykªad 3. Drogi w grae.


Cykl Eulera

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.

Wykªad 3. Drogi w grae.


Cykl Eulera

Wykªad 3. Drogi w grae.


Cykl Eulera

Wykªad 3. Drogi w grae.


Cykl Eulera

Wykªad 3. Drogi w grae.


Cykl Eulera

Mosty królewieckie

Wykªad 3. Drogi w grae.


Cykl Eulera

Mosty królewieckie

Wykªad 3. Drogi w grae.


Algorytm znajdowania drogi Eulera

Algorytm Fleury'ego

1 Wybierz dowolny wierzchoªek v nieparzystego stopnia - je»eli taki


istnieje. W przeciwnym przypadku wybierz dowolny wierzchoªek v
parzystego stopnia.

Wykªad 3. Drogi w grae.


Algorytm znajdowania drogi Eulera

Algorytm Fleury'ego

1 Wybierz dowolny wierzchoªek v nieparzystego stopnia - je»eli taki


istnieje. W przeciwnym przypadku wybierz dowolny wierzchoªek v
parzystego stopnia.
2 Je»eli z wierzchoªka v nie wychodzi ju» »adna kraw¦d¹, zako«cz
algorytm.

Wykªad 3. Drogi w grae.


Algorytm znajdowania drogi Eulera

Algorytm Fleury'ego

1 Wybierz dowolny wierzchoªek v nieparzystego stopnia - je»eli taki


istnieje. W przeciwnym przypadku wybierz dowolny wierzchoªek v
parzystego stopnia.
2 Je»eli z wierzchoªka v nie wychodzi ju» »adna kraw¦d¹, zako«cz
algorytm.
3 Je»eli zostaªa ostatnia kraw¦d¹ wychodz¡ca z wierzchoªka v do
wierzchoªka w usu« t¦ kraw¦d¹ i wierzchoªek v . Przejd¹ do kroku 5.

Wykªad 3. Drogi w grae.


Algorytm znajdowania drogi Eulera

Algorytm Fleury'ego

1 Wybierz dowolny wierzchoªek v nieparzystego stopnia - je»eli taki


istnieje. W przeciwnym przypadku wybierz dowolny wierzchoªek v
parzystego stopnia.
2 Je»eli z wierzchoªka v nie wychodzi ju» »adna kraw¦d¹, zako«cz
algorytm.
3 Je»eli zostaªa ostatnia kraw¦d¹ wychodz¡ca z wierzchoªka v do
wierzchoªka w usu« t¦ kraw¦d¹ i wierzchoªek v . Przejd¹ do kroku 5.
4 Je»eli zostaªa wi¦cej ni» jedna kraw¦d¹ wychodz¡ca z wierzchoªka v do
wierzchoªka w wybierz t¦ kraw¦d¹ po usuni¦ciu której graf pozostanie
spójny. Usu« t¦ kraw¦d¹.

Wykªad 3. Drogi w grae.


Algorytm znajdowania drogi Eulera

Algorytm Fleury'ego

1 Wybierz dowolny wierzchoªek v nieparzystego stopnia - je»eli taki


istnieje. W przeciwnym przypadku wybierz dowolny wierzchoªek v
parzystego stopnia.
2 Je»eli z wierzchoªka v nie wychodzi ju» »adna kraw¦d¹, zako«cz
algorytm.
3 Je»eli zostaªa ostatnia kraw¦d¹ wychodz¡ca z wierzchoªka v do
wierzchoªka w usu« t¦ kraw¦d¹ i wierzchoªek v . Przejd¹ do kroku 5.
4 Je»eli zostaªa wi¦cej ni» jedna kraw¦d¹ wychodz¡ca z wierzchoªka v do
wierzchoªka w wybierz t¦ kraw¦d¹ po usuni¦ciu której graf pozostanie
spójny. Usu« t¦ kraw¦d¹.
5 Doª¡cz usuni¦t¡ kraw¦d¹ do ci¡gu okre±laj¡cego drog¦ Eulera. Zast¡p
wierzchoªek v wierzchoªkiem w . Przejd¹ do kroku 2.

Wykªad 3. Drogi w grae.


Algorytm znajdowania drogi Eulera

Przykªad zastosowania algorytmu Fleury'ego

Wykªad 3. Drogi w grae.


Algorytm znajdowania drogi Eulera

Przykªad zastosowania algorytmu Fleury'ego

Wykªad 3. Drogi w grae.


Algorytm znajdowania drogi Eulera

Przykªad zastosowania algorytmu Fleury'ego

Wykªad 3. Drogi w grae.


Algorytm znajdowania drogi Eulera

Przykªad zastosowania algorytmu Fleury'ego

Wykªad 3. Drogi w grae.


Algorytm znajdowania drogi Eulera

Przykªad zastosowania algorytmu Fleury'ego

Wykªad 3. Drogi w grae.


Algorytm znajdowania drogi Eulera

Przykªad zastosowania algorytmu Fleury'ego

Wykªad 3. Drogi w grae.


Algorytm znajdowania drogi Eulera

Przykªad zastosowania algorytmu Fleury'ego

Wykªad 3. Drogi w grae.


Cykl Hamiltona

Denicja
Drog¦ w grae nazywamy drog¡ Hamiltona
je»eli przechodzi ona przez ka»dy wierzchoªek
dokªadnie jeden raz.

Wykªad 3. Drogi w grae.


Cykl Hamiltona

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).

Wykªad 3. Drogi w grae.


Cykl Hamiltona

Uwaga: w przeciwie«stwie do grafów Eulera nie jest znane nietrywialne


twierdzenie podaj¡ce warunki konieczne i wystarczaj¡ce istnienia drogi czy
cyklu Hamiltona. Problem znalezienia takich warunków jest jednym z
gªównych nierozwi¡zanych problemów teorii grafów. Znane s¡ jedynie
twierdzenia daj¡ce warunki konieczne albo wystarczaj¡ce.

Wykªad 3. Drogi w grae.


Cykl Hamiltona

Uwaga: w przeciwie«stwie do grafów Eulera nie jest znane nietrywialne


twierdzenie podaj¡ce warunki konieczne i wystarczaj¡ce istnienia drogi czy
cyklu Hamiltona. Problem znalezienia takich warunków jest jednym z
gªównych nierozwi¡zanych problemów teorii grafów. Znane s¡ jedynie
twierdzenia daj¡ce warunki konieczne albo wystarczaj¡ce.
Twierdzenie
Je»eli graf zawiera cykl Hamiltona to dla ka»dego wªa±ciwego, niepustego
podzbioru S zbioru wierzchoªków grafu (∅ = 6 S ( V)

ω(G \ S) ≤ |S|

gdzie ω(G \ S) oznacza liczb¦ skªadowych grafu po usuni¦ciu wierzchoªków


nale»¡cych do zbioru S.

Wykªad 3. Drogi w grae.


Cykl Hamiltona

Przykªad
W grae nie istnieje cykl
Hamiltona.

Wykªad 3. Drogi w grae.


Cykl Hamiltona

Przykªad
W grae nie istnieje cykl
Hamiltona.
Usuwamy trzy wierzchoªki

|S| = 3.

Wykªad 3. Drogi w grae.


Cykl Hamiltona

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.

Wykªad 3. Drogi w grae.


Cykl Hamiltona

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).

Wykªad 3. Drogi w grae.


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.

Wykªad 3. Drogi w grae.


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.

Wykªad 3. Drogi w grae.

You might also like