Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´...

61
Algorytmy i Struktury Danych. Grafy. Drzewo rozpinaj ˛ ace. Minimalne drzewo rozpinaj ˛ ace. Bo˙ zena Wo´ zna-Szcze´ sniak [email protected] Jan Dlugosz University, Poland Wyklad 9 Bo˙ zena Wo´ zna-Szcze´ sniak (AJD) Algorytmy i Struktury Danych. Wyklad 9 1 / 42

Transcript of Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´...

Page 1: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Algorytmy i Struktury Danych.Grafy. Drzewo rozpinajace. Minimalne drzewo rozpinajace.

Bozena [email protected]

Jan Długosz University, Poland

Wykład 9

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 1 / 42

Page 2: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Plan wykładu

Drzewo rozpinajace

Algorytm Kruskala

Algorytm Prima

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 2 / 42

Page 3: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Drzewo rozpinajace grafu

DefinicjaDrzewem rozpinajacym grafu G nazywamy spójny i acyklicznypodgraf grafu G zawierajacy wszystkie jego wierzchołki.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 3 / 42

Page 4: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Drzewo rozpinajace grafu

DefinicjaDrzewem rozpinajacym grafu G nazywamy spójny i acyklicznypodgraf grafu G zawierajacy wszystkie jego wierzchołki.

TwierdzenieKazdy graf spójny zawiera drzewo rozpinajace.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 3 / 42

Page 5: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Drzewo rozpinajace grafu

DefinicjaDrzewem rozpinajacym grafu G nazywamy spójny i acyklicznypodgraf grafu G zawierajacy wszystkie jego wierzchołki.

TwierdzenieKazdy graf spójny zawiera drzewo rozpinajace.

TwierdzenieW grafie spójnym G = (V ,E) krawedz e ∈ E jest krawedzia cieciawtedy i tylko wtedy, gdy e nalezy do kazdego drzewa rozpinajacegografu G.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 3 / 42

Page 6: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Drzewo rozpinajace grafu

Generowanie drzewa rozpinajacego danego grafu spójnego Gmozna realizowac biorac kolejno krawedzie z pewnej listy iakceptujac je po sprawdzeniu, czy nie tworza one cyklu zdotychczas zaakceptowanymi krawedziami.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 4 / 42

Page 7: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Drzewo rozpinajace grafu

Generowanie drzewa rozpinajacego danego grafu spójnego Gmozna realizowac biorac kolejno krawedzie z pewnej listy iakceptujac je po sprawdzeniu, czy nie tworza one cyklu zdotychczas zaakceptowanymi krawedziami.

Generowanie wszystkich drzew rozpinajacych danego grafu jestzłozone obliczeniowo, poniewaz drzew rozpinajacych moze bycbardzo duzo.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 4 / 42

Page 8: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Drzewo rozpinajace grafu - przykład

v1a

b

v2

d

v3e

v4

c

Pokazemy, ze graf ten zawiera 8róznych drzew rozpinajacych.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 5 / 42

Page 9: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Drzewo rozpinajace grafu - przykład

v1a

b

v2

d

v3e

v4

c

Pokazemy, ze graf ten zawiera 8róznych drzew rozpinajacych.

Łatwo zauwazyc, ze kazde drzeworozpinajace tego grafu ma 3krawedzie.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 5 / 42

Page 10: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Drzewo rozpinajace grafu - przykład

v1a

b

v2

d

v3e

v4

c

Pokazemy, ze graf ten zawiera 8róznych drzew rozpinajacych.

Łatwo zauwazyc, ze kazde drzeworozpinajace tego grafu ma 3krawedzie.

Uporzadkujmy wszystkie krawedziegrafu, tworzac liste krawedzi.Rozwazac bedziemy nastepujacaliste krawedzi: (a, b, c, d, e) .

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 5 / 42

Page 11: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Drzewo rozpinajace grafu - przykład

v1a

b

v2

d

v3e

v4

c

Pokazemy, ze graf ten zawiera 8róznych drzew rozpinajacych.

Łatwo zauwazyc, ze kazde drzeworozpinajace tego grafu ma 3krawedzie.

Uporzadkujmy wszystkie krawedziegrafu, tworzac liste krawedzi.Rozwazac bedziemy nastepujacaliste krawedzi: (a, b, c, d, e) .

