algorytmy i struktury danych - (wybrane algorytmy grafowe)algorytmy i struktury danych spis tresci´...

97
Algorytmy i Struktury Danych Algorytmy i Struktury Danych (wybrane algorytmy grafowe) Michal Knapik Polsko-Japo´ nska Akademia Technik Komputerowych 27 czerwca 2021 1 / 28

Upload: others

Post on 04-Aug-2021

22 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Algorytmy i Struktury Danych(wybrane algorytmy grafowe)

Michał Knapik

Polsko-Japonska Akademia Technik Komputerowych

27 czerwca 2021

1 / 28

Page 2: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Spis tresci

1 Narzedzia: Struktura Find-Union

2 Drzewa RozpinajacePodstawowe DefinicjeAlgorytm Kruskala

3 Drzewa Najkrótszych SciezekPodstawowe DefinicjePodstawowe DefinicjeAlgorytm Dijkstry

2 / 28

Page 3: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Narzedzia: Struktura Find-Union

Find-Union: Idea

Problem

Niech U bedzie skonczonym uniwersum elementów. Chcemy:reprezentowac rodziny rozłacznych podzbiorów U

oraz efektywnie wykonywac nastepujace operacje:Find(x): znalezienie zbioru do którego nalezy xUnion(A, B): scalenie zbiorów A i B

(Dokładniejsze specyfikacje w wykładach online. Tu zakładamy,ze Union(·, ·) jest funkcja o efektach ubocznych, operujaca wzbiorze potegowym U .)

3 / 28

Page 4: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Narzedzia: Struktura Find-Union

Find-Union: Idea

Problem

Niech U bedzie skonczonym uniwersum elementów. Chcemy:reprezentowac rodziny rozłacznych podzbiorów U

oraz efektywnie wykonywac nastepujace operacje:Find(x): znalezienie zbioru do którego nalezy xUnion(A, B): scalenie zbiorów A i B

(Dokładniejsze specyfikacje w wykładach online. Tu zakładamy,ze Union(·, ·) jest funkcja o efektach ubocznych, operujaca wzbiorze potegowym U .)

3 / 28

Page 5: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Narzedzia: Struktura Find-Union

Find-Union: Idea

Przykład, U = {1,2,3,4,5,6}

Załózmy, ze na pewnym etapie mamy: {1,3}, {2,4,5}, {6}I wtedy: Find(2) = {2,4,5}Mozemy wykonac np. Union({1,3}, {6})I otrzymamy: {1,3,6}, {2,4,5}

Bardzo rózne zastosowania:Symulacje fizyczne (perkolacje)Gry - np. HexBudowa minimalnego drzewarozpinajacegoI wiele innych. . .

4 / 28

Page 6: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Narzedzia: Struktura Find-Union

Find-Union: Idea

Przykład, U = {1,2,3,4,5,6}

Załózmy, ze na pewnym etapie mamy: {1,3}, {2,4,5}, {6}

I wtedy: Find(2) = {2,4,5}Mozemy wykonac np. Union({1,3}, {6})I otrzymamy: {1,3,6}, {2,4,5}

Bardzo rózne zastosowania:Symulacje fizyczne (perkolacje)Gry - np. HexBudowa minimalnego drzewarozpinajacegoI wiele innych. . .

4 / 28

Page 7: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Narzedzia: Struktura Find-Union

Find-Union: Idea

Przykład, U = {1,2,3,4,5,6}

Załózmy, ze na pewnym etapie mamy: {1,3}, {2,4,5}, {6}I wtedy: Find(2) = {2,4,5}

Mozemy wykonac np. Union({1,3}, {6})I otrzymamy: {1,3,6}, {2,4,5}

Bardzo rózne zastosowania:Symulacje fizyczne (perkolacje)Gry - np. HexBudowa minimalnego drzewarozpinajacegoI wiele innych. . .

4 / 28

Page 8: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Narzedzia: Struktura Find-Union

Find-Union: Idea

Przykład, U = {1,2,3,4,5,6}

Załózmy, ze na pewnym etapie mamy: {1,3}, {2,4,5}, {6}I wtedy: Find(2) = {2,4,5}Mozemy wykonac np. Union({1,3}, {6})

I otrzymamy: {1,3,6}, {2,4,5}

Bardzo rózne zastosowania:Symulacje fizyczne (perkolacje)Gry - np. HexBudowa minimalnego drzewarozpinajacegoI wiele innych. . .

4 / 28

Page 9: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Narzedzia: Struktura Find-Union

Find-Union: Idea

Przykład, U = {1,2,3,4,5,6}

Załózmy, ze na pewnym etapie mamy: {1,3}, {2,4,5}, {6}I wtedy: Find(2) = {2,4,5}Mozemy wykonac np. Union({1,3}, {6})I otrzymamy: {1,3,6}, {2,4,5}

Bardzo rózne zastosowania:Symulacje fizyczne (perkolacje)Gry - np. HexBudowa minimalnego drzewarozpinajacegoI wiele innych. . .

4 / 28

Page 10: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Narzedzia: Struktura Find-Union

Find-Union: Idea

Przykład, U = {1,2,3,4,5,6}

Załózmy, ze na pewnym etapie mamy: {1,3}, {2,4,5}, {6}I wtedy: Find(2) = {2,4,5}Mozemy wykonac np. Union({1,3}, {6})I otrzymamy: {1,3,6}, {2,4,5}

Bardzo rózne zastosowania:Symulacje fizyczne (perkolacje)Gry - np. HexBudowa minimalnego drzewarozpinajacegoI wiele innych. . .

4 / 28

Page 11: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Narzedzia: Struktura Find-Union

