Metody algortmiczne (Algorytmy Część IV)

Podobne dokumenty
Algorytmy. wer Wojciech Myszka 30 listopada 2008

Jak tworzymy algorytmy? Wersja: 3

Raport z projektu. Przedmiot: Algorytmy i struktury danych 1 Projekt: Wieża Hanoi Autor: Wojciech Topolski

Rekurencja. Przykład. Rozważmy ciąg

FUNKCJA REKURENCYJNA. function s(n:integer):integer; begin if (n>1) then s:=n*s(n-1); else s:=1; end;

Wykład 8. Rekurencja. Iterować jest rzeczą ludzką, wykonywać rekursywnie boską. L. Peter Deutsch

Rekurencja. Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów.

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

Technologie Informacyjne Wykład 7

Rekurencja. Przygotowała: Agnieszka Reiter

Podstawy programowania 2. Temat: Funkcje i procedury rekurencyjne. Przygotował: mgr inż. Tomasz Michno

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 9 Rekurencja

5. Rekurencja. Przykłady

Matematyka dyskretna. Andrzej Łachwa, UJ, a/15

Technologie Informatyczne Wykład VII

Algorytmy i struktury danych. Wykład 4

Wstęp do programowania

ALGORYTMY I STRUKTURY DANYCH

Sortowanie danych. Jolanta Bachan. Podstawy programowania

REKURENCJA W JĘZYKU HASKELL. Autor: Walczak Michał

Rekurencja (rekursja)

Technologie informacyjne Wykład VII-IX

Wykład 3. Metoda dziel i zwyciężaj

Wykład 1. Na początku zajmować się będziemy zbiorem liczb całkowitych

Programowanie dynamiczne

Rekurencja. Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów.

Wykład 4. Określimy teraz pewną ważną klasę pierścieni.

Podstawy programowania. Wykład: 13. Rekurencja. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Rekurencja/rekursja. Iluzja istnienia wielu kopii tego samego algorytmu (aktywacji) Tylko jedna aktywacja jest aktywna w danej chwili

Analiza algorytmów zadania podstawowe

12. Rekurencja. UWAGA Trzeba bardzo dokładnie ustalić <warunek>, żeby mieć pewność, że ciąg wywołań się zakończy.

Programowanie dynamiczne cz. 2

ALGORYTMY MATEMATYCZNE Ćwiczenie 1 Na podstawie schematu blokowego pewnego algorytmu (rys 1), napisz listę kroków tego algorytmu:

Wieczorowe Studia Licencjackie Wrocław, Wykład nr 6 (w oparciu o notatki K. Lorysia, z modyfikacjami) Sito Eratostenesa

Programowanie dynamiczne

2.8. Algorytmy, schematy, programy

Algorytmy i struktury danych IS/IO, WIMiIP

TEORETYCZNE PODSTAWY INFORMATYKI

Zad. 1 Zad. 2 Zad. 3 Zad. 4 Zad. 5 SUMA

ZADANIE 1. Ważenie (14 pkt)

Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami

Ciągi i rekurencja, komputer dla matematyka. warsztaty towarzyszące konferencji Informatyka realnie prowadzą: Hanna Basaj Jan Aleksander Wierzbicki

Programowanie w VB Proste algorytmy sortowania

Złożoność algorytmów. Wstęp do Informatyki

Jeszcze o algorytmach

1. Liczby wymierne. x dla x 0 (wartością bezwzględną liczby nieujemnej jest ta sama liczba)

Matematyka dyskretna. Andrzej Łachwa, UJ, /10

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

Algorytmy i Struktury Danych

Szczegółowy program kursów szkoły programowania Halpress

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne

Wstęp do informatyki

Wstęp do programowania

Podstawy Informatyki. Sprawność algorytmów

Analiza algorytmów zadania podstawowe

Algorytmy w teorii liczb

Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

Definicja. Ciąg wejściowy: Funkcja uporządkowująca: Sortowanie polega na: a 1, a 2,, a n-1, a n. f(a 1 ) f(a 2 ) f(a n )

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

Silnia iteracyjnie n! = 1 * 2 * 3 *... * n widać, że to definicja w pętli. Silnia rekurencyjnie n! = n * (n-1)!

Algorytmy i struktury danych

9.9 Algorytmy przeglądu

Poprawność algorytmów

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

Luty 2001 Algorytmy (4) 2000/2001

Wstęp do Informatyki

