Algorytmy i Struktury Danych. - Algorytmy Zach annewozna.org/students/2016-2017/asd/asd11.pdf ·...

33
Algorytmy i Struktury Danych. Algorytmy Zachlanne dr hab. Bo˙ zena Wo´ zna-Szcze´ sniak [email protected] Jan Dlugosz University, Poland Wyklad 11 Bo˙ zena Wo´ zna-Szcze´ sniak (AJD) Algorytmy i Struktury Danych. Wyklad 11 1 / 31

Transcript of Algorytmy i Struktury Danych. - Algorytmy Zach annewozna.org/students/2016-2017/asd/asd11.pdf ·...

Page 1: Algorytmy i Struktury Danych. - Algorytmy Zach annewozna.org/students/2016-2017/asd/asd11.pdf · Algorytm zachłanny przy podejmowaniu jednej z wielu mozliwych˙ decyzji zawsze wykonuje

Algorytmy i Struktury Danych.Algorytmy Zachłanne

dr hab. Bozena [email protected]

Jan Długosz University, Poland

Wykład 11

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

Page 2: Algorytmy i Struktury Danych. - Algorytmy Zach annewozna.org/students/2016-2017/asd/asd11.pdf · Algorytm zachłanny przy podejmowaniu jednej z wielu mozliwych˙ decyzji zawsze wykonuje

Plan wykładu

Algorytmy zachłanne - wprowadzenieProblem wyboru zajec.Problem przydziału zajec do jak najmniejszej liczby sal.Problem wydawania resztyAlgorytm KruskalaAlgorytm Prima (algorytm najblizszego sasiada).

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

Page 3: Algorytmy i Struktury Danych. - Algorytmy Zach annewozna.org/students/2016-2017/asd/asd11.pdf · Algorytm zachłanny przy podejmowaniu jednej z wielu mozliwych˙ decyzji zawsze wykonuje

Algorytmy zachłanne

Algorytmy zachłanne stosowane do rozwiazywania problemówoptymalizacyjnych, w których osiagniecie optymalnegorozwiazania wymaga podejmowania wielu decyzji.Algorytm zachłanny przy podejmowaniu jednej z wielu mozliwychdecyzji zawsze wykonuje działanie, które wydaje sie w danejchwili najkorzystniejsze.Algorytm zachłanny wybiera lokalnie optymalna mozliwosc wnadziei, ze doprowadzi ona do globalnie optymalnego rozwiazania(działa zachłannie)Algorytmy zachłanne nie zawsze prowadza do optymalnychrozwiazan.

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

Page 4: Algorytmy i Struktury Danych. - Algorytmy Zach annewozna.org/students/2016-2017/asd/asd11.pdf · Algorytm zachłanny przy podejmowaniu jednej z wielu mozliwych˙ decyzji zawsze wykonuje

Problem wyboru zajec

Problem wyboru zajec, to problem przydzielenia dostepu dozasobu wykorzystywanego podczas wykonywania pewnych zajec.Załozenia:

Niech bedzie dany zbiór proponowanych zajec S = {1, . . . ,n}, doktórych ma byc przydzielona sala wykładowa (zasoby), w którejmoze sie odbywac w danej chwili tylko jedno z tych zajec.Kazde zajecie ma swój czas rozpoczecia si oraz czas zakonczeniafi takie, ze si ≤ fi . Jezeli zajecie o numerze i zostanie wytypowane,to zajmuje zasób [si , fi). Zajecia o numerach i oraz j sa zgodne,jesli [si , fi) ∩ [sj , fj) = 0

Problem: Wyznaczyc najwiekszy podzbiór parami zgodnychzajec.

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

Page 5: Algorytmy i Struktury Danych. - Algorytmy Zach annewozna.org/students/2016-2017/asd/asd11.pdf · Algorytm zachłanny przy podejmowaniu jednej z wielu mozliwych˙ decyzji zawsze wykonuje

Jak działa algorytm wyczerpujacy (naiwny) ?