Kazdy podzbiór krawedzi bedziemyprzedstawiac w postaci listyuporzadkowanej, zgodnie zporzadkiem w liscie krawedzi;

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 5 / 42

Page 12: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Drzewo rozpinajace grafu - przykład

(a, b, c, d, e)

v1a

b

v2

d

v3e

v4

c

Do generowania wszystkich drzewrozpinajacych zastosujemy algorytmz nawrotami .

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 6 / 42

Page 13: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Drzewo rozpinajace grafu - przykład

(a, b, c, d, e)

v1a

b

v2

d

v3e

v4

c

Do generowania wszystkich drzewrozpinajacych zastosujemy algorytmz nawrotami .Zgodnie z algorytmem z nawrotami,bedziemy tworzyc kolejne listy.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 6 / 42

Page 14: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Drzewo rozpinajace grafu - przykład

(a, b, c, d, e)

v1a

b

v2

d

v3e

v4

c

Do generowania wszystkich drzewrozpinajacych zastosujemy algorytmz nawrotami .Zgodnie z algorytmem z nawrotami,bedziemy tworzyc kolejne listy.

lista czerwona oznacza, zekrawedzie te zawieraja cykl i trzebasie wycofac.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 6 / 42

Page 15: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Drzewo rozpinajace grafu - przykład

(a, b, c, d, e)

v1a

b

v2

d

v3e

v4

c

Do generowania wszystkich drzewrozpinajacych zastosujemy algorytmz nawrotami .Zgodnie z algorytmem z nawrotami,bedziemy tworzyc kolejne listy.

lista czerwona oznacza, zekrawedzie te zawieraja cykl i trzebasie wycofac.lista podkreslona oznaczaja drzeworozpinajace.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 6 / 42

Page 16: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Drzewo rozpinajace grafu - przykład

(a, b, c, d, e)

v1a

b

v2

d

v3e

v4

c

Do generowania wszystkich drzewrozpinajacych zastosujemy algorytmz nawrotami .Zgodnie z algorytmem z nawrotami,bedziemy tworzyc kolejne listy.

lista czerwona oznacza, zekrawedzie te zawieraja cykl i trzebasie wycofac.lista podkreslona oznaczaja drzeworozpinajace.

Listy (drzewa) generowane sa wporzadku leksykograficznym(alfabetycznym).

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 6 / 42

Page 17: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Drzewo rozpinajace grafu - przykład

(a, b, c, d, e)

v1a

b

v2

d

v3e

v4

c

(), (a), (a,b), (a,b, c) – Mamypierwsze drzewo rozpinajace.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 7 / 42

Page 18: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Drzewo rozpinajace grafu - przykład

(a, b, c, d, e)

v1a

b

v2

d

v3e

v4

c

(), (a), (a,b), (a,b, c) – Mamypierwsze drzewo rozpinajace.

Usuwamy ostatnia krawedz z (a,b, c),dodajemy kolejna krawedz z listy iotrzymujemy: (a,b,d) - zawiera cykl.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 7 / 42

Page 19: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Drzewo rozpinajace grafu - przykład

(a, b, c, d, e)

v1a

b

v2

d

v3e

v4

c

(), (a), (a,b), (a,b, c) – Mamypierwsze drzewo rozpinajace.

Usuwamy ostatnia krawedz z (a,b, c),dodajemy kolejna krawedz z listy iotrzymujemy: (a,b,d) - zawiera cykl.

Usuwamy zatem d i generujemynastepna liste: (a,b,e) –Otrzymalismy drugie drzeworozpinajace.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 7 / 42

Page 20: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Drzewo rozpinajace grafu - przykład

(a, b, c, d, e)

v1a

b

v2

d

v3e

v4

c

Usuwamy krawedz e, nie mozemyjednak kontynuowac bo e jestostatnia krawedzia na liscie.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 8 / 42

Page 21: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Drzewo rozpinajace grafu - przykład

(a, b, c, d, e)

v1a

b

v2

d

v3e

v4

c

Usuwamy krawedz e, nie mozemyjednak kontynuowac bo e jestostatnia krawedzia na liscie.

Usuwamy kolejna krawedz - b igenerujemy: (a, c), (a, c,d). Mamykolejne drzewo rozpinajace.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 8 / 42

Page 22: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Drzewo rozpinajace grafu - przykład

(a, b, c, d, e)