Rekurencje. Jeśli algorytm zawiera wywołanie samego siebie, jego czas działania moŝe być określony rekurencją. Przykład: sortowanie przez scalanie:

O rekurencji i nie tylko

Zadanie 1. Potęgi (14 pkt)

INFORMATYKA WYBRANE ALGORYTMY OPTYMALIZACYJNE KRYPTOLOGIA.

Informatyka wprowadzenie do algorytmów (II) dr hab. inż. Mikołaj Morzy

Laboratorium 5: Tablice. Wyszukiwanie binarne

Iteracje. Algorytm z iteracją to taki, w którym trzeba wielokrotnie powtarzać instrukcję, aby warunek został spełniony.

Algorytm. a programowanie -

Strategia "dziel i zwyciężaj"

//warunki początkowe m=500; T=30; c=0.4; t=linspace(0,t,m); y0=[-2.5;2.5];

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je.

Algorytmy sortujące i wyszukujące

Schemat programowania dynamicznego (ang. dynamic programming)

Przykładowe zadania z teorii liczb

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

Teoretyczne podstawy informatyki

Podstawy Informatyki. Metalurgia, I rok. Rekurencja. skomplikowane zadanie. Rekurencja

Podstawy Informatyki. Metalurgia, I rok. Wykład 5 Rekurencja

Funkcje. Piotr Zierhoffer. 7 października Institute of Computer Science Poznań University of Technology

Algorytmika i pseudoprogramowanie

FUNKCJA LINIOWA - WYKRES

PROBLEM: SORTOWANIE PRZEZ ODWRÓCENIA METODA: ALGORYTMY ZACHŁANNE

Drzewa spinające MST dla grafów ważonych Maksymalne drzewo spinające Drzewo Steinera. Wykład 6. Drzewa cz. II

Algorytmy i struktury danych

Projektowanie algorytmów rekurencyjnych

Sortowanie. LABORKA Piotr Ciskowski

Przeglad podstawowych pojęć (3) Podstawy informatyki (3) dr inż. Sebastian Pluta. Instytut Informatyki Teoretycznej i Stosowanej

znalezienia elementu w zbiorze, gdy w nim jest; dołączenia nowego elementu w odpowiednie miejsce, aby zbiór pozostał nadal uporządkowany.

Laboratorium nr 1. i 2.

Transkrypt:

Metody algortmiczne (Algorytmy Część IV) wer. 9 z drobnymi modyfikacjami! Wojciech Myszka 2018-10-02 17:27:45 +0200

Jak się tworzy algorytmy? Moja odpowiedź jest krótka:

Jak się tworzy algorytmy? Moja odpowiedź jest krótka: Nie wiem!

Poszukiwania i wędrówki Czyli przegląd 1. Bardzo często zachodzi potrzeba obejścia wszystkich elementów struktury. 2. W najprostszym przypadku struktura zadana jest jawnie (tablica, wektor, drzewo). 3. W wielu przypadkach trzeba dobrze przyjrzeć się zagadnieniu, żeby strukturę zauważyć. 4. Gdy zadanie ma szereg wariantów wystarczy przejrzeć je wszystkie W każdym przypadku działanie algorytmu sprowadza się do przeglądu wszystkich elementów struktury.

Przegląd Pętla 1. Start 2. i 0 3. Zrób coś... 4. i i + 1 5. Jeżeli i N przejdź do 3 6. W przeciwnym razie Koniec

Przegląd Przykład Dany jest prosty wielokąt wypukły. Należy znaleźć takie dwa punkty na jego obwodzie, które dzieli największa odległość. 1 2 6 3 Jak to rozwiązać? 5 4

Przegląd Przykład Dany jest prosty wielokąt wypukły. Należy znaleźć takie dwa punkty na jego obwodzie, które dzieli największa odległość. 1 2 6 3 Jak to rozwiązać? 5 4

Przykład cd 1 2 3 4 5 6 1 0 11,2 15,6 2 11,2 0 3 15,6 0 4 0 6 5 6 0 6,4 6 6,4 0 Wierzchołki: 1 (4,13) 2 (14,8) 3 (15,2) 4 (10,0) 5 (4,0) 6 (0,5)

Przykład cd Najprostszy przypadek 1. max = 0 2. for i = 1 to 6 do 2.1 for j = 1 to 6 do 2.2 if d[i, j] > max then 2.3 max = d[i,j]