Generujemy wszystkie podzbiory zbioru zajecWybieramy te podzbiory, które sa parami zgodneWybieramy ten podzbiór, który ma najwiecej elementówObserwacja: Algorytm wyczerpujacy ma złozonosc O(2n)

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

Page 6: Algorytmy i Struktury Danych. - Algorytmy Zach annewozna.org/students/2016-2017/asd/asd11.pdf · Algorytm zachłanny przy podejmowaniu jednej z wielu mozliwych˙ decyzji zawsze wykonuje

Strategia zachłanna: przykład

Dane sa zajecia:i 1 2 3 4 5 6 7 8 9 10 11si 12 8 1 3 8 2 0 5 5 3 6fi 14 12 4 5 11 13 6 7 9 8 10

Porzadkujemy zajecia ze wzgledu na czas zakonczeniaf1 ≤ f2 ≤ . . . ≤ fnWybieramy na kazdym kroku to zajecie, które ma najwczesniejszyczas zakonczenia wsród zajec, które moga byc dołaczone dozbioru - wybór ten maksymalizuje ilosc nie zajetego czasu po jegodokonaniu.

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

Page 7: Algorytmy i Struktury Danych. - Algorytmy Zach annewozna.org/students/2016-2017/asd/asd11.pdf · Algorytm zachłanny przy podejmowaniu jednej z wielu mozliwych˙ decyzji zawsze wykonuje

Strategia zachłanna: przykład

i 1 2 3 4 5 6 7 8 9 10 11si 12 8 1 3 8 2 0 5 5 3 6fi 14 12 4 5 11 13 6 7 9 8 10

i s_i f_i 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

3 1 4 1

4 3 5 21

7 0 6 31

8 5 7 41

10 3 8 51 4

9 5 9 61 4

11 6 10 71 4

5 8 11 81 4

2 8 12 91 4 8

6 2 13 101 4 8

1 12 14 111 4 8

rozwiązanie 3 4 8 11

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

Page 8: Algorytmy i Struktury Danych. - Algorytmy Zach annewozna.org/students/2016-2017/asd/asd11.pdf · Algorytm zachłanny przy podejmowaniu jednej z wielu mozliwych˙ decyzji zawsze wykonuje

Algorytm: GREEDY-ACTIVITY-SELECTOR

Dane wejsciowe stanowia tablice s (czasów rozpoczecia) oraz f(czasów zakonczenia).Zakładamy, ze zajecia sa posortowane ze wzgledu na czaszakonczenia.

GREEDY-ACTIVITY-SELECTOR (s, f)

1: n := length[s]2: A := {1}3: j := 14: for i := 2 to n do5: if si ≥ fj then6: A := A ∪ {i}7: j := i8: end if9: end for

10: return A

Zbiór A zawiera wybrane zajecia, a zmienna j zawieranumer ostatnio dodanego do A zajecia.

Zajecia sa rozpatrywane w porzadku rosnacego czasuzakonczenia, zatem fj jest zawsze najwiekszym czasemzakonczenia zajecia nalezacego do A.

W wierszach 2-3 wybieramy zajecie 1, zbiór {1} stajesie wartoscia zmiennej A, a zmiennej j przypisujemynumer tego zajecia.

W wierszach 4-9 rozpatrywane sa wszystkie zajecia;zajecie zostaje dołaczone, jezeli jest zgodne zewszystkimi dołaczonymi dotychczas zajeciami.

Aby stwierdzic, czy zajecie i jest zgodne z kazdymzajeciem ze zbioru A, wystarczy sprawdzic czy jegoczas rozpoczecia si nie jest wczesniejszy niz czaszakonczenia fj zajecia ostatnio dodanego do A.

Jesli zajecie i jest zgodne, to w wierszach 6-7 zostajeono dodane do zbioru A oraz jest aktualizowanawartosc j .

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

