Programowanie dynamiczne i algorytmy zachłanne

Podobne dokumenty
Wybrane podstawowe rodzaje algorytmów

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

Wstęp do programowania

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

Wstęp do programowania

Schemat programowania dynamicznego (ang. dynamic programming)

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

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

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

Programowanie dynamiczne cz. 2

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

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

Temat: Algorytmy zachłanne

Podejście zachłanne, a programowanie dynamiczne

INFORMATYKA WYBRANE ALGORYTMY OPTYMALIZACYJNE KRYPTOLOGIA.

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

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

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

Zaawansowane algorytmy i struktury danych

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

Algorytmy grafowe. Wykład 1 Podstawy teorii grafów Reprezentacje grafów. Tomasz Tyksiński CDV

Sortowanie przez scalanie

Egzamin, AISDI, I termin, 18 czerwca 2015 r.

Strategia "dziel i zwyciężaj"

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

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

Digraf. 13 maja 2017

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

Teoretyczne podstawy informatyki

Sortowanie danych. Jolanta Bachan. Podstawy programowania

Algorytm Dijkstry znajdowania najkrótszej ścieżki w grafie

TEORETYCZNE PODSTAWY INFORMATYKI

Algorytmy i struktury danych IS/IO, WIMiIP

Matematyczne Podstawy Informatyki

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

Ćwiczenie 3 Programowanie dynamiczne

Algorytmiczna teoria grafów

TEORETYCZNE PODSTAWY INFORMATYKI

MATEMATYKA DYSKRETNA - MATERIAŁY DO WYKŁADU GRAFY

Wstęp do programowania

Algorytmika Problemów Trudnych

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

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

Sieć (graf skierowany)

Programowanie dynamiczne (optymalizacja dynamiczna).

Wykład 10 Grafy, algorytmy grafowe

Problem straŝaka w drzewach. Agnieszka Skorupka Matematyka Stosowana FTiMS

Wstęp do sieci neuronowych, wykład 12 Łańcuchy Markowa

Złożoność obliczeniowa klasycznych problemów grafowych

Algorytmy i Struktury Danych.

Temat: Technika zachłanna. Przykłady zastosowania. Własno wyboru zachłannego i optymalnej podstruktury.

Algorytmy i Struktury Danych

Efektywna metoda sortowania sortowanie przez scalanie

Graf. Definicja marca / 1

zadaniem programowania liniowego całkowitoliczbowego. nazywamy zadaniem programowania liniowego 0-1. Zatem, w

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne

Drzewa. Jeżeli graf G jest lasem, który ma n wierzchołków i k składowych, to G ma n k krawędzi. Własności drzew

Projektowanie i analiza algorytmów

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

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

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

Wstęp do sieci neuronowych, wykład 11 Łańcuchy Markova

Programowanie dynamiczne

Przykłady grafów. Graf prosty, to graf bez pętli i bez krawędzi wielokrotnych.

Programowanie liniowe

Plan wykładu. Przykład. Przykład 3/19/2011. Przykład zagadnienia transportowego. Optymalizacja w procesach biznesowych Wykład 2 DECYZJA?

Teoria obliczeń i złożoność obliczeniowa

Porównanie algorytmów wyszukiwania najkrótszych ścieżek międz. grafu. Daniel Golubiewski. 22 listopada Instytut Informatyki

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II

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

Wprowadzenie do algorytmów / Thomas H. Cormen [et al.]. - wyd. 7. Warszawa, Spis treści. Wprowadzenie 2

Programowanie sieciowe. Tadeusz Trzaskalik

Uwaga: Funkcja zamień(a[j],a[j+s]) zamienia miejscami wartości A[j] oraz A[j+s].

Programowanie dynamiczne

Matematyka dyskretna - 7.Drzewa

Działanie algorytmu oparte jest na minimalizacji funkcji celu jako suma funkcji kosztu ( ) oraz funkcji heurystycznej ( ).

Optymalizacja. Algorytmy dokładne

Programowanie od pierwszoklasisty do maturzysty. Grażyna Koba

[12] Metody projektowania algorytmów (dziel i rządź, programowanie dynamiczne i algorytmy zachłanne).

Matematyczne Podstawy Informatyki

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 )

Algorytmy i struktury danych.

Ogólne wiadomości o grafach

Elementy modelowania matematycznego

Minimalne drzewa rozpinające

Segmentacja obrazów cyfrowych z zastosowaniem teorii grafów - wstęp. autor: Łukasz Chlebda

Indukcja matematyczna, zasada minimum i maksimum. 17 lutego 2017