Find-Union: Find

Podzbiory rozłaczne U reprezentujemy jako drzewa, którychwierzchołki maja strukture:

pole val elementuwskaznik fath do ojca (NULL w korzeniu)tablica wskazników child do synów (NULL w lisciach)pomocniczo: wysokosc height poddrzewa

Etykieta zbioru zawierajacego element x jest wiec korzendrzewa w którym sie on znajduje.

Find(x): pierwsza przymiarka

cu r r := xwh i le cu r r . f a t h != NULL

cu r r := cu r r . f a t hend whi ler e t u r n cu r r

5 / 28

Page 12: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Narzedzia: Struktura Find-Union

Find-Union: Ilustracja Find

{1,3,6}, {2,4,5,7,8,9}

1

3 6

2

4

5

7

8 9

Find(9)

Złozonosc czasowa Find(x) zalezy od wysokosci drzewa. Aleponowne wyszukanie tego elementu powinno byc szybsze!

6 / 28

Page 13: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Narzedzia: Struktura Find-Union

Find-Union: Ilustracja Find

{1,3,6}, {2,4,5,7,8,9}

1

3 6

2

4

5

7

8 9

Find(9)

Złozonosc czasowa Find(x) zalezy od wysokosci drzewa. Aleponowne wyszukanie tego elementu powinno byc szybsze!

6 / 28

Page 14: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Narzedzia: Struktura Find-Union

Find-Union: Ilustracja Find

{1,3,6}, {2,4,5,7,8,9}

1

3 6

2

4

5

7

8 9

Find(9)

Złozonosc czasowa Find(x) zalezy od wysokosci drzewa. Aleponowne wyszukanie tego elementu powinno byc szybsze!

6 / 28

Page 15: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Narzedzia: Struktura Find-Union

Find-Union: Ilustracja Find

{1,3,6}, {2,4,5,7,8,9}

1

3 6

2

4

5

7

8 9

Find(9)

Złozonosc czasowa Find(x) zalezy od wysokosci drzewa. Aleponowne wyszukanie tego elementu powinno byc szybsze!

6 / 28

Page 16: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Narzedzia: Struktura Find-Union

Find-Union: Ilustracja Find

{1,3,6}, {2,4,5,7,8,9}

1

3 6

2

4

5

7

8 9

Find(5)

Złozonosc czasowa Find(x) zalezy od wysokosci drzewa. Aleponowne wyszukanie tego elementu powinno byc szybsze!

6 / 28

Page 17: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Narzedzia: Struktura Find-Union

Find-Union: Ilustracja Find

{1,3,6}, {2,4,5,7,8,9}

1

3 6

2

4

5

7

8 9

Find(5)

Złozonosc czasowa Find(x) zalezy od wysokosci drzewa. Aleponowne wyszukanie tego elementu powinno byc szybsze!

6 / 28

Page 18: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Narzedzia: Struktura Find-Union

Find-Union: Ilustracja Find

{1,3,6}, {2,4,5,7,8,9}

1

3 6

2

4

5

7

8 9

Find(5)

Złozonosc czasowa Find(x) zalezy od wysokosci drzewa. Aleponowne wyszukanie tego elementu powinno byc szybsze!

6 / 28

Page 19: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Narzedzia: Struktura Find-Union

Find-Union: Ilustracja Find

{1,3,6}, {2,4,5,7,8,9}

1

3 6

2

4

5

7

8 9

Find(5)Złozonosc czasowa Find(x) zalezy od wysokosci drzewa. Aleponowne wyszukanie tego elementu powinno byc szybsze!

6 / 28

Page 20: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Narzedzia: Struktura Find-Union

Find-Union: Poprawiamy Find

Find(x): kompresja sciezek

cu r r := x / / p ierwszy przebieg bez zmianwhi le cu r r . f a t h != NULL

cu r r := cu r r . f a t hend whi letop := cu r r

cu r r := x / / ponownie prze jdz sc iezke od xwhi le cu r r . f a t h != NULL

tmp := cu r r . f a t hcu r r . f a t h := top / / podpinajac kazdy napotkanycu r r := tmp / / w ierzcho lek bezp . pod korzen

end whi letop := cu r r

r e t u r n top

7 / 28

Page 21: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Narzedzia: Struktura Find-Union

Find-Union: Ilustracja Find z Kompresja

{1,2,3,4,5,6,7,8,9}

2

4

5

7

8 9

1

36

Find(1)8 / 28

Page 22: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Narzedzia: Struktura Find-Union

Find-Union: Ilustracja Find z Kompresja

{1,2,3,4,5,6,7,8,9}

2

4

5

7

8 9

1

36

Find(1)8 / 28

Page 23: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Narzedzia: Struktura Find-Union

Find-Union: Ilustracja Find z Kompresja

{1,2,3,4,5,6,7,8,9}

2

4

5

7

8 9

1

36

Find(1)8 / 28

Page 24: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Narzedzia: Struktura Find-Union

Find-Union: Ilustracja Find z Kompresja

{1,2,3,4,5,6,7,8,9}

2

4

5

7

8 9

1

36

Find(1)8 / 28

Page 25: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Narzedzia: Struktura Find-Union

Find-Union: Ilustracja Find z Kompresja

{1,2,3,4,5,6,7,8,9}

2

4

5

7

8 9

1

36

Find(1)8 / 28

Page 26: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Narzedzia: Struktura Find-Union

Find-Union: Ilustracja Find z Kompresja

{1,2,3,4,5,6,7,8,9}

2

4

5

7

8 9

1

36

Find(1)8 / 28

Page 27: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Narzedzia: Struktura Find-Union

