c Marcin Sydow Grafy i Zastosowania BFS DFS 4: Przeszukiwanie Grafów (BFS, DFS i zastosowania) DFS nieskierowane DFS skierowane Podsumowanie

Podobne dokumenty
c Marcin Sydow Spójno± Grafy i Zastosowania Grafy Eulerowskie 2: Drogi i Cykle Grafy Hamiltonowskie Podsumowanie

Podstawowe algorytmy grafowe i ich zastosowania

Podstawowe algorytmy grafowe i ich zastosowania

Zadania z kolokwiów ze Wst pu do Informatyki. Semestr II.

12: Znajdowanie najkrótszych ±cie»ek w grafach

Minimalne drzewa rozpinaj ce

c Marcin Sydow Przepªywy Grafy i Zastosowania Podsumowanie 12: Przepªywy w sieciach

10a: Wprowadzenie do grafów

Teoria grafów i jej zastosowania. 1 / 126

Algorytmy grafowe 2. Andrzej Jastrz bski. Akademia ETI. Politechnika Gda«ska Algorytmy grafowe 2

Zad. 1 Zad. 2 Zad. 3 Zad. 4 Zad. 5 SUMA. W obu podpunktach zakªadamy,»e kolejno± ta«ców jest wa»na.

c Marcin Sydow Wst p Grafy i Zastosowania Wierzchoªki 8: Kolorowanie Grafów Mapy Kraw dzie Zliczanie Podsumowanie

Grafy i Zastosowania. 9: Digrafy (grafy skierowane) c Marcin Sydow. Digrafy. Porz dki cz ±ciowe * Euler i Hamilton. Turnieje

c Marcin Sydow Podstawy Grafy i Zastosowania Kod Prüfera 3: Drzewa Drzewa ukorzenione * Drzewa binarne Zastosowania Podsumowanie

Grafy. Andrzej Jastrz bski. Akademia ET I. Politechnika Gda«ska

Grafy i Zastosowania. 6: Najkrótsze ±cie»ki. c Marcin Sydow. Najkrótsze cie»ki. Warianty. Relaksacja DAG. Algorytm Dijkstry.

c Marcin Sydow Planarno± Grafy i Zastosowania Tw. Eulera 7: Planarno± Inne powierzchnie Dualno± Podsumowanie

XVII Warmi«sko-Mazurskie Zawody Matematyczne

Algorytmy i struktury danych

Mosty królewieckie, chi«ski listonosz i... kojarzenie maª»e«stw

Relacj binarn okre±lon w zbiorze X nazywamy podzbiór ϱ X X.

Grafy i Zastosowania. 5: Drzewa Rozpinaj ce. c Marcin Sydow. Drzewa rozpinaj ce. Cykle i rozci cia fundamentalne. Zastosowania

Drzewa Gomory-Hu Wprowadzenie. Drzewa Gomory-Hu. Jakub Š cki. 14 pa¹dziernika 2009

Lab. 02: Algorytm Schrage

Wykªad 1. Wprowadzenie do teorii grafów

Grafy i Zastosowania. 1: Wprowadzenie i poj cia podstawowe. c Marcin Sydow. Wprowadzenie. Podstawowe poj cia. Operacje na grafach.

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

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

Grafy i Zastosowania. 11: Twierdzenia Minimaksowe. c Marcin Sydow. Wst p: Tw. Halla. Dualno± Zbiory niezale»ne. Skojarzenia c.d.

Uczenie Wielowarstwowych Sieci Neuronów o

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

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

Programowanie wspóªbie»ne

Teoria grafów i sieci 1 / 58

Metodydowodzenia twierdzeń

Podziaª pracy. Cz ± II. 1 Tablica sortuj ca. Rozwi zanie

Elementy teorii grafów, sposoby reprezentacji grafów w komputerze

Programowanie wspóªbie»ne

Notatki z AiSD. Nr 2. 4 marca 2010 Algorytmy Zachªanne.

JAO - J zyki, Automaty i Obliczenia - Wykªad 1. JAO - J zyki, Automaty i Obliczenia - Wykªad 1

