Dynamické programování

Podobné dokumenty
Návrh Designu: Radek Mařík

3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem

Dynamické programování

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

Graf. Uzly Lokality, servery Osoby fyzické i právní Informatické objekty... atd. Hrany Cesty, propojení Vztahy Informatické závislosti... atd.

Obecná úloha lineárního programování

Učební texty k státní bakalářské zkoušce Matematika Základy lineárního programování. študenti MFF 15. augusta 2008

Dynamické programování

4EK213 Lineární modely. 10. Celočíselné programování

Hammingovy kódy. dekódování H.kódů. konstrukce. šifrování. Fanova rovina charakteristický vektor. princip generující a prověrková matice

Metody lineární optimalizace Simplexová metoda. Distribuční úlohy

2. úkol MI-PAA. Jan Jůna (junajan)

Binární vyhledávací stromy pokročilé partie

INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ. Modernizace studijního programu Matematika na PřF Univerzity Palackého v Olomouci CZ.1.07/2.2.00/28.

NP-ÚPLNÉ PROBLÉMY. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

ALGORITMY A DATOVÉ STRUKTURY

12. Lineární programování

Obr. P1.1 Zadání úlohy v MS Excel

Soustavy linea rnı ch rovnic

NEJKRATŠÍ CESTY I. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

Digitální učební materiál

[1] samoopravné kódy: terminologie, princip

Soustavy. Terminologie. Dva pohledy na soustavu lin. rovnic. Definice: Necht A = (a i,j ) R m,n je matice, b R m,1 je jednosloupcová.

Lineární programování

VYSOKÁ ŠKOLA EKONOMICKÁ V PRAZE. Optimalizace trasy při revizích elektrospotřebičů

Přílohy. Příloha 1. Obr. P1.1 Zadání úlohy v MS Excel

Časová a prostorová složitost algoritmů

Vektorové podprostory, lineární nezávislost, báze, dimenze a souřadnice

3.10 Rezoluční metoda ve výrokové logice

Binární soubory (datové, typované)

Numerická stabilita algoritmů

Vzdálenost uzlů v neorientovaném grafu

13. Lineární programování

3. Třídy P a NP. Model výpočtu: Turingův stroj Rozhodovací problémy: třídy P a NP Optimalizační problémy: třídy PO a NPO MI-PAA

4. Diferenciál a Taylorova věta

Aproximativní algoritmy UIN009 Efektivní algoritmy 1

10 Přednáška ze

Algoritmizace prostorových úloh

ČVUT FEL X36PAA - Problémy a algoritmy. 4. úloha - Experimentální hodnocení algoritmů pro řešení problému batohu

Výroková a predikátová logika - III

Matematika (CŽV Kadaň) aneb Úvod do lineární algebry Matice a soustavy rovnic

SÍŤOVÁ ANALÝZA. Kristýna Slabá, 1. července 2010

Výhody a nevýhody jednotlivých reprezentací jsou shrnuty na konci kapitoly.

Dynamické programování

Příklad 1/23. Pro rostoucí spojité fukce f(x), g(x) platí f(x) Ω(g(x)). Z toho plyne, že: a) f(x) Ο(g(x)) b) f(x) Θ(g(x)) d) g(x) Ω(f(x))

3. Optimalizace pomocí nástroje Řešitel

0.1 Úvod do lineární algebry

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace

Cílem kapitoly je seznámit studenta se seznamem a stromem. Jejich konstrukci, užití a základní vlastnosti.

Zdůvodněte, proč funkce n lg(n) roste alespoň stejně rychle nebo rychleji než než funkce lg(n!). Symbolem lg značíme logaritmus o základu 2.

Třídy složitosti P a NP, NP-úplnost

Optimalizace. Obsah přednášky. DÚ LP - Okružní problém. Lineární optimalizace. DÚ LP - Okružní problém. DÚ LP - Okružní problém