Lista 4. Kamil Matuszewski 22 marca 2016

Algorytmy i Struktury Danych.

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

Rozdział 8 PROGRAMOWANIE SIECIOWE

Metody teorii gier. ALP520 - Wykład z Algorytmów Probabilistycznych p.2

Planowanie przedsięwzięć

Algorytmy i Struktury Danych.

Wstęp do programowania. Drzewa. Piotr Chrząstowski-Wachtel

Programowanie liniowe całkowitoliczbowe

Algorytmy wyznaczania centralności w sieci Szymon Szylko

G. Wybrane elementy teorii grafów

Drzewa rozpinajace, zbiory rozłaczne, czas zamortyzowany

PRZEWODNIK PO PRZEDMIOCIE

Transkrypt:

Programowanie dynamiczne i algorytmy zachłanne Tomasz Głowacki tglowacki@cs.put.poznan.pl Zajęcia finansowane z projektu "Rozwój i doskonalenie kształcenia na Politechnice Poznańskiej w zakresie technologii informatycznych i ich zastosowań w przemyśle" POKL.04.01.02-00-189/10

Podejście dziel i zwyciężaj Problem dzieli się rekurencyjnie na kilka niezależnych podproblemów Rozwiązuje się niezależne problemy Rozwiązania niezależnych problemów scala się do uzyskania rozwiązania wyjściowego problemu Przykłady algorytmów: Merge Sort (sortowanie przez scalanie) Wyszukiwanie binarne 2

Zadanie wyszukiwanie binarne Czy podany uporządkowany ciąg zawiera liczbę 5? 1, 2, 4, 5, 8, 13, 27, 33, 35 3

Zadanie Sortowanie przez scalanie Posortuj poniższy ciąg liczb wykorzystując sortowanie przez scalanie: 32, 5, 7, 13, 12, 17, 25, 1 4

Własność optymalnej podstruktury Optymalne rozwiązanie problemu jest zależne od optymalnych rozwiązań jego podproblemów Optymalne rozwiązanie problemu jest funkcją optymalnych rozwiązań jego podproblemów Problemy posiadające własność optymalnej podstruktury często dają się rozwiązać za pomocą: Programowania dynamicznego Algorytmów zachłannych 5

Programowanie dynamiczne Problem daje się podzielić na podproblemy, które są od siebie zależne Każdy podproblem jest rozwiązywany tylko raz Na każdym etapie rozwiązywania probemu jest podejmowana decyzja, która prowadzi do kolejnego etapu decyzyjnego Decyzja w k-tym etapie procesu decyzyjnego zależy tylko od stanu procesu przy końcu k-1-ego etapu (własność Markowa) Optymalną funkcję celu opisuje równanie rekurencyjne 6

Programowanie dynamiczne przykładowy problem Problem ścieżki o zadanej długości w grafie skierowanym G(V,E): Dany jest dowolny graf skierowany G(V,E) Z każdym łukiem tego grafu związana jest dodatnia waga w(e) Wskazany jest wierzchołek startowy v 1 oraz wierzchołek końcowy v 2 pytanie: Czy istnieje ścieżka o zadanej długości przechodząca przez dowolne wierzchołki tego grafu rozpoczynająca się w v 1 i kończąca w v 2? 7

Programowanie dynamiczne, zadanie 1 Listonosz ma przebyć drogę 12 km. Swoją podróż powinien rozpocząć w mieście A i zakończyć w mieście B. Listonosz może wielokrotnie odwiedzać wszystkie miasta Odległości pomiędzy miastami: A B (2 km) A C (3 km) A D (5 km) B C (4 km) B D (1 km) C D (6 km) 8

Programowanie dynamiczne - Algorytm Viterbiego Ukryty model Markowa: Stany nie są widoczne dla obserwatora Obserwacje są widoczne dla obserwatora Algorytm znajdowania najbardziej prawdpodobnej sekwencji ukrytych stanów (tzw. ścieżka Viterbiego) Najbardziej prawdopodobna sekwencja w stanie t zależy jedynie od sekwencji w czasie t-1 Równanie rekurencyjne ma postać: t max ( j) [ ( i) t 1 1 i N Gdzie A jest tablicą przejść [aij ] B [ ( k)] jest tablicą obserwacji bi [ ] jest tablicą prawdopodobieństw początkowych i a ij ] b i ( O t ), 1 n N 9

Programowanie dynamiczne, zadanie 2 Znaleźć najbardziej prawdopodobną sekwencję stanów dla zdania Amino acid is compound wiedząc, że graf transycji przedstawia się następująco: 10