Teoria grafów i sieci 1 / 188

Elementy teorii grafów, sposoby reprezentacji grafów w komputerze

Wst p teoretyczny do wiczenia nr 3 - Elementy kombinatoryki

Podstawowepojęciateorii grafów

Wybrane poj cia i twierdzenia z wykªadu z teorii liczb

Biedronka. Wej±cie. Wyj±cie. Przykªady. VI OIG Zawody dru»ynowe, Finaª. 19 V 2012 Dost pna pami : 64 MB.

TEORIA GRAFÓW. Graf skierowany dla ka»dej kraw dzi (oznaczanej tutaj jako ªuk) para wierzchoªków incydentnych jest par uporz dkowan {u, v}.

1 Metody iteracyjne rozwi zywania równania f(x)=0

Temat: Problem najkrótszych cieek w grafach waonych, cz. I: Algorytmy typu label - setting.

Wykªad 4. Droga i cykl Eulera i Hamiltona

Minimalne drzewo rozpinaj ce

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Egzaminy i inne zadania. Semestr II.

1 Bª dy i arytmetyka zmiennopozycyjna

Wykªad 7. Ekstrema lokalne funkcji dwóch zmiennych.

Ogólne wiadomości o grafach

Jednowarstwowe Sieci Neuronowe jako. klasykatory do wielu klas. (c) Marcin Sydow

Egzaminy i inne zadania. Semestr II.

Metoda tablic semantycznych. 1 Metoda tablic semantycznych

Algorytmy zwiazane z gramatykami bezkontekstowymi

Minimalne drzewo rozpinaj ce

Listy i operacje pytania

Najkrótsze drogi w grafach z wagami

Zadania z PM II A. Strojnowski str. 1. Zadania przygotowawcze z Podstaw Matematyki seria 2

Algorytmiczna teoria grafów

WST P DO TEORII INFORMACJI I KODOWANIA. Grzegorz Szkibiel. Wiosna 2013/14

Informacje pomocnicze

Metody dowodzenia twierdze«

Algorytmy i Struktury Danych

Programowanie i struktury danych 1 / 44

Bash i algorytmy. Elwira Wachowicz. 20 lutego

Algorytmiczna teoria grafów

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Ukªady równa«liniowych

Wstp. Warto przepływu to

Stereometria (geometria przestrzenna)

Chess. Joanna Iwaniuk. 9 marca 2010

Maszyny Turinga i problemy nierozstrzygalne. Maszyny Turinga i problemy nierozstrzygalne

Szybkie mno»enie wielomianów i macierzy

Lekcja 8 - ANIMACJA. 1 Polecenia. 2 Typy animacji. 3 Pierwsza animacja - Mrugaj ca twarz

1) Grafy eulerowskie własnoci algorytmy. 2) Problem chiskiego listonosza

Równania ró»niczkowe I rz du (RRIR) Twierdzenie Picarda. Anna D browska. WFTiMS. 23 marca 2010

Model obiektu w JavaScript

Szukanie najkrótszych dróg z jednym ródłem

Wyra»enia logicznie równowa»ne

Najkrótsze drogi w grafach z wagami

Ekonometria. wiczenia 13 Metoda ±cie»ki krytycznej. Andrzej Torój. Instytut Ekonometrii Zakªad Ekonometrii Stosowanej

Wykªad 4. Funkcje wielu zmiennych.

det A := a 11, ( 1) 1+j a 1j det A 1j, a 11 a 12 a 21 a 22 Wn. 1 (Wyznacznik macierzy stopnia 2:). = a 11a 22 a 33 +a 12 a 23 a 31 +a 13 a 21 a 32

Twierdzenie Wainera. Marek Czarnecki. Warszawa, 3 lipca Wydziaª Filozoi i Socjologii Uniwersytet Warszawski

Macierze. 1 Podstawowe denicje. 2 Rodzaje macierzy. Denicja

Listy Inne przykªady Rozwi zywanie problemów. Listy w Mathematice. Marcin Karcz. Wydziaª Matematyki, Fizyki i Informatyki.

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

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

