Algorytmy i struktury danych IS/IO, WIMiIP

Podobne dokumenty
Algorytmy i struktury danych IS/IO, WIMiIP

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

Programowanie dynamiczne cz. 2

Programowanie dynamiczne i algorytmy zachłanne

PRZEWODNIK PO PRZEDMIOCIE

INFORMATYKA WYBRANE ALGORYTMY OPTYMALIZACYJNE KRYPTOLOGIA.

Wykład 8. Drzewo rozpinające (minimum spanning tree)

1 Wprowadzenie do algorytmiki

Algorytm. Krótka historia algorytmów

Algorytmy i struktury danych.

Literatura. 1) Pojęcia: złożoność czasowa, rząd funkcji. Aby wyznaczyć pesymistyczną złożoność czasową algorytmu należy:

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

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

Techniki konstruowania algorytmów. Metoda dziel i zwyciężaj

Strategia "dziel i zwyciężaj"

KARTA MODUŁU KSZTAŁCENIA

Wstęp do programowania

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

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Programowanie dynamiczne

TEORETYCZNE PODSTAWY INFORMATYKI

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA Realizacja w roku akademickim 2016/17

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 7 Algorytmy

Poprawność semantyczna

Algorytmy. Programowanie Proceduralne 1

Algorytm. a programowanie -

Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1

Algorytmy i Struktury Danych

Matematyczne Podstawy Informatyki

ALGORYTMY I STRUKTURY DANYCH

Schemat programowania dynamicznego (ang. dynamic programming)

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Złożoność obliczeniowa zadania, zestaw 2

Projektowanie i analiza algorytmów

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA Realizacja w roku akademickim 2016/17

Algorytm. Krótka historia algorytmów

Wstęp do programowania

Metody Programowania

Algorytmy i Struktury Danych.

Algorytmy i złożoność obliczeniowa. Wojciech Horzelski

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 )

Sortowanie przez scalanie

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

Teoretyczne podstawy informatyki

Algorytmy. wer Wojciech Myszka 30 listopada 2008

Wprowadzenie do algorytmiki

a) 7 b) 19 c) 21 d) 34

Wstęp do programowania

Algorytmy komputerowe. dr inŝ. Jarosław Forenc

Algorytmy i struktury danych.

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

Metody algortmiczne (Algorytmy Część IV)

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

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

Algorytmy zachłanne. dr inż. Urszula Gałązka

Algorytmy i struktury danych

Metodyki i techniki programowania

TEORETYCZNE PODSTAWY INFORMATYKI

Załącznik KARTA PRZEDMIOTU. KARTA PRZEDMIOTU Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2009/2010

Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott

Algorytmy Grafowe. dr hab. Bożena Woźna-Szcześniak, prof. UJD. Wykład 5 i 6. Uniwersytet Humanistyczno-Przyrodniczy im. Jana Długosza w Częstochowie

Algorytm. Słowo algorytm pochodzi od perskiego matematyka Mohammed ibn Musa al-kowarizimi (Algorismus - łacina) z IX w. ne.

Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2015/2016. Forma studiów: Stacjonarne Kod kierunku: 11.

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott

Sortowanie - wybrane algorytmy

Struktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott

Algorytm - pojęcie algorytmu, sposób zapisu, poziom szczegółowości, czynności proste i strukturalne. Pojęcie procedury i funkcji.

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

Algorytmy. Programowanie Proceduralne 1

Kierunek i poziom studiów: Matematyka, studia I stopnia (licencjackie), rok I

Wykład 1 Wprowadzenie do algorytmów. Zawartość wykładu 1. Wstęp do algorytmów i struktur danych 2. Algorytmy z rozgałęzieniami.

INFORMATYKA. Algorytmy.

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

Algorytmy i Struktury Danych

Wstęp do programowania

Modele i narzędzia optymalizacji w systemach informatycznych zarządzania

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

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p.

Podejście zachłanne, a programowanie dynamiczne

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15

Podstawy Informatyki. Sprawność algorytmów

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

Programowanie dynamiczne (optymalizacja dynamiczna).

Temat: Algorytmy zachłanne

Algorytmy i struktury danych. Wykład 4

Metodyki i techniki programowania

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

Wykład IV Algorytmy metody prezentacji i zapisu Rzut oka na język PASCAL

