Algorytmy grafowe (AGR 320)

Podobne dokumenty
Algorytmy grafowe. Wykład 2 Przeszukiwanie grafów. Tomasz Tyksiński CDV

Algorytmy grafowe. Wykład 1 Podstawy teorii grafów Reprezentacje grafów. Tomasz Tyksiński CDV

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott

Ogólne wiadomości o grafach

Reprezentacje grafów nieskierowanych Reprezentacje grafów skierowanych. Wykład 2. Reprezentacja komputerowa grafów

Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, Grafy dzielimy na grafy skierowane i nieskierowane:

5. Najkrótsze ścieżki

Przykłady grafów. Graf prosty, to graf bez pętli i bez krawędzi wielokrotnych.

a) 7 b) 19 c) 21 d) 34

Algorytmiczna teoria grafów

MATEMATYKA DYSKRETNA - MATERIAŁY DO WYKŁADU GRAFY


Porównanie algorytmów wyszukiwania najkrótszych ścieżek międz. grafu. Daniel Golubiewski. 22 listopada Instytut Informatyki

TEORIA GRAFÓW I SIECI

Zestawienie porownawcze najpopularniejszych i darmowych programow GPS. dostepnych na smartfony i tablety

Wykład 10 Grafy, algorytmy grafowe

Poniżej 14 r.ż. 1 (0,5%) 1 (0,9%) r.ż. 11 (6,0%) 21 (18,9%) r.ż. 59 (32,2%) 44 (39,6%) r.ż. 38 (20,8%) 15 (13,5%) Powyżej 25 r.ż.

G. Wybrane elementy teorii grafów

Marek Miszczyński KBO UŁ. Wybrane elementy teorii grafów 1

Matematyka dyskretna

Matematyczne Podstawy Informatyki

Grafy (3): drzewa. Wykłady z matematyki dyskretnej dla informatyków i teleinformatyków. UTP Bydgoszcz

Sprawozdanie do zadania numer 2

Matematyczne Podstawy Informatyki

ñ 1 9! Ù DEF+>/ P Q V { Ó bbó 1 YZ"p¼~ Þ Üb á \ V ~ Y Z#'! Ù DEF+>/P Q V g E o 9 &5


Matematyka dyskretna. Andrzej Łachwa, UJ, /14

! "!"#$ %&' ( 01, #6789:01" )*; ( <, = >? * (&# +( ) * A B C D E * (&# -.F B G H I JK L I JM N O O P Q R S D 4 T * (&# +U,* -.VW/XYV

Algorytmy z powracaniem

Algorytmiczna teoria grafów

Złożoność obliczeniowa klasycznych problemów grafowych

TEORETYCZNE PODSTAWY INFORMATYKI

Algorytm Dijkstry znajdowania najkrótszej ścieżki w grafie

Temat: Struktury danych do reprezentacji grafów. Wybrane algorytmy grafowe.

ń ę ńń ń

ĄĄ

Ą ń Ę Ę ź Ę Ę Ę ź Ż ź Ę ń ń ć Ę ź Ż


Sortowanie topologiczne skierowanych grafów acyklicznych

Wykład 7. Algorytmy grafowe

)+*-,-.0/1* *3/:.<;>=?: K L M N

Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1

Grafy i Zastosowania. 9: Digrafy (grafy skierowane) c Marcin Sydow

BI< ¾BIèéåê A, I BI< ¾ BI V W ¼ AWE. ¾BI ë 1 ' A+ KI< ¾BI ' 1 ÙÏf ÚÛ Ü õi ¹ Ý /. â I. +I%ñª" «òóh>?n /5 c ô5 3E3. y fg " }~ IªúA*!

! " # $ % & ' ( ) * +,

Digraf. 13 maja 2017

Algorytmy Grafowe. dr hab. Bożena Woźna-Szcześniak, prof. UJD. Wykład 1,2,3. Uniwersytet Humanistyczno-Przyrodniczy im. Jana Długosza w Częstochowie

ć Ź Ę ź Ó ż ż Ś Ć Ś

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

ż ć ć ż Ś ż ż ć ć ć ż ż

Ó Ź ż ć Ą ż ż ć Ę ź Ą ż ż ż ż ż

ź Ś Ż Ę Ś

Ś Ń ć Ę Ą Ę Ś Ń Ó

ó ó ó ó ó ó ń ó ó ó ó ń ó ó ń ń ó ó ó Ś ń ó ń ó ó ó

Ę ń Ó ć ć Ó Ó

Ó Ń Ś Ą Ś Ń Ś Ś

ć ć ć ć ć ć ć ć ć ć ź

Ż ś

Ą Ś Ń Ś Ą Ś Ń

Ą ń ź ż ż Ś ż ć Ś Ó ń ń

Ó Ż ć ć ć ć ć ć ć Ę ć ć ć

Ć ź Ś Ż ź Ę Ś

Ś Ś


Ą Ę Ń Ą ń Ń ń ń Ą ń


Podstawy Programowania 2 Grafy i ich reprezentacje. Plan. Wstęp. Teoria grafów Graf skierowany. Notatki. Notatki. Notatki. Notatki.

. Podstawy Programowania 2. Grafy i ich reprezentacje. Arkadiusz Chrobot. 9 czerwca 2016

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

Digraf o V wierzchołkach posiada V 2 krawędzi, zatem liczba różnych digrafów o V wierzchołkach wynosi 2 VxV

Lista 0. Kamil Matuszewski 1 marca 2016

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne

& & 09!? % <4 5&'? A& A&? ' 50$9 '; DEF ; (H% &I4 J&4 5!KC9 JL"

1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb.

ć ś ć ś ś ś ś ś ć ć Ż ś ś ś ś ź ś ś ź Ó Ś ś ś ś ś ś

0. ELEMENTY LOGIKI. ALGEBRA BOOLE A

Ł Ł Ą Ą Ą Ą Ą Ą Ś Ą Ń

Graf. Definicja marca / 1

ś ść ő ś ś ń Í ś Ż ś Ó ś ś ś Ż Ż Ż ś ść ść Ć Ż ś Ó Ć ś Ć Ć Ć ś ś ś ś Ż Ż ń ś

Ś Ż ć Ą Ż Ż ć Ś Ż Ą Ż Ą ľ Ś ć Ś Ś ć Ś ć ě Ż Ż Ż Ż Ż Ź Ż Ż Í

ü"#" ).pj)[ ø»3).»w3 A+B CD+B" ~!\ äz 01 )+99 _ ) = µ# º»p $ &)+99 _ # 4bcd EF( ÃH ÈÛ3 012'¾

Wykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy

Literatura. 1) Pojęcia: złożoność czasowa, rząd funkcji. Aby wyznaczyć pesymistyczną złożoność czasową algorytmu należy:

Rozwiązywanie problemów metodą przeszukiwania

Drzewa. Jeżeli graf G jest lasem, który ma n wierzchołków i k składowych, to G ma n k krawędzi. Własności drzew