Page 9: Algorytmy i Struktury Danych. - Algorytmy Zach annewozna.org/students/2016-2017/asd/asd11.pdf · Algorytm zachłanny przy podejmowaniu jednej z wielu mozliwych˙ decyzji zawsze wykonuje

Algorytm: GREEDY-ACTIVITY-SELECTOR - Uwagi

Zajecie wybrane przez GREEDY-ACTIVITY-SELECTOR mazawsze najwczesniejszy czas zakonczenia wsród zajec, któremoga byc dołaczone bez zakłócenia zgodnosci zbioru A.Wybór jest zachłanny w tym sensie, ze pozostawia mozliwienajwiecej swobody przy wyborze pozostałych zajec.Twierdzenie: Algorytm zachłanny generuje rozwiazanie problemuwyboru zajec o najwiekszym rozmiarze.Złozonosc O(n).

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

Page 10: Algorytmy i Struktury Danych. - Algorytmy Zach annewozna.org/students/2016-2017/asd/asd11.pdf · Algorytm zachłanny przy podejmowaniu jednej z wielu mozliwych˙ decyzji zawsze wykonuje

Charakterystyczne cechy problemów poddajacych siestrategii zachłannej

optymalna podstruktura - optymalne rozwiazanie jest funkcjaoptymalnych rozwiazan podproblemów. Na przykład dla problemuwyboru zajec własnosc optymalnej podstruktury polega na tym,ze: jezeli optymalne rozwiazanie A tego problemu rozpoczyna sieod zajec o numerze 1, to A′ = A− {1} jest optymalnymrozwiazaniem problemu optymalnego wyboru zajec dla zbioruS′ = {i ∈ S : si ≥ f1}.własnosc wyboru zachłannego - za pomoca lokalnieoptymalnych (zachłannych) wyborów mozna uzyskac globalnieoptymalne rozwiazanie. W algorytmie zachłannym wybory sapodejmowane jako najlepsze (z punktu widzenia zadania) w danejchwili. Wybory podejmowane w algorytmie zachłannym nie sazalezne od wyborów przeszłych. Mozna formalnie udowodnic(stosujac metode indukcji), ze dany problem ma własnosc wyboruzachłannego.

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

Page 11: Algorytmy i Struktury Danych. - Algorytmy Zach annewozna.org/students/2016-2017/asd/asd11.pdf · Algorytm zachłanny przy podejmowaniu jednej z wielu mozliwych˙ decyzji zawsze wykonuje

Problem przydziału zajec do minimalnej liczby sal

Problem: Dany jest zbiór zajec, które maja sie odbyc w pewnejliczbie sal wykładowych. Nalezy wyznaczyc taki przydział zajec dosal, aby liczba uzytych sal była najmniejsza.Metoda zachłanna rozwiazujaca ten problem:

Niech bedzie dany zbiór zajec S = 1, . . . ,n, do których ma bycprzydzielona sala wykładowa (zasoby), w której moze sie odbywacw danej chwili tylko jedno z tych zajec.Kazde zajecie ma swój czas rozpoczecia si oraz czas zakonczeniafi takie, ze si ≤ fi . Jezeli zajecie o numerze i zostanie wytypowane,to zajmuje zasób [si , fi). Zajecia o numerach i oraz j sa zgodne jesli[si , fi) ∩ [sj , fj) = 0.Niech zajecia w S beda uporzadkowane niemalejaco ze wzgleduna ich czas rozpoczecia; Jezeli znajda sie dwa zajecia i oraz jtakie, ze si = sj , to wówczas pierwsze bedzie to zajecie, które madłuzszy czas trwania.

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

Page 12: Algorytmy i Struktury Danych. - Algorytmy Zach annewozna.org/students/2016-2017/asd/asd11.pdf · Algorytm zachłanny przy podejmowaniu jednej z wielu mozliwych˙ decyzji zawsze wykonuje

Algorytm: GREEDY-ROOM-SELECTOR