Programowanie w VB Proste algorytmy sortowania

Zaawansowane algorytmy i struktury danych

POLITECHNIKA OPOLSKA

Programowanie dynamiczne

TEORETYCZNE PODSTAWY INFORMATYKI

PRZEWODNIK PO PRZEDMIOCIE

Algorytmy i struktury danych. wykład 2

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

Podstawy Informatyki. Programowanie. Inżynieria Ciepła, I rok. Co to jest algorytm? Istotne cechy algorytmu

Projektowanie i Analiza Algorytmów

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Transkrypt:

Algorytmy i struktury danych IS/IO, WIMiIP Danuta Szeliga AGH Kraków

I Algorytmy i struktury danych 1 Algorytmy i struktury danych 2 Spistreści 3 Organizacjazajęć 4 5 Pojęciapodstawowe Rozwiązywanie problemu Algorytm Zapis algorytmu- schemat blokowy Cechy algorytmu Poprawność algorytmu 6 Metodyalgorytmiczne

II Algorytmy i struktury danych

Algorytmy i struktury danych Wykłady- 30h Ćwiczenia audytoryjne- 30h Ćwiczenia laboratoryjne- 15h

Algorytmy i struktury danych Wykłady- 30h Ćwiczenia audytoryjne- 30h Ćwiczenia laboratoryjne- 15h Zaliczenia i egzaminy: http://home.agh.edu.pl/ szeliga/ menu Dydaktyka Zakres materiału, literatura: syllabus AGH

N. Wirth, Algorytmy + struktury danych = programy D. Knuth, Sztuka programowania T.H. Cormen, C.E. Leiserson, R.L. Rivest, Wprowadzenie do Algorytmów A.V. Aho, J.E. Hopcroft, J.D. Ullman, Algorytmy i struktury danych A. Drozdek, C++ Algorytmy i struktury danych L. Banachowski, K. Diks, W. Rytter, Algorytmy i struktury danych

Rozwiązywanie problemu Algorytm Zapis algorytmu- schemat blokowy Cechy algorytmu Poprawność algorytmu Rozwiązywanie problemu(zagadnienia) Modelowanie rzeczywistości zdefiniowanie zadania wprowadzenie założeń i ograniczeń selekcja informacji Algorytm rozwiązania Zapis: język naturalny pseudokod schemat blokowy Wybór narzędzia programowania Implementacja struktur danych algorytmu rozwiązania

Rozwiązywanie problemu Algorytm Zapis algorytmu- schemat blokowy Cechy algorytmu Poprawność algorytmu Rozwiązywanie problemu(zagadnienia) Modelowanie rzeczywistości zdefiniowanie zadania wprowadzenie założeń i ograniczeń selekcja informacji Algorytm rozwiązania Zapis: język naturalny pseudokod schemat blokowy Wybór narzędzia programowania Implementacja struktur danych algorytmu rozwiązania Dobry algorytm warunek konieczny, ale niewystarczający napisania poprawnego i wydajnego programu

Co to jest algorytm? Algorytmy i struktury danych Rozwiązywanie problemu Algorytm Zapis algorytmu- schemat blokowy Cechy algorytmu Poprawność algorytmu Jeżeli mamy do wykonania pewne zadanie, tworzymy sposób (przepis, proces, metodę, technikę, procedurę) realizacji tego zadania. Taki przepis to algorytm. Przykłady: przepis kucharski instrukcja składania mebla, urządzenia zapis nutowy wykonywanie pisemne dodawania/mnożenia/dzielenia...

Co to jest algorytm? Algorytmy i struktury danych Rozwiązywanie problemu Algorytm Zapis algorytmu- schemat blokowy Cechy algorytmu Poprawność algorytmu Jeżeli mamy do wykonania pewne zadanie, tworzymy sposób (przepis, proces, metodę, technikę, procedurę) realizacji tego zadania. Taki przepis to algorytm. Przykłady: przepis kucharski instrukcja składania mebla, urządzenia zapis nutowy wykonywanie pisemne dodawania/mnożenia/dzielenia... Słowo algorytm (z ang. algorism) pochodzi od nazwiska matematyka perskiego z IX wieku, Muhammada ibn Musa al-chuwarizmi ego i oznaczało pierwotnie wykonywanie działań przy pomocy liczb arabskich

