Metody algorytmiczne z Wiadomo jak struktur maj algorytmy, z Wiadomo jak stworzyć obiekty, którymi manipuluj algorytmy, z Wiadomo jak zapisać algorytmy aby wykonaÅ‚ je procesor, ale z Jakie s metody Z\P\ ODQLD algorytmów??? z Niestety, na obmy lanie przepisów nie ma dobrych przepisów M.Rawski Wst p do Informatyki Jak to zrobić? z Ka de zadanie jest wyzwaniem dla projektanta. z Istniej ogólne metody algorytmiczne, które mog być przydatne w rozwi zywaniu zada algorytmicznych. z Pewne algorytmy wypÅ‚ywaj z pewnych ogólnych wzorców. z Wi c zanim zaczniemy wysilać umysÅ‚ w celu znalezienia rozwi zania warto wypróbować te wzorce M.Rawski Wst p do Informatyki W druj i sprawdzaj z Prosty przegl d struktury danych np. w celu znalezienia najwi kszego elementu ze zbioru danych przechowywanych w tej strukturze: z iteracja %7Å„ np. wektor, lista z iteracje zagnie d one %7Å„ np. tablice wielowymiarowe, listy list itp. z rekurencja %7Å„ np. drzewa z Przegl d struktury = budowanie ci gu zawieraj cego wszystkie obiekty w strukturze M.Rawski Wst p do Informatyki Przegl d drzewa w gÅ‚ b z 1. wstaw korze jako pierwszy element ci gu, 1 1 z 2. powtarzaj co nast puje, a do nadania korzeniowi etykiety zamkni ty : 2 6 8 y 2.1. wybierz z aktualnego ci gu ostatni 3 4 7 9 wierzchoÅ‚ek, który nie ma etykiety zamkni ty , 5 10 11 y 2.2. je li wybrany wierzchoÅ‚ek nie ma potomstwa, które jeszcze nie zostaÅ‚o dopisane do ci gu, to Przegl d drzewa w gÅ‚ b nadaj mu etykiet zamkni ty , w przeciwnym przypadku dopisz do ci gu pierwszego (licz c od lewej) jego potomka, który jeszcze nie wyst puje w ci gu. M.Rawski Wst p do Informatyki Przegl d drzewa w szerz z 1. nadaj etykiet nowy wszystkim wierzchoÅ‚kom drzewa, 1 1 z 2. wstaw korze jako pierwszy element ci gu, 234 z 3. dopóki w tworzonym ci gu wyst puje wierzchoÅ‚ek z etykiet nowy , powtarzaj co 5 6 7 8 nast puje: y 3.1. wybierz z aktualnego ci gu pierwszy 910 11 wierzchoÅ‚ek, który ma etykiet nowy , dodaj Przegl d drzewa wszerz do ci gu wszystkich jego potomków w kolejno ci od lewej i usu dla tego wierzchoÅ‚ka etykiet nowy . M.Rawski Wst p do Informatyki W druj i sprawdzaj z Znajdowanie najwi kszej przek tnej w wielok cie wypukÅ‚ym 1 1 - liczba wierzchoÅ‚ków 6 2 Struktura danych dla opisu wielok ta - tablica dwuwymiarowa: 5 1 23... 1 ; [1 [2 [3 ... [1 4 3 < \1 \2 \3 ... \1 M.Rawski Wst p do Informatyki W druj i sprawdzaj cd. z Co przegl damy? Np. tablic dÅ‚ugo ci wszystkich odcinków pomi dzy wierzchoÅ‚kami 123...1 1 G G ... G 2 G G d 3 G G d 1G G G ... z Przejrzenie górnej trójk tnej poÅ‚owy tablicy (liczba elementów 1(1 - 1)/2) pozwala znale ć element o najwi kszej warto ci. z Czy nie wystarczy przeszukać tylko wybranych par? M.Rawski Wst p do Informatyki W druj i sprawdzaj - mo na inaczej A B C 1 1 1 6 6 6 2 G25 2 2 G24 5 5 G35 5 4 3 4 4 3 3 D E F 1 1 1 6 6 6 2 G13 2 2 G36 5 5 5 G14 3 4 3 4 4 3 z Czyli dla 6 wierzchoÅ‚ków wystarczy 6 zamiast 15 kroków ( 15 = 6(6-1)/2 ) M.Rawski Wst p do Informatyki Dziel i zwyci aj z Je li nie mo esz uporać si z rozwi zaniem zadania w caÅ‚o ci, to spróbuj dzielić je na mniejsze o takiej samej strukturze i stosuj rekurencyjnie algorytm rozwi zywania. Uzyskane rozwi zania maÅ‚ych zada Å‚ cz w rozwi zania tych zada , które byÅ‚y wcze niej dzielone. M.Rawski Wst p do Informatyki Dziel i zwyci aj - min-max 15 7 45 8 12 11 4 34 z 1. je li / zawiera tylko jeden element, to PODZIAA jest to jednocze nie max i min, je li 15 7 45 812 11 4 34 dwa to mniejszy jest min wi kszy max PODZIAA PODZIAA z 2. w przeciwnym razie wykonaj co nast puje: 15 7 45 8 12 11 4 34 y 2.1. podziel list / na dwie cz ci /1 i /2; y 2.2. znajd ich skrajne elementy max1, max2 45 8 34 4 i min1, min2; y 2.3. wybierz mniejszy z min1 i min2 - to jest min; 45 4 y 2.4. wybierz mniejszy z max1 i max2 - to jest max; M.Rawski Wst p do Informatyki Dziel i zwyci aj - min-max cd. 3URFHGXUD znajd -min-max (L): z 1. je li / zawiera tylko jeden element, to jest to jednocze nie max i min, je li dwa to mniejszy jest min wi kszy max; z 2. w przeciwnym razie wykonaj co nast puje: y 2.1. podziel list / na dwie cz ci /1 i /2; y 2.2. wywoÅ‚aj znajd -min-max (L1): otrzymane wyniki umie ć w max1 i min1; y 2.3. wywoÅ‚aj znajd -min-max (L2): otrzymane wyniki umie ć w max2 i min2; y 2.3. wybierz mniejszy z min1 i min2 - to jest min; y 2.4. wybierz mniejszy z max1 i max2 - to jest max; z 3. zwróć warto ci min i max jako wynik dziaÅ‚ania; M.Rawski Wst p do Informatyki Sortowanie przez scalanie SURFHGXUD VRUWXM OLVW / z 1. je li / zawiera tylko jeden element, to jest posortowana; 5 12 17 7 20 21 z 2. w przeciwnym razie wykonaj co nast puje: y 2.1. podziel list / na dwie poÅ‚owy /1 i /2; 5 7 12 17 20 21 y 2.2. wywoÅ‚aj VRUWXM OLVW /1; y 2.3. wywoÅ‚aj VRUWXM OLVW /2; y 2.4. scal posortowane listy /1 i /2 w jedn posortowan list ; z 3. wróć do poziomu wywoÅ‚ania. M.Rawski Wst p do Informatyki Sortowanie przez scalanie c.d. 15 7 45 8 12 11 4 34 PODZIAA 15 7 45 812 11 4 34 PODZIAA PODZIAA 15 7 45 8 12 11 4 34 PP PP 15 7 45 8 12 11 4 34 SS SS 7 15 8 45 11 12 4 34 SCALANIE SCALANIE 7 8 15 45 4 11 12 34 SCALANIE 4 7 8 11 12 15 34 45 M.Rawski Wst p do Informatyki Metoda zachÅ‚anna z Istniej zadania, których rozwi zanie mo e być budowane z elementów dobieranych kolejno wedÅ‚ug zasady id naprzód, Å‚ap najlepsze z tego co pod r k i nigdy potem nie oddawaj tego co ju masz . z 3U]\NáDG PHWRG\ Å‚]DFKáDQQHM´ Z\]QDF]DQLH PLQLPDOQHJR GU]HZD UR]SLQDM FHJR Z JUDILH z Problem polega na znalezieniu najta szej sieci poÅ‚ cze wi cej wszystkie podane punkty. - Budowa kolei M.Rawski Wst p do Informatyki Metoda zachÅ‚anna - Budowa kolei z Problem polega na znalezieniu najta szej sieci poÅ‚ cze wi cej wszystkie podane punkty. 26 3 3 17 14 12 13 13 15 9 9 7 7 10 10 11 11 8 6 6 16 4 4 Spójny graf z wagami kraw dzi Minimalne drzewo rozpinaj ce (koszt: 63) M.Rawski Wst p do Informatyki Metoda zachÅ‚anna - Budowa kolei c.d. z Algorytm: z 1. wybierz najkrótszy odcinek drogi z 2. powtarzaj co nast puje, a do poÅ‚ czenia wszystkich punktów: y 2.1. wybierz najkrótszy odcinek spo ród tych odcinków, które Å‚ cz jedno z ju poÅ‚ czonych miast z jakimkolwiek miastem jeszcze nie poÅ‚ czonym M.Rawski Wst p do Informatyki Programowanie dynamiczne z Jaka jest najkrótsza droga Å‚ cz ca miasto A z miastem G? 2 F B 5 3 A 11 7 3 E 7 5 14 C 7 G 6 6 D Skierowany graf acykliczny (spójny) M.Rawski Wst p do Informatyki Programowanie dynamiczne c.d. z Metoda zachÅ‚anna: z Najkrótsza droga: F B F 5 B 3 A A E 3 E 5 C C G G 6 6 D D cie ka najkrótsza cie ka wyznaczona metod (koszt: 13) zachÅ‚ann (koszt: 15) M.Rawski Wst p do Informatyki Programowanie dynamiczne z Zasada (optymalno ci Bellmana): je eli znamy najlepsz drog przej cia od punktu pocz tkowego do punktu ko cowego prowadz c przez kolejne punkty, to ka dy fragment tej drogi pomi dzy dowolnym punktem po rednim a punktem ko cowym jest najlepsz drog przej cia od tego punktu do punktu ko cowego. M.Rawski Wst p do Informatyki Programowanie dynamiczne L(A) = ? z Realizacja metody: 2 F B 5 z L(X) - oznacza dÅ‚ugo ć najkrótszej cie ki od 3 A 11 7 punktu X do punktu G 3 E 7 5 L(G) = 0, L(D) = 6, L(E) = 5, L(F) = 7 14 C 7 G 6 L(C) = min ( 6 + L(D), 7 + L(E) ) = 6 D min ( 12, 12) = 12 Skierowany graf acykliczny L(B) = min ( 3 + L(E), 2 + L(F) ) = (spójny) min ( 8, 9) = 8 L(A) = min ( 14 + L(D), 3 + L(C), 5 + L(B) ) = min ( 20, 15, 13) = 13 M.Rawski Wst p do Informatyki