v1a

b

v2

d

v3e

v4

c

Usuwamy krawedz e, nie mozemyjednak kontynuowac bo e jestostatnia krawedzia na liscie.

Usuwamy kolejna krawedz - b igenerujemy: (a, c), (a, c,d). Mamykolejne drzewo rozpinajace.

Usuwamy ostatnia krawedz d ikontynuujemy: (a, c,e). Znalezlismykolejne drzewo rozpinajace.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 8 / 42

Page 23: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Drzewo rozpinajace grafu - przykład

(a, b, c, d, e)

v1a

b

v2

d

v3e

v4

c

Usuwamy krawedz e, nastepniekrawedz c, po czym generujemykolejno: (a,d), (a,d ,e). Mamykolejne drzewo rozpinajace.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 9 / 42

Page 24: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Drzewo rozpinajace grafu - przykład

(a, b, c, d, e)

v1a

b

v2

d

v3e

v4

c

Usuwamy krawedz e, nastepniekrawedz c, po czym generujemykolejno: (a,d), (a,d ,e). Mamykolejne drzewo rozpinajace.

Usuwamy krawedz e, potem dtworzymy nowa liste: (a,e). Niemozemy jednak kontynuowac wiecusuwamy krawedzie e oraz a.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 9 / 42

Page 25: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Drzewo rozpinajace grafu - przykład

(a, b, c, d, e)

v1a

b

v2

d

v3e

v4

c

Usuwamy krawedz e, nastepniekrawedz c, po czym generujemykolejno: (a,d), (a,d ,e). Mamykolejne drzewo rozpinajace.

Usuwamy krawedz e, potem dtworzymy nowa liste: (a,e). Niemozemy jednak kontynuowac wiecusuwamy krawedzie e oraz a.

Kolejnymi utworzonymi listami sawiec: (b), (b, c), (b, c,d).Otrzymalismy kolejne drzeworozpinajace.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 9 / 42

Page 26: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Drzewo rozpinajace grafu - przykład

(a, b, c, d, e)

v1a

b

v2

d

v3e

v4

c

Usuwamy krawedz d , ale kolejnalista: (b, c,e) zawiera cykl. Usuwamywiec kolejno krawedz e, potem c igenerujemy listy (b,d) i (b,d ,e).Znalezlismy kolejne drzeworozpinajace.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 10 / 42

Page 27: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Drzewo rozpinajace grafu - przykład

(a, b, c, d, e)

v1a

b

v2

d

v3e

v4

c

Usuwamy krawedz d , ale kolejnalista: (b, c,e) zawiera cykl. Usuwamywiec kolejno krawedz e, potem c igenerujemy listy (b,d) i (b,d ,e).Znalezlismy kolejne drzeworozpinajace.

Usuwamy kolejno krawedzie e i d akolejna lista jest: (b,e). Usuwamy e,a nastepnie b i tworzymy listy: (c),(c,d), (c,d ,e). Mamy kolejne drzeworozpinajace.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 10 / 42

Page 28: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Drzewo rozpinajace grafu - przykład

(a, b, c, d, e)

v1a

b

v2

d

v3e

v4

c

Usuwamy krawedz d , ale kolejnalista: (b, c,e) zawiera cykl. Usuwamywiec kolejno krawedz e, potem c igenerujemy listy (b,d) i (b,d ,e).Znalezlismy kolejne drzeworozpinajace.

Usuwamy kolejno krawedzie e i d akolejna lista jest: (b,e). Usuwamy e,a nastepnie b i tworzymy listy: (c),(c,d), (c,d ,e). Mamy kolejne drzeworozpinajace.

Usuwamy kolejno e i d , a nastepniegenerujemy las (c,e). Usuwamy e,nastepnie c i generujemy kolejnelisty: (d), (d ,e), (e). Nie ma juzjednak wiecej drzew rozpinajacych.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 10 / 42

Page 29: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Drzewo rozpinajace grafu - przykład

(a, b, c, d, e)

v1a

b

v2

d

v3e

v4

c

Usuwamy kolejno krawedzie e i d , akolejna lista jest: (b,e). Usuwamy e,a nastepnie b i tworzymy listy: (c),(c,d), (c,d ,e). Mamy kolejne drzeworozpinajace.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 11 / 42

Page 30: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Drzewo rozpinajace grafu - przykład