Dynamické programování UIN009 Efektivní algoritmy 1

a počtem sloupců druhé matice. Spočítejme součin A.B. Označme matici A.B = M, pro její prvky platí:

Digitální učební materiál

fakulty MENDELU v Brně (LDF) s ohledem na disciplíny společného základu (reg. č. CZ.1.07/2.2.00/28.

Složitost. Teoretická informatika Tomáš Foltýnek

Ukážeme si lineární algoritmus, který pro pevné k rozhodne, zda vstupní. stromový rozklad. Poznamenejme, že je-li k součástí vstupu, pak rozhodnout

Konstrukce relace. Postupně konstruujeme na množině všech stavů Q relace i,

4EK201 Matematické modelování. 2. Lineární programování

1. Nejkratší cesta v grafu

Úvod do teorie her

LDF MENDELU. Simona Fišnarová (MENDELU) Základy lineárního programování VMAT, IMT 1 / 25

12. Globální metody MI-PAA

VYBRANÉ PARTIE Z NUMERICKÉ MATEMATIKY

Fz =a z + a z +...+a z +a z =


Fakt. Každou soustavu n lineárních ODR řádů n i lze eliminací převést ekvivalentně na jednu lineární ODR

Metodické pokyny pro práci s modulem Řešitel v tabulkovém procesoru Excel

2D transformací. červen Odvození transformačního klíče vybraných 2D transformací Metody vyrovnání... 2

Michal Zamboj. December 23, 2016

Algoritmy I, složitost

1. července 2010

Teorie grafů. zadání úloh. letní semestr 2008/2009. Poslední aktualizace: 19. května First Prev Next Last Go Back Full Screen Close Quit

Semestrální práce 2 znakový strom

0.1 Úvod do lineární algebry

3. ANTAGONISTICKÉ HRY

Michal Zamboj. January 4, 2018

Vybrané kapitoly z matematiky

Problémy třídy Pa N P, převody problémů

Detekce kartografického zobrazení z množiny

Hranová konzistence. Arc consistency AC. Nejprve se zabýváme binárními CSP. podmínka odpovídá hraně v grafu podmínek

1 Co jsou lineární kódy

Transformace souřadnic

3 Lineární kombinace vektorů. Lineární závislost a nezávislost

Matematika I, část I. Rovnici (1) nazýváme vektorovou rovnicí roviny ABC. Rovina ABC prochází bodem A a říkáme, že má zaměření u, v. X=A+r.u+s.

4EK213 Lineární modely. 12. Dopravní problém výchozí řešení

Definice 9.4. Nedeterministický algoritmus se v některých krocích může libovolně rozhodnout pro některé z několika možných různých pokračování.

Řešení 1b Máme najít body, v nichž má funkce (, ) vázané extrémy, případně vázané lokální extrémy s podmínkou (, )=0, je-li: (, )= +,

12. Aproximační algoritmy

ORIENTOVANÉ GRAFY, REPREZENTACE GRAFŮ

IB112 Základy matematiky

Přiřazovací problém. Přednáška č. 7

4EK311 Operační výzkum. 5. Teorie grafů

Cyklické kódy. Definujeme-li na F [x] n sčítání a násobení jako. a + b = π n (a + b) a b = π n (a b)

Třída PTIME a třída NPTIME. NP-úplnost.

2. Určete jádro KerL zobrazení L, tj. nalezněte alespoň jednu jeho bázi a určete jeho dimenzi.

Lineární algebra : Změna báze

Čebyševovy aproximace

Hypergrafové removal lemma a Szemérediho

Transkript:

ALG 11 Dynamické programování Úloha batohu neomezená Úloha batohu /1

Úloha batohu / Knapsack problem Máme N předmětů, každý s váhou Vi a cenou Ci (i = 1, 2,..., N) a batoh s kapacitou váhy K. Máme naložit batoh těmito předměty tak, aby kapacita K nebyla překročena a obsah měl maximální cenu. Neomezená varianta -- Každý předmět lze použít libovolněkrát. /1 varianta -- Každý předmět lze použít nejvýše jednou. Schematický batoh s kapacitou 1 3 Předměty s uvedenou cenou, váha ~ výška Několik možných konfigurací 3 1

Neomezená úloha batohu Batoh s kapacitou 1 Příklad N = 4 Váha 2 3 4 6 Cena 3 3 Některé možnosti naplnění a odpovídajíci ceny 3 3 45 41 46 42 43 44 41 48 46 2

Neomezená úloha batohu Použijeme K+1 batohů, o kapacitách, 1, 2, 3,..., K. Hodnotu optimálního naplnění batohu s kapacitou K lze získat jako maximum z hodnot -- (optimalní naplnění batohu o kapacitě K - V1) + C1, -- (optimalní naplnění batohu o kapacitě K - V2) + C2,... -- (optimalní naplnění batohu o kapacitě K - VN) + CN. Optimální naplnění batohu o kapacitě K - Vi (i = 1..N) je stejnou úlohou, jen s menšími daty. Hodnoty předpočítáme standardně metodou DP do 1D tabulky. Neomezenou úlohu batohu lze přímo vyjádřit jako úlohu nalezení nejdelší cesty v DAG. Postup řešení je identický. 3

Neomezená úloha batohu -- převod na DAG DAG: Uzly: Kapacity, 1, 2, 3,..., K. Hrany: Z uzlu X vedou hrany po řadě do uzlů X+V1, X+V2,..., V+VN, jsou po řadě ohodnoceny cenami C1, C2,..., CN. Příklad K = 1, N = 4, Vi = (2, 3, 4, 6), Ci = (,,, 3), i = 1..4. 3 3 3 3 3 1 2 3 4 5 6 7 8 1 4

Neomezená úloha batohu -- jako DAG Optimální naplnění kapacity 1 =?? 1 2 3 4 5 6 7 8 1 3 Opt. naplnění kapacity 4 = 18 3 4 5 6 7 8 1 Optimální naplnění kapacity 6 = 3 Optimální naplnění kapacity 7 = 32 6 7 8 1 7 8 1 Optimální naplnění kapacity 8 = 3 8 1 Optimální naplnění kapacity 1 = max(18 + 3, 3 +, 32 +, 3 + ) = 48 5

Neomezená úloha batohu Nejdelší cesta odpovídá optimálnímu naplnění batohu. Dvě hrany s cenou a jedna hrana s cenou 3, celkem cena = 48. Batoh optimálně naplníme dvěma předměty s váhou 2 a cenou a jedním předmětem s váhou 6 a cenou 3. 3 3 3 3 1 2 3 4 5 6 7 8 1 6

Neomezená úloha batohu -- asymptotická složitost DAG obsahuje K+1 uzlů a méně než K*N hran. Má tedy V = (K) uzlů a E = O(K*N) hran. Asymptotická složitost hledání nejdelší cesty je (V+E), máme tedy pro neomezenou úlohu batohu asymptotickou složitost O(K + K*N) = O(K*N). 3 3 3 3 1 2 3 4 5 6 7 8 1 7

Neomezená úloha batohu -- Asymptotická složitost Zdánlivá nesrovnalost 1. Literatura: NP těžký problém, není znám efektivní algoritmus. 2. ALG OI: DP řeší úlohu v čase v O(N*K), tedy efektivně? Délka výpočtu DP je lineárně závislá na velikosti kapacity K. Příklad Velkou kapacitu 2 64 lze zadat velmi krátkým zápisem Kapacita = 1844674473755. N = 3. Položky (váha, cena): (2, 345), (3, 456), (5, 678). Data lze zapsat do cca 1 bitů < Bytů < "dva longy" Výpočet pomocí DP potrvá přes 584 roky za předpokladu, že za 1 sec vyplní 1 prvků tabulky. Délka výpočtu DP je exponenciálně závislá na délce řetězce definujícího kapacitu K. 8

/1 úloha batohu Každý předmět lze použít nejvýše 1 krát. Máme vybrat vhodnou podmnožinu předmětů splňující zadání úlohy. Každé podmnožině lze přiřadit charakteristický vektor z hodnot /1 délky N. Pozice ve vektoru odpovídá předmětu, resp. 1 odpovídá nepřítomnosti resp. přítomnosti předmětu v této podmnožině. Binárních vektorů délky N je celkem 2 N, systematické probírání všech možných podmnožin bude mít exponenciální asymptotickou složitost, nehodí se. DP poskytuje (pro relativně nevelké kapacity) výhodnější postup.

/1 úloha batohu Příklad Všech podmnožin čtyř předmětů a jejich ceny N = 4 Váha Cena 2 3 4 6 3 3 Batoh s kapacitou 1 3 23 25 3 3 3 3 3 44 46 3 53 55 6 6 3 3 3 3 3 1

/1 úloha batohu -- řešení Použijeme K+1 batohů, o kapacitách, 1, 2, 3,..., K. Použijeme N+1 souborů předmětů. Soubor neobsahuje žádný předmět. Soubor 1 obsahuje předmět 1. Soubor 2 obsahuje předměty 1 a 2. Soubor 3 obsahuje předměty 1, 2, 3.... Soubor N obsahuje předměty 1, 2, 3,..., N. Na pořadí předmětů nezáleží, je ale zafixované. Pro každou kapacitu a pro každý soubor budeme řešit stejnou úlohu metodou DP, v pořadí od menších hodnot k větším. 11

/1 úloha batohu -- řešení Označme symbolem U(x, y) úlohu se souborem předmětů 1, 2,..., x a s kapacitou batohu y a symbolem Opt(x, y) optimální řešení této úlohy. Pro řešení U(x,y) použijeme optimální řešení úloh U(x-1, _ ): Buď do Opt(x, y) zahrneme předmět x nebo jej nezahrneme. V prvním případě použijeme hodnotu řešení pro batoh s kapacitou menší o velikost váhy Vx, tedy hodnotu Opt(x-1, y-vx), ke které přičteme cenu Cx předmětu x. V druhém případě beze změny použijeme hodnotu Opt(x-1, y). Z obou hodnot vybereme tu výhodnější a dostáváme tak: Opt(x, y) = max(opt(x-1, y), Opt(x-1, y-vx) + Cx). Dále zřejmě platí Opt(, y) = Opt(x, ) =, pro x =..N, y =..K. 12

/1 úloha batohu -- řešení Pro x = 1..N, y =..K: Opt(x, y) = max(opt(x-1, y), Opt(x-1, y-vx) + Cx). Opt(, y) = Opt(x, ) = Opt(, ) =. Pokud y-vx <, položíme Opt(x, y-vx) = (a netabelujeme). Hodnoty Opt(x,y) tabelujeme ve 2D tabulce velikosti (N+1) (K+1) s řádkovým indexem x (předměty) a sloupcovým indexem y (kapacity menších batohů). Pro rekonstrukci optimálního řešení použijeme tabulku předchůdců stejné velikosti jako tabulku pro Opt(x, y). Předchůdce leží vždy v předchozím řádku x-1, stačí registrovat buď pozici y (beze změny) nebo pozici y-vx (přidán předmět x). 13

/1 úloha batohu Příklad N = 4 Kapacita = 1 Váha 2 3 4 6 Cena 3 3 Opt(x, y) 1 2 3 4 5 6 7 8 1 1 2 23 23 23 23 23 23 3 23 25 3 3 3 3 4 23 3 3 3 44 46 Pred(x, y) 1 2 3 4 5 6 7 8 1 -- -- -- -- -- -- -- -- -- -- -- 1 1 1 2 3 4 5 6 7 8 2 1 2 1 2 3 4 5 6 7 3 1 2 3 5 2 3 4 5 6 4 1 2 3 4 5 7 2 3 4

/1 úloha batohu Vyjádření jako optimální cesty v DAG Uzly DAG budou jednotlivé hodnoty Opt(x, y), x =..N, y =..K, celkem bude mít DAG (N+1)*(K+1) uzlů. Do uzlu Opt(x, y) povede hrana -- Opt(x-1, y) --> Opt(x, y) ohodnocená (žádný přidaný předmět), -- a pokud y-vx, také hrana Opt(x-1, y-vx) --> Opt(x, y) ohodnocená cenou Cx (cenou přidaného předmětu x). V takto zkonstruovaném DAG hledáme nejdelší (= nejcennější) cestu standardní DP metodou. Jaké je topologické uspořádání tohoto DAG? 15

/1 úloha batohu - topologické uspořádání DAG DAG můžeme uvažovat nakreslený formálně do DP tabulky, přičemž uzel Opt(x, y) leží v buňce s indexy x a y. Pak hrany DAG vedou vždy pouze z předchozího řádku do následujícího řádku. Pokud tento DAG procházíme shora po řádcích, to jest ve stejném pořadí, v němž vyplňujeme DP tabulku, respektujeme jeho topologické uspořádání. V tomto případě není nutno uzly DAG v topologickém uspořádání uvažovat v jedné přímce, "tabulkové" uspořádání je přehlednější.

/1 úloha batohu -- DAG C2 = 3 3 C4 = 3 V2 = 2 V4 = 6,,1,2,3,4,5,6,7,8,,1 1, 1,1 1,2 1,3 1,4 1,5 1,6 1,7 1,8 1, 1,1 Příklad 2, 3, 2,1 3,1 2,2 3,2 2,3 3,3 2,4 3,4 2,5 3,5 2,6 3,6 2,7 3,7 2,8 3,8 2, 3, 2,1 3,1 3 3 3 3 3 4, 4,1 4,2 4,3 4,4 4,5 4,6 4,7 4,8 4, 4,1 C2 = V2 = 3 C3 = V3 = 4 17

/1 úloha batohu -- rekonstrukce optimálního řešení pomocí tabulky předchůdců Pred(x, y) 1 2 3 4 5 6 7 8 1 -- -- -- -- -- -- -- -- -- -- -- 1 1 1 2 3 4 5 6 7 8 2 1 2 1 2 3 4 5 6 7 3 1 2 3 5 2 3 4 5 6 4 1 2 3 4 5 7 2 3 4,,1,2,3,4,5,6,7,8,,1 1, 1,1 1,2 1,3 1,4 1,5 1,6 1,7 1,8 1, 1,1 2, 2,1 2,2 2,3 2,4 2,5 2,6 2,7 2,8 2, 2,1 3, 3,1 3,2 3,3 3,4 3,5 3,6 3,7 3,8 3, 3,1 3 3 3 3 3 3 4, 4,1 4,2 4,3 4,4 4,5 4,6 4,7 4,8 4, 4,1 18

/1 úloha batohu Asymptotická složitost Tabulka... Velikost... (N+1)*(K+1) (N*K) Vyplnění jedné buňky... (1) Vyplnění tabulky... (N*K*1) = (N*K). Rekonstrukce optimálního řešení (N). Celkem... (N*K + N) = (N*K). DAG... Uzlů... (N+1)*(K+1) (N*K). Hran... nejvýše 2*(N+1)*(K+1), tj O(N*K). Nalezení optimální cesty... (uzlů+hran) = (N*K). Řešení obou variant úlohy batohu, neomezené i /1, má asymptotickou složitost (N*K). Přitom zárověň platí: Asymptotická složitost DP řešení je exponenciální vzhledem k délce řetězce definujícího kapacitu K. 1