POLITECHNIKA KRAKOWSKA WYDZIAŁ INŻYNIERII ELEKTRYCZNEJ i KOMPUTEROWEJ Katedra Automatyki i Technik Informacyjnych Algorytmy i Struktury Danych www.pk.edu.pl/~zk/AISD_HP.html Wykładowca: dr inż. Zbigniew Kokosiński [email protected] Wykład 2: Algorytmy grafowe I 1. Przeszukiwanie grafu w głąb. 2. Przeszukiwanie grafu wszerz. 3. Grafy ważone. Minimalne drzewa rozpinające (MST). 4. Algorytmy Prima (kolejka priorytetowa) i Kruskala. 5. Grafy ważone. Wyszukiwanie ścieżek. Algorytm Dijkstry w grafie skierowanym dla wag nieujemnych. 6. Maksymalne skojarzenia w grafach. 7. Problem stabilnych małżeństw. 8. Przepływy w sieciach. 9. Algorytm DMKM do wyznaczania maksymalnego przepływu w sieci. Przeszukiwanie grafu w głąb Przeszukiwanie grafu wszerz Minimalne drzewo rozpinające grafu Algorytm Prima (kolejka priorytetowa) Minimalne drzewo rozpinające grafu Algorytm Kruskala Algorytm Dijkstry Skojarzenia w grafach Skojarzenia w grafach dwudzielnych Problem stabilnych małżeństw Przepływy w sieciach - założenia Przepływy w sieciach - przykład Algorytm DMKM 1. Cechując wierzchołki od s do t numerami kolejnych warstw znajdź sieć warstwową GL złożoną z połączeń użytecznych z x do y grafu G (czyli z łuków (x,y) z bieżącym przepływem mniejszym od przepustowości, ewentualnie z łuków (y,x) z niezerowym przepływem z y do x). 2. Dla każdego wierzchołka sieci GL wyznacz jego potencjał (minimum z jego potencjału wejściowego i wyjściowego). 3. Wierzchołek o najmniejszym potencjale staje się wierzchołkiem odniesienia, przez który prowadzi ścieżka z s do t z przepływem równym temu potencjałowi. 4. Usuń z GL wszystkie łuki nasycone i wierzchołki o potencjale 0. 5. Powtarzając kroki 3-4 wyznacz przepływ nasycający sieci GL (superpozycja przepływów częściowych) 6. Powtarzaj kroki 1-5, aż utworzenie kolejnej sieci warstwowej GL w G będzie niemożliwe. 7. Przepływ maksymalny w G jest superpozycją przepływów nasycających we wszystkich sieciach warstwowych. Pojęcie sieci warstwowej Wyznaczanie maksymalnego przepływu w sieci warstwowej przykład Wyznaczanie maksymalnego przepływu w sieci warstwowej przykład Algorytm DMKM – wydzielenie pierwszej sieci warstwowej Algorytm DMKM – wydzielenie drugiej sieci warstwowej Algorytm DMKM – wydzielenie drugiej sieci warstwowej Algorytm DMKM – wydzielenie trzeciej sieci warstwowej Źródła wzorów, przykładów i rysunków : 1. Sedgewick R. : Algorithms in C, Addison-Wesley 1990 2. Sysło M.M., Deo N., Kowalik J.S. : Algorytmy optymalizacji dyskretnej, WN-T 1995