(a, b, c, d, e)

v1a

b

v2

d

v3e

v4

c

Usuwamy kolejno krawedzie e i d , akolejna lista jest: (b,e). Usuwamy e,a nastepnie b i tworzymy listy: (c),(c,d), (c,d ,e). Mamy kolejne drzeworozpinajace.

Usuwamy kolejno e i d , a nastepniegenerujemy las (c,e). Usuwamy e,nastepnie c i generujemy kolejnelisty: (d), (d ,e), (e). Nie ma juzjednak wiecej drzew rozpinajacych.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 11 / 42

Page 31: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Drzewo rozpinajace grafu - przykład

v1a

b

v2

d

v3e

v4

c

Drzewa rozpinajace

v1 v2

v3v4

v1 v2

v3v4

v1 v2

v3v4

v1 v2

v3v4

(a,b,c) (a,b,e) (a,c,d) (a,c,e)

v1 v2

v3v4

v1 v2

v3v4

v1 v2

v3v4

v1 v2

v3v4

(a,d,e) (b,c,d) (b,d,e) (c,d,e)Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 12 / 42

Page 32: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Generowanie drzew rozpinajacych grafu - załozenia

Kazdemu wierzchołkowi grafu przyporzadkujemy dwa atrybuty:Korzen[r ] - tzw. korzen drzewa, w którym znajduje sie wierzchołekr .Poprzednik [v ] - poprzednik wierzchołka v na jedynej sciezcełaczacej v z korzeniem.

Poprzednik korzenia jest nieokreslony; w algorytmach zakładamy,ze jest równy 0 lub NIL.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 13 / 42

Page 33: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Załozenia - przykład

a b c

d

e

f

g

h

i

j

k

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 14 / 42

Page 34: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Załozenia - przykład

a

(g,g)

b

(g,g)

c

(g,b)

d

(g,g)

e

(g,g)

f

(g,d)

g

(g,NIL)

h

(g,b)

i

(g,b)

j (g,g)

k

(g,e)

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 15 / 42

Page 35: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Generowanie drzew rozpinajacych grafu - idea

Proces generowania wszystkich drzew rozpinajacych wymaga dwóchoperacji:

Jezeli kolejna krawedz z listy nie zamyka cyklu (jestzaakceptowana), to dodanie jej powoduje połaczenie dwóch drzewT 1 i T 2 w jedno nowe drzewo T i w zwiazku z tym nalezy dokonacodpowiedniej zmiany etykiet wierzchołków T (Procedura A i B) .

Po otrzymaniu drzewa rozpinajacego lub wyczerpaniu sie listykrawedzi w procesie generowania drzew, wykonujemy krok“powrotu” polegajacy na wyrzuceniu ostatnio dodanej krawedzi.Powoduje to rozbicie pewnego drzewa T na dwa poddrzewa T 1 iT 2 (Procedura C) .

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 16 / 42

Page 36: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Procedura A - pseudokod

Zamiana etykiet wierzchołków drzewa T o korzeniu r , pooperacji zamiany r na nowy korzen v.

Algorytm NowyKorze n(v):1: StaryKorzen := Korzen[v ]2: if StaryKorzen = v then3: return;4: end if5: v1 := 0; v2 := v ;6: repeat7: p := v1; v1 := v2; v2 := Poprzednik [v1]; Poprzednik [v1] := p;8: until v1 = StaryKorzen9: for each w ∈ V do

10: if Korzen[w ] = StaryKorzen then11: Korzen[w ] = v ;12: end if13: end for

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 17 / 42

Page 37: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Procedura A - przykład

operacja zamiany korzenia g na nowy korzen i .

a

(g,g)

b

(g,g)

c

(g,b)

d

(g,g)

e

(g,g)

f

(g,d)

g

(g,NIL)

h

(g,b)

i

(g,b)

j (g,g)

k

(g,e)

a

(g,g)

b

(g,g)

c

(g,b)

d

(g,g)

e

(g,g)

f

(g,d)

g

(g,NIL)

h

(g,b)

i

(g,b)

j (g,g)

k

(g,e)

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 18 / 42

Page 38: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Procedura A - przykład, cd.

zmieniamy skierowanie krawedzi na sciezce z g do i .zmieniamy drugie etykiety wierzchołków (6=i) tej sciezki. Etykietypozostałych wierzchołków w drzewie T pozostaja bez zmian.