Ń Ś Ó Ó Ć Ś ŃŃ Ó Ą

Ą ć ć ń ż ż ń ń ż ń ż ć ń

UNIWERSYTET GDAŃSKI MATERIAŁY DYDAKTYCZNE DO PRZEDMIOTU MATEMATYKA DYSKRETNA. pod redakcją: Hanna Furmańczyk Karol Horodecki Paweł Żyliński

Ł ś ś ń ń ś

Ę ż Ó Ł Ść ą ą ą Ą ć ż ą ż ń ą ć ż ć Ę ą ż ą ą ż ą ź ą ń ą ń ą ą ż ć

Ą Ó Ź Ą Ź Ź

ż ć ć ż ż ż ż ź ć ż ć ż ż ź ż ć ż ź ż ć ź ż ż ź ć ż ż ć ż

ć Ś

Ż ć ć Ż ź ć ć ż ć ż ć Ż ć Ą ń Ż ć Ę

ż ż Ę Ę Ą Ó

ó ą ę ó ó Ż ć ó ó ó ę Ó ó ą ć ę ó ą ę ż Ó Ń ą ą ę ó Ę ó Ą ć ę ó ą ą ę ó

Ś ź Ś Ś

Ść ć Ż ć Ż Ś ć ż ń ż Ż ć Ś Ż ń

Ą Ś Ó

ń ź ź ń ń ź ć Ń ń Ż ń

Transkrypt:

Algorytmy grafowe (AGR 320) semestr letni 2004/2005 Michał Karoński Wydział Matematyki i Informatyki UAM Algorytmy grafowe (AGR 320) p. 1/9

1. Rodzaje grafów grafy proste multigrafy grafy skierowane (digrafy) grafy ważone hipergrafy Algorytmy grafowe (AGR 320) p. 2/9

2. Reprezentacje grafów 2.1 Macierz przyległości (sasiedztwa) Definicja (Macierz przyległości). Dany jest graf G = (V, E), przy czym V = {v 1,v 2,...,v n } jest zbiorem wierzchołków, to n n macierz A(G) = (a ij ), gdzie a ij jest liczba krawędzi łacz acych wierzchołki v i oraz v j nazywa się macierza przyległości grafu G. W przypadku grafu skierowanego a ij jest liczba łuków z wierzchołka v i do v j. Algorytmy grafowe (AGR 320) p. 3/9

v 3 v 1 v 2 Rysunek 1: Przykład grafu prostego G = (V,E), gdzie V = {v 1,v 2,v 3,v 4,v 5 },E = {e 1,e 2,e 3,e 4,e 5,e 6,e 7 }, e 1 = v 1 v 2,e 2 = v 2 v 3,e 3 = v 2 v 5,e 4 = v 3 v 4,e 5 = v 2 v 4,e 6 = v 4 v 6,e 7 = v 1 v 4. v 5 v 4 Algorytmy grafowe (AGR 320) p. 4/9

Przykład. Macierz przyległości dla grafu przedstawionego na Rysunku 1. A(G) = v 1 v 2 v 3 v 4 v 5 v 1 0 1 0 1 0 v 2 1 0 1 1 1 v 3 0 1 0 1 0 v 4 1 1 1 0 1 v 5 0 1 0 1 0 = 0 1 0 1 0 1 0 1 1 1 0 1 0 1 0 1 1 1 0 1 0 1 0 1 0. Algorytmy grafowe (AGR 320) p. 5/9

macierz przyległości (sasiedztwa) A(G) jest macierza binarna (dla grafu prostego) macierz przyległości wymaga V 2 = n 2 bitów pamięci jeżeli w jest długościa słowa maszynowego, to każdy wiersz macierzy przyległości można zapisać jako ciag n bitów w n/w słowach maszynowych ( x oznacza najmniejsza liczbę całkowita nie mniejsza niż x) graf prosty: A(G) jest symetryczna - n(n 1)/2 bitów graf skierowany: n n/w reprezentacja macierzowa jest korzystniejsza dla grafów gęstych Algorytmy grafowe (AGR 320) p. 6/9

2.2 Macierz incydencji Definicja (Macierz incydencji). Dany jest graf G = (V, E), przy czym V = {v 1,v 2,...,v n } jest zbiorem wierzchołków natomiast E = {e 1,e 2,...,e m } zbiorem krawędzie grafu, to macierz M(G) = (m ij )1, 1 i n, 1 j m, gdzie liczba m ij {0, 1, 2} oznacza ile razy v i oraz e j s a incydentne ( 2 występuje w przypadku pętli), jest macierza incydencji grafu G. Algorytmy grafowe (AGR 320) p. 7/9

e 7 v 3 e 4 e 6 e 5 e 2 e 3 v 1 e 1 v 2 v 5 v 4 Algorytmy grafowe (AGR 320) p. 8/9

Przykład. Macierz incydencji dla grafu przedstawionego na Rysunku 1. G = (V,E): V = 5, E = 7, V = {v 1, v 2, v 3, v 4, v 5 }, E = {e 1, e 2, e 3, e 4, e 5, e 6, e 7 }, e 1 = v 1 v 2, e 2 = v 2 v 3, e 3 = v 2 v 5, e 4 = v 3 v 4, e 5 = v 2 v 4, e 6 = v 4 v 5, e 7 = v 1 v 4. M(G) = e 1 e 2 e 3 e 4 e 5 e 6 e 7 v 1 1 0 0 0 0 0 1 v 2 1 1 1 0 1 0 0 v 3 0 1 0 1 0 0 0 v 4 0 0 0 1 1 1 1 v 5 0 0 1 0 0 1 0 Algorytmy grafowe (AGR 320) p. 9/9

Macierz incydencji wymaga V E bitów pamięci, co może być liczba większa niż V 2 bitów zajmowanych przez macierz przyległości, ponieważ liczba krawędzi E jest często większa niż liczba wierzchołków V. W niektórych jednak przypadkach może być korzystniejsze użycie macierzy incydencji, niż macierzy przyległości pomimo zwiększonej zajętości pamięci. Macierze incydencji sa szczególnie dogodne przy rozpatrywaniu obwodów elektrycznych i układów przełaczaj acych. Algorytmy grafowe (AGR 320) p. 10/9

2.3 Lista krawędzi Innym, często stosowanym sposobem reprezentacji grafu jest wypisanie wszystkich jego krawędzi jako par wierzchołków. Tak na przykład, graf z Rysunku 1 byłby przedstawiony jako lista następujacych nieuporzadkowanych par: (v 1,v 2 ), {v 1,v 4 }, {v 2,v 3 }, {v 2,v 4 }, {v 2,v 5 }, {v 3,v 4 }, {v 4,v 5 }. Dla grafu skierowanego, były by to uporzadkowane pary wierzchołków odpowiadajace łukom. Algorytmy grafowe (AGR 320) p. 11/9