Find-Union: Ilustracja Find z Kompresja

{1,2,3,4,5,6,7,8,9}

2

4

5

7

8 9

1

36

Find(1)8 / 28

Page 28: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Narzedzia: Struktura Find-Union

Find-Union: Ilustracja Find z Kompresja

{1,2,3,4,5,6,7,8,9}

2

4

5

7

8 9

1

36

Find(1)8 / 28

Page 29: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Narzedzia: Struktura Find-Union

Find-Union: Ilustracja Find z Kompresja

{1,2,3,4,5,6,7,8,9}

2

4

5

7

8 9

1

36

Find(1)8 / 28

Page 30: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Narzedzia: Struktura Find-Union

Find-Union: Ilustracja Find z Kompresja

{1,2,3,4,5,6,7,8,9}

2

4

5

7

8

9 1

36

Find(1) : kompresja zmniejszyła wysokosc drzewa o połowe.

8 / 28

Page 31: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Narzedzia: Struktura Find-Union

Find-Union: Union

Bardzo prosta idea: podpinamy drzewko mniejsze do korzeniadrzewka wiekszego.

Union(A, B)

smal le r := minheight ( FindTop (A) , FindTop (B) )b igger := maxheight ( FindTop (A) , FindTop (B) )

/ / { smal ler , b igger } = {A, B}/ / sma l le r . he igh t <= b igger . he igh t

b igger . c h i l d . i n s e r t ( smal le r )

r e t u r n b igger

Złozonosc: stała.9 / 28

Page 32: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Narzedzia: Struktura Find-Union

Find-Union: Ilustracja Union

{1,3,6}, {2,4,5,7,8,9}

1

3 6

2

4

5

7

8 9

Union({1,3,6}, {2,4,5,7,8,9})

10 / 28

Page 33: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Narzedzia: Struktura Find-Union

Find-Union: Ilustracja Union

{1,3,6,2,4,5,7,8,9}

1

3 6

2

4

5

7

8 9

Union({1,3,6}, {2,4,5,7,8,9})

10 / 28

Page 34: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Narzedzia: Struktura Find-Union

Find-Union: Uzupełnienia

Twierdzenie o złozonosci czasowej Find-Union

Wykonanie M operacji Find(·) i Union(·, ·) na N elementachzajmuje O(N + Mlog*N).

Uzupełnienia:log*N: logarytm iterowany; w tym wszechswiecie < 6znane inne strategie poprawiania sciezek(jednoprzebiegowe, itp)dowód powyzszego twierdzenia jest trudny

11 / 28

Page 35: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Podstawowe Definicje

Podstawowe Definicje: Drzewa Rozpinajace

Minimalne Drzewo Rozpinajace

Niech G = (V, E) bedzie grafem niezorientowanym, ac : E → R+ funkcja kosztu, przyporzadkowujaca krawedziomnieujemne liczby rzeczywiste.

Minimalne drzewo rozpinajace MST(G) to drzewo rozpinajaceG, w którym suma kosztów krawedzi jest najmniejsza.

Rózne zastosowania:Spanning Tree Protocol: budowa logicznej sieciminimalizujacej energie (w warstwie 2 OSI)Segmentacja obrazu: budowa hierarchii obiektówBiologia obliczeniowa: taksonomia i inneI wiele innych. . .

12 / 28

Page 36: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Podstawowe Definicje

Podstawowe Definicje: Drzewa Rozpinajace

A B

G

F I H C

E D

2

5 6

2 5

4

9

6

1

2

4

1

3 1

5

MinCost = 16

13 / 28

Page 37: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Podstawowe Definicje

Podstawowe Definicje: Drzewa Rozpinajace

A B

G

F I H C

E D

2

5 6

2 5

4

9

6

1

2

4

1

3 1

5

MinCost = 1613 / 28

Page 38: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Podstawowe Definicje

Podstawowe Definicje: Drzewa Rozpinajace

Lemat

Jesli koszty krawedzi grafu G sa rózne, to istnieje tylko jednominimalne drzewo rozpinajace MST(G).

Zarys dowodu:

Załózmy, ze sa dwa takie drzewa i wypiszmy ichkrawedzie, posortowane rosnacoPierwsza róznica w tych listach: wybierzmy mniejszakrawedz eDołaczmy te krawedz do drugiego drzewa; z definicjipowstanie teraz cykl, który mozna zredukowac usuwajackrawedz wieksza niz e -> sprzecznosc!

14 / 28

Page 39: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Podstawowe Definicje

Podstawowe Definicje: Drzewa Rozpinajace

Lemat

Jesli koszty krawedzi grafu G sa rózne, to istnieje tylko jednominimalne drzewo rozpinajace MST(G).

Zarys dowodu:

Załózmy, ze sa dwa takie drzewa i wypiszmy ichkrawedzie, posortowane rosnacoPierwsza róznica w tych listach: wybierzmy mniejszakrawedz eDołaczmy te krawedz do drugiego drzewa; z definicjipowstanie teraz cykl, który mozna zredukowac usuwajackrawedz wieksza niz e -> sprzecznosc!

14 / 28

Page 40: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Podstawowe Definicje

Podstawowe Definicje: Drzewa Rozpinajace

Lemat

Jesli koszty krawedzi grafu G sa rózne, to istnieje tylko jednominimalne drzewo rozpinajace MST(G).

Zarys dowodu:Załózmy, ze sa dwa takie drzewa i wypiszmy ichkrawedzie, posortowane rosnaco

Pierwsza róznica w tych listach: wybierzmy mniejszakrawedz eDołaczmy te krawedz do drugiego drzewa; z definicjipowstanie teraz cykl, który mozna zredukowac usuwajackrawedz wieksza niz e -> sprzecznosc!