Arkusz maturalny. Šukasz Dawidowski. 25 kwietnia 2016r. Powtórki maturalne

Programowanie i struktury danych

KLASYCZNE ZDANIA KATEGORYCZNE. ogólne - orzekaj co± o wszystkich desygnatach podmiotu szczegóªowe - orzekaj co± o niektórych desygnatach podmiotu

Rekurencyjne struktury danych

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

Omówienie zada«potyczki Algorytmiczne 2015

Transkrypt:

4: Przeszukiwanie Grafów (, i zastosowania)

Spis zagadnie«przeszukiwanie grafów (rola, schemat ogólny, zastosowania) realizacje (kolejka, stos, rekurencja) przeszukiwanie wszerz zastosowania przeszukiwanie w gª b (wersja stosowa i rekurencyjna) klasykacja kraw dzi zastosowania: skªadowe spójne testowanie acykliczno±ci znajdowanie mostów znajdowanie punktów artykulacji sortowanie topologiczne (podej±cie naiwne i ) skªadowe silnie spójne

Przeszukiwanie grafu Wiele zada«lub algorytmów na grafach sprowadza si do systematycznego odwiedzenia wszystkich elementów grafu (wierzchoªków i/lub kraw dzi). Przez przeszukiwanie grafu rozumiemy taki systematyczny sposób, w którym: zaczynamy odwiedzanie z pewnego wierzchoªka startowego dozwolonym ruchem jest przej±cie po kraw dzi (od wierzchoªka odwiedzonego) ka»dy wierzchoªek i kraw d¹ grafu odwiedzone s dokªadnie raz Przeszukiwanie mo»na wykonywa zarówno na grafach nieskierowanych jak i skierowanych. W wierzchoªkach lub kraw dziach wykonujemy pewne operacje, zale»nie od zadania (np. wypisywanie na wyj±cie, ustawianie warto±ci pewnych atrybutów, etc.)

Ogólny schemat przeszukiwania grafu (pocz tkowo wszystkie wierzchoªki s nieodwiedzone) umie± startowy wierzchoªek w strukturze danych X dopóki struktura X jest niepusta: 1 wyjmij kolejny wierzchoªek v ze struktury X i odwied¹ go 2 wªó» do X kolejno wszystkich nieodwiedzonych s siadów v Konkretne warianty przeszukiwania zale» od: wyboru struktury danych X (np. kolejka lub stos) wyboru kolejno±ci s siadów (np. etykiety alfabetycznie)

Las przeszukiwania i klasykacja kraw dzi Pojedyncze wykonanie caªej procedury generuje tzw. drzewo przeszukiwania (jest to drzewo ukorzenione). Procedura mo»e by wykonywana wielokrotnie, a» nie ma nieodwiedzonych wierzchoªków w grae. Rezultatem caªego przeszukiwania jest wi c zbiór (rozª cznych wierzchoªkowo) drzew przeszukiwania zwany lasem przeszukiwania.

Umowne kolory wierzchoªków W przedstawianych pseudokodach b dziemy nadawa wierzchoªkom umowne kolory: biaªy (nieodwiedzony) szary (odwiedzony i przetwarzany; w strukturze danych) czarny (odwiedzony i zako«czony) Uwaga: do prawidªowej implementacji wystarcza rozró»nienie mi dzy nieodwiedzonym a odwiedzonym, szary zostaª dodany dla rozja±nienia prezentacji.

Klasykacja kraw dzi w wyniku przeszukiwania grafu Ze wzgl du na struktur lasu przeszukiwania, w wyniku przeszukiwania ka»da kraw d¹ (u, v) jest zaklasykowana do dokªadnie jednej z poni»szych kategorii: drzewowa (T): v jest odwiedzony z u w wyniku przej±cia (u, v) w przód (F): nie jest drzewowa i v jest potomkiem u w drzewie w tyª (B): nie jest drzewowa i v jest przodkiem u w drzewie poprzeczna (C): w pozostaªych przypadkach (pomi dzy gaª ziami lub drzewami)