Przykład cd Najprostszy przypadek 1. max = 0 2. for i = 1 to N do 2.1 for j = 1 to N do 2.2 if d[i, j] > max then 2.3 max = d[i,j]

Przykład cd Najprostszy przypadek 1. max = 0 2. for i = 1 to N do 2.1 for j = 1 to i 1 do 2.2 if d[i, j] > max then 2.3 max = d[i,j]

Przykład cd Podejście geometryczne 1 2 6 3 5 4

Przykład cd Podejście geometryczne 1 2 6 3 5 4

Przykład cd Podejście geometryczne 1 2 6 3 5 4

Przykład cd Podejście geometryczne 1 2 6 3 5 4

Przykład cd Podejście geometryczne 1 2 6 3 5 4

Przykład cd Podejście geometryczne 1 2 6 3 5 4

Dziel i zwyciężaj Podział na mniejsze zadania Idea bardzo prosta Gdy nie możemy rozwiązać dużego zadania czasami można je podzielić na kilka mniejszych Jeżeli te są za duże dzielimy je dalej...

Podział... Przykład Mamy znaleźć maksimum i minimum z (bardzo długiej?) listy liczb oznaczonej jako L. Jedną metodę już znamy: jest dosyć prosta...

Definicje Za wikipedią Rekursja albo rekurencja (ang. recursion, z łac. recurrere, przybiec z powrotem) to w logice, programowaniu i w matematyce odwoływanie się (np. funkcji lub definicji) do samej siebie.

Przykład Silnia Wersja klasyczna 0! = 1 n! = n i=1 i albo n! = 1 2 3 n

Przykład Silnia Wersja klasyczna 0! = 1 n! = n i=1 i albo n! = 1 2 3 n Wersja inna 0! = 1 n! = n (n 1)!

Silnia w blockly

Przykład Kilka liczb In[1]:= 10! Out[1]= 3628800 In[3]:= 20! Out[3]= 2432902008176640000 In[4]:= 30! Out[4]= 265252859812191058636308480000000 In[5]:= 40! Out[5]= 815915283247897734345611269596115894272000000000

Silnia Schematy blokowe Wersja klasyczna 1. Jeżeli n = 0, silnia równa się 1; koniec algorytmu. 2. silnia 1 3. Powtarzaj dla i zmieniającego się od 1 do n silnia silnia i 4. Koniec algorytmu.

Silnia Schematy blokowe Wersja klasyczna 1. Jeżeli n = 0, silnia równa się 1; koniec algorytmu. 2. silnia 1 3. Powtarzaj dla i zmieniającego się od 1 do n silnia silnia i 4. Koniec algorytmu. Wersja rekurencyjna 1. Funkcja Silnia (parametrem jest n) 2. Jeżeli n = 0; wynik podstaw 1; koniec programu 3. wynik wynik Silnia(n 1) 4. koniec

Rekurencja na obrazkach: Droste Effect

Rekurencja Escher Prentententoonstelling (M.C. Escher 1956)

Rekurencja Escher Prentententoonstelling (M.C. Escher 1956)

Rekurencja Escher Prentententoonstelling (M.C. Escher 1956)

Rekurencja Escher Prentententoonstelling (M.C. Escher 1956)

Rekurencja Escher Prentententoonstelling (M.C. Escher 1956)

Rekurencja Escher Prentententoonstelling (M.C. Escher 1956)

Rekurencja Escher Prentententoonstelling (M.C. Escher 1956)

Rekurencja Escher Prentententoonstelling (M.C. Escher 1956) Na podstawie http://escherdroste.math.leidenuniv.nl/

Ciąg Fibonacciego Schemat fib(0) = 0 fib(1) = 1 fib(n) = fib(n 1) + fib(n 2), dla n 2

Ciąg Fibonacciego Schemat fib(0) = 0 fib(1) = 1 fib(n) = fib(n 1) + fib(n 2), dla n 2 0 0 1 1 2 1 =B2+B1 3 2 =B3+B2 4 3 5 5 6 8 7 13 8 21 9 34 10 55 11 89 12 144 13 233 14 377 15 610 700 600 500 400 300 200 100 0 0 2 4 6 8 10 12 14 16

Ciąg Fibonacciego Schemat fib(0) = 0 fib(1) = 1 fib(n) = fib(n 1) + fib(n 2), dla n 2 Nierekurencyjnie F(k) = 1 [( ) 2 ( ) 2 ] 1 + 5 1 5 5 2 2 Więcej na temat liczby Fibonacciego tu: [1].

