Konspekt. 15 października Wykład III (16 października 2014 r.): optymalizacja kombinatoryczna na grafach (metody sieciowe)



Podobne dokumenty
Digraf. 13 maja 2017

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

Wykład 8. Drzewo rozpinające (minimum spanning tree)

Ogólne wiadomości o grafach

Minimalne drzewa rozpinające

Matematyczne Podstawy Informatyki

Grafy i sieci w informatyce - opis przedmiotu

Drzewa spinające MST dla grafów ważonych Maksymalne drzewo spinające Drzewo Steinera. Wykład 6. Drzewa cz. II

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

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

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

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II

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

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

Algorytmiczna teoria grafów

PRZEWODNIK PO PRZEDMIOCIE

Znajdowanie skojarzeń na maszynie równoległej

Konspekt. Piotr Chołda 12 października Podstawowe informacje nt. przedmiotu. Prowadzący przedmiot (wykład i egzamin):

Sprawozdanie do zadania numer 2

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

Algorytmy i Struktury Danych.

prowadzący dr ADRIAN HORZYK /~horzyk tel.: Konsultacje paw. D-13/325

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

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

Grafy w MATLABie. LABORKA Piotr Ciskowski

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

Wstęp do programowania. Drzewa. Piotr Chrząstowski-Wachtel

Algorytmy i Struktury Danych.

Wykłady z Matematyki Dyskretnej

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

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

Konspekt. Piotr Chołda 26 kwietnia Programowanie dyskretne w zastosowaniach telekomunikacyjnych

Porządek symetryczny: right(x)

Matematyka dyskretna

Spis treści. Przykład. Przykład 1 Przykład 2. Twórcy Informacje wstępne Pseudokod Przykład. 1 Grafy skierowane z wagami - przypomnienie

Sieć (graf skierowany)

Załącznik Nr 5 do Zarz. Nr 33/11/ Kod przedmiotu:aisd2

MODELE SIECIOWE 1. Drzewo rozpinające 2. Najkrótsza droga 3. Zagadnienie maksymalnego przepływu źródłem ujściem

Załącznik KARTA PRZEDMIOTU. KARTA PRZEDMIOTU Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2009/2010

DWA ZDANIA O TEORII GRAFÓW. przepływ informacji tylko w kierunku

Drzewa poszukiwań binarnych

5. Najkrótsze ścieżki

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

Algorytmy i Struktury Danych.

ALGORYTMY OPTYMALIZACJI TRAS PRZEJAZDU POJAZDÓW

MATEMATYKA DYSKRETNA - MATERIAŁY DO WYKŁADU GRAFY

Metody Programowania

KARTA KURSU. Algorytmy, struktury danych i techniki programowania. Algorithms, Data Structures and Programming Techniques

Zagadnienie najkrótszej drogi w sieci

Matematyczne Podstawy Informatyki

Wykład 10 Grafy, algorytmy grafowe

Sortowanie topologiczne skierowanych grafów acyklicznych

Programowanie dynamiczne i algorytmy zachłanne

Egzaminy i inne zadania. Semestr II.

Problem 1 prec f max. Algorytm Lawlera dla problemu 1 prec f max. 1 procesor. n zadań T 1,..., T n (ich zbiór oznaczamy przez T )

Załącznik KARTA PRZEDMIOTU. KARTA PRZEDMIOTU Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2009/2010.

Algorytmika Problemów Trudnych

Rozwiązywanie problemów metodą przeszukiwania

PROGRAMOWANIE SIECIOWE. METODA ŚCIEŻKI KRYTYCZNEJ

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne

Wybrane podstawowe rodzaje algorytmów

Egzamin, AISDI, I termin, 18 czerwca 2015 r.

ĆWICZENIE 1: Przeszukiwanie grafów cz. 1 strategie ślepe

Matematyczne podstawy informatyki Mathematical Foundations of Computational Sciences. Matematyka Poziom kwalifikacji: II stopnia

Algorytmy wyznaczania centralności w sieci Szymon Szylko

Matematyka dyskretna - 7.Drzewa

Przypomnij sobie krótki wstęp do teorii grafów przedstawiony na początku semestru.

Sztuczna Inteligencja i Systemy Doradcze

Wstęp do Programowania potok funkcyjny

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

Podejście zachłanne, a programowanie dynamiczne

Programowanie dynamiczne

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

Marcel Stankowski Wrocław, 23 czerwca 2009 INFORMATYKA SYSTEMÓW AUTONOMICZNYCH

Matematyka dyskretna - 5.Grafy.

Wykład 7. Algorytmy grafowe

Algorytmiczna teoria grafów Przepływy w sieciach.

TEORETYCZNE PODSTAWY INFORMATYKI

Grafem skierowanym. Typowe zastosowania grafów skierowanych obejmują wiele dziedzin:

Programowanie sieciowe. Tadeusz Trzaskalik

Dynamiczne drzewa. Marian M. Kędzierski. 26 listopada Wstęp Euler-Tour Trees Dynamiczna spójność Algorytm Dinica Link-Cut Trees

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