liczba bitów potrzebna do zaetykietowania (etykietami od 1 do n) wierzchołków grafu G jest równa b, gdzie 2 b 1 < n 2 b, czyli b = log 2 n + 1 całkowita zajętość pamięci jest równa 2 E b bitów ten sposób reprezentacji jest bardziej ekonomiczny niż macierz przyległości, jeżeli 2 E b < V 2 reprezentacja listowa" jest korzystniejsza dla grafów rzadkich przechowywanie i przekształcanie grafu w komputerze jest trudniejsze (na przykład przy badaniu spójności grafu) Algorytmy grafowe (AGR 320) p. 12/9

2.4 Dwie tablice liniowe modyfikacja listy krawędzi - przedstawienie grafu za pomoca dwóch tablic liniowych: F = (f 1,f 2,...,f e ), H = (h 1,h 2,...,h e ). elementy tablic: etykiety wierzchołków, e = E G graf skierowany: i-ty łuk, e i, prowadzi od wierzchołka f i, do wierzchołka h i G graf nieskierowany: krawędź e i łaczy f i i h i. dogodna reprezentacja do sortowania w grafach ważonych Algorytmy grafowe (AGR 320) p. 13/9

Przykład. Dwie tablice liniowe dla grafu przedstawionego na Rysunku 1. e 7 v 3 e 4 e 6 e 5 e 2 e 3 v 1 e 1 v 2 v 5 v 4 F = (v 1,v 2,v 2,v 3,v 2,v 4,v 1 ), H = (v 2,v 3,v 5,v 4,v 4,v 5,v 4 ). Algorytmy grafowe (AGR 320) p. 14/9

2.5 Lista wierzchołków sasiednich (następników) efektywna metoda reprezentacji grafów stosowana w przypadku gdy stosunek E / V nie jest duży dla każdego wierzchołka v tworzymy listę (tablicę), której pierwszym elementem jest v; a pozostałymi elementami sa: wierzchołki będace sasiadami wierzchołka v (w przypadku grafu nieskierowanego) bezpośredni następnicy wierzchołka v, tzn. wierzchołki, do których istnieje łuk z wierzchołka v (w przypadku grafu skierowanego) Algorytmy grafowe (AGR 320) p. 15/9

v 3 v 1 v 2 v 5 v 4 v 1 : v 2, v 4 v 2 : v 1, v 3, v 4, v 5 v 3 : v 2, v 4 v 4 : v 1, v 2, v 3, v 5 v 5 : v 2, v 4 Algorytmy grafowe (AGR 320) p. 16/9

1 2 5 3 4 6 1 2 3 2 1 3 4 6 3 4 1 2 2 3 4 5 5 4 6 6 2 5 Algorytmy grafowe (AGR 320) p. 17/9

1 2 5 3 4 6 1 2 3 4 5 6 2 4 6 1 2 4 5 6 6 Algorytmy grafowe (AGR 320) p. 18/9

3. Przeszukiwanie grafów Znajdujac się w pewnym wierzchołku v przeszukujemy wszystkie krawędzie incydentne do v, a następnie poruszamy się do pewnego wierzchołka przyległego w. W wierzchołku w przeszukujemy wszystkie krawędzie incydentne do w. Ten proces prowadzi się dotad, aż przeszuka się wszystkie wierzchołki w grafie. Metodę tę nazywa się przeszukiwaniem wszerz (ang. breadth-first search, często oznaczane skrótowo BFS). Algorytmy grafowe (AGR 320) p. 19/9

zamiast przeszukiwać każda krawędź incydentna do wierzchołka v, poruszamy się do pewnego wierzchołka przyległego w (wierzchołka, w którym dotychczas jeszcze nie byliśmy), gdy tylko to jest możliwe, pozostawiajac na razie wierzchołek v z być może niezbadanymi krawędziami. Inaczej mówiac, podażamy przez graf ścieżka przechodzac do nowego wierzchołka, gdy tylko to jest możliwe. Taka metoda przeszukiwania grafu, zwana przeszukiwaniem w głab (ang. depth-first search, w skrócie DFS) lub metoda powrotu po tej samej ścieżce na grafie. upraszcza wiele algorytmów teorii grafów, ze względu na otrzymywane ponumerowanie wierzchołków i skierowanie krawędzi. Algorytmy grafowe (AGR 320) p. 20/9

3.1 Przeszukiwanie grafu wszerz (BFS) G = (V, E) - graf nieskierowanym reprezentowanym w postaci listy wierzchołków sasiednich. x - ustalony wierzchołek z którego należy rozpoczać przeszukiwanie grafu I v - tablica zawierajaca wierzchołki incydentne z v NI v liczba elementów w I v Algorytmy grafowe (AGR 320) p. 21/9

1. Ustaw: Numer[x] 1, Drzewo, Pozostale ; dopisz x do Kolejki. 2. Jeżeli Kolejka jest pusta to STOP. 3. Pobierz element z Kolejki i zapisz go jako v. 4. Dla każdego wierzchołka w incydentnego do v wykonaj: (a) Jeżeli Numer[w] = 0, tzn. wierzchołek w odwiedzamy po raz pierwszy, to nadaj wierzchołkowi w kolejny numer, dopisz w do Kolejki, a krawędź vw dodaj do Drzewo. (b) Jeżeli Numer[w] 0, tzn. wierzchołek w już był odwiedzany, natomiast krawędź vw / Drzewo to dodaj ja do zbioru Pozostale. 5. Wróć do kroku 2. Algorytmy grafowe (AGR 320) p. 22/9

(G, x) Numer[x] Ponumerowano 1 NKolejka 1; Kolejka[NKolejka] x NKolejka > 0 v Kolejka[1] NKolejka NKolejka 1 i 1 NKolejka Kolejka[i] Kolejka[i + 1] i 1 NIv w Iv[i] Numer[w] = 0 Ponumerowano Ponumerowano + 1 N umer[w] P onumerowano Drzewo Drzewo {vw} NKolejka NKolejka + 1 Kolejka[N Kolejka] w!numer, Drzewo, {vw} Algorytmy grafowe (AGR 320) p. 23/9

' () & % "#$ G, x 2 1 0 / -. +, +, * 3 N umer, Drzewo, Numer[x] Ponumerowano 1 NKolejka 1; Kolejka[NKolejka] x NKolejka > 0 v Kolejka[1] NKolejka NKolejka 1 i 1 NKolejka Kolejka[i] Kolejka[i + 1] i 1 NI v w I v [i] Numer[w] = 0 Ponumerowano Ponumerowano + 1 N umer[w] P onumerowano Drzewo Drzewo {vw} NKolejka NKolejka + 1 Kolejka[N Kolejka] w {vw} (N umer, Drzewo, ) # 4 5 # % $ )'#B A D % ( N&L &B G %& G %& D % D % ' G ( % ( % L )B ( #M B B 6 7879 6 7879 <= :; 6 7879 <= :; <= :; 6 7879 <= :; 3 2 > 3 2? 3 2 @ 3 2 C 3 2 E 3 2 F 3 2 H 3 2 I 3 2 J 3 2 >K 3 2 >> 3 2 >? 3 2 >@ 3 2 >C 3 2 >E 3 3 2 >F 2 >H 3 2 >I Algorytmy grafowe (AGR 320) p. 24/9

