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