14 / 28

Page 41: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Podstawowe Definicje

Podstawowe Definicje: Drzewa Rozpinajace

Lemat

Jesli koszty krawedzi grafu G sa rózne, to istnieje tylko jednominimalne drzewo rozpinajace MST(G).

Zarys dowodu:Załózmy, ze sa dwa takie drzewa i wypiszmy ichkrawedzie, posortowane rosnacoPierwsza róznica w tych listach: wybierzmy mniejszakrawedz e

Dołaczmy te krawedz do drugiego drzewa; z definicjipowstanie teraz cykl, który mozna zredukowac usuwajackrawedz wieksza niz e -> sprzecznosc!

14 / 28

Page 42: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Podstawowe Definicje

Podstawowe Definicje: Drzewa Rozpinajace

Lemat

Jesli koszty krawedzi grafu G sa rózne, to istnieje tylko jednominimalne drzewo rozpinajace MST(G).

Zarys dowodu:Załózmy, ze sa dwa takie drzewa i wypiszmy ichkrawedzie, posortowane rosnacoPierwsza róznica w tych listach: wybierzmy mniejszakrawedz eDołaczmy te krawedz do drugiego drzewa; z definicjipowstanie teraz cykl, który mozna zredukowac usuwajackrawedz wieksza niz e -> sprzecznosc!

14 / 28

Page 43: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Podstawowe Definicje

Podstawowe Definicje: Las Rozpinajacy

Las Rozpinajacy

Niech G = (V, E) bedzie grafem niezorientowanym. Lasrozpinajacy G, to dowolna rodzina jego rozłacznych podgrafówbedacych drzewami, których wierzchołki pokrywaja V.

A B

G

F I H C

E D

2

5 6

2 5

4

9

6

1

2

4

1

3 1

5

15 / 28

Page 44: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Algorytm Kruskala

Algorytm Kruskala

Własnosci Algorytmu Kruskala

Kruskal(G): minimalne drzewo rozpinajace grafu GAlgorytm zachłannyBardzo prosty, dzieki dobrze dobranym strukturom danychZłozonosc: O(ElogE) = O(ElogV), gdzie E = |E| i V = |V|

16 / 28

Page 45: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Algorytm Kruskala

Algorytm Kruskala

Algorytm Kruskala: Idea

F: rosnacy las rozpinajacy G, S: zbiór wszystkich krawedzi

1 F := V (las jednowierzchołkowych drzew)2 dopóki S jest niepusty:3 usun z S krawedz e o najmniejszym koszcie4 jesli e łaczy dwa rózne drzewa w F, to połacz je w jedno

Jak to zaimplementowac? Jakiej struktury danych uzyc dla S?A dla F?

17 / 28

Page 46: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Algorytm Kruskala

Algorytm Kruskala

Algorytm Kruskala: Idea

F: rosnacy las rozpinajacy G, S: zbiór wszystkich krawedzi1 F := V (las jednowierzchołkowych drzew)

2 dopóki S jest niepusty:3 usun z S krawedz e o najmniejszym koszcie4 jesli e łaczy dwa rózne drzewa w F, to połacz je w jedno

Jak to zaimplementowac? Jakiej struktury danych uzyc dla S?A dla F?

17 / 28

Page 47: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Algorytm Kruskala

Algorytm Kruskala

Algorytm Kruskala: Idea

F: rosnacy las rozpinajacy G, S: zbiór wszystkich krawedzi1 F := V (las jednowierzchołkowych drzew)2 dopóki S jest niepusty:

3 usun z S krawedz e o najmniejszym koszcie4 jesli e łaczy dwa rózne drzewa w F, to połacz je w jedno

Jak to zaimplementowac? Jakiej struktury danych uzyc dla S?A dla F?

17 / 28

Page 48: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Algorytm Kruskala

Algorytm Kruskala

Algorytm Kruskala: Idea

F: rosnacy las rozpinajacy G, S: zbiór wszystkich krawedzi1 F := V (las jednowierzchołkowych drzew)2 dopóki S jest niepusty:3 usun z S krawedz e o najmniejszym koszcie

4 jesli e łaczy dwa rózne drzewa w F, to połacz je w jedno

Jak to zaimplementowac? Jakiej struktury danych uzyc dla S?A dla F?

17 / 28

Page 49: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Algorytm Kruskala

Algorytm Kruskala

Algorytm Kruskala: Idea

F: rosnacy las rozpinajacy G, S: zbiór wszystkich krawedzi1 F := V (las jednowierzchołkowych drzew)2 dopóki S jest niepusty:3 usun z S krawedz e o najmniejszym koszcie4 jesli e łaczy dwa rózne drzewa w F, to połacz je w jedno

Jak to zaimplementowac? Jakiej struktury danych uzyc dla S?A dla F?

17 / 28

Page 50: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Algorytm Kruskala

Algorytm Kruskala

Algorytm Kruskala: Idea

F: rosnacy las rozpinajacy G, S: zbiór wszystkich krawedzi1 F := V (las jednowierzchołkowych drzew)2 dopóki S jest niepusty:3 usun z S krawedz e o najmniejszym koszcie4 jesli e łaczy dwa rózne drzewa w F, to połacz je w jedno

Jak to zaimplementowac?

Jakiej struktury danych uzyc dla S?A dla F?

17 / 28

Page 51: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Algorytm Kruskala

Algorytm Kruskala

Algorytm Kruskala: Idea