Przykład. Przeszukiwanie grafu wszerz OP QRS T UVW G,x ]^ \ [ XZ XY _ q v wx tu r s tz y s N umer, Drzewo, Numer[x] Ponumerow 1 NKolejka 1; Kolejka[NKolejka] x P PQ Rà VTP knkolejka > 0 j h fg i b cdce v Kolejka[1] NKolejka NKolejka 1 m RSi 1 U RNKolejka a = 1 Sk l R l RKolejka[i] Kolejka[i + 1] m RSi 1 w I v [i] Numer[w] = 0 Ponumerow Ponumerow + 1 Numer[w] Ponumerow Drzewo Drzewo {vw} NKolejka NKolejka + 1 Kolejka[N Kolejka] w l R U RNIv T m V U kn f okbcdce g Pk U psn(numer,drzewo, h i h fg b cdce i) b cdce fg h i {vw} b c d e f g Numer[a] 1 Ponumerow 1 Kolejka a NKolejka 1 Algorytmy grafowe (AGR 320) p. 25/9

{ }~ ƒ G,x Š ˆ ž Ÿ «ª a N umer, Drzewo, Numer[x] Ponumerow 1 NKolejka 1; Kolejka[NKolejka] x Œ } ~ NKolejka > 0 ~ Ž v Kolejka[1] NKolejka NKolejka 1 ~i 1 ~NKolejka ~Kolejka[i] Kolejka[i + 1] ~i 1 w I v [i] Numer[w] = 0 Ponumerow Ponumerow + 1 Numer[w] Ponumerow Drzewo Drzewo {vw} NKolejka NKolejka + 1 Kolejka[N Kolejka] w ~ ~NIv š Ž Ž {vw} a = 1 b = 2 c = 3 d e f g v a Kolejka NKolejka 0 œš(numer,drzewo, ) Ž w b Ponumerow 2 Numer[b] 2 Drzewo {ab} Kolejka b NKolejka 1 w c Ponumerow 3 Numer[c] 3 Drzewo {ab,ac} Kolejka b,c NKolejka 2 Algorytmy grafowe (AGR 320) p. 26/9