Największy wspólny dzielnik gcd(0,n)=n { n dla k = 0; gcd(k, n) = gcd(n mod k, k) dla k > 0.

Największy wspólny dzielnik gcd(0,n)=n { n dla k = 0; gcd(k, n) = gcd(n mod k, k) dla k > 0. Zadanie domowe Porównać ze schematem blokowym ( metoda Euklidesa ), który był prezentowany wcześniej Zaprogramować w blockly

Symbol Newtona Wersja normalna ( n ) 0 = 1 ( n k) = n(n 1) (n k+1) k! Wersja rekurencyjna ( n ( k) = n 1 ) ( k + n 1 ) k 1 ( n ) 0 = 1

Wieże Hanoi Prosta zabawka dziecięca na patyku nanizanych jest pewna liczba krążków tak, że na większym zawsze leży krążek mniejszy. Zadaniem naszym jest umieszczenie wszystkich krążków na sąsiednim patyku (korzystając z jednego tylko patyka pomocniczego) w tej samej kolejności. Podczas każdego ruchu pamiętać trzeba, że krążek większy nie może znaleźć się nigdy na krążku mniejszym.

Wieże Hanoi Przykład Trzy krążki

Wieże Hanoi Przykład Trzy krążki 0

Wieże Hanoi Przykład Trzy krążki 1

Wieże Hanoi Przykład Trzy krążki 2

Wieże Hanoi Przykład Trzy krążki 3

Wieże Hanoi Przykład Trzy krążki 4

Wieże Hanoi Przykład Trzy krążki 5

Wieże Hanoi Przykład Trzy krążki 6

Wieże Hanoi Przykład Trzy krążki 7

Wieże Hanoi Przykład Dwa krążki

Wieże Hanoi Przykład Dwa krążki

Wieże Hanoi Przykład Dwa krążki

Wieże Hanoi Przykład Dwa krążki

Wieże Hanoi Przykład Dwa krążki

Wieże Hanoi I Czemu taka nazwa? W wielkiej świątyni Benares, pod kopułą, która zaznacza środek świata, znajduje się płytka z brązu, na której umocowane są trzy diamentowe igły, wysokie na łokieć i cienkie jak talia osy. Na jednej z tych igieł, w momencie stworzenia świata, Bóg umieścił 64 krążki ze szczerego złota. Największy z nich leży na płytce z brązu, a pozostałe jeden na drugim, idąc malejąco od największego do najmniejszego. Jest to wieża Brahma. Bez przerwy we dnie i w nocy kapłani przekładają krążki z jednej diamentowej igły na drugą, przestrzegając niewzruszonych praw Brahma. Prawa te chcą, aby kapłan na służbie brał tylko jeden krążek na raz i aby umieszczał go na jednej z igieł w ten sposób, by nigdy nie znalazł się pod nim krążek mniejszy.

Wieże Hanoi II Czemu taka nazwa? Wówczas, gdy 64 krążki zostaną przełożone z igły, na której umieścił je Bóg w momencie stworzenia świata, na jedną z dwóch pozostałych igieł, wieża, świątynia, bramini rozsypią się w proch i w jednym oka mgnieniu nastąpi koniec świata. (Jest też wersja mówiąca o świątyni w Hanoi stąd nazwa.) Kiedy nastąpi koniec świata?

Wieże Hanoi Koniec świata Przy trzech krążkach trzeba 7 ruchów (przy dwu 3!)

Wieże Hanoi Koniec świata Przy trzech krążkach trzeba 7 ruchów (przy dwu 3!) Gdy krążków jest 64 trzeba 2 64 1 ruchów, czyli 18446744073709551615

Wieże Hanoi Koniec świata Przy trzech krążkach trzeba 7 ruchów (przy dwu 3!) Gdy krążków jest 64 trzeba 2 64 1 ruchów, czyli 18446744073709551615 Zakładamy, że przeniesienie krążka zajmuje 1 sekundę.

Wieże Hanoi Koniec świata Przy trzech krążkach trzeba 7 ruchów (przy dwu 3!) Gdy krążków jest 64 trzeba 2 64 1 ruchów, czyli 18446744073709551615 Zakładamy, że przeniesienie krążka zajmuje 1 sekundę. Rok ma 365 24 3600 sekund (31536000)

Wieże Hanoi Koniec świata Przy trzech krążkach trzeba 7 ruchów (przy dwu 3!) Gdy krążków jest 64 trzeba 2 64 1 ruchów, czyli 18446744073709551615 Zakładamy, że przeniesienie krążka zajmuje 1 sekundę. Rok ma 365 24 3600 sekund (31536000) Praca ta zajmie 2 64 /31536000 lat (prawie 585 miliardów lat)

Wieże Hanoi Jak rozwiązać ten problem? Gdy krążek jest tylko jeden problem nie istnieje.

Wieże Hanoi Jak rozwiązać ten problem? Gdy krążek jest tylko jeden problem nie istnieje. Dla dwu krążków problem jest banalny.

Wieże Hanoi Jak rozwiązać ten problem? Gdy krążek jest tylko jeden problem nie istnieje. Dla dwu krążków problem jest banalny. Dla trzech można go podzielić na trzy zadania:

Wieże Hanoi Jak rozwiązać ten problem? Gdy krążek jest tylko jeden problem nie istnieje. Dla dwu krążków problem jest banalny. Dla trzech można go podzielić na trzy zadania: 1. Przeniesienie dwu górnych krążków na trzeci patyczek.

Wieże Hanoi Jak rozwiązać ten problem? Gdy krążek jest tylko jeden problem nie istnieje. Dla dwu krążków problem jest banalny. Dla trzech można go podzielić na trzy zadania: 1. Przeniesienie dwu górnych krążków na trzeci patyczek. 2. Przeniesienie największego krążka na patyczek drugi.

Wieże Hanoi Jak rozwiązać ten problem? Gdy krążek jest tylko jeden problem nie istnieje. Dla dwu krążków problem jest banalny. Dla trzech można go podzielić na trzy zadania: 1. Przeniesienie dwu górnych krążków na trzeci patyczek. 2. Przeniesienie największego krążka na patyczek drugi. 3. Ponowne przeniesienie dwu krążków na największy...

Wieże Hanoi Przypadek ogólny 1. Przenieśmy z A na C N 1 krążków. 2. Pozostały krążek (największy! ale z czego to wynika?) przenieśmy z A na B. 3. Do pozostałych (N 1) krążków zastosujmy powyższy algorytm (patyk B możemy wykorzystywać jako roboczy, bo na samym spodzie znajduje się krążek największy). 4. powyższą procedurę należy powtarzać aż do zakończenia zadania. (Pierwszy patyczek nazwaliśmy A, drugi B a trzeci C.)

Wieże Hanoi Procedura (rekurencyjna) Procedura przenieś N (krążków) z X na Y używając Z: 1. Jeśli N = 1 to wypisz X Y ; 2. w przeciwnym razie (jeżeli N > 1) wykonaj co następuje: 2.1 wywołaj przenieś N 1 z X na Z używając Y; 2.2 wypisz X Y ; 2.3 wywołaj przenieś N 1 z Z na Y używając X; 3. wróć; Zapis symboliczny A B oznacza weź krążek z patyka oznaczonego A i przenieś go na patyk oznaczony B Procedura służy jedynie do wypisywania instrukcji dla operataora człowieka.

Wieże Hanoi Realizacja Start przenieść 3 z A na B używając C 1. przenieść 2 z A na C używając B 1.1 przenieść 1 z A na B używając C 1.1.1 A B 1.2 A C 1.3 przenieść 1 z B na C używając A 1.3.1 B C 2. A B 3. przenieść 2 z C na B używając A 3.1 przenieść 1 z C na A używając B 3.1.1 C A 3.2 C B 3.3 przenieść 1 z A na B używając C 3.3.1 A B

Podział... Przykład procedura znajdź-min-i-max-w L; 1. Jeżeli lista składa się z jednego elementu to nadaj MAX i MIN właśnie jego wartość, jeśli lista składa się z dwu elementów to nadaj MIN wartość mniejszego z nich, a MAX większego; 2. W przeciwnym razie wykonaj co następuje: 2.1 Podziel listę na połowy L1 i L2; 2.2 wykonaj znajdź-min-i-max-w L1 umieszczając otrzymane wartości w MIN1 i MAX1 2.3 wykonaj znajdź-min-i-max-w L2 umieszczając otrzymane wartości w MIN2 i MAX2 2.4 nadaj MIN mniejszą wartość z MIN1 i MIN2 2.5 nadaj MAX większą wartość z MAX1 i MAX2 3. zakończ z wartościami MIN i MAX

Zachłanne algorytmy i przetargi kolejowe Czasami zadanie sprowadza się do znalezienia rozwiązania najlepszego w jakimś sensie Popatrzmy na przykład: Mamy sieć miast i leniwego przedsiębiorcę, któremu zlecono ułożenie torów zapewniających połączenie możliwość przejazdu z dowolnego miasta do każdego innego. Innych warunków nie postawiono... Koszt położenia torów jest proporcjonalny do odległości pomiędzy miastami. Leniwy przesiębiorca chce rozwiązać problem jak najtańszym kosztem.

Zachłanne algorytmy i przetargi kolejowe 3 10 7 8 4 12 26 6 15 17 16 13 9 14 11

Zachłanne algorytmy i przetargi kolejowe 3 10 7 8 4 12 26 6 15 17 16 13 9 14 11

Zachłanne algorytmy i przetargi kolejowe 3 10 7 8 4 12 26 6 15 17 16 13 9 14 11

Zachłanne algorytmy i przetargi kolejowe 3 10 7 8 4 12 26 6 15 17 16 13 9 14 11

Zachłanne algorytmy i przetargi kolejowe 3 10 7 8 4 12 26 6 15 17 16 13 9 14 11

Zachłanne algorytmy i przetargi kolejowe 3 10 7 8 4 12 26 6 15 17 16 13 9 14 11

Zachłanne algorytmy i przetargi kolejowe 3 10 7 8 4 12 26 6 15 17 16 13 9 14 11

Zachłanne algorytmy i przetargi kolejowe 3 10 7 8 4 12 26 6 15 17 16 13 9 14 11

Zachłanne algorytmy i przetargi kolejowe 3 10 7 8 4 12 26 6 15 17 16 13 9 14 11

Zachłanne algorytmy i przetargi kolejowe 3 10 7 4 6 13 9 11 Taki graf nazywa się minimalnym drzewem rozpinającym

Zachłanne algorytmy Czemu taka nazwa?

Planowanie dynamiczne Załóżmy, że mamy (podobnie jak w zadaniu poprzednim) szereg miast. W poprzednim zadaniu mieliśmy znaleźć taki układ połączeń, który (a) jest najtańszy i (b) pozwala na przejazd z dowolnego miasta do każdego innego. Teraz mamy znaleźć najtańszą (najkrótszą) drogę z miasta A do miasta B korzystając z istniejącej sieci połączeń.

Planowanie dynamiczne Przykład 5 C 3 2 F A 3 11 7 E 5 7 14 D 6 7 6 B G

Planowanie dynamiczne Przykład 5 C 3 2 F A 3 11 7 E 5 7 Rozwiązanie zachłanne 14 D 6 7 6 B G

Planowanie dynamiczne Przykład 5 C 3 2 F A 3 11 7 E 5 7 Rozwiązanie zachłanne 14 D 6 7 6 B G

Planowanie dynamiczne Przykład 5 C 3 2 F A 3 11 7 E 5 7 Rozwiązanie zachłanne Koszt całkowity 15 14 D 6 7 6 B G

Planowanie dynamiczne Przykład 5 C 3 2 F A 3 11 7 E 5 7 Rozwiązanie optymalne Koszt całkowity 13 14 D 6 7 6 B G

Planowanie dynamiczne Jak widać metoda zachłanna nie daje najlepszego rozwiązania. Zatem potrzebna będzie nieco inna metoda postępowania znacznie bardziej przewidująca. Aby dojść z A do B w pierwszym kroku mam trzy możliwości: 1. przejść do C 2. przejść do D 3. przejść do G koszt pierwszej to 5 + koszt przejścia z C do B koszt drugiej to 3 + koszt przejścia z D do B koszt trzeciej to 14 + koszt przejścia z G do B

Programowanie dynamiczne Na czym powinien polegać optymalny wybór? Oznaczmy przez L(x) koszt przejścia z węzła x do węzła B na każdym etapie podróży, gdy możemy przejść z węzła V do węzłów C 1, C 2,...C N wybieramy taką drogę aby była minimalna Można to zapisać tak: odległość-z-v-do-c K + L(C K ) L(V) = min K odległość-z-v-do-c K + L(C K )

Programowanie dynamiczne Taki zapis sugeruje również tu zastosowanie rekursji ale ostrzegam! jest to niebezpieczne...

Do obejrzenia Mirosław Zelent. Tajemniczy ciąg fibonacciego. złota liczba. boska proporcja, December 2013. http: //www.youtube.com/watch?v=wb7kpam8cfg&feature=youtube_gdata_player.