Przeszukiwanie wszerz ( - breadth-rst search) Jest równowa»ne u»yciu kolejki w ogólnym schemacie przeszukiwania. Efekt polega na odwiedzaniu wierzchoªków równomiernie we wszystkich kierunkach zgodnie z rosn c odlegªo±ci od startowego. przykªad Zastosowania przeszukiwania wszerz (przykªady): obliczanie skªadowych spójnych (ka»de drzewo j stanowi) obliczanie odlegªo±ci od wierzchoªka startowego obliczanie domkni cia przechodniego relacji (n )

Przykªad implementacji for-each node in V: node.color = white; node.d = infinity; node.p = null s.color = gray; s.d = 0; queue.in(s) while(!queue.empty()){ currnode = queue.out() process(currnode) for-each node in currnode.adjlist: if (node.color == white): queue.in(node) node.color = gray node.d = currnode.d + 1 node.p = currnode currnode.color = black } W powy»szym pseudokodzie : obliczamy odlegªo±ci od startowego (atrybut d) zapami tujemy struktur drzewa (atrybut p) za process(currnode) mo»na podstawi dowoln operacj na wierzchoªku

Obserwacje dotycz ce przeszukiwania wszerz () Zªo»ono± czasowa : O( V + E ) (liniowa) Zauwa»my,»e w dla grafów nieskierowanych: nie wyst puj kraw dzie w przód ani wstecz dla kraw dzi drzewowej (u, v) zachodzi: v.d = u.d + 1 dla kraw dzi poprzecznej: v.d = u.d lub v.d = u.d + 1 Natomiast w dla grafów skierowanych: nie wyst puj kraw dzie w przód dla kraw dzi drzewowej (u, v) zachodzi: v.d = u.d + 1 dla kraw dzi poprzecznej: v.d u.d + 1 dla kraw dzi wstecznej: 0 v.d u.d

Przeszukiwanie w gª b ( - depth-rst seach) Jest równowa»ne u»yciu stosu w ogólnym schemacie przeszukiwania. Efekt polega na docieraniu stopniowo do mo»liwie najdalszego wierzchoªka a nast pnie minimalnym cofni ciu si, aby kontynuowa przeszukiwanie. przykªad W przeszukiwaniu w gª b ka»demu wierzchoªkowi v przypisywane s dwa wa»ne atrybuty: czas odwiedzenia: v.d (gdy staje si szary) czas zako«czenia: v.f (gdy staje si czarny) Atrybuty te maj zastosowanie do rozwi zywania konkretnych problemów grafowych.

Przeszukiwanie w gª b (wersja rekurencyjna) Uwaga: Implementacje z u»yciem stosu czy rekurencji s równowa»ne co do idei algorytmu, ale mog dawa inny porz dek odwiedzanych wierzchoªków. (){ time = 0 for-each v in V: v.color = white; v.parent = null for-each v in V: if (v.color == white): recursive(v) } recursive(graphnode v){ v.color = gray process(v) v.d = time++ for-each u in v.adjlist: if (u.color == white): u.parent = v recursive(u) u.color = black u.f = time++ }

Wªasno±ci przeszukiwania w gª b () Zªo»ono± czasowa: O( V + E ) (liniowa) Dla dowolnych 2 wierzchoªków u, v, ich przedziaªy czasów przetwarzania [u.d, u.f ] i [v.d, v.f ] s albo rozª czne albo jeden z nich zawiera si w drugim (tzw. struktura nawiasowa) Zachodzi nast puj cy warunek (twierdzenie o biaªej ±cie»ce): W drzewie v jest potomkiem u w momencie u.d, istnieje ±cie»ka z u do v skªadaj ca si tylko z biaªych wierzchoªków.

Rodzaje kraw dzi w grafach W dla grafów nieskierowanych nie wyst puj kraw dzie w przód ani poprzeczne. W dla grafów skierowanych mog wyst powa wszystkie 4 rodzaje kraw dzi. Dokªadniej, kiedy przechodzi kraw d¹ (u, v), kraw d¹ ta jest: drzewowa, je±li v jest biaªy wstecz, je±li v jest szary w przód lub poprzeczna, je±li v jest czarny