a

(g,g)

b

(g,g)

c

(g,b)

d

(g,g)

e

(g,g)

f

(g,d)

g

(g,NIL)

h

(g,b)

i

(g,b)

j (g,g)

k

(g,e)

a

(g,g)

b

(g, i)

c

(g,b)

d

(g,g)

e

(g,g)

f

(g,d)

g

(g,b)

h

(g,b)

i

(g,b)

j (g,g)

k

(g,e)

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 19 / 42

Page 39: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Procedura A - przykład, cd.

Wszystkie wierzchołki drzewa T otrzymuja pierwsza etykiete(okreslajaca korzen) równa i , a wierzchołek i dostaje drugaetykiete postaci (i ,NIL).

a

(g,g)

b

(g,g)

c

(g,b)

d

(g,g)

e

(g,g)

f

(g,d)

g

(g,NIL)

h

(g,b)

i

(g,b)

j (g,g)

k

(g,e)

a

(i ,g)

b

(i , i)

c

(i ,b)

d

(i ,g)

e

(i ,g)

f

(i ,d)

g

(i ,b)

h

(i ,b)

i

(i ,NIL)

j (i ,g)

k

(i ,e)

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 20 / 42

Page 40: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Procedura B - pseudokod

Zamienia etykiety wierzchołków dwóch drzew T 1 i T 2, okorzeniach odpowiednio r1 i r2, r1 < r2, po operacji ichpołaczenia przez dodanie krawedzi e = (u, v), gdzieu ∈ V (T 1), v ∈ V (T 2).

Algorytm DodajKrawedz ( e = (u, v)):1: v1 := Korzen[u]; v2 := Korzen[v ];2: if v2 < v1 then3: zamien(v1, v2); zamien(u, v);4: end if5: NowyKorzen(v);6: Poprzednik [v ] := u;7: for each w ∈ V do8: if Korzen[w ] = v2 then9: Korzen[w ] = v1;

10: end if11: end for

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 21 / 42

Page 41: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Procedura B - Przykład

Połaczenie dwóch drzew T 1 i T 2, o korzeniach odpowiednio d i m,przez dodanie krawedzi e = (g,b), gdzie g ∈ V (T 1), b ∈ V (T 2).

a

(d , g)

b

(m, c)

c

(m,m)

d

(d ,NIL)

e

(d , g)

f

(d , d)

g

(d , d)

h

(m, b)

i

(m, b)

j

(d , g)

k

(d , e)

m

(m,NIL)

a

(d , g)

b

(m, c)

c

(m,m)

d

(d ,NIL)

e

(d , g)

f

(d , d)

g

(d , d)

h

(m, b)

i

(m, b)

j

(d , g)

k

(d , e)

m

(m,NIL)

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 22 / 42

Page 42: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Procedura B - Przykład, cd.

wierzchołkom w drzewie T 2 zmieniamy drugie etykiety tak jakprzy zamianie korzenia z m na b (Procedura A); w drzewie T1drugie etykiety wierzchołków pozostaja bez zmian.

a

(d , g)

b

(m, c)

c

(m,m)

d

(d ,NIL)

e

(d , g)

f

(d , d)

g

(d , d)

h

(m, b)

i

(m, b)

j

(d , g)

k

(d , e)

m

(m,NIL)

a

(d , g)

b

(b,NIL)

c

(b, b)

d

(d ,NIL)

e

(d , g)

f

(d , d)

g

(d , d)

h

(b, b)

i

(b, b)

j

(d , g)

k

(d , e)

m

(b, c)

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 23 / 42

Page 43: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Procedura B - Przykład, cd.

wierzchołkowi b jako druga etykiete przypisujemy g.wszystkie wierzchołki drzewa T 2 otrzymuja pierwsza etykieterówna d ; w drzewie T1 pierwsze etykiety wierzchołków pozostajabez zmian.

a

(d , g)

b

(b,NIL)

c

(b, b)

d

(d ,NIL)

e

(d , g)

f

(d , d)

g

(d , d)

h

(b, b)

i

(b, b)

j

(d , g)

k

(d , e)

m

(b, c)

a

(d , g)

b

(d , g)

c

(d , b)

d

(d ,NIL)

e

(d , g)

f

(d , d)

g

(d , d)