Przykład algorytmu- opis słowny Rozwiązywanie problemu Algorytm Zapis algorytmu- schemat blokowy Cechy algorytmu Poprawność algorytmu Problem najwiekszego wspólnego dzielnika dwóch liczb naturalnych n i m, czyli najwiekszej liczby naturalnej, która dzieli obie liczby bez reszty Algorytm Euklidesa Algorytm Euklidesa(ok. 300 p.n.e) wyznaczania najwiekszego wspólnego dzielnika: K1 podzielnprzezm.niechrbędzieresztąztegodzielenia K2 jeżelir=0,wówczasmjestwynikiem,zakończ K3 podstaw n m, m riwróćdokrokuk1

Rozwiązywanie problemu Algorytm Zapis algorytmu- schemat blokowy Cechy algorytmu Poprawność algorytmu Przykład algorytmu- opis słowny Problem najwiekszego wspólnego dzielnika dwóch liczb naturalnych n i m, czyli najwiekszej liczby naturalnej, która dzieli obie liczby bez reszty Algorytm Euklidesa Algorytm Euklidesa(ok. 300 p.n.e) wyznaczania najwiekszego wspólnego dzielnika: K1 podzielnprzezm.niechrbędzieresztąztegodzielenia K2 jeżelir=0,wówczasmjestwynikiem,zakończ K3 podstaw n m, m riwróćdokrokuk1 Np. Najwiekszy wspólny dzielnik n=6 i m=4: K1:r 6modulo4 K2:r=2,zatemprzechodzimydoK3 K3:n 4,m 2 K1:r 4modulo2 K2:r=0,wynikiemjestm=2,zakończ

Rozwiązywanie problemu Algorytm Zapis algorytmu- schemat blokowy Cechy algorytmu Poprawność algorytmu Zapis algorytmu- schemat blokowy Schemat blokowy(block diagram, flowchart) to diagram, na którym algorytm jest reprezentowany przez opisane figury geometryczne, połączone liniami zgodnie z kolejnością wykonywania czynności wynikających z przyjętego algorytmu rozwiązania zadania pozwala dostrzec istotne etapy algorytmu i logiczne zależności między nimi Elementy schematu blokowego strzałka wskazuje kierunek przebiegu sterowania algorytmem, łączy inne bloki operand(prostokąt) wszystkie operacje z wyjątkiem instrukcji wyboru predykat(romb, sześciokąt) instrukcja wyboru etykieta(owal) początek lub koniec sekwencji schematu wejście/wyjście(równoległobok) Rysunek: Przykładalgorytm Euklidesa

Rozwiązywanie problemu Algorytm Zapis algorytmu- schemat blokowy Cechy algorytmu Poprawność algorytmu Schematy blokowe instrukcji sterujących instrukcja bezpośredniego następstwa: {instrukcja1; instrukcja2;} instrukcja wyboru: {if(wyrażenie) instrukcja1;} {if(wyrażenie) instrukcja1; else instrukcja2;}

Rozwiązywanie problemu Algorytm Zapis algorytmu- schemat blokowy Cechy algorytmu Poprawność algorytmu Schematy blokowe instrukcji sterujących instrukcje iteracyjne: while(wyrażenie) instrukcja; do {... }while(wyrażenie) for(wyr1; wyr2; wyr3) instrukcja;

Rozwiązywanie problemu Algorytm Zapis algorytmu- schemat blokowy Cechy algorytmu Poprawność algorytmu Algorytm I Algorytm to ściśle określony ciąg kroków obliczeniowych, prowadzący do przekształcenia danych wejściowych w wyjściowe Cechy algorytmu Poprawnie zdefiniowany. Definicja zadania = co algorytm ma zrobić, jakie zadanie wykonać. Definicja problemu określa dane wejściowe(pochodzące z dokładnie określonego zbioru wartości dozwolonych) i dane wyjściowe- tzw. specyfikacja we/wy

