Algorytmy i Struktury Danych - riad.pk.edu.plriad.pk.edu.pl/~zk/AISD_W2.pdf · Wykład 2: Algorytmy...

21
Algorytmy i Struktury Danych Wykładowca: dr inż. Zbigniew Kokosiński [email protected] POLITECHNIKA KRAKOWSKA WYDZIAŁ INŻYNIERII ELEKTRYCZNEJ i KOMPUTEROWEJ Katedra Automatyki i Technik Informacyjnych www.pk.edu.pl/~zk/AISD_HP.html

Transcript of Algorytmy i Struktury Danych - riad.pk.edu.plriad.pk.edu.pl/~zk/AISD_W2.pdf · Wykład 2: Algorytmy...

Page 1: Algorytmy i Struktury Danych - riad.pk.edu.plriad.pk.edu.pl/~zk/AISD_W2.pdf · Wykład 2: Algorytmy grafowe I 1. Przeszukiwanie grafu w głąb. 2. Przeszukiwanie grafu wszerz. 3.

Algorytmy i Struktury Danych

Wykładowca:

dr inż. Zbigniew Kokosiński

[email protected]

POLITECHNIKA KRAKOWSKA WYDZIAŁ INŻYNIERII ELEKTRYCZNEJ i KOMPUTEROWEJ Katedra Automatyki i Technik Informacyjnych

www.pk.edu.pl/~zk/AISD_HP.html

Page 2: Algorytmy i Struktury Danych - riad.pk.edu.plriad.pk.edu.pl/~zk/AISD_W2.pdf · Wykład 2: Algorytmy grafowe I 1. Przeszukiwanie grafu w głąb. 2. Przeszukiwanie grafu wszerz. 3.

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.

Page 3: Algorytmy i Struktury Danych - riad.pk.edu.plriad.pk.edu.pl/~zk/AISD_W2.pdf · Wykład 2: Algorytmy grafowe I 1. Przeszukiwanie grafu w głąb. 2. Przeszukiwanie grafu wszerz. 3.

Przeszukiwanie

grafu w głąb

Page 4: Algorytmy i Struktury Danych - riad.pk.edu.plriad.pk.edu.pl/~zk/AISD_W2.pdf · Wykład 2: Algorytmy grafowe I 1. Przeszukiwanie grafu w głąb. 2. Przeszukiwanie grafu wszerz. 3.

Przeszukiwanie

grafu wszerz

Page 5: Algorytmy i Struktury Danych - riad.pk.edu.plriad.pk.edu.pl/~zk/AISD_W2.pdf · Wykład 2: Algorytmy grafowe I 1. Przeszukiwanie grafu w głąb. 2. Przeszukiwanie grafu wszerz. 3.

Minimalne drzewo

rozpinające grafu

Algorytm Prima(kolejka priorytetowa)

Page 6: Algorytmy i Struktury Danych - riad.pk.edu.plriad.pk.edu.pl/~zk/AISD_W2.pdf · Wykład 2: Algorytmy grafowe I 1. Przeszukiwanie grafu w głąb. 2. Przeszukiwanie grafu wszerz. 3.

Minimalne drzewo

rozpinające grafu

Algorytm Kruskala

Page 7: Algorytmy i Struktury Danych - riad.pk.edu.plriad.pk.edu.pl/~zk/AISD_W2.pdf · Wykład 2: Algorytmy grafowe I 1. Przeszukiwanie grafu w głąb. 2. Przeszukiwanie grafu wszerz. 3.

Algorytm Dijkstry

Page 8: Algorytmy i Struktury Danych - riad.pk.edu.plriad.pk.edu.pl/~zk/AISD_W2.pdf · Wykład 2: Algorytmy grafowe I 1. Przeszukiwanie grafu w głąb. 2. Przeszukiwanie grafu wszerz. 3.

Skojarzenia w grafach

Page 9: Algorytmy i Struktury Danych - riad.pk.edu.plriad.pk.edu.pl/~zk/AISD_W2.pdf · Wykład 2: Algorytmy grafowe I 1. Przeszukiwanie grafu w głąb. 2. Przeszukiwanie grafu wszerz. 3.

Skojarzenia w grafach dwudzielnych