Dane wejsciowe stanowia tablice s (czasów rozpoczecia) oraz f(czasów zakonczenia).Zakładamy, ze zajecia sa posortowane ze wzgledu na czasrozpoczecia.

GREEDY-ROOM-SELECTOR (s, f)

1: k := 12: A := {1,2, . . . , length[s]}3: while A 6= ∅ do4: p[k ] := GREEDY−SELECTOR(s, f )5: A := A− p[k ]6: if A 6= ∅ then7: k := k + 18: end if9: end while

10: return k

Zadaniem procedury pomocniczejGREEDY-SELECTOR jest wybranie zezboru S podzbioru zawierajacegowszystkie parami zgodne zajecia, wsródktórych jest zajecie nr 1.

Działanie tej procedury jest analogiczne jakdziałanie proceduryGREEDY-ACTIVITY-SELECTOR. Róznicapolega jedynie na tym, zeGREEDY-SELECTOR pobiera zajeciauporzadkowane zgodnie z czasem ichrozpoczecia, aGREEDY-ACTIVITY-SELECTOR pobierazajecia uporzadkowane zgodnie z czasemich zakonczenia.

Złozonosc O(n2)

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

Page 13: Algorytmy i Struktury Danych. - Algorytmy Zach annewozna.org/students/2016-2017/asd/asd11.pdf · Algorytm zachłanny przy podejmowaniu jednej z wielu mozliwych˙ decyzji zawsze wykonuje

Algorytm: GREEDY-ROOM-SELECTOR - Uwagi

Liczba sal wyznaczona GREEDY-ROOM-SELECTOR jest zawszenajmniejszaWybór jest zachłanny w tym sensie, ze pozostawia w danej Saliminimalna ilosc niewykorzystanego czasuTwierdzenie: Algorytm GREEDY-ROOM-SELECTOR generujeoptymalne rozwiazanie problemu przydziału zajec do jaknajmniejszej liczby sal.

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

Page 14: Algorytmy i Struktury Danych. - Algorytmy Zach annewozna.org/students/2016-2017/asd/asd11.pdf · Algorytm zachłanny przy podejmowaniu jednej z wielu mozliwych˙ decyzji zawsze wykonuje

Problem wydawania reszty za pomoca jaknajmniejszej liczby monet

Problem: Mamy reszte R i N monet o nominałach o okreslonychwartosciach całkowitych. Monet o okreslonym nominale jestnieograniczona liczba. Nalezy podac jak najmniejsza ilosc monetpotrzebna do wydania reszty.Przykład: Wydac 98 PLN, dysponujac nominałami:

50, 20, 10, 5, 2, 1.Rozwiazanie: Porzadkujemy nominały malejaco ze wzgledu naich wartosci. Wydajemy nastepujaco:

50 - pozostało 4820 - pozostało 2820 - pozostało 85 - pozostało 32 - pozostało 11 - pozostało 0

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

Page 15: Algorytmy i Struktury Danych. - Algorytmy Zach annewozna.org/students/2016-2017/asd/asd11.pdf · Algorytm zachłanny przy podejmowaniu jednej z wielu mozliwych˙ decyzji zawsze wykonuje

Algorytm: GREEDY-GIVE-CHANGE

Załozenie: c jest uporzadkowana malejaco tablica nominałów,sum jest reszta do wydania, k jest liczba nominałów róznegorodzaju.

GREEDY-GIVE-CHANGE (sum,c,k)

1: for i := 0 to k do2: if (sum div c[i]) 6= 0 then3: change[i] := sum div c[i]4: sum := sum mod c[i]5: else6: change[i] := 07: end if8: end for9: return change

Do tablicy change wpisujemy najwiekszamozliwa liczbe nominałuck > ck−1 > . . . > c0.

Jezeli jakiegos nominału nie mozna uzycdo wydania okreslonej reszty, tzn. nie jestspełniony warunek (sumdivc[i])! = 0, todo tablicy change wpisywana jest wartosczero - wiersz 6 algorytmu.