h

(d , b)

i

(d , b)

j

(d , g)

k

(d , e)

m

(d , c)

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 24 / 42

Page 44: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Procedura C - pseudokod

Zamiania etykiet wierzchołków drzewa T o korzeniu r pousunieciu z niego krawedzi e = (u, v), czyli rozbiciu T na dwadrzewa T 1 i T 2, gdzie u ∈ V (T 1), v ∈ V (T 2) i r ∈ V (T 1).

UWAGA! W naszym przypadku zawsze usuwamy ostatnio dodanakrawedz, wiec wierzchołek u jest wierzchołkiem wiszacym i pousunieciu krawedzi stanie sie drzewem trywialnym(jednowierzchołkowym). Zatem proces usuniecia krawedzi polegajedynie na zmianie atrybutów wierzchołka u. Realizuje to algorytmUsunKrawedz .Algorytm Usu nKrawedz(e=(u,v)):

1: if Poprzednik [u] = v then2: zamien(u, v)3: end if4: Poprzednik [v ] := 0;5: Korzen[v ] = v ;

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 25 / 42

Page 45: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Procedura C - Przykład

W drzewie T 1 obie etykiety wierzchołków pozostaja bez zmian.

Wierzchołkowi b przypisujemy etykiete (b, 0) (staje sie korzeniemdrzewa T 2). Drugie etykiety pozostałych wierzchołków w drzewie T 2pozostaja bez zmian, ale otrzymuja pierwsza etykiete równa b.

a

(d , g)

b

(d , g)

c

(d , b)

d

(d ,NIL)

e

(d , g)

f

(d , d)

g

(d , d)

h

(d , b)

i

(d , b)

j

(d , g)

k

(d , e)

m

(d , c)

a

(d , g)

b

(b,NIL)

c

(b, b)

d

(d ,NIL)

e

(d , g)

f

(d , d)

g

(d , d)

h

(b, b)

i

(b, b)

j

(d , g)

k

(d , e)

m

(b, c)

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 26 / 42

Page 46: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Procedura C - Przykład, cd.

Usuniecie krawedzi (g, b).

a

(d , g)

b

(b,NIL)

c

(b, b)

d

(d ,NIL)

e

(d , g)

f

(d , d)

g

(d , d)

h

(b, b)

i

(b, b)

j

(d , g)

k

(d , e)

m

(b, c)

a

(d , g)

b

(b,NIL)

c

(b, b)

d

(d ,NIL)

e

(d , g)

f

(d , d)

g

(d , d)

h

(b, b)

i

(b, b)

j

(d , g)

k

(d , e)

m

(b, c)

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 27 / 42

Page 47: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Algorytm generowania wszystkich drzewrozpinajacych grafu

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 28 / 42

Page 48: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Znalezc wszystkie drzewa rozpiete grafu

v1a

v2

cd e

v3

b

v4f

v5g

a, ab, abc, abd, abde, abdf,abdg, abef, abeg, abfg, abg,ac, acd, acde, acdf, acdg, ace,acef, aceg, acf, acfg, acg, ad,ade, adef, adeg, adf, adfg,adg, aef, aefg, aeg, af, afg, ag,

b, bc, bcd, bcde, bcdf, bcdg,bce, bcef, bceg, bcf, bcfg, bcg,bd, bde, bdef, bdeg, bdf, bdfg,bdg, be, bef, befg, beg, bf, bfg,bg, c.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 29 / 42

Page 49: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Drzewa rozpinajace o minimalnej wadze

Jezeli mamy do czynienia z grafem z wagami, to najczesciejinteresuje nas znalezienie drzewa rozpinajacego o minimalnejwadze, tzn., drzewa z najmniejsza suma wag jego krawedzi.Aby znalezc drzewo o zadanych własnosciach mozna zastosowacdwa algorytmy:

Kruskala (algorytm zachłanny)Prima (algorytm najblizszego sasiada).

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 30 / 42

Page 50: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Algorytmy Kruskala

Algorytm jest oparty o metode zachłanna i polega nałaczeniu wielu poddrzew w jedno za pomoca krawedzi onajmniejszej wadze.

Wybierz krawedz (która nie jest petla) e1 tak, by waga tej krawedzibyła najmniejsza.Jezeli krawedzie e1, e2, . . ., ek zostały juz wybrane, to zpozostałych E \ {e1,e2, . . . ,ek} wybierz krawedz ek+1 w takisposób aby:

graf, który składa sie tylko z krawedzi e1, e2, . . ., ek , ek+1 byłacykliczny, orazwaga krawedzi ek+1 była najmniejsza.

Jesli nie mozna wykonac kroku 2, to STOP.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 31 / 42

Page 51: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Algorytm Kruskala - Złozonosc obliczeniowa

Algorytm mozna podzielic na dwa etapy:w pierwszym etapie sortujemy krawedzie według wag w czasieO(m · log(m)).w drugim etapie budujemy rozpiete drzewo poprzez wybórnajkrótszych krawedzi ze zbioru krawedzi E(G); ten etap moznawykonac w czasie O(m · log(n)).

Sumaryczny czas pracy algorytmu Kruskala wynosi: O(m · log(n))

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 32 / 42

Page 52: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Algorytm Kruskala - Przykład

a4

2

b2

2

c

8

d3

e

1

7f

6

Po posortowaniu krawedzi wg.wag otrzymujemy:ae=1 , af=2 , bc=2 , be=2 ,de=3 , ab=4 , fd=6 , ef=7 ,cd=8

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 33 / 42

Page 53: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Algorytm Kruskala - Przykład

Krok 1.

a4

2

b2

2

c

8

d3

e

1

7f

6

Krok 2.

a4

2

b2

2

c

8

d3

e

1

7f

6

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 34 / 42

Page 54: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Algorytm Kruskala - Przykład

Krok 3.

a4

2

b2

2

c

8

d3

e

1

7f

6

Krok 4 - scalenie.

a4

2

b2

2

c

8

d3

e

1

7f

6

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 35 / 42

Page 55: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Algorytm Kruskala - Przykład

Krok 5.

a4

2

b2

2

c

8

d3

e

1

7f

6

Minimalne drzewo.

a

2

b2

2

c

d3

e

1

f

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 36 / 42

Page 56: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Algorytm Prima

Algorytm ten jest, podobnie jak algorytm Kruskala oparty ometode zachłanna.

Budowe minimalnego drzewa rozpinajacego zaczynamy oddowolnego wierzchołka, np. od pierwszego. Dodajemywierzchołek do drzewa, a wszystkie krawedzie incydentneumieszczamy na posortowanej wg. wag liscie.

Nastepnie zdejmujemy z listy pierwszy element (o najmniejszejwadze) i jezeli wierzchołek, który łaczy nie nalezy do drzewa,dodajemy go do drzewa a na liscie znów umieszczamy wszystkiekrawedzie incydentne z wierzchołkiem, który dodalismy.

Jednym zdaniem: zawsze dodajemy do drzewa krawedz onajmniejszej wadze, osiagalna (w przeciwienstwie do Kruskala) zjakiegos wierzchołka tego drzewa.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 37 / 42

Page 57: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Algorytm Prima - Przykład

a4

2

b2

2

c

8

d3

e

1

7f

6

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 38 / 42

Page 58: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Algorytm Prima - Przykład

Krok 1.

a4

2

b2

2

c

8

d3

e

1

7f

6

Krok 2.

a4

2

b2

2

c

8

d3

e

1

7f

6

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 39 / 42

Page 59: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Algorytm Prima - Przykład

Krok 3.

a4

2

b2

2

c

8

d3

e

1

7f

6

Krok 4

a4

2

b2

2

c

8

d3

e

1

7f

6

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 40 / 42

Page 60: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Algorytm Prima - Przykład

Krok 5.

a4

2

b2

2

c

8

d3

e

1

7f

6

Minimalne Drzewo

a

2

b2

2

c

d3

e

1

f

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 41 / 42

Page 61: Algorytmy i Struktury Danych.Algorytm Kruskala Algorytm Prima Bo˙zena Woz´na-Szcze sniak (AJD)´ Algorytmy i Struktury Danych. Wykład 9 2 / 42 Drzewo rozpinaja˛ce grafu Definicja

Algorytm Prima a Algorytm Kruskala - Przykład

Minimalne Drzewo wg. AlgorytmuKruskala.

a

2

b2

2

c

d3

e

1

f

Minimalne Drzewo wg. AlgorytmuPrima

a

2

b2

2

c

d3

e

1

f

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 9 42 / 42