Page 10: Algorytmy i Struktury Danych - riad.pk.edu.plriad.pk.edu.pl/~zk/AISD_W2.pdf · Wykład 2: Algorytmy grafowe I 1. Przeszukiwanie grafu w głąb. 2. Przeszukiwanie grafu wszerz. 3.

Problem stabilnych małżeństw

Page 11: Algorytmy i Struktury Danych - riad.pk.edu.plriad.pk.edu.pl/~zk/AISD_W2.pdf · Wykład 2: Algorytmy grafowe I 1. Przeszukiwanie grafu w głąb. 2. Przeszukiwanie grafu wszerz. 3.

Przepływy w sieciach - założenia

Page 12: Algorytmy i Struktury Danych - riad.pk.edu.plriad.pk.edu.pl/~zk/AISD_W2.pdf · Wykład 2: Algorytmy grafowe I 1. Przeszukiwanie grafu w głąb. 2. Przeszukiwanie grafu wszerz. 3.

Przepływy w sieciach - przykład

Page 13: Algorytmy i Struktury Danych - riad.pk.edu.plriad.pk.edu.pl/~zk/AISD_W2.pdf · Wykład 2: Algorytmy grafowe I 1. Przeszukiwanie grafu w głąb. 2. Przeszukiwanie grafu wszerz. 3.

Algorytm DMKM1. 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.

Page 14: Algorytmy i Struktury Danych - riad.pk.edu.plriad.pk.edu.pl/~zk/AISD_W2.pdf · Wykład 2: Algorytmy grafowe I 1. Przeszukiwanie grafu w głąb. 2. Przeszukiwanie grafu wszerz. 3.

Pojęcie sieci warstwowej

Page 15: Algorytmy i Struktury Danych - riad.pk.edu.plriad.pk.edu.pl/~zk/AISD_W2.pdf · Wykład 2: Algorytmy grafowe I 1. Przeszukiwanie grafu w głąb. 2. Przeszukiwanie grafu wszerz. 3.

Wyznaczanie

maksymalnego

przepływu

w sieci

warstwowej -

przykład

Page 16: Algorytmy i Struktury Danych - riad.pk.edu.plriad.pk.edu.pl/~zk/AISD_W2.pdf · Wykład 2: Algorytmy grafowe I 1. Przeszukiwanie grafu w głąb. 2. Przeszukiwanie grafu wszerz. 3.

Wyznaczanie

maksymalnego

przepływu

w sieci

warstwowej -

przykład

Page 17: Algorytmy i Struktury Danych - riad.pk.edu.plriad.pk.edu.pl/~zk/AISD_W2.pdf · Wykład 2: Algorytmy grafowe I 1. Przeszukiwanie grafu w głąb. 2. Przeszukiwanie grafu wszerz. 3.

Algorytm

DMKM –

wydzielenie

pierwszej

sieci

warstwowej

Page 18: Algorytmy i Struktury Danych - riad.pk.edu.plriad.pk.edu.pl/~zk/AISD_W2.pdf · Wykład 2: Algorytmy grafowe I 1. Przeszukiwanie grafu w głąb. 2. Przeszukiwanie grafu wszerz. 3.

Algorytm

DMKM –

wydzielenie

drugiej sieci

warstwowej

Page 19: Algorytmy i Struktury Danych - riad.pk.edu.plriad.pk.edu.pl/~zk/AISD_W2.pdf · Wykład 2: Algorytmy grafowe I 1. Przeszukiwanie grafu w głąb. 2. Przeszukiwanie grafu wszerz. 3.

Algorytm

DMKM –

wydzielenie

drugiej sieci

warstwowej

Page 20: Algorytmy i Struktury Danych - riad.pk.edu.plriad.pk.edu.pl/~zk/AISD_W2.pdf · Wykład 2: Algorytmy grafowe I 1. Przeszukiwanie grafu w głąb. 2. Przeszukiwanie grafu wszerz. 3.

Algorytm

DMKM –

wydzielenie

trzeciej sieci

warstwowej

Page 21: Algorytmy i Struktury Danych - riad.pk.edu.plriad.pk.edu.pl/~zk/AISD_W2.pdf · Wykład 2: Algorytmy grafowe I 1. Przeszukiwanie grafu w głąb. 2. Przeszukiwanie grafu wszerz. 3.

Ź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