F: rosnacy las rozpinajacy G, S: zbiór wszystkich krawedzi1 F := V (las jednowierzchołkowych drzew)2 dopóki S jest niepusty:3 usun z S krawedz e o najmniejszym koszcie4 jesli e łaczy dwa rózne drzewa w F, to połacz je w jedno

Jak to zaimplementowac? Jakiej struktury danych uzyc dla S?

A dla F?

17 / 28

Page 52: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Algorytm Kruskala

Algorytm Kruskala

Algorytm Kruskala: Idea

F: rosnacy las rozpinajacy G, S: zbiór wszystkich krawedzi1 F := V (las jednowierzchołkowych drzew)2 dopóki S jest niepusty:3 usun z S krawedz e o najmniejszym koszcie4 jesli e łaczy dwa rózne drzewa w F, to połacz je w jedno

Jak to zaimplementowac? Jakiej struktury danych uzyc dla S?A dla F?

17 / 28

Page 53: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Algorytm Kruskala

Algorytm Kruskala: Ilustracja

A B

G

F I H C

E D

2

5 6

2 5

4

9

6

1

2

4

1

3 1

5

18 / 28

Page 54: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Algorytm Kruskala

Algorytm Kruskala: Ilustracja

A B

G

F I H C

E D

2

5 6

2 5

4

9

6

1

2

4

1

3 1

5

18 / 28

Page 55: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Algorytm Kruskala

Algorytm Kruskala: Ilustracja

A B

G

F I H C

E D

2

5 6

2 5

4

9

6

1

2

4

1

3 1

5

18 / 28

Page 56: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Algorytm Kruskala

Algorytm Kruskala: Ilustracja

A B

G

F I H C

E D

2

5 6

2 5

4

9

6

1

2

4

1

3 1

5

18 / 28

Page 57: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Algorytm Kruskala

Algorytm Kruskala: Ilustracja

A B

G

F I H C

E D

2

5 6

2 5

4

9

6

1

2

4

1

3 1

5

18 / 28

Page 58: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Algorytm Kruskala

Algorytm Kruskala: Ilustracja

A B

G

F I H C

E D

2

5 6

2 5

4

9

6

1

2

4

1

3 1

5

18 / 28

Page 59: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Algorytm Kruskala

Algorytm Kruskala: Ilustracja

A B

G

F I H C

E D

2

5 6

2 5

4

9

6

1

2

4

1

3 1

5

18 / 28

Page 60: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Algorytm Kruskala

Algorytm Kruskala: Ilustracja

A B

G

F I H C

E D

2

5 6

2 5

4

9

6

1

2

4

1

3 1

5

18 / 28

Page 61: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Algorytm Kruskala

Algorytm Kruskala: Ilustracja

A B

G

F I H C

E D

2

5 6

2 5

4

9

6

1

2

4

1

3 1

5

18 / 28

Page 62: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Algorytm Kruskala

Algorytm Kruskala: Ilustracja

A B

G

F I H C

E D

2

5 6

2 5

4

9

6

1

2

4

1

3 1

5

18 / 28

Page 63: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Algorytm Kruskala

Algorytm Kruskala: Ilustracja

A B

G

F I H C

E D

2

5 6

2 5

4

9

6

1

2

4

1

3 1

5

18 / 28

Page 64: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Algorytm Kruskala

Algorytm Kruskala: Ilustracja

A B

G

F I H C

E D

2

5 6

2 5

4

9

6

1

2

4

1

3 1

5

18 / 28

Page 65: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Algorytm Kruskala

Algorytm Kruskala: Ilustracja

A B

G

F I H C

E D

2

5 6

2 5

4

9

6

1

2

4

1

3 1

5

18 / 28

Page 66: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Algorytm Kruskala

Algorytm Kruskala: Ilustracja

A B

G

F I H C

E D

2

5 6

2 5

4

9

6

1

2

4

1

3 1

5

18 / 28

Page 67: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Algorytm Kruskala

Algorytm Kruskala: Ilustracja

A B

G

F I H C

E D

2

5 6

2 5

4

9

6

1

2

4

1

3 1

5

18 / 28

Page 68: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Algorytm Kruskala

Algorytm Kruskala: Ilustracja

A B

G

F I H C

E D

2

5 6

2 5

4

9

6

1

2

4

1

3 1

5

18 / 28

Page 69: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Algorytm Kruskala

Algorytm Kruskala: Implementacja

EdgesPQ: kolejka priorytetowa dla krawedzi grafuVertSet: struktura zbiorów rozłacznych dla wierzchołkówEdgeStack: struktura do zbierania krawedzi min. drzewa rozpin.

Kruskal(G)

KruskPQ . cons t ruc t (E )Ver tSet := {{v} | v ∈ V}

whi le ! empty ( KruskPQ )e := MIN( KruskPQ )DELMIN( KruskPQ )

A = VertSet . Find ( e . l e f tEnd )B = VertSet . Find ( e . r igh tEnd )

i f A != B thenVertSet . Union (A,B)EdgeStack .PUSH( e )

end i fend whi le

19 / 28

Page 70: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Algorytm Kruskala

Algorytm Kruskala: Uzupełnienia

Złozonosc O(ElogE) = O(ElogV): dominuje wykonanieoperacji usuniecia elementu z kolejki EdgesPQ, az doopróznienia; (A przy wykorzystaniu sortowania w czasieliniowym mozna uzyskac czas prawie liniowy!)

Dowód poprawnosci jest dosc prosty: wystarczy wykazac,ze jesli las F przed scaleniem przy uzyciu krawedzi eskłada sie z poddrzew MST(G), to po scaleniu tez takbedzie(czyli scalajaca krawedz e nalezy zawsze do MST(G))

20 / 28

Page 71: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Algorytm Kruskala