Kategoryzacja kraw dzi za pomoc czasów d i f Kraw d¹ (v, w) w przeszukiwaniu jest: drzewowa lub w przód v.d < w.d < w.f < v.f w tyª w.d < v.d < v.f < w.f poprzeczna w.d < w.f < v.d < v.f

Zastosowania przeszukiwania w gª b Schemat przeszukiwania w gª b ma rozliczne zastosowania dla rozwi zywania konkretnych problemów grafowych, np: testowanie acykliczno±ci (nieistnienie kraw dzi wstecz) sortowanie topologiczne skªadowe silnie spójne znajdowanie punktów artykulacji znajdowanie mostów rozkªad grafu na bloki

Stopie«a cykliczno± cie»ka : fragment drzewa przeszukiwania zbudowany do momentu, gdy jaki± wierzchoªek staje si czarny. Fakt: Je±li P jest ±cie»k ko«cz c si na wierzchoªku t, to wszyscy s siedzi t le» na ±cie»ce P. Ponadto, je±li deg(t) > 1 to wszyscy s siedzi t le» na pewnym cyklu Wniosek: Je±li w grae prostym G minimalny stopie«wierzchoªka to δ > 1, to graf zawiera cykl o dªugo±ci conajmniej δ + 1

Znajdowanie mostów Fakty: Kraw d¹ jest mostem nie le»y na»adnym cyklu Dowolny graf spójny, po odj ciu mostów skªada si ze skªadowych 2-spójnych (kraw dziowo) (tzw. bloków) Wszystkie wierzchoªki le» ce na pewnym cyklu s w tym samym bloku. Kontrakcja podgrafu H: uczynienie z H pojedynczego wierzchoªka przykªad Fakt: Przez kontrakcj ka»dej skªadowej spójnej grafu G otrzymujemy drzewo H, którego kraw dzie odpowiadaj mostom grafu G.

Algorytm znajdowania mostów Wej±cie: spójny graf nieskierowany G Wyj±cie: graf H skªadaj cy si jedynie z mostów grafu G H = G while V(H) >1 utwórz ±cie»k do wierzchoªka t, który staje si czarny if deg(t) = 1 zaznacz kraw d¹ incydentn z t jako most H = H - t else // t i jego s siedzi le» na cyklu C H jest wynikiem kontrakcji cyklu C (algorytm stopniowo dokonuje kontrakcji wszystkich wykrytych cykli a» zostan same mosty)

Korze«jako punkt artykulacji (punkt artykulacji: po jego usuni ciu jest wi cej skªadowych) Fakt: wierzchoªek v jest punktem artykulacji istniej wierzchoªki u,w (ró»ne od v), takie»e ka»da droga z u do w przechodzi przez v. Twierdzenie: Je±li T jest drzewem dla pewnego grafu, to jego korze«r jest punktem artykulacji r ma wi cej ni» jednego syna w tym drzewie.

Nie-korze«jako punkt artykulacji Twierdzenie A: Je±li T jest drzewem, to jego wierzchoªek v (nie b dacy korzeniem) jest punktem artykulacji v ma syna w, takiego»e»aden potomek wierzchoªka w ani on sam nie jest poª czony kraw dzi nie-drzewow z wªa±ciwym przodkiem wierzchoªka v. przykªad Niech low(w) oznacza mniejsz z liczb: w.d lub najmniejsza z liczb u.d po±ród wszystkich wierzchoªków u poª czonych nie-drzewow kraw dzi z w lub pewnym jego potomkiem. przykªad Twierdzenie B: Je±li T jest drzewem, to wierzchoªek v (nie b d cy korzeniem T ) jest punktem artykulacji v ma syna w, dla którego low(w) v.d