Złozonosc O(n)

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

Page 16: Algorytmy i Struktury Danych. - Algorytmy Zach annewozna.org/students/2016-2017/asd/asd11.pdf · Algorytm zachłanny przy podejmowaniu jednej z wielu mozliwych˙ decyzji zawsze wykonuje

Problem wydawania reszt - uwagi

Istnieja zbiory nominałów, dla których podany algorytm nie dajeoptymalnego rozwiazania.Przykład 1: Wydac 10PLN za pomoca nominałów 1, 5 i 6.

Rozwiazanie algorytmu zachłannego: 6 + 1 + 1 + 1 + 1, czyli 5monet.Rozwiazanie optymalne: 5 + 5

Przykład 2: Wydac 66 PLN za pomoca nominałów 50, 20 i 1.Rozwiazanie algorytmu zachłannego: 50 + 16 *1, czyli 17nominałów.Rozwiazanie optymalne: 3* 20 + 6* 1, czyli 9 nominałów.

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

Page 17: Algorytmy i Struktury Danych. - Algorytmy Zach annewozna.org/students/2016-2017/asd/asd11.pdf · Algorytm zachłanny przy podejmowaniu jednej z wielu mozliwych˙ decyzji zawsze wykonuje

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 11 17 / 31

Page 18: Algorytmy i Struktury Danych. - Algorytmy Zach annewozna.org/students/2016-2017/asd/asd11.pdf · Algorytm zachłanny przy podejmowaniu jednej z wielu mozliwych˙ decyzji zawsze wykonuje

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 11 17 / 31

Page 19: Algorytmy i Struktury Danych. - Algorytmy Zach annewozna.org/students/2016-2017/asd/asd11.pdf · Algorytm zachłanny przy podejmowaniu jednej z wielu mozliwych˙ decyzji zawsze wykonuje

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 11 17 / 31

Page 20: Algorytmy i Struktury Danych. - Algorytmy Zach annewozna.org/students/2016-2017/asd/asd11.pdf · Algorytm zachłanny przy podejmowaniu jednej z wielu mozliwych˙ decyzji zawsze wykonuje

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 11 18 / 31

Page 21: Algorytmy i Struktury Danych. - Algorytmy Zach annewozna.org/students/2016-2017/asd/asd11.pdf · Algorytm zachłanny przy podejmowaniu jednej z wielu mozliwych˙ decyzji zawsze wykonuje

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 11 19 / 31

Page 22: Algorytmy i Struktury Danych. - Algorytmy Zach annewozna.org/students/2016-2017/asd/asd11.pdf · Algorytm zachłanny przy podejmowaniu jednej z wielu mozliwych˙ decyzji zawsze wykonuje

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 11 20 / 31

Page 23: Algorytmy i Struktury Danych. - Algorytmy Zach annewozna.org/students/2016-2017/asd/asd11.pdf · Algorytm zachłanny przy podejmowaniu jednej z wielu mozliwych˙ decyzji zawsze wykonuje

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 11 21 / 31

Page 24: Algorytmy i Struktury Danych. - Algorytmy Zach annewozna.org/students/2016-2017/asd/asd11.pdf · Algorytm zachłanny przy podejmowaniu jednej z wielu mozliwych˙ decyzji zawsze wykonuje

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 11 22 / 31

Page 25: Algorytmy i Struktury Danych. - Algorytmy Zach annewozna.org/students/2016-2017/asd/asd11.pdf · Algorytm zachłanny przy podejmowaniu jednej z wielu mozliwych˙ decyzji zawsze wykonuje

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 11 23 / 31

Page 26: Algorytmy i Struktury Danych. - Algorytmy Zach annewozna.org/students/2016-2017/asd/asd11.pdf · Algorytm zachłanny przy podejmowaniu jednej z wielu mozliwych˙ decyzji zawsze wykonuje

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 11 24 / 31