G,x º» ¹ µ µ ²³ ± ¼ Î Ü Û Ù Ú Ø ÓÖ Ô Õ Ñ ÓÔ Ò Ï ÐÑ Ñb N umer, Drzewo, Numer[x] Ponumerow 1 NKolejka 1; Kolejka[NKolejka] x ½ ¾ ³± ÈNKolejka > 0 Ç È É É ± Ê ³ ² ÈË Å ÃÄ Æ ÀÁÀ v Kolejka[1] NKolejka NKolejka 1 Ê i 1 ² NKolejka É Kolejka[i] Kolejka[i + 1] Ê i 1 ² NIv w I v [i] Numer[w] = 0 Ponumerow Ponumerow + 1 Numer[w] Ponumerow Drzewo Drzewo {vw} NKolejka NKolejka + 1 Kolejka[N Kolejka] w à ÌÈ ÀÁÀÂ Ä È ² Í Ë(Numer,Drzewo, Å Æ Å ÃÄ ÀÁÀ Æ) ÀÁÀ ÃÄ Å Æ {vw} a = 1 b = 2 c = 3 d = 4 e = 5 f g v b Kolejka c NKolejka 1 w a w c w d Ponumerow 4 Numer[d] 4 Drzewo {ab,ac, Kolejka c,d NKolejka 2 w e Ponumerow 5 Numer[e] 5 Drzewo {ab,ac,bd Kolejka c,d,e NKolejka 3 w f Ponumerow 6 Numer[f] 6 Drzewo {ab,ac,bd, Kolejka c,d,e,f NKolejka 4 Algorytmy grafowe (AGR 320) p. 27/9

ÝÞ ßàá â ãäå G,x ëì ê é æè æç í ÿ c N umer, Drzewo, Numer[x] Ponumerow 1 NKolejka 1; Kolejka[NKolejka] x ß ø Þ î Þ à ï äâþ ùnkolejka > 0 ö ôõ ð ñòñó v Kolejka[1] NKolejka NKolejka 1 ànkolejka àkolejka[i] Kolejka[i + 1] ã ú û àái 1 a = 1 b = 2 c = 3 áù ú à û àái 1 w I v [i] Numer[w] = 0 Ponumerow Ponumerow + 1 Numer[w] Ponumerow Drzewo Drzewo {vw} NKolejka NKolejka + 1 Kolejka[N Kolejka] w ú à ã àniv â û ä ã ùü ô ýùðñòñó õ Þù ã þáü(numer,drzewo, ö ö ôõ ð ñòñó ) ð ñòñó ôõ ö {vw} d = 4 e = 5 f = 6 g = 7 v c Kolejka d,e,f NKolejka 3 w a w b w f w g Ponumerow 7 Numer[g] 7 Drzewo {ab,ac,bd,be,bf,cg} Kolejka d,e,f,g NKolejka 4 Algorytmy grafowe (AGR 320) p. 28/9

G,x 0 > = ; < : 96 58 7 3 56 4 1 23 3d N umer, Drzewo, Numer[x] Ponumerow 1 NKolejka 1; Kolejka[NKolejka] x ) *NKolejka > 0! "#"$ ' ( %& v Kolejka[1] NKolejka NKolejka 1 NKolejka Kolejka[i] Kolejka[i + 1] +, i 1 a = 1 b = 2 c = 3 * +, i 1 w I v [i] Numer[w] = 0 Ponumerow Ponumerow + 1 Numer[w] Ponumerow Drzewo Drzewo {vw} NKolejka NKolejka + 1 Kolejka[N Kolejka] w + NIv, *- %.*!"#"$ & * /-(Numer,Drzewo,! "#"$ ' ' %& ( ()! "#"$ ' %& ( {vw} d = 4 e = 5 f = 6 g = 7 v d Kolejka e,f,g NKolejka 3 w b w e Algorytmy grafowe (AGR 320) p. 29/9

?@ ABC D EFG G,x MN L K H J HI O a o n l m k jg fi h d fg e b cd de N umer, Drzewo, Numer[x] Ponumerow 1 NKolejka 1; Kolejka[NKolejka] x @ P Q @ A B FD@ [NKolejka > 0 Z R STSU X Y VW v Kolejka[1] NKolejka NKolejka 1 BNKolejka BKolejka[i] Kolejka[i + 1] E \ ] BCi 1 a = 1 b = 2 c = 3 w I v [i] Numer[w] = 0 Ponumerow Ponumerow + 1 Numer[w] Ponumerow Drzewo Drzewo {vw} NKolejka NKolejka + 1 Kolejka[N Kolejka] w E`C^(Numer,Drzewo, C [ \ B ] BCi 1 \ B E BNIv D ] F [^ E [ V _[RSTSU W @ R STSU X X VW Y Y) R STSU X VW Y {vw} d = 4 e = 5 f = 6 g = 7 v e Kolejka f,g NKolejka 2 w b w d w f Algorytmy grafowe (AGR 320) p. 30/9

pq rst u vwx G,x ~ } y { yz Ÿ ž œ š f N umer, Drzewo, Numer[x] Ponumerow 1 NKolejka 1; Kolejka[NKolejka] x q qr s wuq ŒNKolejka > 0 ƒ ˆ Š v Kolejka[1] NKolejka NKolejka 1 snkolejka skolejka[i] Kolejka[i + 1] v Ž sti 1 a = 1 b = 2 c = 3 t Œ s Ž sti 1 w I v [i] Numer[w] = 0 Ponumerow Ponumerow + 1 Numer[w] Ponumerow Drzewo Drzewo {vw} NKolejka NKolejka + 1 Kolejka[N Kolejka] w s v sniv u Ž w Œ v ˆ Œƒ qœ v t (Numer,Drzewo, Š ƒ ˆ Š) ƒ ˆ Š {vw} d = 4 e = 5 f = 6 g = 7 v f Kolejka g NKolejka 1 w b w c w g Algorytmy grafowe (AGR 320) p. 31/9

G,x ª ª«± Ã Ñ Ð Î Ï Í ÌÉ ÈË Ê Æ ÈÉ Ç Ä ÅÆ Æg N umer, Drzewo, Numer[x] Ponumerow 1 NKolejka 1; Kolejka[NKolejka] x ² ³ ½NKolejka > 0 ¼ º µ µ ¹» v Kolejka[1] NKolejka NKolejka 1 NKolejka Kolejka[i] Kolejka[i + 1] ¾ i 1 a = 1 b = 2 c = 3 ½ ¾ i 1 w I v [i] Numer[w] = 0 Ponumerow Ponumerow + 1 Numer[w] Ponumerow Drzewo Drzewo {vw} NKolejka NKolejka + 1 Kolejka[N Kolejka] w ¾ NIv ½À ¹ Á½ µ µ ½  À(Numer,Drzewo, º» º µ µ ¹») º µ µ ¹» {vw} d = 4 e = 5 f = 6 g = 7 v g Kolejka NKolejka 0 w c w f Algorytmy grafowe (AGR 320) p. 32/9

3.2 Przeszukiwanie grafu w głab (DFS) G = (V, E) - graf nieskierowanym reprezentowanym w postaci listy wierzchołków sasiednich. x - ustalony wierzchołek z którego należy rozpoczać przeszukiwanie grafu I v - tablica zawierajaca wierzchołki incydentne z v, NI v liczba elementów w I v Stos - tablica przechowujaca ciag wierzchołków umożliwiajaca powrót", N Stos - liczba wierzchołków w Stos Algorytmy grafowe (AGR 320) p. 33/9

1. Ustaw v x, i 0, Drzewo, Pozostale. 2. Ustaw i i + 1, Numer(v) i. 3. Poszukaj nieprzebytej krawędzi incydentnej do wierzchołka v. Jeżeli nie ma takiej krawędzi (tzn. po każdej krawędzi incydentnej do v już przeszliśmy), to przejdź do kroku 5. Wybierz pierwsza nieprzebyta krawędź incydentna do wierzchołka v, powiedzmy vw i przejdź ja. Algorytmy grafowe (AGR 320) p. 34/9

4. Jesteśmy teraz w wierzchołku w. Jeżeli w jest wierzchołkiem, w którym jeszcze nie byliśmy podczas tego szukania (tzn. N umer(w) jest nieokreślony), to dodaj krawędź vw do zbioru Drzewo. Ustaw v w i przejdź do kroku 2. Jeżeli w jest wierzchołkiem, w którym już wcześniej byliśmy (tzn. Numer(w) < Numer(v)), to dodaj krawędź vw do zbioru P ozostale. Przejdź do kroku 3. Jesteśmy więc z powrotem w wierzchołku v. Algorytmy grafowe (AGR 320) p. 35/9

5. Sprawdź, czy istnieje jakaś przebyta krawędź uv w zbiorze Drzewo z Numer(u) < Numer(v). Jeżeli jest taka krawędź, to wróć do wierzchołka u. (Zauważmy, że u jest wierzchołkiem, z którego osiagnięto v po raz pierwszy). Ustaw v u i przejdź do kroku 3. Jeżeli nie ma takiej krawędzi, to zatrzymaj algorytm (jesteśmy z powrotem w korzeniu x po przejściu każdej krawędzi i odwiedzeniu każdego wierzchołka połaczonego z x). Algorytmy grafowe (AGR 320) p. 36/9

Ô Ó Ò Õ Ö Ý (G, x) Numer[x] Ponumerow 1 NStos 1 Stos[NStos] x NStos > 0 Ú Ù ÛÜ Ø Þ ßv STos[NStos] à â å ç è ê Õ NI v = 0 änstos NStos 1 w I v [1] NI v NI v 1 i 1 Ú á ÙÜ ã Ûæ Ü Ü á ßé ã ßNIv Õ Ö Õ Ú á Þ ßIv [i] Iv[i 1] Numer[w] = 0 äponumerow Ponumerow + 1 ÙÜ ã Õ Ý Õ à Õ â Õ å Õ Ûæ Ü Ü Numer[w] Ponumerow Drzewo Drzewo {vw} NStos Nstos + 1 Stos[NStos] w {vw} ë ìíì ñò ïð î ë ìíì ñò ïð î ñò ïð î ë ìíì ýù ü ú øû ø ù ö ô õ ã óé ä éü ç Õ Algorytmy grafowe (AGR 320) p. 37/9

þ ÿ G, x N umer, Drzewo, Numer[x] Ponumerow 1 NStos 1; Stos[NStos] x NStos > 0 v STos[NStos] NI v = 0 $NStos NStos 1 w I v [1] NI v NI v 1 i 1 NI v I v [i] I v [i 1] Numer[w] = 0 Ponumerow Ponumerow + 1 Numer[w] Ponumerow Drzewo Drzewo {vw} NStos Nstos + 1 Stos[NStos] w {vw} ) ÿ ÿ ÿ " ÿ& " " $ ÿ& * $(Numer, Drzewo,! # % ' ( )! # % ' ( Algorytmy grafowe (AGR 320) p. 38/9

Przykład. Przeszukiwanie grafu w głab 0 12345 +, -./ G,x 7 89: 46 ; M R STU PQ N O PV O N umer, Drzewo, Numer[x] Ponumerow 1 NStos 1; Stos[NStos] x - F, <,. = 20, GNStos > 0 Ḣ /G v STos[NStos] NI v = 0 0 I 1 D B C E >?@?A 2 GJNStos NStos 1, G KG w I v [1] NI v NI v 1 I./i 1 Ḣ 0 I 2 1 GJ 1 L/J(Numer,Drzewo, 1.NIv I v [i] I v [i 1] Numer[w] = 0 Ponumerow Ponumerow + 1 Numer[w] Ponumerow Drzewo Drzewo {vw} NStos Nstos + 1 Stos[NStos] w B KG>?@?A C, G D E D B C >?@?A E) B C >?@?A D E {vw} a = 1 b c d e f g Numer[a] 1 Ponumerow 1 Stos [a] NStos 1 Algorytmy grafowe (AGR 320) p. 39/9

WX YZ[ G,x c def `b ]^_`a \ g y }~ z { a N umer, Drzewo, Numer[x] Ponumerow 1 NStos 1; Stos[NStos] x Y r X h X Z i ^\X snstos > 0 p n o q j klkm v STos[NStos] NI v = 0 ^svnstos NStos 1 w I v [1] NI v NI v 1 \ u ] b = 2 a = 1 c ZNIv ZIv[i] Iv[i 1] ] t u Z[i 1 t Z [s Xs ws Numer[w] = 0 Ponumerow Ponumerow + 1 Numer[w] Ponumerow Drzewo Drzewo {vw} NStos Nstos + 1 Stos[NStos] w \ u ^sv ] ] x[v(numer,drzewo, n wsjklkm o Xs p q p n o j klkm q) n o j klkm p q {vw} d e f g v a w b Ponumerow 2 Numer[b] 2 Drzewo {ab} NStos 2 Stos [a,b] Algorytmy grafowe (AGR 320) p. 40/9

ƒ ˆ Š Œ G,x Ž ª«ª«² ± ³b N umer, Drzewo, Numer[x] Ponumerow 1 NStos 1; Stos[NStos] x ƒ ƒ v STos[NStos] NI v = 0 ƒ žnstos > 0 ˆ š œ w I v [1] NI v NI v 1 i 1 ˆ NIv ž NStos NStos 1 Ÿ Iv[i] Iv[i 1] a = 1 b = 2 c = 3 Ÿ ƒ ž ž Numer[w] = 0 Ponumerow Ponumerow + 1 Numer[w] Ponumerow Drzewo Drzewo {vw} ˆ ž NStos Nstos + 1 Stos[NStos] w ˆ (Numer,Drzewo, ž ž š ƒ ž œ š œ) š œ {vw} d e f g v b w a w c Ponumerow 3 Numer[c] 3 Drzewo {ab,bc} NStos 3 Stos [a,b,c] Algorytmy grafowe (AGR 320) p. 41/9

¹ º»¼½¾ µ G,x À ÁÂà ½ Ä Ö ÜÝ àþû ß Þ ÜÝ Ù ÚÛ Ø ä ã á â åc N umer, Drzewo, Numer[x] Ponumerow 1 NStos 1; Stos[NStos] x Ï µ µ Å Æ v STos[NStos] NI v = 0»¹µ ÐNStos > 0 ¹ Ò º Í Ë Ì Î Ç ÈÉÈÊ w I v [1] NI v NI v 1 Ò i 1 º NIv Ñ Iv[i] Iv[i 1]» ÐÓNStos NStos 1 a = 1 b = 2 c = 3 Ñ Ð µ Ð ÔÐ Numer[w] = 0 Ponumerow Ponumerow + 1 Numer[w] Ponumerow Drzewo Drzewo {vw} NStos Nstos + 1 Stos[NStos] w ¹ Ò» º ÐÓ º Õ Ó(Numer,Drzewo, Ë ÔÐÇÈÉÈÊ Ì µ Ð Í Î Í Ë Ì Ç ÈÉÈÊ Î) Ë Ì Ç ÈÉÈÊ Í Î {vw} d e f = 4 g v c w a w b w f Ponumerow 4 Numer[f] 3 Drzewo {ab,bc,cf} NStos 4 Stos [a,b,c,f] Algorytmy grafowe (AGR 320) p. 42/9

ë ìíîïð æç èéê G,x ò óôõ ïñ ö f N umer, Drzewo, Numer[x] Ponumerow 1 NStos 1; Stos[NStos] x è ç ç é ø v STos[NStos] NI v = 0 íëç NStos > 0 ë ì ÿ ý þ ù úûúü w I v [1] NI v NI v 1 í NStos NStos 1 éniv éiv[i] Iv[i 1] ì éêi 1 a = 1 b = 2 c = 3 ê é ç Numer[w] = 0 Ponumerow Ponumerow + 1 Numer[w] Ponumerow Drzewo Drzewo {vw} NStos Nstos + 1 Stos[NStos] w ë í ì ì ê (Numer,Drzewo, ý ùúûúü þ ç ÿ ÿ ý þ ù úûúü ) ý þ ù úûúü ÿ {vw} d e f = 4 g = 5 v f w b w c w g Ponumerow 5 Numer[g] 5 Drzewo {ab,bc,cf,fg} NStos 5 Stos [a,b,c,f,g] Algorytmy grafowe (AGR 320) p. 43/9

G,x &' % $!!" # ( : ; <=> BE D BC? @A = H F BC G F J I > K @g N umer, Drzewo, Numer[x] Ponumerow 1 NStos 1; Stos[NStos] x 3 ) * v STos[NStos] NI v = 0 4NStos > 0 6 1 /0 2 +,-,. w I v [1] NI v NI v 1 47NStos NStos 1 NIv Iv[i] Iv[i 1] 5 6 i 1 a = 1 b = 2 c = 3 4 5 4 84 Numer[w] = 0 Ponumerow Ponumerow + 1 Numer[w] Ponumerow Drzewo Drzewo {vw} NStos Nstos + 1 Stos[NStos] w 6 47 97(Numer,Drzewo, / 84+,-,. 0 4 1 1 2 2) +,-,. /0 1 /0 +,-,. 2 {vw} d e f = 4 g = 5 v g w c w f NStos 4 Stos [a,b,c,f] Algorytmy grafowe (AGR 320) p. 44/9

LM NOP Q RST G,x Z[ Y X U UV W \ n o pqr vy x vw s tu q z vw { z ~ } r tf N umer, Drzewo, Numer[x] Ponumerow 1 NStos 1; Stos[NStos] x N g M ]^ M O v STos[NStos] NI v = 0 SQM hnstos > 0 Q j R w I v [1] NI v NI v 1 e _à`b cd f S hknstos NStos 1 b = 2 a = 1 c ONIv OIv[i] Iv[i 1] R i j OPi 1 Ph i O Mh lh Numer[w] = 0 Ponumerow Ponumerow + 1 Numer[w] Ponumerow Drzewo Drzewo {vw} NStos Nstos + 1 Stos[NStos] w Q j S R hk R mpk(numer,drzewo, c lh_à`b d Mh e e f f) _à`b cd e _à`b cd f {vw} d e f = 4 g = 5 v f NStos 3 Stos [a,b,c] Algorytmy grafowe (AGR 320) p. 45/9

ƒ G,x Ž Œ Š ˆ ª ª«ª«² ± ³ c N umer, Drzewo, Numer[x] Ponumerow 1 NStos 1; Stos[NStos] x ƒ v STos[NStos] NI v = 0 œnstos > 0 ž w I v [1] NI v NI v 1 š œÿnstos NStos 1 ƒniv ƒiv[i] Iv[i 1] ž ƒ i 1 a = 1 b = 2 c = 3 œ ƒ œ œ Numer[w] = 0 Ponumerow Ponumerow + 1 Numer[w] Ponumerow Drzewo Drzewo {vw} NStos Nstos + 1 Stos[NStos] w ž œÿ Ÿ(Numer,Drzewo, œ œ š) š š {vw} d e f = 4 g = 5 v c w g NStos 2 Stos [a,b] Algorytmy grafowe (AGR 320) p. 46/9

¹ º»¼ µ G,x Âà Á À ½ ½¾ Ä Ö ÜÝ Ù ÚÛ Ø Û à Þ ÜÝ ß Þ ã á â ä åb N umer, Drzewo, Numer[x] Ponumerow 1 NStos 1; Stos[NStos] x µ Å µ Æ»¹µ ÐNStos > 0 Ï v STos[NStos] NI v = 0 ¹ Ò º Í ËÌ Î Ç ÈÉÈÊ w I v [1] NI v NI v 1 Ò i 1 º NIv Ñ Iv[i] Iv[i 1]» ÐÓNStos NStos 1 a = 1 b = 2 c = 3 Ð Ñ µ Ð ÔÐ Numer[w] = 0 Ponumerow Ponumerow + 1 Numer[w] Ponumerow Drzewo Drzewo {vw} NStos Nstos + 1 Stos[NStos] w ¹ Ò» º ÐÓ º Õ Ó(Numer,Drzewo, Ë ÔÐÇÈÉÈÊ Ì µ Ð Í Í Î Î) Ç ÈÉÈÊ ËÌ Í ËÌ Ç ÈÉÈÊ Î {vw} d = 6 e f = 4 g = 5 v b w d Ponumerow 6 Numer[d] 5 Drzewo {ab,bc,cf,fg,bd} NStos 3 Stos [a,b,d] Algorytmy grafowe (AGR 320) p. 47/9

æç èéê ë ìíî G,x ôõ ó ò ï ïð ñ ö d N umer, Drzewo, Numer[x] Ponumerow 1 NStos 1; Stos[NStos] x è ç ç é ø v STos[NStos] NI v = 0 íëç NStos > 0 ë ì ÿ ýþ ù úûúü w I v [1] NI v NI v 1 í NStos NStos 1 éniv éiv[i] Iv[i 1] ì éêi 1 a = 1 b = 2 c = 3 é ê ç Numer[w] = 0 Ponumerow Ponumerow + 1 Numer[w] Ponumerow Drzewo Drzewo {vw} NStos Nstos + 1 Stos[NStos] w ë í ì ì ê (Numer,Drzewo, ý ùúûúü þ ç ÿ ÿ ) ù úûúü ýþ ÿ ýþ ù úûúü {vw} d = 6 e = 7 f = 4 g = 5 v d w b w e Ponumerow 7 Numer[e] 7 Drzewo {ab,bc,cf,fg,bd,de} NStos 4 Stos [a,b,d,e] Algorytmy grafowe (AGR 320) p. 48/9

G,x % &'( "# "$! ) ; F @G C DE B A @? < => FH =GE A L K I J @e N umer, Drzewo, Numer[x] Ponumerow 1 NStos 1; Stos[NStos] x 4 * + v STos[NStos] NI v = 0 5NStos > 0 7 2 0 1 3, -.-/ w I v [1] NI v NI v 1 58NStos NStos 1 NIv Iv[i] Iv[i 1] 6 7 i 1 a = 1 b = 2 c = 3 6 5 5 95 Numer[w] = 0 Ponumerow Ponumerow + 1 Numer[w] Ponumerow Drzewo Drzewo {vw} NStos Nstos + 1 Stos[NStos] w 7 58 :8(Numer,Drzewo, 0 95,-.-/ 1 5 2 3 2 0 1, -.-/ 3) 0 1, -.-/ 2 3 {vw} d = 6 e = 7 f = 4 g = 5 v e w b w d NStos 3 Stos [a,b,d] Algorytmy grafowe (AGR 320) p. 49/9

R STUVW MN OPQ G,x Y Z[\ VX ] p o { u x yz w v u t q rs {} r z v ~ ud àbacnumer,drzewo, Numer[x] Ponumerow 1 NStos 1; Stos[NStos] x N P^_ NO TRN instos > 0 h v STos[NStos] NI v = 0 R k S w I v [1] NI v NI v 1 f d e g T ilnstos NStos 1 PNIv PIv[i] Iv[i 1] S j k PQi 1 a = 1 b = 2 c = 3 j P Qi Ni mi Numer[w] = 0 Ponumerow Ponumerow + 1 Numer[w] Ponumerow Drzewo Drzewo {vw} NStos Nstos + 1 Stos[NStos] w R k T S il S nql(numer,drzewo, d mìabac e Ni f g f d àbac e g) f d àbac e g {vw} d = 6 e = 7 f = 4 g = 5 v d NStos 2 Stos [a,b] Algorytmy grafowe (AGR 320) p. 50/9

ªb ƒ ˆ Š Œ G,x Ž ª± «ª ± ² «µ ³ N umer, Drzewo, Numer[x] Ponumerow 1 NStos 1; Stos[NStos] x ƒ ƒ v STos[NStos] NI v = 0 ƒ žnstos > 0 ˆ š œ w I v [1] NI v NI v 1 i 1 ˆ NIv ž NStos NStos 1 Ÿ Iv[i] Iv[i 1] a = 1 b = 2 c = 3 Ÿ ƒ ž ž Numer[w] = 0 Ponumerow Ponumerow + 1 Numer[w] Ponumerow Drzewo Drzewo {vw} ˆ ž NStos Nstos + 1 Stos[NStos] w ˆ (Numer,Drzewo, ž ž š ƒ ž œ š œ) š œ {vw} d = 6 e = 7 f = 4 g = 5 v b w f NStos 1 Stos [a] Algorytmy grafowe (AGR 320) p. 51/9

¼ ½¾ ÀÁ ¹º» G,x à ÄÅÆ ÀÂ Ç Ú Ù å ßæ â ãä á à ß Þ Û ÜÝ åç Üæä à ë ê è é ßa N umer, Drzewo, Numer[x] Ponumerow 1 NStos 1; Stos[NStos] x ¾¼ ÓNStos > 0 v STos[NStos] NI v = 0 ¹ Ò ºÈ É ¼ Õ ½ Ð Î Ï Ñ Ê ËÌËÍ w I v [1] NI v NI v 1 ¾ ÓÖNStos NStos 1 ºNIv ºIv[i] Iv[i 1] ½ Ô Õ º»i 1 a = 1 b = 2 c = 3 Ô º»Ó Ó Ó Numer[w] = 0 Ponumerow Ponumerow + 1 Numer[w] Ponumerow Drzewo Drzewo {vw} NStos Nstos + 1 Stos[NStos] w ¼ Õ ¾ ½ ÓÖ ½ Ø»Ö(Numer,Drzewo, Î ÓÊËÌËÍ Ï Ó Ð Ñ Ð Î Ï Ê ËÌËÍ Ñ) Î Ï Ê ËÌËÍ Ð Ñ {vw} d = 6 e = 7 f = 4 g = 5 v a w c NStos 0 Stos [ ] Algorytmy grafowe (AGR 320) p. 52/9

Własności DFS las przeszukiwań w głab (drzewo gdy graf jest spójny) wierzchołek odwiedzony - odwiedzony po raz pierwszy podczas przeszukiwania wierzchołek przetworzony - lista sasiedztwa została całkowicie zbadana etykiety czasowe : każdemu wierzchołki przyporzadkowujemy dwie liczby całkowite z przedziału 1,...2 V czas odwiedzin czas przetworzenia Algorytmy grafowe (AGR 320) p. 53/9

Algorytmy grafowe (AGR 320) p. 54/9

1/ Algorytmy grafowe (AGR 320) p. 55/9

1/ 2/ Algorytmy grafowe (AGR 320) p. 56/9

1/ 2/ 3/ Algorytmy grafowe (AGR 320) p. 57/9

1/ 2/ 3/ 4/ Algorytmy grafowe (AGR 320) p. 58/9

1/ 2/ 3/ 4/ 5/ Algorytmy grafowe (AGR 320) p. 59/9

1/ 2/ 3/ 4/ 5/ Algorytmy grafowe (AGR 320) p. 60/9

1/ 2/ 3/ 4/ 5/6 Algorytmy grafowe (AGR 320) p. 61/9

1/ 2/ 3/ 4/ 5/6 Algorytmy grafowe (AGR 320) p. 62/9

1/ 2/ 3/ 4/ 7 5/6 Algorytmy grafowe (AGR 320) p. 63/9

1/ 2/ 3/ 4/ 7 5/6 Algorytmy grafowe (AGR 320) p. 64/9

1/ 2/ 3/ 8 4/ 7 5/6 Algorytmy grafowe (AGR 320) p. 65/9

1/ 2/ 3/ 8 9/ 4/ 7 5/6 Algorytmy grafowe (AGR 320) p. 66/9

1/ 2/ 3/ 8 9/ 10/ 4/ 7 5/6 Algorytmy grafowe (AGR 320) p. 67/9

1/ 2/ 3/ 8 9/ 10/ 4/ 7 5/6 Algorytmy grafowe (AGR 320) p. 68/9

1/ 2/ 3/ 8 9/ 10/11 4/ 7 5/6 Algorytmy grafowe (AGR 320) p. 69/9

1/ 2/ 3/ 8 9/ 12 10/11 4/ 7 5/6 Algorytmy grafowe (AGR 320) p. 70/9

1/ 2/ 13 3/ 8 9/ 12 10/11 4/ 7 5/6 Algorytmy grafowe (AGR 320) p. 71/9

1/ 14 2/ 13 3/ 8 9/ 12 10/11 4/ 7 5/6 Algorytmy grafowe (AGR 320) p. 72/9

Algorytmy grafowe (AGR 320) p. 73/9

1/ Algorytmy grafowe (AGR 320) p. 74/9

1/ 2/ Algorytmy grafowe (AGR 320) p. 75/9

1/ 2/ 3/ Algorytmy grafowe (AGR 320) p. 76/9

1/ 2/ 3/ 4/ Algorytmy grafowe (AGR 320) p. 77/9

1/ 2/ 3/ 4/ Algorytmy grafowe (AGR 320) p. 78/9

1/ 2/ 3/ 4/5 Algorytmy grafowe (AGR 320) p. 79/9

1/ 2/ 3/ 6 4/5 Algorytmy grafowe (AGR 320) p. 80/9

1/ 2/ 7 3/ 6 4/5 Algorytmy grafowe (AGR 320) p. 81/9

1/ 2/ 7 8/ 3/ 6 4/5 Algorytmy grafowe (AGR 320) p. 82/9

1/ 2/ 7 8/ 3/ 6 4/5 Algorytmy grafowe (AGR 320) p. 83/9

1/ 2/ 7 8/9 3/ 6 4/5 Algorytmy grafowe (AGR 320) p. 84/9

1/ 10 2/ 7 8/9 3/ 6 4/5 Algorytmy grafowe (AGR 320) p. 85/9

1/ 10 2/ 7 8/9 3/ 6 4/5 11/ Algorytmy grafowe (AGR 320) p. 86/9

1/ 10 2/ 7 8/9 3/ 6 4/5 11/ 12/ Algorytmy grafowe (AGR 320) p. 87/9

1/ 10 2/ 7 8/9 3/ 6 4/5 11/ 12/ Algorytmy grafowe (AGR 320) p. 88/9

1/ 10 2/ 7 8/9 3/ 6 4/5 11/ 12/13 Algorytmy grafowe (AGR 320) p. 89/9

1/ 10 2/ 7 8/9 3/ 6 4/5 11/ 12/13 Algorytmy grafowe (AGR 320) p. 90/9

1/ 10 2/ 7 8/9 3/ 6 4/5 11/14 12/13 Algorytmy grafowe (AGR 320) p. 91/9

Algorytm DFS w wersji rekurencyjnej ñ òóô ï ð ìíî G, x ûü ú ù ø õ ö õ ö ý N umer, Drzewo, v x Numer[v] Ponumerowano 1 w Γ(v) Numer[w] = 0 Ponumerowano Ponumerowano + 1 N umer[w] P onumerowano Drzewo Drzewo {vw} (G, w) Numer(w) < Numer(v) {vw} (N umer, Drzewo, ) í þ ÿ í ï î ïð ó ÿ ñ ï ó ò í ó ò ò ð ð ñ û ú ù Algorytmy grafowe (AGR 320) p. 92/9

Przykładem zastosowania procedury DF S jest algorytm NUMEROWANIEWSZYSTKICHWIERZCHOŁKÓW, który wykorzystuje procedurę DFS do ponumerowania wszystkich wierzchołków grafu G. & '()' # $%! " G 1 0 / "!. +, - ( &%, - +% * v V Numer[v] 0 Drzewo v V Numer[v] = 0 2 3 2 3 6 4 5 4 5 2 6 7 898: => ;< 3? B A @ (G, v) Algorytmy grafowe (AGR 320) p. 93/9

Uwagi końcowe: złożoność DFS (i wielu algorytmów wykorzystujacych DFS) jest rzędu O( V + E ) dodatkowe informacje na temat poprawności obu algorytmów przeszukiwania grafow oraz ich zastosowań sa zawarte Rozdziale 23 ksiażki Cormena, Leisersona i Rivesta (patrz literatura pomocnicza wykładu) Algorytmy grafowe (AGR 320) p. 94/9