Algorytm Kruskala: Uzupełnienia

Złozonosc O(ElogE) = O(ElogV): dominuje wykonanieoperacji usuniecia elementu z kolejki EdgesPQ, az doopróznienia; (A przy wykorzystaniu sortowania w czasieliniowym mozna uzyskac czas prawie liniowy!)Dowód poprawnosci jest dosc prosty: wystarczy wykazac,ze jesli las F przed scaleniem przy uzyciu krawedzi eskłada sie z poddrzew MST(G), to po scaleniu tez takbedzie

(czyli scalajaca krawedz e nalezy zawsze do MST(G))

20 / 28

Page 72: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Rozpinajace

Algorytm Kruskala

Algorytm Kruskala: Uzupełnienia

Złozonosc O(ElogE) = O(ElogV): dominuje wykonanieoperacji usuniecia elementu z kolejki EdgesPQ, az doopróznienia; (A przy wykorzystaniu sortowania w czasieliniowym mozna uzyskac czas prawie liniowy!)Dowód poprawnosci jest dosc prosty: wystarczy wykazac,ze jesli las F przed scaleniem przy uzyciu krawedzi eskłada sie z poddrzew MST(G), to po scaleniu tez takbedzie(czyli scalajaca krawedz e nalezy zawsze do MST(G))

20 / 28

Page 73: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Najkrótszych Sciezek

Podstawowe Definicje: Drzewa Najkrótszych Sciezek

Drzewo Najkrótszych Sciezek

Niech G = (V, E) bedzie grafem niezorientowanym z funkcjakosztu c : E → R+. Niech src ∈ V bedzie wierzchołkiemzródłowym.

Drzewo najkrótszych sciezek SPT(G,src) ze zródła src todrzewo rozpinajace G w którym sciezka pomiedzy src adowolnym wierzchołkiem v jest najkrótsza sciezka pomiedzysrc a v w G.

21 / 28

Page 74: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Najkrótszych Sciezek

Podstawowe Definicje

Podstawowe Definicje: Drzewa Najkrótszych Sciezek

A B

G

F I H C

E D

2

5 6

2 5

4

9

6

1

2

4

1

3 1

5

22 / 28

Page 75: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Najkrótszych Sciezek

Podstawowe Definicje

Podstawowe Definicje: Drzewa Najkrótszych Sciezek

A B

G

F I H C

E D

2

5 6

2 5

4

9

6

1

2

4

1

3 1

5

22 / 28

Page 76: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Najkrótszych Sciezek

Podstawowe Definicje

Podstawowe Definicje: Drzewa Najkrótszych Sciezek

Rózne zastosowania:Routing w sieciach komputerowych (OSPF, sieci z pełnainformacja o strukturze)Global Positioning SystemNawigacja w robotyceI wiele innych. . .

23 / 28

Page 77: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Najkrótszych Sciezek

Algorytm Dijkstry

Algorytm Dijkstry

Algorytm Dijkstry: Idea

Wykorzystamy nastepujace abstrakcyjne operacje.

Pytanie wierzchołka v o:

dist(v) – najkrótsza znana juz sciezke ze zródła src do v(ustawione na∞, jesli nie znamy zadnej sciezki)prev(v) – poprzednik v na tej sciezce(ustawione na NULL, w przypadku j.w.)

oraz nastepujacy zbiór:

unVisited: wierzchołki, których jeszcze nie odwiedzilismy.

24 / 28

Page 78: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Najkrótszych Sciezek

Algorytm Dijkstry

Algorytm Dijkstry

Algorytm Dijkstry: Idea

Wykorzystamy nastepujace abstrakcyjne operacje.Pytanie wierzchołka v o:

dist(v) – najkrótsza znana juz sciezke ze zródła src do v(ustawione na∞, jesli nie znamy zadnej sciezki)prev(v) – poprzednik v na tej sciezce(ustawione na NULL, w przypadku j.w.)

oraz nastepujacy zbiór:

unVisited: wierzchołki, których jeszcze nie odwiedzilismy.

24 / 28

Page 79: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Najkrótszych Sciezek

Algorytm Dijkstry

Algorytm Dijkstry

Algorytm Dijkstry: Idea

Wykorzystamy nastepujace abstrakcyjne operacje.Pytanie wierzchołka v o:

dist(v) – najkrótsza znana juz sciezke ze zródła src do v(ustawione na∞, jesli nie znamy zadnej sciezki)

prev(v) – poprzednik v na tej sciezce(ustawione na NULL, w przypadku j.w.)

oraz nastepujacy zbiór:

unVisited: wierzchołki, których jeszcze nie odwiedzilismy.

24 / 28

Page 80: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Najkrótszych Sciezek

Algorytm Dijkstry

Algorytm Dijkstry

Algorytm Dijkstry: Idea

Wykorzystamy nastepujace abstrakcyjne operacje.Pytanie wierzchołka v o:

dist(v) – najkrótsza znana juz sciezke ze zródła src do v(ustawione na∞, jesli nie znamy zadnej sciezki)prev(v) – poprzednik v na tej sciezce(ustawione na NULL, w przypadku j.w.)

oraz nastepujacy zbiór:

unVisited: wierzchołki, których jeszcze nie odwiedzilismy.

24 / 28

Page 81: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Najkrótszych Sciezek

Algorytm Dijkstry

Algorytm Dijkstry

Algorytm Dijkstry: Idea

Wykorzystamy nastepujace abstrakcyjne operacje.Pytanie wierzchołka v o:

dist(v) – najkrótsza znana juz sciezke ze zródła src do v(ustawione na∞, jesli nie znamy zadnej sciezki)prev(v) – poprzednik v na tej sciezce(ustawione na NULL, w przypadku j.w.)