Algorytm II Algorytmy i struktury danych Rozwiązywanie problemu Algorytm Zapis algorytmu- schemat blokowy Cechy algorytmu Poprawność algorytmu Precyzyjnie zdefiniowany. Każdy krok jest jednoznacznie określony, obejmuje operacje elementarne. Opis ciągu czynności, które po kolei mają być wykonane. Czynności te muszą być na tyle proste(i możliwe do wykonania), aby wykonawca algorytmu mógł je bez dodatkowego tłumaczenia zrealizować operacje elementarne(odpowiednio dobrany poziom szczegółowości) Skończony. Wyprodukuje wynik w skończonej liczbie kroków. Jednoznaczny(powtarzalny). Algorytm dostaje pewne informacje(dane we) i zwraca(oczekiwane) wyniki dane wy. Wielokrotne wykonywanie dla identycznych danych we daje zawsze taki sam wynik. Kompletny. Uwzględnia wszystkie możliwe przypadki, jakie mogą wystąpić podczas jego wykonywania. Uniwersalny. Umożliwia rozwiązanie całej klasy zadań, a nie tylko pojedynczego, ustalonego zadania. Może istnieć kilka przepisów, które dają te same wyniki

Poprawność algorytmu Rozwiązywanie problemu Algorytm Zapis algorytmu- schemat blokowy Cechy algorytmu Poprawność algorytmu Jeżeli: algorytm zatrzymuje się po skończonej liczbie kroków(posiada własność stopu) dla danych spełniajacych warunek poczatkowy(wp), algorytm generuje dane spełniajęce warunek końcowy(wk) algorytm jest poprawny

Rozwiązywanie problemu Algorytm Zapis algorytmu- schemat blokowy Cechy algorytmu Poprawność algorytmu Poprawność algorytmu Jeżeli: algorytm zatrzymuje się po skończonej liczbie kroków(posiada własność stopu) dla danych spełniajacych warunek poczatkowy(wp), algorytm generuje dane spełniajęce warunek końcowy(wk) algorytm jest poprawny Poprawność algorytmu Algorytm jest częściowo poprawny względem danego warunku WP i danego warunku WK, gdy dla dowolnych danych wejściowych spełniających WP, jeżeli algorytm się zatrzymuje, to dane wyjściowe algorytmu spełniają warunek WK Algorytm jest całkowicie poprawny względem danego warunku WP i danego warunku WK, gdy dla dowolnych danych wejściowych spełniających warunek WP algorytm zatrzymuje się i dane wyjściowe tego algorytmu spełniaja warunek WK

Tworzenie algorytmu Definicja problemu(najlepiej w postaci modelu matematycznego) Koncepcja rozwiązania i wybór struktur danych Zapis algorytmu(stopniowe precyzowanie od koncepcji do pseudo-kodu lub kodu) Dowód poprawności i analiza złożoności obliczeniowej (Implementacja w wybranym języku programowania)

Metoda TOP-DOWN (zstępująca, analityczna) problem jest dzielony na podproblemy podproblemy są rozwiązywane, a wyniki zapamiętywane, jeżeli będą użyte później używana jest rekursja i spamiętywanie Metoda BOTTOM-UP (wstępująca, syntetyczna) najpierw są rozwiązywane wszystkie(elementarne) podproblemy, które mogą być potrzebne następnie ich wyniki są używane do rozwiązywania większych podproblemów

Podstawowe metody rozwiązywania zadań algorytmicznych Algorytmy zachłanne Planowanie dynamiczne