Algorytmy zachłanne W każdym kroku podejmowana jest lokalnie optymalna decyzja Podjęcie decyzji w danym kroku nie zależy od poprzednich decyzji Metody zachłanne nie gwarantują otrzymania optymalnego rozwiązania dla wszystkich problemów, dla których mogą być wykorzystane - istnieją jednak problemy, dla których te metody zawsze zwracają rozwiązanie optymalne 11

Problem wydawania reszty Polega na wybraniu monet ze zbioru monet o określonych nominałach w ten sposób, aby otrzymać żądaną kwotę przy użyciu minimalnej liczby monet Problem ma praktyczne zastosowanie: Bankomaty Automaty vendingowe 12

Problem wydawania reszty nominały polskie Zbiór dostępnych nominałów N { 1gr,2gr,5gr,10gr,20gr,50gr,1zł,2zł,5zł} Przykłady: 25 gr = 20 gr + 5 gr 30 gr = 20 gr + 10 gr 40 gr = 2 * 20gr 57 gr = 50 gr + 5 gr + 2 gr Czy rozwiązanie zachłanne Z(C) daje ten sam wynik co programowanie dynamiczne D(C)? Z(C) = D(C)? 13

Problem wydawania reszty inne nominały Zbiór nominałów N {1,2,5,10,20,25,50} Przykłady: 24 = 20 + 2 + 2 30 = 20 + 10 30 = 25 + 5 40 = 25 + 10 + 5 Optymalne rozwiązanie dla: 40 = 20 + 20 - rozwiązanie zachłanne nie jest w tym wypadku optymalne 14

Problem wydawania reszty - analiza rozwiązań Analiza optymalności zachłannego algorytmu wydawania reszty powinna być prowadzona dla konkretnego c a nie dla wszystkich możliwych C: Z ( c) D( c) dlapewnego c Jeśli algorytm Z(C) nie jest optymalny, to musi istnieć pewień kontrprzykład istnieje c dla którego: Z ( c) D( c) dla Zostało udowodnione, że dla dowolnego zbioru nominałów N {V } i, takiego że V... 1 i 1 V 2 V n jeśli istnieje kontrprzykład c to musi on się istnieć w przedziale c n 2 1 1 2 V pewnego V V c 15

Problem wydawania reszty - zadanie Sprawdzić, czy metoda zachłanna dla problemu wydawania reszty jest optymalna dla zbioru nominałów N {1,2,5,7} 16

Matroid Niech N będzie skończonym zbiorem, a P niepustą rodziną podzbiorów N. Para (N,P) jest matroidem wtedy i tylko wtedy, gdy spełnione są następujące warunki: 1. Jeśli B P oraz A B, to A P 2. Jeśli A,B P oraz A + 1 = B, to istnieje x B\A, taki że A {x} P 17

Matroid - zadanie Zbudować najmniejszy matroid (N,P) taki, że N = {a,b,c,d} P zawiera zbiór {a,b} 18

Matroid grafowy Niech G=(V,E) będzie nieskierowanym grafem Niech zbiór N = E oraz P = { A : A E i (V,A) jest lasem} Twierdzenie: (N,P) jest matroidem 19

Problem minimalnego drzewa rozpinającego Drzewo rozpinające D(V 1,E 1 ) grafu G(V 2,E 2 ) to drzewo, które zawiera wszystkie wierzchołki tego grafu i podzbiór jego krawędzi: V 1 =V 2 E 1 E 2 Minimalne drzewo rozpinające grafu ważonego G to drzewo rozpinające tego grafu, dla którego suma wag jest najmniejsza 20

Algorytm Kruskala Utwórzenie lasu L(V,E 2 ) z wierzchołków grafu G(V,E 1 ) V 2 = V 1 E2 = Za zbiór S przyjmij zbiór wszystkich krawędzi E 1 oryginalnego grafu G Dopóki zbiór S jest niepusty: wybierz najmniejszą krawędź ze zbioru S Jeśli krawędź ta łączy 2 różne drzewa w lesie L to dodaj ją do zbioru E 2 Usuń wybraną krawędź ze zbioru S 21

Algorytm Kruskala - zadanie 8 1 12 9 17 5 12 4 13 10 6 22

Algorytmy zachłanne Jeśli problem posiada własność optymalnej podstruktury i można przeprowadzić dowód matematyczny (np. poprzez indukcję matematyczną), że dla dowolnej instancji tego problemu algorytm zachłanny zwraca optymalny wynik, to algorytm zachłanny dla tego problemu jest optymalny Jeśli problem daje się sformułować w kategoriach matroidu, to strategia zachłanna dla tego problemu jest optymalna 23