Schemat znajdowania punktów artykulacji Wej±cie: spójny graf G Wyj±cie: zbiór K punktów artykulacji grafu G 1 K = pusty 2 T = drzewo z dowolnego wierzchoªka r 3 je±li r ma wi cej ni» 1 syna to K = K + r 4 oblicz warto±ci low(w) dla wszystkich wierzchoªków 5 dla ka»dego wierzchoªka v nie b d cego korzeniem, dodaj v do zbioru K, je±li ma syna w, takiego»e low(w) v.d Uwaga: warto±ci low(w) jak i caªy powy»szy algorytm mog by obliczone podczas wykonania pojedynczego przeszukiwania na grae G : low(w) = min(v.d, z.d, low(y)), gdzie z to dowolny wierzchoªek poª czony kraw dzi niedrzewow z v, a y to dowolny syn wierzchoªka v.

Przykªad znajdowania punktów artykulacji w(0,0) v(1,0) u(2,0) x(3,3) z(4,3) t(5,3) y(6,3) Rysunek: Drzewo (kraw dzie drzewowe zaznaczono lini ci gª ). W ka»dym wierzchoªku a umieszczono par liczb (a.d, low(a)). Zaznaczono punkty artykulacji, czyli wierzchoªki, które maj syna s takiego,»e low(s) jest niemniejszy od ich czasu odkrycia.

Sortowanie topologiczne (tylko grafy ) Polega na takim ustawieniu wierzchoªków grafu w ci g,»e je±li w grae jest kraw d¹ (u, v), to u musi by przed v (ustawienie zgodne z kraw dziami). Graf da si posortowa topologicznie nie zawiera cykli (skierowanych). Rozwi zanie: zastosowa ustawi wierzchoªki od najwi kszego czasu zako«czenia do najmniejszego przykªad 1 1 istnieje te» rozwi zanie przez iteracyjne usuwanie wierzchoªków o stopniu wej±ciowym 0, te» mo»na zaimplementowa w czasie liniowym

Znajdowanie skªadowych silnie spójnych 1 oblicz za pomoc czasy zako«czenia (v.f ) 2 odwró kierunki kraw dzi (tzw. transpozycja grafu) 3 wykonaj na transponowanym grae, ale wywoªuj gªówn procedur zgodnie z malej cym czasem zako«czenia z kroku 1 4 wynik: poszczególne drzewa otrzymane w kroku 3 to poszczególne skªadowe silnie spójne przykªad

przeszukiwanie i wªasno±ci przeszukiwanie i wªasno±ci sprawdzanie acykliczno±ci znajdowanie punktów artykulacji znajdowanie mostów sortowanie topologiczne obliczanie skªadowych silnie spójnych

Przykªadowe wiczenia wypisz kolejno± odwiedzanych wierzchoªków, odlegªo±ci(), czasy odwiedzenia i zako«czenia(), las przeszukiwania danego grafu i klasykacj kraw dzi za pomoc i. wykonaj algorytm sprawdzania czy dany graf jest acykliczny wykonaj algorytm znajdowania mostów wykonaj algorytm znajdowania punktów artykulacji wykonaj sortowanie topologiczne danego grafu (2 metody) wykonaj algorytm obliczania skªadowych silnie spójnych danego grafu

Przykªadowe zadania zaproponuj liniowy algorytm znajdowania w nieskierowanym grae ±cie»ki, która przechodzi przez ka»d kraw d¹ dokªadnie raz w ka»d stron. zaproponuj algorytm (i oszacuj zªo»ono± czasow ) znajdowania wyj±cia z labiryntu gdy masz do dyspozycji (3 warianty) (Wskazówka: który schemat: czy b dzie lepszy i dlaczego? (oba maj t sam zªo»ono± ): kª bek nici (metoda Ariadny) kred do pisania na ±cianach labiryntu k operatorów (ka»dy z kred ) mog cych dziaªa niezale»nie zaproponuj algorytm sprawdzania, czy dany graf nieskierowany jest dwudzielny planowany jest mecz po±ród n szachistów, gdzie ustalone r par szachistów planuje rozegra partie. W caªym meczu ka»dy z graczy chciaªby rozegra wszystkie partie jednym kolorem. Zaproponuj algorytm, który sprawdzi, czy to jest mo»liwe. Czy da si to zrobi w czasie liniowym?

Dzi kuj za uwag