Drzewa binarne. Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0. jest drzewem binarnym Np.

Wykłady z Matematyki Dyskretnej

Zagadnienia optymalizacji na grafach

Graf. Definicja marca / 1

Indukowane Reguły Decyzyjne I. Wykład 3

Matematyka dyskretna - 8. Egzaminy próbne. Uwaga! Niektórych z tych zadań nie obejmuje program dla studiów zaocznych - proszę się tym nie niepokoić -

TEORIA GRAFÓW I SIECI

Matematyczne Podstawy Informatyki

Skojarzenia w grafach

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

5c. Sieci i przepływy

Suma dwóch grafów. Zespolenie dwóch grafów

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott

Teoria obliczeń i złożoność obliczeniowa

Podstawy sztucznej inteligencji

Wstęp do Programowania potok funkcyjny

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

Transkrypt:

Konspekt 15 października 2014 1 Wykład III (16 października 2014 r.): optymalizacja kombinatoryczna na grafach (metody sieciowe) 1.1 Przykładowe problemy optymalizacji kombinatorycznej na grafach 1. Optymalizacja kombinatoryczna. 2. Problem poszukiwania minimalnego drzewa rozpinającego (MST, minimum spanning tree), algorytm Kruskala: 1: procedure Kruskal(G = (N, E, f)) 2: Wyjściowe MST: T 3: T 4: E = E 5: while T < N 1 & E = do 6: e arg min{f(i)} i E 7: e: najlżejsza krawędź w zbiorze nieuwzględnionych krawędzi 8: E E {e} 9: if T {e} nie zawiera cyklu then 10: T T {e} 11: end if 12: end while 13: Jeśli T < N 1 to G nie jest spójny 14: end procedure 3. Algorytm Prima (Prima-Dijkstry). 4. Algorytm zachłanny (greedy algorithm). 5. Problem Steinera. 6. Poszukiwanie przepływu maksymalnego. Twierdzenie Forda-Fulkersona. 7. Problem kolorowania wierzchołków w grafie. Twierdzenie o czterech barwach 8. Problem poszukiwania najkrótszej ścieżki w grafie. Strona 1

9. Algorytm przeszukiwania grafu wszerz (BFS, Breadth-First Search), drzewo ścieżek najkrótszych pod względem liczby przeskoków (hops): 1: procedure BFS(i, G = (V, A)) 5: S: zbiór węzłów, do których istnieje ścieżka skierowana od korzenia 6: L := {i} 7: L: uporządkowana lista przeszukiwanych węzłów 8: L := V {i} 9: L : zbiór dotychczas nieprzeszukanych węzłów 10: predecessor(i) = 0 11: predecessor(j) = k poprzednikiem węzła j na ścieżce skierowanej od korzenia jest węzeł k 12: Korzeń nie ma poprzednika 13: Pętla główna: 14: while L do 15: for all k L do 16: for all j L do 17: if (k, j) A then 18: S := S {k} 19: predecessor(j) = k 20: L := L {k} 21: L := L {k} 22: end if 23: end for 24: L := L {k} 25: end for 26: end while 27: return S i lista poprzedników węzłów należących do tego zbioru 28: end procedure 10. Algorytm przeszukiwania grafu w głąb (DFS, Depth-First Search): 1: procedure DFS(i, G = (V, A)) 5: S: zbiór węzłów, do których istnieje ścieżka skierowana od korzenia 6: L := V {i} 7: L : zbiór dotychczas nieprzeszukanych węzłów 8: predecessor(i) = 0 9: Pętla główna: 10: SearchDeep(i,G,S,L ) 11: return S i lista poprzedników węzłów należących do tego zbioru 12: end procedure Procedura wykonywana rekurencyjnie: 1: procedure SearchDeep(v,G,S,L ) Strona 2

