Wykład 2. Reprezentacja komputerowa grafów

Transkrypt

Wykład 2. Reprezentacja komputerowa grafów
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Wykład 2.
Reprezentacja komputerowa grafów
1 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Macierz incydencji
Niech graf G będzie grafem nieskierowanym bez pętli o n wierzchołkach
(x1 , x2 , ..., xn ) i m krawędziach (e1 , e2 , ..., em ).
2 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Macierz incydencji
Niech graf G będzie grafem nieskierowanym bez pętli o n wierzchołkach
(x1 , x2 , ..., xn ) i m krawędziach (e1 , e2 , ..., em ).
Definicja
Określmy macierz A(G ) = [aij ]n×m dla i = 1, ..., n, j = 1, ..., m w następujący
sposób:
3 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Macierz incydencji
Niech graf G będzie grafem nieskierowanym bez pętli o n wierzchołkach
(x1 , x2 , ..., xn ) i m krawędziach (e1 , e2 , ..., em ).
Definicja
Określmy macierz A(G ) = [aij ]n×m dla i = 1, ..., n, j = 1, ..., m w następujący
sposób:
(
1 krawędź ej jest incydentna do i − tego wierzchołka xi ,
aij =
0 w przeciwnym przypadku.
4 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Macierz incydencji
Niech graf G będzie grafem nieskierowanym bez pętli o n wierzchołkach
(x1 , x2 , ..., xn ) i m krawędziach (e1 , e2 , ..., em ).
Definicja
Określmy macierz A(G ) = [aij ]n×m dla i = 1, ..., n, j = 1, ..., m w następujący
sposób:
(
1 krawędź ej jest incydentna do i − tego wierzchołka xi ,
aij =
0 w przeciwnym przypadku.
Tak określona macierz A(G ) nazywa się macierzą incydencji.
5 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Macierz incydencji
Niech graf G będzie grafem nieskierowanym bez pętli o n wierzchołkach
(x1 , x2 , ..., xn ) i m krawędziach (e1 , e2 , ..., em ).
Definicja
Określmy macierz A(G ) = [aij ]n×m dla i = 1, ..., n, j = 1, ..., m w następujący
sposób:
(
1 krawędź ej jest incydentna do i − tego wierzchołka xi ,
aij =
0 w przeciwnym przypadku.
Tak określona macierz A(G ) nazywa się macierzą incydencji.
x1
a
b
x2
x3
c
g
f
d
e
x5
x4
6 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Macierz incydencji
Niech graf G będzie grafem nieskierowanym bez pętli o n wierzchołkach
(x1 , x2 , ..., xn ) i m krawędziach (e1 , e2 , ..., em ).
Definicja
Określmy macierz A(G ) = [aij ]n×m dla i = 1, ..., n, j = 1, ..., m w następujący
sposób:
(
1 krawędź ej jest incydentna do i − tego wierzchołka xi ,
aij =
0 w przeciwnym przypadku.
Tak określona macierz A(G ) nazywa się macierzą incydencji.
x1
a
b
x2
x3
A(G ) =
c
g
f
d
e
x5
x4
x1
x2
x3
x4
x5
a b c d
1 0 0 0
 1 1 0 0

 0 1 1 1

 0 0 1 1
0 0 0 0
e
0
0
0
1
1
f
0
0
1
0
1
g
0
1
0
0
1






7 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Własności macierzy incydencji
każda kolumna A(G ) zawiera dokładnie
dwie jedynki, ponieważ każda krawędź
jest incydentna do dokładnie dwóch
wierzchołków
x1
a
b
x2
x3
c
g
f
d
e
x4
x5
Krawędź a jest incydentna do wierzchołków
x1 i x2 .
x1
x2
x3
x4
x5
a b c d
1 0 0 0
 1 1 0 0

 0 1 1 1

 0 0 1 1
0 0 0 0
e
0
0
0
1
1
f
0
0
1
0
1
g
0
1
0
0
1






8 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Własności macierzy incydencji
każda kolumna A(G ) zawiera dokładnie
dwie jedynki, ponieważ każda krawędź
jest incydentna do dokładnie dwóch
wierzchołków
x1
a
b
x2
liczba jedynek w każdym wierszu równa
się stopniowi odpowiadającego mu
wierzchołka
x3
c
g
f
d
e
x4
x5
deg (x2 ) = 3
x1
x2
x3
x4
x5
a b c d
1 0 0 0
 1 1 0 0

 0 1 1 1

 0 0 1 1
0 0 0 0
e
0
0
0
1
1
f
0
0
1
0
1
g
0
1
0
0
1






9 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Własności macierzy incydencji
każda kolumna A(G ) zawiera dokładnie
dwie jedynki, ponieważ każda krawędź
jest incydentna do dokładnie dwóch
wierzchołków
x1
a
b
x2
liczba jedynek w każdym wierszu równa
się stopniowi odpowiadającego mu
wierzchołka
x3
c
g
f
d
e
wiersz złożony z samych zer
reprezentuje wierzchołek izolowany
x4
x5
x1
x2
x3
x4
x5
a b c d
1 0 0 0
 1 1 0 0

 0 1 1 1

 0 0 1 1
0 0 0 0
e
0
0
0
1
1
f
0
0
1
0
1
g
0
1
0
0
1






10 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Własności macierzy incydencji
każda kolumna A(G ) zawiera dokładnie
dwie jedynki, ponieważ każda krawędź
jest incydentna do dokładnie dwóch
wierzchołków
x1
a
b
x2
liczba jedynek w każdym wierszu równa
się stopniowi odpowiadającego mu
wierzchołka
x3
c
g
f
d
e
wiersz złożony z samych zer
reprezentuje wierzchołek izolowany
x4
x5
krawędzie równoległe tworzą
identyczne kolumny
Krawędzie c i d są równoległe
x1
x2
x3
x4
x5
a b c d
1 0 0 0
 1 1 0 0

 0 1 1 1

 0 0 1 1
0 0 0 0
e
0
0
0
1
1
f
0
0
1
0
1
g
0
1
0
0
1






11 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Własności macierzy incydencji c.d.
Z algorytmicznego punktu widzenia macierz incydencji jest najgorszą formą
reprezentacji grafu.
12 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Własności macierzy incydencji c.d.
Z algorytmicznego punktu widzenia macierz incydencji jest najgorszą formą
reprezentacji grafu.
1
wymaga zdefiniowania tablicy o n · m komórkach, z których większość
jest wypełniona zerami,
13 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Własności macierzy incydencji c.d.
Z algorytmicznego punktu widzenia macierz incydencji jest najgorszą formą
reprezentacji grafu.
1
wymaga zdefiniowania tablicy o n · m komórkach, z których większość
jest wypełniona zerami,
2
odpowiedź na pytanie, czy istnieje krawędź łącząca konkretne
wierzchołki wymaga wykonania m kroków (przeszukania m kolumn).
14 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Modyfikacje macierzy incydencji
W przypadku, gdy graf G ma pętle, wówczas macierz incydencji A(G ) można
zdefiniować następująco:
15 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Modyfikacje macierzy incydencji
W przypadku, gdy graf G ma pętle, wówczas macierz incydencji A(G ) można
zdefiniować następująco:
aij =







1






jeśli krawędź ej jest incydentna do
i − tego wierzchołka xi
i nie jest pętlą przy xi ,




2






0
jeśli krawędź ej jest pętlą przy wierzchołku xi ,
w pozostałych przypadkach
16 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Macierz sąsiedztwa
Niech będzie dany graf G nieskierowany o n wierzchołkach (x1 , x2 , ..., xn ).
17 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Macierz sąsiedztwa
Niech będzie dany graf G nieskierowany o n wierzchołkach (x1 , x2 , ..., xn ).
Definicja
Określamy macierz A(G ) = [aij ]n×n w następujący sposób:
(
aij =
liczbie krawędzi łączących wierzchołek xi z wierzchołkiem xj
0 jeśli nie istnieje krawędź od xi do xj
18 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Macierz sąsiedztwa
Niech będzie dany graf G nieskierowany o n wierzchołkach (x1 , x2 , ..., xn ).
Definicja
Określamy macierz A(G ) = [aij ]n×n w następujący sposób:
(
aij =
liczbie krawędzi łączących wierzchołek xi z wierzchołkiem xj
0 jeśli nie istnieje krawędź od xi do xj
Tak określoną macierz kwadratową stopnia n nazywamy macierzą sąsiedztwa
(przyległości).
19 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Macierz sąsiedztwa
Niech będzie dany graf G nieskierowany o n wierzchołkach (x1 , x2 , ..., xn ).
Definicja
Określamy macierz A(G ) = [aij ]n×n w następujący sposób:
(
aij =
liczbie krawędzi łączących wierzchołek xi z wierzchołkiem xj
0 jeśli nie istnieje krawędź od xi do xj
Tak określoną macierz kwadratową stopnia n nazywamy macierzą sąsiedztwa
(przyległości).
k
h
x1
x2
i
j
c
d
b
e
x4
g
a
x3
f
A(G ) =
x1
x2
x3
x4
x5
 x1
0
 2

 0

 1
3
x2
2
1
0
1
0
x3
0
0
0
1
0
x4
1
1
1
1
1
x5
3
0
0
1
0






x5
20 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Własności macierzy sąsiedztwa
elementy wzdłuż głównej przekątnej są
wszystkie zerami wtedy i tylko wtedy, gdy graf
nie ma pętli.
k
h
x1
x2
i
x3
j
c
d
a
e
x4
g
f
b
x5
Krawędź f jest pętlą przy wierzchołku x4 , więc
a44 = 1 oraz k jest pętlą przy wierzchołku x2 , więc
a22 = 1.
x1
x2
x3
x4
x5
 x1
0
 2

 0

 1
3
x2
2
1
0
1
0
x3
0
0
0
1
0
x4
1
1
1
1
1
x5
3
0
0
1
0






21 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Własności macierzy sąsiedztwa
elementy wzdłuż głównej przekątnej są
wszystkie zerami wtedy i tylko wtedy, gdy graf
nie ma pętli.
jeżeli graf nie ma pętli (albo na przekątnej ma
0), to stopień wierzchołka jest równy sumie
elementów w odpowiednim wierszu lub
kolumnie macierzy A(G )
k
h
x1
x2
i
x3
j
c
d
a
e
x4
g
f
b
x5
deg (x5 ) = 4
x1
x2
x3
x4
x5
 x1
0
 2

 0

 1
3
x2
2
1
0
1
0
x3
0
0
0
1
0
x4
1
1
1
1
1
x5
3
0
0
1
0






22 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Własności macierzy sąsiedztwa
elementy wzdłuż głównej przekątnej są
wszystkie zerami wtedy i tylko wtedy, gdy graf
nie ma pętli.
jeżeli graf nie ma pętli (albo na przekątnej ma
0), to stopień wierzchołka jest równy sumie
elementów w odpowiednim wierszu lub
kolumnie macierzy A(G )
k
h
x1
x2
i
x3
j
c
d
a
e
x4
g
f
b
x5
deg (x5 ) = 4
x1
x2
x3
x4
x5
 x1
0
 2

 0

 1
3
x2
2
1
0
1
0
x3
0
0
0
1
0
x4
1
1
1
1
1
x5
3
0
0
1
0






23 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Własności macierzy sąsiedztwa
elementy wzdłuż głównej przekątnej są
wszystkie zerami wtedy i tylko wtedy, gdy graf
nie ma pętli.
jeżeli graf nie ma pętli (albo na przekątnej ma
0), to stopień wierzchołka jest równy sumie
elementów w odpowiednim wierszu lub
kolumnie macierzy A(G )
macierz sąsiedztwa grafu nieskierowanego jest
macierzą symetryczną
k
h
x1
x2
i
x3
j
c
d
a
e
x4
g
f
b
x5
x1
x2
x3
x4
x5
 x1
0
 2

 0

 1
3
x2
2
1
0
1
0
x3
0
0
0
1
0
x4
1
1
1
1
1
x5
3
0
0
1
0






24 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Własności macierzy sąsiedztwa
Zaleta
Odpowiedź na pytanie, czy istnieje krawędź z xi do xj dostajemy po jednym
kroku.
25 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Własności macierzy sąsiedztwa
Zaleta
Odpowiedź na pytanie, czy istnieje krawędź z xi do xj dostajemy po jednym
kroku.
Wada
Niezależnie od ilości krawędzi w grafie macierz zajmuje n2 jednostek pamięci.
26 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Własności macierzy sąsiedztwa
Zaleta
Odpowiedź na pytanie, czy istnieje krawędź z xi do xj dostajemy po jednym
kroku.
Wada
Niezależnie od ilości krawędzi w grafie macierz zajmuje n2 jednostek pamięci.
Niech P oznacza pewną własność grafu G = hV , E i. Jeśli graf G ma
własność P, to P(G ) = 1, w przeciwnym wypadku — P(G ) = 0.
27 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Własności macierzy sąsiedztwa
Zaleta
Odpowiedź na pytanie, czy istnieje krawędź z xi do xj dostajemy po jednym
kroku.
Wada
Niezależnie od ilości krawędzi w grafie macierz zajmuje n2 jednostek pamięci.
Niech P oznacza pewną własność grafu G = hV , E i. Jeśli graf G ma
własność P, to P(G ) = 1, w przeciwnym wypadku — P(G ) = 0.
Załóżmy, że cecha P ma własności
28 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Własności macierzy sąsiedztwa
Zaleta
Odpowiedź na pytanie, czy istnieje krawędź z xi do xj dostajemy po jednym
kroku.
Wada
Niezależnie od ilości krawędzi w grafie macierz zajmuje n2 jednostek pamięci.
Niech P oznacza pewną własność grafu G = hV , E i. Jeśli graf G ma
własność P, to P(G ) = 1, w przeciwnym wypadku — P(G ) = 0.
Załóżmy, że cecha P ma własności
(a) P(G ) = P(G 0 ), jeśli grafy G i G 0 są izomorficzne,
29 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Własności macierzy sąsiedztwa
Zaleta
Odpowiedź na pytanie, czy istnieje krawędź z xi do xj dostajemy po jednym
kroku.
Wada
Niezależnie od ilości krawędzi w grafie macierz zajmuje n2 jednostek pamięci.
Niech P oznacza pewną własność grafu G = hV , E i. Jeśli graf G ma
własność P, to P(G ) = 1, w przeciwnym wypadku — P(G ) = 0.
Załóżmy, że cecha P ma własności
(a) P(G ) = P(G 0 ), jeśli grafy G i G 0 są izomorficzne,
(b) P(G ) = 0 dla grafu pustego (bez krawędzi) oraz P(G ) = 1 dla grafu
pełnego o dostatecznie dużej liczbie wierzchołków,
30 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Własności macierzy sąsiedztwa
Zaleta
Odpowiedź na pytanie, czy istnieje krawędź z xi do xj dostajemy po jednym
kroku.
Wada
Niezależnie od ilości krawędzi w grafie macierz zajmuje n2 jednostek pamięci.
Niech P oznacza pewną własność grafu G = hV , E i. Jeśli graf G ma
własność P, to P(G ) = 1, w przeciwnym wypadku — P(G ) = 0.
Załóżmy, że cecha P ma własności
(a) P(G ) = P(G 0 ), jeśli grafy G i G 0 są izomorficzne,
(b) P(G ) = 0 dla grafu pustego (bez krawędzi) oraz P(G ) = 1 dla grafu
pełnego o dostatecznie dużej liczbie wierzchołków,
(c) dodawanie krawędzi nie narusza własności P.
31 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Własności macierzy sąsiedztwa
Zaleta
Odpowiedź na pytanie, czy istnieje krawędź z xi do xj dostajemy po jednym
kroku.
Wada
Niezależnie od ilości krawędzi w grafie macierz zajmuje n2 jednostek pamięci.
Niech P oznacza pewną własność grafu G = hV , E i. Jeśli graf G ma
własność P, to P(G ) = 1, w przeciwnym wypadku — P(G ) = 0.
Załóżmy, że cecha P ma własności
(a) P(G ) = P(G 0 ), jeśli grafy G i G 0 są izomorficzne,
(b) P(G ) = 0 dla grafu pustego (bez krawędzi) oraz P(G ) = 1 dla grafu
pełnego o dostatecznie dużej liczbie wierzchołków,
(c) dodawanie krawędzi nie narusza własności P.
Przykładem takiej własności jest istnienie cyklu.
32 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Własności macierzy sąsiedztwa
Twierdzenie
Jeśli P jest własnością spełniającą (a)–(c), to każdy algorytm testujący P na
podstawie macierzy sąsiedztwa wykonuje, w najgorszym przypadku Ω(n2 )
kroków.
33 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Własności macierzy sąsiedztwa
Twierdzenie
Jeśli P jest własnością spełniającą (a)–(c), to każdy algorytm testujący P na
podstawie macierzy sąsiedztwa wykonuje, w najgorszym przypadku Ω(n2 )
kroków.
Twierdzenie
Niech A(G ) będzie macierzą sąsiedztwa grafu G . Wówczas liczba dróg
długości k pomiędzy wierzchołkami xi i xj jest równa bij , gdzie B = Ak .
34 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Przykład
k
h
x1
x2
i
j
c
d
b
e
x4
g
a
x3
f
x5
Drogi długości 2 obliczamy
wyznaczając A2 .
35 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Przykład
k
h
x1
x2
i
x3
j
c
d
a
e
x4
g
f
b
x5



B = A2 = 


0
2
0
1
3
2
1
0
1
0
0
0
0
1
0
1
1
1
1
1
3
0
0
1
0






0
2
0
1
3
Drogi długości 2 obliczamy
wyznaczając A2 .
 
2 0 1 3
14 3

1 0 1 0 
  3 6

0 0 1 0 
= 1 1
1 1 1 1   6 4
0 0 1 0
1 7
1
1
1
1
1
6
4
1
5
4
1
7
1
4
10






36 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Przykład
Na przykład
k
h
x1
x2
i
x3
j
c
e
x4
g
d
a
b42 = a41 a12 + a42 a22 + a43 a32 + a44 a42
+a45 a52
=1·2+1·1+1·0+1·1+1·0=4
Są to drogi gh, gi, jk, fj
f
b
x5



B = A2 = 


0
2
0
1
3
2
1
0
1
0
0
0
0
1
0
1
1
1
1
1
3
0
0
1
0






0
2
0
1
3
Drogi długości 2 obliczamy
wyznaczając A2 .
 
2 0 1 3
14 3

1 0 1 0 
  3 6

0 0 1 0 
= 1 1
1 1 1 1   6 4
0 0 1 0
1 7
1
1
1
1
1
6
4
1
5
4
1
7
1
4
10






37 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Przykład
k
h
x2
i
x1
x3
j
c
d
a
e
x4
g
Wykonując odpowiednie działania
otrzymujemy
f
b
x5



A3 = 


15
37
6
25
48
37
16
4
21
13
6
4
1
5
4
25
21
5
20
23
48
13
4
23
7




 4 
A = 




243
92
25
131
70
92
111
21
91
132
25
21
5
20
23
131
91
20
94
95
70
132
23
95
167






38 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Przykład
Nie są to najkrótsze drogi.
k
h
x2
i
x1
x3
j
c
d
a
e
x4
g
Wykonując odpowiednie działania
otrzymujemy
f
b
x5



A3 = 


15
37
6
25
48
37
16
4
21
13
6
4
1
5
4
25
21
5
20
23
48
13
4
23
7




 4 
A = 




243
92
25
131
70
92
111
21
91
132
25
21
5
20
23
131
91
20
94
95
70
132
23
95
167






39 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Lista krawędzi
Rozważmy graf G o n krawędziach.
Lista krawędzi grafu G implementujemy w postaci dwóch tablic
F = (f1 , f2 , ..., fm ) ,
H = (h1 , h2 , ..., hm ) .
gdzie {fi , hi } reprezentuje krawędź grafu G (łączącą wierzchołki fi i gi ).
2
5
1
3
4
40 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Lista krawędzi
Rozważmy graf G o n krawędziach.
Lista krawędzi grafu G implementujemy w postaci dwóch tablic
F = (f1 , f2 , ..., fm ) ,
H = (h1 , h2 , ..., hm ) .
gdzie {fi , hi } reprezentuje krawędź grafu G (łączącą wierzchołki fi i gi ).
2
5
Mamy
F = (1, 1, 1, 1, 2, 2, 3, 3, 3) ,
1
3
H = (1, 2, 2, 4, 3, 4, 4, 4, 5) .
4
41 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Listy krawędzi
Rozważmy graf G o m krawędziach.
Listy krawędzi grafu G implementujemy w postaci dwóch tablic
F = (f1 , f2 , ..., fm ) ,
H = (h1 , h2 , ..., hm ) .
gdzie {fi , hi } reprezentuje krawędź grafu G (łączącą wierzchołki fi i gi ).
2
5
Mamy
F = (1, 1, 1, 1, 2, 2, 3, 3, 3) ,
1
3
H = (1, 2, 2, 4, 3, 4, 4, 4, 5) .
np. pętla - krawędź {1}, jest
pamiętana jako {f1 , h1 }
4
42 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Własności listy krawędzi
Zaleta
Do reprezentacji grafu potrzebujemy 2m jednostek pamięci (wygodne dla
grafów rzadkich, gdzie liczba krawędzi jest znacznie mniejsza od liczby
wierzchołków).
43 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Własności listy krawędzi
Zaleta
Do reprezentacji grafu potrzebujemy 2m jednostek pamięci (wygodne dla
grafów rzadkich, gdzie liczba krawędzi jest znacznie mniejsza od liczby
wierzchołków).
Wada
Do uzyskania zbioru wierzchołków, do którego prowadzą krawędzie z danego
wierzchołka potrzeba, w najgorszym przypadku, m kroków.
44 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Listy incydencji
Listę incydencji budujemy dla każdego z wierzchołków grafu.
45 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Listy incydencji
Listę incydencji budujemy dla każdego z wierzchołków grafu.
Lista incydencji dla wierzchołka xi ∈ V zawiera listę takich wierzchołków u,
że {xi , u} jest krawędzią w grafie.
46 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Listy incydencji
Listę incydencji budujemy dla każdego z wierzchołków grafu.
Lista incydencji dla wierzchołka xi ∈ V zawiera listę takich wierzchołków u,
że {xi , u} jest krawędzią w grafie.
Lista incydencji dla grafu
2
5
1
3
1:
2:
3:
4:
5:
1
1
2
1
3
2
1
4
2
2
3
4
3
4
4
5
3
4
47 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Listy incydencji
Listę incydencji budujemy dla każdego z wierzchołków grafu.
Lista incydencji dla wierzchołka xi ∈ V zawiera listę takich wierzchołków u,
że {xi , u} jest krawędzią w grafie.
Lista incydencji dla grafu
2
5
1
3
1:
2:
3:
4:
5:
1
1
2
1
3
2
1
4
2
2
3
4
3
4
4
5
3
4
48 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Własności list incydencji
lista incydencji składa się z wektora list
49 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Własności list incydencji
lista incydencji składa się z wektora list
każdą krawędź, w grafach nieskierowanych, musimy pamiętać w dwóch
różnych miejscach, jeżeli rozważymy krawędź {u, w }, to wierzchołek w
znajduje się na liście incydencji wierzchołka v i na odwrót (powyższe
spostrzeżenie nie dotyczy pętli)
50 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Własności list incydencji
lista incydencji składa się z wektora list
każdą krawędź, w grafach nieskierowanych, musimy pamiętać w dwóch
różnych miejscach, jeżeli rozważymy krawędź {u, w }, to wierzchołek w
znajduje się na liście incydencji wierzchołka v i na odwrót (powyższe
spostrzeżenie nie dotyczy pętli)
Zalety
liczba komórek potrzebnych do zapamiętania grafu o n wierzchołkach i
m krawędziach jest, w najgorszym wypadku, proporcjonalna do m + n
(na ogół wystarczy 2m komórek pamięci),
51 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Własności list incydencji
lista incydencji składa się z wektora list
każdą krawędź, w grafach nieskierowanych, musimy pamiętać w dwóch
różnych miejscach, jeżeli rozważymy krawędź {u, w }, to wierzchołek w
znajduje się na liście incydencji wierzchołka v i na odwrót (powyższe
spostrzeżenie nie dotyczy pętli)
Zalety
liczba komórek potrzebnych do zapamiętania grafu o n wierzchołkach i
m krawędziach jest, w najgorszym wypadku, proporcjonalna do m + n
(na ogół wystarczy 2m komórek pamięci),
testowanie istnienia pojedynczej krawędzi, w reprezentacji przy pomocy
listy incydencji, pochłania czas proporcjonalny do n,
52 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Reprezentacja za pomocą list
Własności list incydencji
lista incydencji składa się z wektora list
każdą krawędź, w grafach nieskierowanych, musimy pamiętać w dwóch
różnych miejscach, jeżeli rozważymy krawędź {u, w }, to wierzchołek w
znajduje się na liście incydencji wierzchołka v i na odwrót (powyższe
spostrzeżenie nie dotyczy pętli)
Zalety
liczba komórek potrzebnych do zapamiętania grafu o n wierzchołkach i
m krawędziach jest, w najgorszym wypadku, proporcjonalna do m + n
(na ogół wystarczy 2m komórek pamięci),
testowanie istnienia pojedynczej krawędzi, w reprezentacji przy pomocy
listy incydencji, pochłania czas proporcjonalny do n,
listy incydencji umożliwiają śledzenie wszystkich połączeń wychodzących
z wierzchołka.
53 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Lista incydencji
Macierz incydencji
Niech graf G będzie grafem skierowanym bez
pętli o wierzchołkach x1 , x2 , ..., xn i krawędziach
e1 , e2 , ..., em .
54 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Lista incydencji
Macierz incydencji
Niech graf G będzie grafem skierowanym bez
pętli o wierzchołkach x1 , x2 , ..., xn i krawędziach
e1 , e2 , ..., em .
Macierz incydencji A(G ) = [aij ]n×m dla
i = 1, ..., n, j = 1, ..., m określamy jako:


1
aij = −1


0
jeśli xi jest początkiem ej
jeśli xi jest końcem ej
w pozostałych przypadkach
55 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Lista incydencji
Macierz incydencji
Niech graf G będzie grafem skierowanym bez
pętli o wierzchołkach x1 , x2 , ..., xn i krawędziach
e1 , e2 , ..., em .


1
aij = −1


0
x2
e4
e2
e3
Macierz incydencji A(G ) = [aij ]n×m dla
i = 1, ..., n, j = 1, ..., m określamy jako:
e1
x1
e7
e6
e8
x5
e5
jeśli xi jest początkiem ej
jeśli xi jest końcem ej
w pozostałych przypadkach
A(G ) =
x1
x2
x3
x4
x5
 e1
1
 −1

 0

 0
0
e2
1
0
−1
0
0
e3
−1
0
1
0
0
x4
x3
e4
0
1
−1
0
0
e5
0
0
−1
1
0
e6
0
−1
0
1
0
e7
0
−1
0
1
0
e8
0
−1
0
1
0






56 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Lista incydencji
Macierz sąsiedztwa
Macierz sąsiedztwa dla grafu skierowanego definiujemy identycznie jak dla
grafu nieskierowanego. Przypomnijmy więc, że
Definicja
(
aij =
liczbie krawędzi łączących wierzchołek xi z wierzchołkiem xj
0 jeśli nie istnieje krawędź od xi do xj
57 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Lista incydencji
Macierz sąsiedztwa
Macierz sąsiedztwa dla grafu skierowanego definiujemy identycznie jak dla
grafu nieskierowanego. Przypomnijmy więc, że
Definicja
(
aij =
liczbie krawędzi łączących wierzchołek xi z wierzchołkiem xj
0 jeśli nie istnieje krawędź od xi do xj
58 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Lista incydencji
Przykład
Analogicznie jak dla grafów nieskierowanych, kolejne potęgi macierzy
sąsiedztwa digrafu, odpowiadają macierzy zawierającej liczbę dróg pomiędzy
wierzchołkami.
Macierz sąsiedztwa dla grafu jest postaci


x
a
x4
3
0 0 0 1
 2 0 0 1 

b
A=
 0 0 0 0 
x2
c
d
0 0 1 0
x1
e
59 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Lista incydencji
Przykład
Analogicznie jak dla grafów nieskierowanych, kolejne potęgi macierzy
sąsiedztwa digrafu, odpowiadają macierzy zawierającej liczbę dróg pomiędzy
wierzchołkami.
Macierz sąsiedztwa dla grafu jest postaci


x
a
x4
3
0 0 0 1
 2 0 0 1 

b
A=
 0 0 0 0 
x2
c
d
0 0 1 0
x1
Wówczas

e
0
 0
2
A =
 0
0
0
0
0
0
1
1
0
0


0

2 
 A3 = 

0 
0
0
0
0
0
0
0
0
0
0
2
0
0


0

0 
 A4 = 

0 
0
0
0
0
0
0
0
0
0
0
0
0
0

0
0 

0 
0
60 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Lista incydencji
Przykład
Analogicznie jak dla grafów nieskierowanych, kolejne potęgi macierzy
sąsiedztwa digrafu, odpowiadają macierzy zawierającej liczbę dróg pomiędzy
wierzchołkami.
Macierz sąsiedztwa dla grafu jest postaci


x
a
x4
3
0 0 0 1
 2 0 0 1 

b
A=
 0 0 0 0 
x2
c
d
0 0 1 0
x1
e
Są 4 drogi długości 2:
2
a13
= 1 - droga ca
2
a23
= 1 - droga ba
2
a24
= 2 - dwie drogi dc i ec
Wówczas

0
 0
2
A =
 0
0
0
0
0
0
1
1
0
0


0
0
 0
2 
3
A = 
 0
0 
0
0
0
0
0
0
0
2
0
0


0
0
 0
0 
4
A = 
 0
0 
0
0
0
0
0
0
0
0
0
0

0
0 

0 
0
61 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Lista incydencji
Przykład
Analogicznie jak dla grafów nieskierowanych, kolejne potęgi macierzy
sąsiedztwa digrafu, odpowiadają macierzy zawierającej liczbę dróg pomiędzy
wierzchołkami.
Macierz sąsiedztwa dla grafu jest postaci


x3
a
x4
0 0 0 1
 2 0 0 1 

b
A=
 0 0 0 0 
x
c
2
d
0 0 1 0
x1
e
Są 2 drogi długości 3:
3
a23
= 2 - dwie drogi dca i eca
Wówczas

0
 0
2

A =
0
0
0
0
0
0
1
1
0
0


0
0

2 
 A3 =  0
 0
0 
0
0
0
0
0
0
0
2
0
0


0
0

0 
 A4 =  0
 0
0 
0
0
0
0
0
0
0
0
0
0

0
0 

0 
0
62 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Lista incydencji
Przykład
Analogicznie jak dla grafów nieskierowanych, kolejne potęgi macierzy
sąsiedztwa digrafu, odpowiadają macierzy zawierającej liczbę dróg pomiędzy
wierzchołkami.
Macierz sąsiedztwa dla grafu jest postaci


x
a
x4
3
0 0 0 1
 2 0 0 1 

b
A=
 0 0 0 0 
x2
c
d
0 0 1 0
x1
Wówczas

e
0
 0
2
A =
 0
0
W grafie nie ma dróg długości 4 i więcej
0
0
0
0
1
1
0
0


0

2 
 A3 = 

0 
0
0
0
0
0
0
0
0
0
0
2
0
0


0

0 
 A4 = 

0 
0
0
0
0
0
0
0
0
0
0
0
0
0

0
0 

0 
0
63 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Lista incydencji
Lista incydencji
Podobnie jak dla grafu nieskierowanego, listę incydencji dla digrafu budujemy
dla każdego z jego wierzchołków.
64 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Lista incydencji
Lista incydencji
Podobnie jak dla grafu nieskierowanego, listę incydencji dla digrafu budujemy
dla każdego z jego wierzchołków.
Lista incydencji dla wierzchołka xi ∈ V , zawiera listę takich wierzchołków u,
że (xi , u) jest krawędzią w grafie.
65 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Lista incydencji
z
e
d
f
a
x
u
c
b
y
66 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Lista incydencji
z
e
d
u
f
c
b
a
y
x
x:
y:
z:
u:
y
z
x, u
x, y
67 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Lista incydencji
z
e
d
u
f
c
b
a
y
x
x:
y:
z:
u:
y
z
x, u
x, y
W listach incydencji dla digrafów, każda krawędź pamiętana jest tylko raz.
68 / 69
Reprezentacje grafów nieskierowanych
Reprezentacje grafów skierowanych
Reprezentacje macierzowe
Lista incydencji
Dziękuję za uwagę!!!
69 / 69