I Algorytmy i struktury danych / rekursja odwoływanie się funkcji lub definicji do samej siebie Silnia { 1 n =0 n! = n (n 1)! n>0 Ciąg Fibbonacciego 0 n =0 F n = 1 n =1 F n 1 +F n 2 n>1 integer silnia(integer n){ if(n=0)thenreturn1; else return n*silnia(n-1); } integer Fib(integer n){ if(n=0)thenreturn0; elseif(n=1)thenreturn1; else return Fib(n-1)+Fib(n-2); }

II Algorytmy i struktury danych Każda definicja rekurencyjna potrzebuje przynajmniej jednego przypadku bazowego(nie rekurencyjnego) w przeciwnym wypadku nigdy się nie zakończy Należy zachować ostrożność przy stosowaniu rekurencji!

Problem dzieli się na mniejsze zadania tego samego typu i rozwiązuję się zdefiniowane podzadania Następnie łączy się częściowe rozwiązania w rozwiązanie całościowe problemu wyjściowego Jeżeli zdefiniowane podzadania są dokładnie takie same jak zadanie wyjściowe, lecz postawione dla mniejszych lub prostszych danych, to algorytm rozwiązania może być rekurencyjny Metoda jest przykładem zastosowania podejścia top-down konstrukcji algorytmu

. Przykład: problem wież Hanoi Algorytm rozwiązuje zadanie dla N krążków, dzieląc problem na dwa problemy dla N-1 krążków i rozwiązując je Danesątrzywieże(kołki):A,B,C.Na kołku A znajdują się trzy krążki ułożone malejąco, pozostałe kołki są puste Zadanie:przenieśkrążkizkołkaAnaB, można korzystać z kołka C. Zachowane muszą być następujące zasady jednocześnie można przenieść tylko jeden kołek kołek większy nigdy nie może znaleźć się na kołku mniejszym Rozwiązanie dla trzech krążków: A B, A C,B C,A B,C A,C B, A B

. Przykład: problem wież Hanoi- cd AlgorytmrozwiązaniaproblemuWieżHanoidla N N + krążkówitrzech kołkówa,b,c. procedura WieżeHanoi(N,X,Y,Z){ //przenieś N krążków z X na Y używając Z if(n==1) wypisz(x," ->",Y); else{ WieżeHanoi(N-1,X,Z,Y); //przenieś N-1 krążków z X na Z używając Y wypisz(x," ->",Y); WieżeHanoi(N-1,Z,Y,X); //przenieś N-1 krążków z Z na Y używając X } }

. Przykład: wyszukiwanie binarne Dane: posortowany ciąg liczb przechowywany w tablicy Zadanie: wyszukać w ciągu element o zadanej wartości Zastosowanie metody dziel i zwyciężaj dla tablicy o rozmiarze N i elementu x: dziel: weź element środkowy m(pozycja N/2); porównaj x z elementem środkowym zwyciężaj:jeżeli x = mzwróćpozycję;jeżeli x< mszukajwlewej podtablicy, w przeciwnym przypadku szukaj w prawej podtablicy. integer WyszukajBin(ELEM T[], ELEM x, integer l, integer p){ if(l>p)return -1; intm; do{ m=(l+p)/2; if( T[m]=x) return m; elseif(t[m]<x )l=m+1; else p=m-1; }while( l<=p ); return -1; }

Metoda Dziel i zwyciężaj. Cechy Umożliwia często rozwiązywanie skomplikowanych problemów Daje efektywne algorytmy jeżeli: danych jest p podproblemów o rozmiarze n/p, podział i scalenie O(n) rozwiązanie trywialne O(1) wtedy metoda daje algorytm o złożoności O(nlogn) Algorytmy można łatwo zrównoleglać Wykorzystanie rekurencji do konstrukcji algorytmu metodą dziel i zwyciężaj może być nieefektywne Jeżeli podproblemy na siebie zachodzą, wtedy powtarzające się rozwiązania należy zapamiętywać (np. jak w przypadku ciągu Fibonacciego).

Algorytmy i struktury danych Zastosowanie znajdowanie dla danego problemu rozwiązania pod pewnymi względami najlepszego z wszystkich możliwych rozwiązań Własność zachłannego wyboru Za pomocą lokalnie optymalnych(zachłannych) wyborów można uzyskać optymalne rozwiązanie całego zadania Optymalny wybór dokonany przez algorytm zachłanny może zależeć od poprzednich wyborów, ale nie zależy od wyborów kolejnych

Algorytmy i struktury danych Zastosowanie znajdowanie dla danego problemu rozwiązania pod pewnymi względami najlepszego z wszystkich możliwych rozwiązań Własność zachłannego wyboru Za pomocą lokalnie optymalnych(zachłannych) wyborów można uzyskać optymalne rozwiązanie całego zadania Optymalny wybór dokonany przez algorytm zachłanny może zależeć od poprzednich wyborów, ale nie zależy od wyborów kolejnych Algorytm zachłanny konstruuje iteracyjnie rozwiązanie w sposób zachłanny, tzn. najbardziej obiecujący w danej chwili wybór rozwiązania częściowego Algorytm zachłanny nie przewiduje, czy w kolejnych krokach wykonywane działania będą miały sens, ale dokonuje decyzji lokalnie optymalnej, czyli w danej chwili najlepszej, kontynuując rozwiązywanie podproblemu wynikające z podjętej decyzji

Algorytmy zachłanne. Cechy Problem nie jest rozpatrywany globalnie Typowe zadanie rozwiązywane metodą zachłanną ma charakter optymalizacyjny Musi być znane kryterium pozwalające oceniać jakość rozwiązania Istnieje wiele problemów, dla których udowodnić można, że rozwiązanie zachłanne jest zawsze optymalne(np. algorytm Prima, Kruskala). W przypadku innych problemów zachłanność się nie opłaca lub może być problematyczna(np. problem wydawania reszty) Nie istnieje ogólna metoda dowodzenia, czy dla danego problemu rozwiązanie zachłanne(zawsze) odnajduje poprawny (i optymalny) wynik.

Algorytmy zachłanne. Budowa rozwiązania Niech Z będzie zbiorem skończonym, takim, że wszystkie możliwe rozwiązania R problemu P są podzbiorami Z Budowa rozwiązania zachłannego Napoczątku R = Aż do znalezenia rozwiązania, w każdej iteracji wybierane jest rozwiązanieczęściowe z Z,którejestdołączanedo rozwiązania problemu, takie, że: R = R {z} : R jest optymalne przy czym wybrane rozwiązanie z jest usuwane ze zbioru (Z = Z\{z})

Algorytmy zachłanne. Przykład Dane: zbiór miast Zadanie: połączmiastawsiećwtensposób,abyzdowolnegomiastamożnabyło dotrzeć do każdego innego w najtańszy (np. najkrótszy) sposób Założenia: znane są tylko odległości dla par miast, dla których jest możliwe bezpośrednie połączenie

Algorytmy zachłanne. Przykład Dane: zbiór miast Zadanie: połączmiastawsiećwtensposób,abyzdowolnegomiastamożnabyło dotrzeć do każdego innego w najtańszy (np. najkrótszy) sposób Założenia: znane są tylko odległości dla par miast, dla których jest możliwe bezpośrednie połączenie Sieć połączeń między miastami nazywana jest grafem etykietowanym Rozwiązanie zadania sprowadza się do znalezienia minimalnego drzewa rozpinającego grafu Minimalne drzewo rozpinające grafu To drzewo, które dociera do każdego węzła grafu dokładnie raz suma etykiet krawędzi grafu jest najmniejsza z możliwych

Algorytmy zachłanne. Przykład- cd

Algorytmy zachłanne. Przykład- cd Algorytm Prima: zbuduj drzewo zdegenerowane, składające się z najtańszej krawędzi grafu w każdym kolejnym kroku dodaj do już istniejącego drzewa najtańszą krawędź z krawędzi dotąd nie wziętych pod uwagę (uwaga! dodanie nowej krawędzi nie może prowadzić do powstania cyklu, w takim przypadku przejdź do nowej krawędzi w porządku rosnących kosztów).

Algorytmy zachłanne. Przykład- cd

Algorytmy zachłanne. Przykład- cd

Algorytmy zachłanne. Przykład- cd

Algorytmy zachłanne. Przykład- cd

Algorytmy zachłanne. Przykład- cd

Algorytmy zachłanne. Przykład- cd

Algorytmy zachłanne. Przykład- cd

Algorytmy zachłanne. Przykład- cd

Programowanie(planowanie) dynamiczne Własność optymalnej podstruktury Optymalne rozwiązanie całego problemu jest możliwe tylko przy optymalnym rozwiązaniu jego podproblemów.(optymalne rozwiązanie całego problemu zawiera optymalne rozwiązania podproblemów).

Programowanie(planowanie) dynamiczne Własność optymalnej podstruktury Optymalne rozwiązanie całego problemu jest możliwe tylko przy optymalnym rozwiązaniu jego podproblemów.(optymalne rozwiązanie całego problemu zawiera optymalne rozwiązania podproblemów). Spamiętywanie[Donald Michie, 1968] Technika optymalizacyjna przyspieszająca działanie algorytmów, polegająca na zapamiętywaniu wyników zwracanych przez funkcje do późniejszego ich wykorzystania, zamiast ponownego wywołania tych funkcji.

Programowanie(planowanie) dynamiczne [Richard Bellman, 1940] W każdym kroku rozważamy wszystkie kombinacje powstałe z: dokonania konkretnego wyboru znalezienia optymalnych rozwiązań dla pozostałych dla pozostałych wyborów Optymalny wybór dokonany przez metodę programowania dynamicznego może zależeć od poprzednich wyborów oraz od wyborów kolejnych wtedy rozwiązanie optymalne jest modyfikowane

Podproblemy cechują się następującymi własnościami: 1 niesąnaogółrozłączne-tesamepodproblemysąużywanedo rozwiązywania wielu większych podproblemów Rysunek: Kolejne wyrazy ciągu Fibbonaciego 2 z tego powodu należy zapamiętać rozwiązanie danego podproblemu, aby go ponownie użyć(spamiętywanie) 3 posiadają własność optymalnej podstruktury

. Przykład Poszukiwanie najtańszej drogi od początkowego węzła do węzła przeznaczenia w etykietowanym grafie skierowanym

. Przykład Poszukiwanie najtańszej drogi od początkowego węzła do węzła przeznaczenia w etykietowanym grafie skierowanym W algorytmie planowania dynamicznego długość najkrótszej ścieżki wiodącej z A do B powstaje przez znalezienie: K1NajmniejszejztrzechodległościzAdoC,D,G K2 Dodanie do tych odległości długości najkrótszej ścieżki prowadzącejzc,digdob K3 Wybór najkrótszej z nich

. Przykład- cd Niech L(X) oznacza najkrótszą ścieżkę prowadzącą z X do B. Wtedy: L(A) =min(5+l(c),14+l(g),3+l(d)) Najpierw znajdowane są trzy mniejsze ścieżki optymalne: L(C), L(G), L(D), a później wykonując dodawania i porównania otrzymywana jest całkowita ścieżka optymalna: L(C) =min(2+l(f);3+l(e)) L(G) =min(7+l(e);6+l(b)) L(D) =min(6+l(g);11+l(c)) L(B) =0

. Przykład- cd Algorytm znajdowania najkrótszej ścieżki w grafie Jeśliwęzłamisą C i,...,c niścieżkamasięrozpocząćwc 1iskończyćwC N,to algorytmwymagaobliczeniaoptymalnejścieżkiczęściowej L(C i), przedstawiającejnajkrótsząścieżkęzc ido C n,dlakażdego i =1...n: L(C i) =min(odległość(c i,c k )+L(C k )) przyczym C k towszystkiewęzły,doktórychprowadząbezpośredniokrawędzie z C i Zzałożeniagrafjestacykliczny,możliwejestwięcobliczeniewszystkich L(C i ), posuwającsięzb4dotyłu: 1 L(F) =7,L(E) =5,L(G) =6 2 L(C) =min(2 + L(F),3 + L(E)) =3 + L(E) =8 3 L(D) =min(11 + L(C),6 + L(G)) =6 + L(G) =12 4 L(A) =min(5 + L(C),3 + L(D),14 + L(G)) =5 + L(C) =13 OptymalnaścieżkazAdo Bto: A C E B

. Przykłady Algorytmy operujących na ciągach znaków, np. longest common subsequence, longest increasing subsequence Algorytm Floyda-Warshalla- poszukiwanie najkrótszych ścieżek pomiędzy wszystkimi parami wierzchołków w grafie etykietowanym Alorytm Cocke-Younger-Kasami(CYK)- sprawdzanie, czy słowo należy do języka bezkontekstowego Problem optymalnego nawiasowania macierzy Wybór instrukcji niskiego poziomu w kompilatorach

Algorytmy i struktury danych Technika rozwiązywania trudnego problemu poprzez jego transformację do innego problemu, dla którego znamy asymptotycznie optymalne algorytmy Kluczowe jest znalezienie takiego algorytmu redukującego, którego złożoność jest mniejsza niż złożoność algorytmu dla problemu zredukowanego

Algorytmy i struktury danych Technika rozwiązywania trudnego problemu poprzez jego transformację do innego problemu, dla którego znamy asymptotycznie optymalne algorytmy Kluczowe jest znalezienie takiego algorytmu redukującego, którego złożoność jest mniejsza niż złożoność algorytmu dla problemu zredukowanego Przykład: problem znalezienia mediany 1 Posortowanie elementów(kosztowna część algorytmu) 2 Wybór środkowego elementu(tania część algorytmu)