2: for all j L do 3: if (v, j) A then 4: S := S {j} 5: predecessor(j) = v 6: L := L {j} 7: SearchDeep(j,G,S,L ) 8: end if 9: end for 10: end procedure 11. Algorytm Dijkstry (algorytm etykietowania/cechowania wierzchołków), założenia związane ze stosowalnością tego algorytmu, złożoność algorytmu O ( V 2), wersja algorytmu poszukiwania drzewa najkrótszych ścieżek: 1: procedure Dijkstra(i, G = (V, A, d)) 5: predecessor(i) = 0 6: S: zbiór oetykietowanych wierzchołków (dla których znaleziono najkrótszą ścieżkę z węzła i) 7: S := V {i} 8: S : zbiór nieoetykietowanych wierzchołków 9: for all j S do } 10: D ij d ij 11: Dla węzłów, które nie są sąsiednie, przyjmujemy d ij =, (i, j) / A d ij = 12: end for 13: Pętla główna: 14: while S do 15: Znaleźć k = arg min{d m S im 16: S S {k} 17: predecessor(k) = i 18: S S {k} 19: Sprawdzić polepszenie dotychczasowej najkrótszej ścieżki: 20: N k jest zbiorem następników k (pękiem wyjściowym dla k, forward star), N k = {j : (k, j) A} 21: for all j N k S do 22: D ij min{d ij, D ik + d kj } 23: W praktyce przechowujemy całe ścieżki (np. z użyciem relacji bycia poprzednikiem węzła na ścieżce), a nie tylko ich koszty 24: end for 25: end while 26: end procedure 12. Zmodyfikowany algorytm Dijkstry (dla sieci z ujemnymi wagami łączy, ale bez cykli negatywnych). Pojęcie cyklu negatywnego. 13. Algorytm Bhandari ego poszukiwania najkrótszej pary ścieżek rozłącznych. Strona 3

1.2 Zadania Proszę podać przykład takiego grafu ważonego G, który spełnia na raz wszystkie poniższe warunki: graf jest spójny, wszystkie wagi są liczbami naturalnymi, graf ma dziewięć wierzchołków, suma wag minimalnego drzewa rozpinającego jest równa połowie sumy wszystkich wag w G. Proszę pokazać, że minimalne drzewo rozpinające grafu pełnego K 9 o dowolnych wagach jest grafem dwudzielnym. Proszę podać przykład takiego grafu ważonego z wyróżnionym wierzchołkiem i, w którym: (a) drzewo najkrótszych ścieżek o korzeniu i oraz (b) najkrótsze drzewo rozpinające uzyskane za pomocą algorytmu Prima (przy starcie z wierzchołka i) nie są ze sobą tożsame. 1.3 Lektury 1.3.1 Materiał wykładu Zagadnienia omówione w ramach tego wykładu są w dużym stopniu opisane w następujących książkach: Wayne D. Grover. Mesh-Based Survivable Networks. Options and Strategies for Optical, MPLS, SONET, and ATM Networks. Prentice Hall PTR, Upper Saddle River, NJ, 2004: section 4.10. Deepankar Medhi and Karthikeyan Ramasamy. Network Routing. Algorithms, Protocols, and Architectures. Morgan Kaufmann Publishers Elsevier, San Francisco, CA, 2007: chapter 2. Michał Pióro and Deepankar Medhi. Routing, Flow and Capacity Design in Communication and Computer Networks. Morgan Kaufmann Publishers Elsevier, San Francisco, CA, 2004: appendix C.1-C.2. Maciej M. Sysło, Narsingh Deo, and Janusz S. Kowalik. Algorytmy optymalizacji dyskretnej. Wydawnictwo Naukowe PWN, Warszawa, Poland, 1999: rozdział 3.3-3.5. Robin J. Wilson. Wprowadzenie do teorii grafów. Wydawnictwo Naukowe PWN, Warszawa, Poland, 2000: 8, 17, 22, 28-29. 1.3.2 Lektura obowiązkowa Andrew V. Goldberg and Robert E. Tarjan. Efficient Maximum Flow Algorithms. Communications of the ACM, 57(8):82 89, August 2014. Na podstawie lektury należy sobie przede wszystkim opracować następujące zagadnienia: problemy maksymalnego przepływu (maximum flow) i minimalnego rozcięcia (minimum cut) twierdzenie Forda-Fulkersona (maximum flow, minimum cut theorem) algorytm wielomianowy (polynomial algorithm) Strona 4

formalna definicja problemu maksymalnego przepływu: pojęcia digrafu ważonego, źródła, ujścia, przepływu, wartości przepływu (flow value), i ograniczeń dotyczących przepływności (capacity constraint) oraz zachowania przepływu (conservation constraint) formalna definicja problemu minimalnego rozcięcia: rozcięcie jako podział (bipartition of the vertices), przepływność rozcięcia (capacity of a cut) pierwszy algorytm poszukiwania przepływu maksymalnego: graf rezydualny (residual graph), przepływ w grafie rezydualnym, powiększanie ścieżki (path augmenting), sposób poszukiwania ścieżki powiększającej. 1.3.3 Bibliografia uzupełniająca Ramesh Bhandari. Survivable Networks. Algorithms for Diverse Routing. Kluwer Academic Publishers, Dordrecht, The Netherlands, 1999: przegląd różnych algorytmów przydatnych w projektowaniu sieci (głównie niezawodnych). Maciej M. Sysło, Narsingh Deo, and Janusz S. Kowalik. Algorytmy optymalizacji dyskretnej. Wydawnictwo Naukowe PWN, Warszawa, Poland, 1999: podstawy teoretyczne do naszego kursu. Robin J. Wilson. Wprowadzenie do teorii grafów. Wydawnictwo Naukowe PWN, Warszawa, Poland, 2000: zwięzłe wprowadzenie do teorii grafów, trochę algorytmów. 1.4 Kursy online Zagadnienia omówione w ramach tego wykładu są w dużym stopniu omówione w ramach następujących wykładów online: Coursera, Algorithms: Design and Analysis, Part 2 by Tim Roughgarden (Dijkstra s Shortest-Path Algorithm, III. Introduction to Greedy Algorithms, V. Prim s Minimum Spanning Tree Algorithm, VI. Kruskal s Minimum Spanning Tree Algorithm). Strona 5