oraz nastepujacy zbiór:

unVisited: wierzchołki, których jeszcze nie odwiedzilismy.

24 / 28

Page 82: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Najkrótszych Sciezek

Algorytm Dijkstry

Algorytm Dijkstry

Algorytm Dijkstry: Idea

Wykorzystamy nastepujace abstrakcyjne operacje.Pytanie wierzchołka v o:

dist(v) – najkrótsza znana juz sciezke ze zródła src do v(ustawione na∞, jesli nie znamy zadnej sciezki)prev(v) – poprzednik v na tej sciezce(ustawione na NULL, w przypadku j.w.)

oraz nastepujacy zbiór:unVisited: wierzchołki, których jeszcze nie odwiedzilismy.

24 / 28

Page 83: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Najkrótszych Sciezek

Algorytm Dijkstry

Algorytm Dijkstry

Algorytm Dijkstry: Idea

1 Inicjalizacja: wstaw wszystkie wierzchołki do unVisited,ustaw dist(src) = 0

2 dopóki unVisited jest niepusty:3 usun z unVisited wierzchołek v o najmniejszym dist(v)

(czyli najmniejszej odległosci od zródła)4 dla kazdego sasiada w wierzchołka v z unVisited:5 porównaj dist(w) z dist(v) + c(v,w)

6 jesli wieksze, to: prev(w) := vdist(w) := dist(v) + c(v,w)

(znalezlismy krótsza droge do w przez v)

Jakiej struktury danych uzyc dla unVisited?

25 / 28

Page 84: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Najkrótszych Sciezek

Algorytm Dijkstry

Algorytm Dijkstry

Algorytm Dijkstry: Idea

1 Inicjalizacja: wstaw wszystkie wierzchołki do unVisited,ustaw dist(src) = 0

2 dopóki unVisited jest niepusty:

3 usun z unVisited wierzchołek v o najmniejszym dist(v)(czyli najmniejszej odległosci od zródła)

4 dla kazdego sasiada w wierzchołka v z unVisited:5 porównaj dist(w) z dist(v) + c(v,w)

6 jesli wieksze, to: prev(w) := vdist(w) := dist(v) + c(v,w)

(znalezlismy krótsza droge do w przez v)

Jakiej struktury danych uzyc dla unVisited?

25 / 28

Page 85: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Najkrótszych Sciezek

Algorytm Dijkstry

Algorytm Dijkstry

Algorytm Dijkstry: Idea

1 Inicjalizacja: wstaw wszystkie wierzchołki do unVisited,ustaw dist(src) = 0

2 dopóki unVisited jest niepusty:3 usun z unVisited wierzchołek v o najmniejszym dist(v)

(czyli najmniejszej odległosci od zródła)

4 dla kazdego sasiada w wierzchołka v z unVisited:5 porównaj dist(w) z dist(v) + c(v,w)

6 jesli wieksze, to: prev(w) := vdist(w) := dist(v) + c(v,w)

(znalezlismy krótsza droge do w przez v)

Jakiej struktury danych uzyc dla unVisited?

25 / 28

Page 86: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Najkrótszych Sciezek

Algorytm Dijkstry

Algorytm Dijkstry

Algorytm Dijkstry: Idea

1 Inicjalizacja: wstaw wszystkie wierzchołki do unVisited,ustaw dist(src) = 0

2 dopóki unVisited jest niepusty:3 usun z unVisited wierzchołek v o najmniejszym dist(v)

(czyli najmniejszej odległosci od zródła)4 dla kazdego sasiada w wierzchołka v z unVisited:

5 porównaj dist(w) z dist(v) + c(v,w)

6 jesli wieksze, to: prev(w) := vdist(w) := dist(v) + c(v,w)

(znalezlismy krótsza droge do w przez v)

Jakiej struktury danych uzyc dla unVisited?

25 / 28

Page 87: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Najkrótszych Sciezek

Algorytm Dijkstry

Algorytm Dijkstry

Algorytm Dijkstry: Idea

1 Inicjalizacja: wstaw wszystkie wierzchołki do unVisited,ustaw dist(src) = 0

2 dopóki unVisited jest niepusty:3 usun z unVisited wierzchołek v o najmniejszym dist(v)

(czyli najmniejszej odległosci od zródła)4 dla kazdego sasiada w wierzchołka v z unVisited:5 porównaj dist(w) z dist(v) + c(v,w)

6 jesli wieksze, to: prev(w) := vdist(w) := dist(v) + c(v,w)

(znalezlismy krótsza droge do w przez v)

Jakiej struktury danych uzyc dla unVisited?

25 / 28

Page 88: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Najkrótszych Sciezek

Algorytm Dijkstry

Algorytm Dijkstry

Algorytm Dijkstry: Idea

1 Inicjalizacja: wstaw wszystkie wierzchołki do unVisited,ustaw dist(src) = 0

2 dopóki unVisited jest niepusty:3 usun z unVisited wierzchołek v o najmniejszym dist(v)

(czyli najmniejszej odległosci od zródła)4 dla kazdego sasiada w wierzchołka v z unVisited:5 porównaj dist(w) z dist(v) + c(v,w)

6 jesli wieksze, to: prev(w) := vdist(w) := dist(v) + c(v,w)

(znalezlismy krótsza droge do w przez v)

Jakiej struktury danych uzyc dla unVisited?

25 / 28

Page 89: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Najkrótszych Sciezek

Algorytm Dijkstry

Algorytm Dijkstry

Algorytm Dijkstry: Idea

1 Inicjalizacja: wstaw wszystkie wierzchołki do unVisited,ustaw dist(src) = 0