Page 27: Algorytmy i Struktury Danych. - Algorytmy Zach annewozna.org/students/2016-2017/asd/asd11.pdf · Algorytm zachłanny przy podejmowaniu jednej z wielu mozliwych˙ decyzji zawsze wykonuje

Algorytm Prima

Algorytm Prima - algorytm zachłanny wyznaczajacy tzw.minimalne drzewo rozpinajace.Algorytm został wynaleziony w 1930 przez czeskiego matematykaVojtecha Jarníka, a nastepnie w 1957 odkryty na nowo przezinformatyka Roberta C. Prima oraz niezaleznie w 1959 przezEdsgera Dijkstre. Z tego powodu algorytm nazywany jestrówniez algorytmem Dijkstry-Prima, algorytmem Jarníka, alboalgorytmem Prima-Jarníka.

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

Page 28: Algorytmy i Struktury Danych. - Algorytmy Zach annewozna.org/students/2016-2017/asd/asd11.pdf · Algorytm zachłanny przy podejmowaniu jednej z wielu mozliwych˙ decyzji zawsze wykonuje

Algorytm Prima

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 11 26 / 31

Page 29: Algorytmy i Struktury Danych. - Algorytmy Zach annewozna.org/students/2016-2017/asd/asd11.pdf · Algorytm zachłanny przy podejmowaniu jednej z wielu mozliwych˙ decyzji zawsze wykonuje

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 11 27 / 31

Page 30: Algorytmy i Struktury Danych. - Algorytmy Zach annewozna.org/students/2016-2017/asd/asd11.pdf · Algorytm zachłanny przy podejmowaniu jednej z wielu mozliwych˙ decyzji zawsze wykonuje

Algorytm Prima - Przykład

Krok 1.

a4

2

b2

2

c

8

d3

e

1

7f

6

Wybieramy wierzchołek a.Tworzymy posortowana listeL=[a,e,1],[a,f,2],[a,b,4]. Wybieramykrawedz (a,e).

Krok 2.

a4

2

b2

2

c

8

d3

e

1

7f

6

Dodajemy nowe krawedzie:L=[a,f,2],[e,b,2],[e,d,3],[a,b,4],[e,f,7].Wybieramy krawedz (a,f).

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

Page 31: Algorytmy i Struktury Danych. - Algorytmy Zach annewozna.org/students/2016-2017/asd/asd11.pdf · Algorytm zachłanny przy podejmowaniu jednej z wielu mozliwych˙ decyzji zawsze wykonuje

Algorytm Prima - Przykład

Krok 3.

a4

2

b2

2

c

8

d3

e

1

7f

6

Krawedz [f,e,7] jest juz na liscie:L=[e,b,2],[e,d,3],[a,b,4],[f,d,6],[e,f,7].Wybieramy krawedz (e,b).

Krok 4

a4

2

b2

2

c

8

d3

e

1

7f

6

Dodajemy krawedz [b,c,2]:L=[b,c,2],[e,d,3],[a,b,4],[f,d,6],[e,f,7]Wybieramy krawedz (b,c).

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

Page 32: Algorytmy i Struktury Danych. - Algorytmy Zach annewozna.org/students/2016-2017/asd/asd11.pdf · Algorytm zachłanny przy podejmowaniu jednej z wielu mozliwych˙ decyzji zawsze wykonuje

Algorytm Prima - Przykład

Krok 5.

a4

2

b2

2

c

8

d3

e

1

7f

6

Dodajemy krawedz [c,d,8]:L=[e,d,3],[a,b,4],[f,d,6],[e,f,7],[c,d,8]Wybieramy krawedz (e,d).

Minimalne Drzewo

a

2

b2

2

c

d3

e

1

f

Drzewo utworzone.

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

Page 33: Algorytmy i Struktury Danych. - Algorytmy Zach annewozna.org/students/2016-2017/asd/asd11.pdf · Algorytm zachłanny przy podejmowaniu jednej z wielu mozliwych˙ decyzji zawsze wykonuje

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 11 31 / 31