2 dopóki unVisited jest niepusty:3 usun z unVisited wierzchołek v o najmniejszym dist(v)

(czyli najmniejszej odległosci od zródła)4 dla kazdego sasiada w wierzchołka v z unVisited:5 porównaj dist(w) z dist(v) + c(v,w)

6 jesli wieksze, to: prev(w) := vdist(w) := dist(v) + c(v,w)

(znalezlismy krótsza droge do w przez v)

Jakiej struktury danych uzyc dla unVisited?25 / 28

Page 90: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Najkrótszych Sciezek

Algorytm Dijkstry

Algorytm Dijkstry

Struktura Danych dla unVisited

Wierzchołki v ∈ V umiescimy w kopcu z priorytetem dist(v).

Beda nam potrzebne dodatkowe operacje:Member(v): wskaznik do elementu v w kopcu albo NULL,gdy go tam nie maDecreaseKey(v,d): zmniejszenie wartosci priorytetu v nad i rekonstrukcja kopca

Member(·) - tablica, uaktualniana tylko po usunieciu elementuDecreaseKey(·, ·) - jak to zaimplementowac?

26 / 28

Page 91: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Najkrótszych Sciezek

Algorytm Dijkstry

Algorytm Dijkstry

Struktura Danych dla unVisited

Wierzchołki v ∈ V umiescimy w kopcu z priorytetem dist(v).

Beda nam potrzebne dodatkowe operacje:

Member(v): wskaznik do elementu v w kopcu albo NULL,gdy go tam nie maDecreaseKey(v,d): zmniejszenie wartosci priorytetu v nad i rekonstrukcja kopca

Member(·) - tablica, uaktualniana tylko po usunieciu elementuDecreaseKey(·, ·) - jak to zaimplementowac?

26 / 28

Page 92: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Najkrótszych Sciezek

Algorytm Dijkstry

Algorytm Dijkstry

Struktura Danych dla unVisited

Wierzchołki v ∈ V umiescimy w kopcu z priorytetem dist(v).

Beda nam potrzebne dodatkowe operacje:Member(v): wskaznik do elementu v w kopcu albo NULL,gdy go tam nie ma

DecreaseKey(v,d): zmniejszenie wartosci priorytetu v nad i rekonstrukcja kopca

Member(·) - tablica, uaktualniana tylko po usunieciu elementuDecreaseKey(·, ·) - jak to zaimplementowac?

26 / 28

Page 93: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Najkrótszych Sciezek

Algorytm Dijkstry

Algorytm Dijkstry

Struktura Danych dla unVisited

Wierzchołki v ∈ V umiescimy w kopcu z priorytetem dist(v).

Beda nam potrzebne dodatkowe operacje:Member(v): wskaznik do elementu v w kopcu albo NULL,gdy go tam nie maDecreaseKey(v,d): zmniejszenie wartosci priorytetu v nad i rekonstrukcja kopca

Member(·) - tablica, uaktualniana tylko po usunieciu elementuDecreaseKey(·, ·) - jak to zaimplementowac?

26 / 28

Page 94: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Najkrótszych Sciezek

Algorytm Dijkstry

Algorytm Dijkstry

Struktura Danych dla unVisited

Wierzchołki v ∈ V umiescimy w kopcu z priorytetem dist(v).

Beda nam potrzebne dodatkowe operacje:Member(v): wskaznik do elementu v w kopcu albo NULL,gdy go tam nie maDecreaseKey(v,d): zmniejszenie wartosci priorytetu v nad i rekonstrukcja kopca

Member(·) - tablica, uaktualniana tylko po usunieciu elementu

DecreaseKey(·, ·) - jak to zaimplementowac?

26 / 28

Page 95: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Najkrótszych Sciezek

Algorytm Dijkstry

Algorytm Dijkstry

Struktura Danych dla unVisited

Wierzchołki v ∈ V umiescimy w kopcu z priorytetem dist(v).

Beda nam potrzebne dodatkowe operacje:Member(v): wskaznik do elementu v w kopcu albo NULL,gdy go tam nie maDecreaseKey(v,d): zmniejszenie wartosci priorytetu v nad i rekonstrukcja kopca

Member(·) - tablica, uaktualniana tylko po usunieciu elementuDecreaseKey(·, ·) - jak to zaimplementowac?

26 / 28

Page 96: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Najkrótszych Sciezek

Algorytm Dijkstry

Algorytm Dijkstry: Uzupełnienia

Indukcyjny dowód poprawnosci algorytmu oparty oniezmiennik:

jesli v nie nalezy do unVisited to dist(v) jest długoscianajkrótszej drogi z src do v, zas prev(v) jegopoprzednikiem na tej drodzejesli v nalezy do unVisited dist(v) jest długoscianajkrótszej drogi z src do v przechodzacej powierzchołkach spoza unVisited, zas prev(v) jegopoprzednikiem na tej drodze

Złozonosc: O(ElogV), gdzie E = |E| i V = |V|Pseudokod łatwy do napisania, implementacja tezPopularne warianty z heurystyka A∗

27 / 28

Page 97: Algorytmy i Struktury Danych - (wybrane algorytmy grafowe)Algorytmy i Struktury Danych Spis tresci´ 1 Narzedzia:˛ Struktura Find-Union 2 Drzewa Rozpinajace˛ Podstawowe Definicje

Algorytmy i Struktury Danych

Drzewa Najkrótszych Sciezek

Algorytm Dijkstry

Zródła

HEX Game by Jean-Luc W - Own work, CC BY-SA 3.0,https://commons.wikimedia.org/w/index.php?curid=6206668

28 / 28