4.1. Úvod do dynamického programovania (Dynamic programming)

Σχετικά έγγραφα
Matematika Funkcia viac premenných, Parciálne derivácie

Matematika prednáška 4 Postupnosti a rady 4.5 Funkcionálne rady - mocninové rady - Taylorov rad, MacLaurinov rad

1. Limita, spojitost a diferenciálny počet funkcie jednej premennej

ARMA modely čast 2: moving average modely (MA)

Ekvačná a kvantifikačná logika

Vektorové a skalárne polia

Obvod a obsah štvoruholníka

1. písomná práca z matematiky Skupina A

ARMA modely čast 2: moving average modely (MA)

Start. Vstup r. O = 2*π*r S = π*r*r. Vystup O, S. Stop. Start. Vstup P, C V = P*C*1,19. Vystup V. Stop

Komplexné čísla, Diskrétna Fourierova transformácia 1

7. FUNKCIE POJEM FUNKCIE

Motivácia Denícia determinantu Výpo et determinantov Determinant sú inu matíc Vyuºitie determinantov. Determinanty. 14. decembra 2010.

Numerické metódy matematiky I

,Zohrievanie vody indukčným varičom bez pokrievky,

1 Prevod miestneho stredného slnečného času LMT 1 na iný miestny stredný slnečný čas LMT 2

Získať nejaké body v tejto úlohe je ľahké: stačí vygenerovať všetky trojice a usporiadať ich podľa súčtu:

6 Limita funkcie. 6.1 Myšlienka limity, interval bez bodu

Príklady na precvičovanie Fourierove rady

Cvičenie č. 4,5 Limita funkcie

Tomáš Madaras Prvočísla

Jednotkový koreň (unit root), diferencovanie časového radu, unit root testy

Priamkové plochy. Ak každým bodom plochy Φ prechádza aspoň jedna priamka, ktorá (celá) na nej leží potom plocha Φ je priamková. Santiago Calatrava

u R Pasívne prvky R, L, C v obvode striedavého prúdu Činný odpor R Napätie zdroja sa rovná úbytku napätia na činnom odpore.

Deliteľnosť a znaky deliteľnosti

Prechod z 2D do 3D. Martin Florek 3. marca 2009

Goniometrické rovnice a nerovnice. Základné goniometrické rovnice

7 Derivácia funkcie. 7.1 Motivácia k derivácii

RIEŠENIE WHEATSONOVHO MOSTÍKA

MATEMATICKÁ OLYMPIÁDA

Definícia parciálna derivácia funkcie podľa premennej x. Definícia parciálna derivácia funkcie podľa premennej y. Ak existuje limita.

Úvod do lineárnej algebry. Monika Molnárová Prednášky

Dynamické programovanie

Matematika 2. časť: Analytická geometria

Goniometrické substitúcie

x x x2 n

AerobTec Altis Micro

Motivácia pojmu derivácia

3. Striedavé prúdy. Sínusoida

Gramatická indukcia a jej využitie

Rozdiely vo vnútornej štruktúre údajov = tvarové charakteristiky

Planárne a rovinné grafy

24. Základné spôsoby zobrazovania priestoru do roviny

MIDTERM (A) riešenia a bodovanie

Funkcie - základné pojmy

DESKRIPTÍVNA GEOMETRIA

Zložené funkcie a substitúcia

Metódy vol nej optimalizácie

Numerické metódy Učebný text pre bakalárske štúdium

ZADANIE 1_ ÚLOHA 3_Všeobecná rovinná silová sústava ZADANIE 1 _ ÚLOHA 3

PRIEMER DROTU d = 0,4-6,3 mm

Jednotkový koreň (unit root), diferencovanie časového radu, unit root testy

Chí kvadrát test dobrej zhody. Metódy riešenia úloh z pravdepodobnosti a štatistiky

M6: Model Hydraulický systém dvoch zásobníkov kvapaliny s interakciou

3. prednáška. Komplexné čísla

Numerické metódy matematiky I

Moderné vzdelávanie pre vedomostnú spoločnosť Projekt je spolufinancovaný zo zdrojov EÚ M A T E M A T I K A

Kompilátory. Cvičenie 6: LLVM. Peter Kostolányi. 21. novembra 2017

15. októbra 2003 Súčty úvod 4 1

Obsah. 1.1 Reálne čísla a ich základné vlastnosti Komplexné čísla... 8

Numerické metódy Zbierka úloh

Výpočet. grafický návrh

1. písomná práca z matematiky Skupina A. 1. písomná práca z matematiky Skupina B

C. Kontaktný fasádny zatepľovací systém

4. Výrokové funkcie (formy), ich definičný obor a obor pravdivosti

VLASTNÉ ČÍSLA A JORDANOV KANONICKÝ TVAR. Michal Zajac. 3 T b 1 = T b 2 = = = 2b

PDF created with pdffactory Pro trial version

ss rt çã r s t Pr r Pós r çã ê t çã st t t ê s 1 t s r s r s r s r q s t r r t çã r str ê t çã r t r r r t r s

HASLIM112V, HASLIM123V, HASLIM136V HASLIM112Z, HASLIM123Z, HASLIM136Z HASLIM112S, HASLIM123S, HASLIM136S

Podnikateľ 90 Mobilný telefón Cena 95 % 50 % 25 %

7. Dokážte, že z každej nekonečnej množiny môžeme vydeliť spočítateľnú podmnožinu.

FUNKCIE N REÁLNYCH PREMENNÝCH

p(α 1 ) = u 1. p(α n ) = u n. Definícia (modulárna reprezentácia polynómu). Zobrazenie

Rozsah hodnotenia a spôsob výpočtu energetickej účinnosti rozvodu tepla

Vzorové riešenia 3. kola zimnej série 2014/2015

Eliminacijski zadatak iz Matematike 1 za kemičare

Integrovanie racionálnych funkcií

Obyčajné diferenciálne rovnice

Πίνακας ρυθμίσεων στο χώρο εγκατάστασης

MERANIE NA ASYCHRÓNNOM MOTORE Elektrické stroje

!"!# ""$ %%"" %$" &" %" "!'! " #$!

UČEBNÉ TEXTY. Pracovný zošit č.2. Moderné vzdelávanie pre vedomostnú spoločnosť Elektrotechnické merania. Ing. Alžbeta Kršňáková

6 APLIKÁCIE FUNKCIE DVOCH PREMENNÝCH

Lineárna algebra I - pole skalárov, lineárny priestor, lineárna závislosť, dimenzia, podpriestor, suma podpriestorov, izomorfizmus

C 1 D 1. AB = a, AD = b, AA1 = c. a, b, c : (1) AC 1 ; : (1) AB + BC + CC1, AC 1 = BC = AD, CC1 = AA 1, AC 1 = a + b + c. (2) BD 1 = BD + DD 1,

TREDNÁ ODBORNÁ ŠKOLA STRÁŽSKE PRACOVNÝ ZOŠIT. k predmetu Matematika pre

Řečtina I průvodce prosincem a začátkem ledna prezenční studium

Reálna funkcia reálnej premennej

Margita Vajsáblová. ρ priemetňa, s smer premietania. Súradnicová sústava (O, x, y, z ) (O a, x a, y a, z a )

Elektrotechnická fakulta, Žilinská univerzita v Žiline Katedra Telekomunikácií

18. kapitola. Ako navariť z vody

KATEDRA DOPRAVNEJ A MANIPULAČNEJ TECHNIKY Strojnícka fakulta, Žilinská Univerzita

Matematika 2. časť: Funkcia viac premenných Letný semester 2013/2014

Pevné ložiská. Voľné ložiská

Harmonizované technické špecifikácie Trieda GP - CS lv EN Pevnosť v tlaku 6 N/mm² EN Prídržnosť

LR(0) syntaktické analyzátory. doc. RNDr. Ľubomír Dedera

Goniometrické funkcie

Prirodzené čísla. Kardinálne čísla

Najviac na koľko častí sa dá tromi priamkami rozdeliť medzikružie?

MOSTÍKOVÁ METÓDA 1.ÚLOHA: 2.OPIS MERANÉHO PREDMETU: 3.TEORETICKÝ ROZBOR: 4.SCHÉMA ZAPOJENIA:

Transcript:

Dynamcé programovane 4.. Úvod do dynamcého programovana (Dynamc programmng) Prncíp rozdeľuj-a-panuj (dvde-and-conquer), torý sa používa pr mnohých problémoch, pracuje nasledovne: veľý problém rozdelíme na vaceré samostatné menše podproblémy, toré vyrešme a výsledy použjeme (sombnujeme) na vytvorene rešena celého veľého problému. V dynamcom programovaní tento prncíp dovedeme do etrému: eď presne neveme, toré podproblémy treba vyrešť, jednoducho ch vyrešme všety, výsledy s zapamätáme a opäť využjeme na dorešene väčších problémov. 4... Kedy použť dynamcé programovane? Pr aplovaní dynamcého programovane musíme počítať s netorým úsalam. Po prvé, ne vždy je možné sombnovať rešena menších problémov na vytvorene rešena väčšeho problému a po druhé, počet malých problémov, toré potrebujeme vyrešť môže byť prílš veľý. edá sa precízne vyčlenť, toré problémy sa dajú vhodne tato rešť, ale sú určté uazovatele, toré nám pomáhajú: Optmálna podštrutúra Prelínajúce sa podproblémy Prvý ro pr rešení optmalzačných problémov (hľadáme najlepše rešene) je charaterzovať to hľadané najlepše rešene. Hovoríme, že problém v sebe obsahuje optmálnu podštrutúru práve vtedy eď, aždé najlepše rešene (môže ch byť predsa aj vac) v sebe obsahuje optmálne rešena podproblémov (naprílad najratša cesta v grafe obsahuje len najratše podcesty). Ďalším dôležtým uazovateľom, že by sme mohl použť dynamcé programovane je prelínane podproblémov. Teda, že množstvo rôznych podproblémov, toré treba vyrešť je malé. Keď reurzívne rešene stále prehľadáva rovnaé a rovnaé podproblémy, ta treba začať uvažovať nad využtím dynamcého programovana. aprot tomu, problém na torý je vhodná techna rozdeľuj-a-panuj generuje v aždom rou reurze celom nové podproblémy a teda by sme s ch len zbytočne pamätal. Rešene založené na dynamcom programovaní zvyne využívať výsledy už vyrešených podproblémov, aby ch, nesôr, nemuselo počítať vac razy. 4..2. Techna pamätana (memozaton) Typcé dynamcé programovane postupuje v herarch problémov od najmenších po najväčše. Varáca dynamcého programovana, torá zachováva prrodzenú orentácu od väčších problémov menším sa nazýva techna pamätana. Myšlena spočíva v zaznamenávaní výsledov, toré už raz reurzívny (neefetívny) program vypočítal a vždy, eď by ch mal počítať znovu, s ch už len prečíta z tabuľy, am s ch zapamätal. 4..3. Konštruca rešena Algortmus pracujúc na prncípe dynamcého programovana sa dá myšlenovo rozdelť na štyr čast, z torých sa štvrtá občas zanedbáva(ne vždy nás zaujíma onrétne rešene, stačí nám jeho hodnota) :. Charaterzovane optmálneho rešena 2. Reurzívna defníca optmálneho rešena 3. Výpočet rešena postupne smerom od menších podproblémov po väčše 4. Konštruca optmálneho rešena z vypočítanej nformáce Gymnázum Jura Hronca

Dynamcé programovane 4..4 ajdlhša (vybraná) spoločná podpostupnosť (Longest common subsequence) Teóra dynamcého programovana je jednoduchá. a zvládnute tohto postupu treba prerešť mnoho modelových úloh. My sa teraz budeme zaoberať nájdením najdlhšej spoločnej podpostupnost dvoch postupností. Podpostupnosť postupnost X je X s netorým (aj žadnym) prvam vynechaným. Predstavme s teraz dve postupnost X a Y. Z je spoločná podpostupnosť X a Y práve vtedy, eď je podpostupnosťou aždej z nch. Keď neestuje spoločná podpostupnosť s vacerým prvam, hovoríme že Z je najdlhša spoločná podpostupnosť (LCS). Dané X a Y, zaujíma nás nájsť najdlhšu spoločnú podpostupnosť. Aplujeme dynamcé programovane: reurzívne budeme počítať LCS postupností X a Y ta, že budeme postupne uvažovať predlžujúce sa LCS dvojíc prefov X a Y. ech X n je postupnosť <, 2,..., n > a Y m je postupnosť < y, y2,..., ym >. avac, nech Z =< z, z2,..., z > je ľubovoľná LCS postupností X n a Y m. Potom zrejme plata nasledujúce tvrdena: v A v A v A n = ym, potom z n = ym n ym, potom a n n ym, potom a ym = a Z - je LCS postupností X n- a Y m- z, Z musí byť LCS postupností X n- a Y m z, Z musí byť LCS postupností X n a Y m- Všmnme s, že na vyrešene problému pre (X n,y m ) potrebujeme vedeť výsledy pre (X n-,y m ), (X n,y m- ) a (X n-,y m- ). Pr reurzívnom rešení, aby sme nemusel v rôznych vetvách rešť rovnaé podproblémy vacrát, použjeme technu pamätana. Pramočare dynamcé programovane funguje ale ným spôsobom a to taým, že vždy eď potrebujeme mať nečo už vypočítané, ta to už máme je vypočítané postupujeme od menších problémov väčším. Kostra nášho rýdzeho rešena vyzerá potom nasledovne: for := 0 to n do for j := 0 to m do lcs[,j] := dĺža LCS postupností X a Y j Táto procedúra vypĺňa tabuľu lcs, de lcs[,j] obsahuje dĺžu LCS postupností X a Y j. Uvedomme s že, v čase eď počítame lcs[,j] bol všety menše podproblémy už vyrešené. ech teda máme vypočítané dĺžy najdlhších spoločných podpostupností pre všety možné začaty postupností X a Y, potom veme výslednú spoločnú podpostupnosť už jednoducho sonštruovať. Pozrme sa teraz na porade vypĺňana jednotlvých políčo tabuľy. V -tej terácí -cylu vyplníme -ty rado tabuľy s tým, že potrebujeme vedeť len výsledy predchádzajúceho radu. Tuto môžeme ušetrť nejaú pamäť. V prípade, že nás nezaujíma výsledná podpostupnosť, ale stačí nám len jej dĺža, je nám celá tabuľa lcs zbytočná, môžeme sa obmedzť len na predchádzajúc a ďalší rado. Pramočaro, uvedený algortmus má časovú zložtosť O (M ), pamäťová zložtosť závsí na požadavách, toré lademe na výsledo. Gymnázum Jura Hronca 2

Dynamcé programovane 4.2. Dynamcé programovane II. Dynamcé programovane sa hojne používa na rešene rozmantých problémov. Schopnosť vdeť problém v reč dynamcého programovana nespadne z neba ale vyžaduje bezprostredné súsenost s množstvom taýchto úloh. Ponúame prehľad 8 modelových úloh spolu s rešenam. Odporúčaný postup pr rešení je prečítať s zadane úlohy a snažť sa ju vyrešť bez nahladnuta do rešena. 4.2.. Modelové úlohy ajdlhša vybraná rastúca podpostupnosť Daná je onečná postupnosť celých čísel dĺžy,. Prvy tejto postupnost označíme po rade, 2,...,. Pod podpostupnosťou dĺžy vybranou z danej postupnost budeme rozumeť ľubovoľnú onečnú postupnosť tvaru,,...,, de < <... < 2 2 (tzv. zo zadanej postupnosť je vybraných ľubovoľných ne nutne susedných čísel, prčom je zachované ch porade. avrhnte algortmus, torý určí dĺžu najdlhšej rastúcej podpostupnost vybranej zo zadanej postupnost. To znamená, určí mamálne taé, že < <... <, pre nejaé ndey < <... < 2 2. ajdlhša súvslá rastúca podpostupnosť Daná je onečná postupnosť celých čísel dĺžy,. Prvy tejto postupnost označíme po rade, 2,...,. Pod súvslou podpostupnosťou dĺžy danej postupnost budeme rozumeť ľubovoľnú onečnú postupnosť tvaru,,..., + +, de < + (tzv. zo zadanej postupnosť je vybraných ľubovoľných susedných čísel). avrhnte algortmus, torý určí dĺžu najdlhšej súvslej rastúcej podpostupnost zadanej postupnost. To znamená, určí mamálne taé, že < + <... < +, pre nde < +. Problém batohu (Knapsac Problem) Zlodej, torý vyloml zámo na trezore, zstl, že je naplnení vecam rôznych veľostí a rôznej ceny. a lup má ale len batoh apacty M, problém batohu je práve nájsť taú ombnácu vecí z trezoru, aby sa mu zmestla do batoha a bola čo možno najcennejša. Dané sú veľost objetov S, S 2,..., S a ch ceny C, C2,..., C, treba nájsť taý výber objetov, 2,...,, aby S + S +... + S M a ch cena 2 C + C +... + C 2 bola najväčša možná. Domná (Domnoes CEOI 997, owy Sącz, Poland) Uvažujme oce domna nauladaných do radu. Každá oca má dve čísla A a B. Spočítajme rozdel súčtov čísel v hornom radu a dolnom radu: = = A B Jedno otočene je otočene jednej ocy domna opačne výmena jej čísel. Hľadáme najmenší počet otočení taý, aby rozdel Δ bol najmenší možný. = Gymnázum Jura Hronca 3

Dynamcé programovane Pre domná na obrázu nám postačuje jedno otočene (otočene poslednej ocy -2 naopa, potom bude súčet v hornom radu 0, v dolnom radu 0, taže menej sa určte už nedá). Plánovane prednášo (Schedulng Lectures, ACM 998, EastCentral orthamerca) a unverzte treba prebrať tém, aždá téma vyžaduje t, t,..., t 2 mnút na vysvetlene. Témy musa byť, vôl nadväznost, odučené v poradí,2,,, prčom žadnu tému ne je možné rozdelť medz prednášam (celú ju treba odučť v rámc jednej prednášy). Jedna prednáša má dĺžu L mnút. eedy je vhodné mať volný čas na onc prednášy, a prednášajúc sončí najvac o 0 mnút sôr, študent sú rad, že môžu odísť sôr, avša, a sa sončí sôr, budú sa cítť, že zo šoly nedostávajú dostato vedomostí. Mera nespoojnost DI (dssatsfacton nde) študentov je nasledovná: v DI = 0, a t = 0 v DI = C, a t 0 2 v na DI = ( t 0) de C je ladné celé číslo, t je množstvo voľného času na onc prednášy. Celová mera nespoojnost je súčet mer nespoojností jednotlvých prednášo. Úlohou je rozdelť témy do prednášo ta, aby sa využlo čo možno najmenej prednášo, a a je taých rozdelení vac, lepše je taé, toré má najmenšu meru nespoojnost študentov. Treba nájsť najlepše rozdelene. Zber jabĺ (Apples, USACO, Fall 2002) Farmár sa dohodol so svojou ravou, že mu zatrase jabloňou, a on bude chytať padajúce jablá. Veme, že, eď rava zatrase stromom, am (súradnce [,y] ) budú jednotlvé jablá padať a v aom časovom oamhu dopadnú. Farmár chytí jablo vtedy, eď sa bude nachádzať na súradncach dopadu v momente dopadu. a začato je Farmár na súradncach [0,0], veme jeho rýchlosť úlohou je zstť oľo najvac jabĺ je schopný chytť. Palndromcé cesty (Palndromc Ta Paths, USACO, Fall 2002) Daná je mreža prčom v aždom mrežovom bode sa nachádza nejaý symbol. Uvažujme mravčea pohybujúceho sa po mreže. Z mrežového bodu sa ve presunúť do susedných bodov (aj po dagonále). Začínajúc v ľubovoľnom bode bude chodť sem a tam, prčom prejde presne L bodov. Úlohou je zstť oľo rôznych palndromcých cest danej dĺžy môže usutočnť. Záps cesty nazveme postupnosť symbolov v mrežových bodov v poradí v aom nm prešel. Ceste je palndromcá vtedy, a je záps danej cesty palndrómom, teda a zne rovnao, eď ho prečítame spredu ao eď ho prečítame zozadu. Cesta oolo Kanady (Canada Tour, IOI 993, Mendoza, Argentna) Vyhral ste súťaž organzovanú Kanadsým aerolínam, dostal ste voľný lísto na cestovane oolo Kanady, začínajúc v najzápadnejšom meste obsluhovanom aerolínam, cestovaním len zo západu na východ do najvýchodnejšeho mesta a potom zase naspäť. Žadne mesto sa nesme navštívť vac razy, orem počatočného, toré musí byť navštívené práve dva razy. e je povolené používať an né prepravné prostredy ao Kanadsé aerolíne. Úlohou je, daných mest, ch porade od západu na východ a dvojce mest spojené lnou, určť najväčší počet mest v Kanade, toré sa dajú jedným taýmto oružným letom navštívť. Gymnázum Jura Hronca 4

Dynamcé programovane 4.2.2. Rešena úloh ajdlhša vybraná rastúca podpostupnosť Hľadáme dĺžu najdlhšej vybranej rastúcej podpostupnost. Z aóm logy vyplýva, že hľadaná postupnosť musí ončť v nejaom prvu pôvodnej postupnost. Označme s D( ) dĺžu najdlhšej vybranej rastúcej podpostupnost taej, že ončí v prvu pôvodnej postupnost. Trválne, eď veme čísla D( ), D( 2 ),..., D( ), veme z nch vybrať najväčše, čo bude naša hľadaná dĺža. Ao ale určíme čísla D( ), D( 2 ),..., D( )? Postupne. Predpoladajme, že už máme vypočítané čísla D( ), D( 2 ),..., D( - ) pre <, zaujíma nás vypočítať číslo D( ). Všmnme s teraz štrutúru najdlhšej vybranej podpostupnost ončacej v prvu eďže hľadáme rastúcu vybranú podpostupnosť, platí: D( ) = ma(,{ D( ) < }), čo nám už postačuje na nájdene našej dĺžy v čase O( 2 ). < Poznamenajme, že estuje rýchlejší algortmus pracujúc v čase O( log ), torý je jednoduchý, ale natoľo zaujímavý, že ho ponecháme na bádane čtateľom. ajdlhša súvslá rastúca podpostupnosť Hľadáme dĺžu najdlhšej súvslej rastúcej podpostupnost. Z aóm logy vyplýva, že hľadaná postupnosť musí ončť v nejaom prvu pôvodnej postupnost. Označme s D( ) dĺžu najdlhšej súvslej rastúcej podpostupnost taej, že ončí v prvu pôvodnej postupnost. Trválne, eď veme čísla D( ), D( 2 ),..., D( ), veme z nch vybrať najväčše, čo bude naša hľadaná dĺža. Ao ale určíme čísla D( ), D( 2 ),..., D( )? Postupne. Predpoladajme, že už máme vypočítané čísla D( ), D( 2 ),..., D( - ) pre <, zaujíma nás vypočítať číslo D( ). Všmnme s teraz štrutúru najdlhšej súvslej podpostupnost ončacej v prvu eďže hľadáme rastúcu súvslú podpostupnosť, platí: D ( ) = < D( ) = D( ) = D( Toto nám postačuje na nájdene našej dĺžy v čase O(). Všmnte s podobnosť štrutúry rešena tejto úlohy s predchádzajúcou úlohou. ) + Problém batohu (Knapsac Problem) Označme O,j ao najväčšu cenu vecí v batohu apacty j taú, že s môžeme vybrať spomedz vecí,...,. Potom číslo O,M prestavuje hodnotu vecí v najlepšom výbere vecí do batohu spomedz všetých vecí. Teto čísla budeme po čítať postupne, predstavme s, že máme vypočítané všety čísla pre =,2,...,M: O,,O 2,,,O -,, ďalše vypočítame nasledovne: O, = ma( O,,{ O, S + C S }) pre =,2,..., M Toto pozorovane nám dáva návod na sonštruovane rešena pracujúceho v čase O(M). Domná (Domnoes CEOI 997, owy Sącz, Poland) ajsôr s domná transformujeme ta, že aždému domnu bude prslúchať jedno číslo = A -B. Potom S = = a O,j označme ao mnmálny počet prelopení (a sa to nedá, ta O, j = ) netorých domín Gymnázum Jura Hronca 5

Dynamcé programovane z množny,..., ta, že súčet hodnôt v hornom radu na domnách,..., po prelopení bude j. Keď už toto máme vypočítané, ta stačí nájsť medz hodnotam O, taý súčet, torý veme nejaým otáčaním dosahnuť a rozdel S- - bude najmenší možný. A bude taýchto rozdelov vac (môže byť ešte jeden symetrcý podľa 2S ), ta vybereme ten, torý prelopí oprot pôvodnému stavu menej domín. Teto čísla budeme po čítať postupne, predstavme s, že máme vypočítané všety čísla pre =,2,...,S: O,,O 2,,,O -,, ďalše vypočítame nasledovne: pre =,2,..., S : P = { O 0} { O > 0 < } Q O,,, = { O,, + = mn( P, +, Q, ), < 0} { O, + Kde P, orešponduje s možnosťou, že -te domno neotočíme a Q, s možnosťou, že -te domno otočíme. Toto pozorovane nám dáva návod na sonštruovane rešena pracujúceho v čase O(S). Všmnte s podobnosť štrutúry rešena s predchádzajúcm príladom. > 0} Plánovane prednášo (Schedulng Lectures, ACM 998, EastCentral orthamerca) Označme C,j ao najmenší počet prednášo, v torých sme schopný odučť témy,...,, prčom v poslednej použtej prednáše zostáva ešte j voľných mnút. D,j bude pre daný mnmálny počet prednášo mnmálna mera nespoojnost študentov (bez mery nespoojnost v poslednej ešte neuzatvorenej prednáše). Výsledo potom bude netorý z (C,j,D,j ) podľa toho, torý bude najlepší po uzatvorení poslednej prednášy. Ao budeme uvedené čísla počítať? Postupne. Predstavme s že už máme vypočítané všety čísla pre = 0,,2,...,L: C,,C 2,,,C -,, a D,,D 2,,,D -,, ďalše vypočítame ta, že pre = 0,,2,...,L z (C -,, D -, ) zohľadníme prdane -tej témy buď do atuálnej prednášy, alebo uzatvorene poslednej prednášy a vytvorene novej. Toto robíme v duchu toho, aby s čísla C,j a D,j zachoval hore defnovaný význam. Táto myšlena postačuje na vytvorene algortmu bežaceho v čase O(L), torý nám určí najlepší výber prednášo. Zber jabĺ (Apples, USACO, Fall 2002) Prdáme s jedno jablo, toré spadne do bodu [0,0] v čase 0, toto jablo farmár určte chytí, a teda výsledo tato zmodfovanej úlohy bude o jedna väčší ao pôvodnej úlohy. Jednotlvé jablá s označíme a 0, a,..., a, prčom jablo a 0 je to naše umelo prdané. Označme s rýchlosť pohybu farmára, t, čas v torom padne jablo a a d,j ao vzdalenosť dopadu jabĺ a a a j. Defnujme s potom nasledovné usporadane prvov (jabĺ): ( a < a ) ( j Teda jablo a bude menše ao jablo a j práve vtedy, eď platí, že a by sa farmár po dopade jabla a hneď rozbehol mestu dopadu jablu a j, sthol by ho chytť. Už nám stačí jablá len utredť vzostupne podľa času dopadu a zostáva vyrešť úlohu o najdlhšej vybranej rastúcej podpostupnost z postupnost jabĺ a,..., a. d, j s t j t ) Gymnázum Jura Hronca 6

Dynamcé programovane Palndromcé cesty (Palndromc Ta Paths, USACO, Fall 2002) Hľadáme počet všetých palndromcých cest určtej dĺžy. Z aóm logy vyplýva, že aždá cesta, torú započítame musí nede začínať a nede ončť. Označme preto C [A,B],[C,D],L počet palndromcých cest dĺžy L, toré začínajú na súradncach [A,B] a onča na súradncach [C,D]. aše hľadané číslo bude potom súčet všetých C [A,B],[C,D],L taých, že A,B,C,D. Všmnme s teraz štrutúru nejaej palndromcej cesty dĺžy K 2. Prvý a posledný prvo tejto cesty a teda palndromcá cesta dĺžy K, sa sladá s nejaej palndromcej cesty dĺžy K-2. Toto pozorovane nám už dáva postup, ao vypočítať počet palndromcých cest dĺžy L. Počty palndromcých cest budeme počítať postupne. Uvažujme, že už máme vypočítané počty cest pre všety A,B,C,D : C [A,B],[C,D],, C [A,B],[C,D],2,..., C [A,B],[C,D],K-. Počet palndromcých cest dĺžy K je potom: [ E, F] [ G, H ] C[ E, = 0 C[ E, = [ E, F] [ G, H ] C[ E, = M [ E, M = { C ( A E + B F ) = ( C G + D H ) = } [ E, [ A, B],[ C, D], K 2 Toto nám dáva návod na sonštruovane algortmu bežaceho v čase O(L 4 ). Cesta oolo Kanady (Canada Tour, IOI 993, Mendoza, Argentna) amesto toho, aby sme hľadal najsôr cestu tam, potom späť, budeme hľadať teto cesty naraz. Označme O,j ao najväčší počet mest, toré môžeme navštívť, a pôjdeme nejaou cestou z mesta do mesta, prčom druhou (dsjuntnou neobsahuje žadne rovnaé mesto) cestou pôjdeme z vrcholu do vrcholu j. Hľadané číslo potom bude O,. Čísla budeme počítať postupne ta, že vždy, eď budeme počítať číslo O,j, ta veme, že už máme všety čísla tvaru O a,b pre a a b j už vypočítané. Pre O,j (<j) potom platí: O, j = ma({ O, + < ( j }) { O, + < < j ( j) }) Čo orešponduje s posunom jedného cestovateľa do oblastí, toré druhý cestovateľ ešte nevdel a teda to zaručuje dsjuntnosť trás. Toto nám umožňuje zostrojť algortmus pracujúc v čase O( 2 ). 4.2.3. Dodato využtu dynamcého programovana A chceme úlohu úspešne vyrešť použtím dynamcého programovana, vyžaduje s to, aby sme sa zamyslel nad štrutúrou optmálneho rešena, optmálne rešene defnoval pomocou menších alebo jednoduchého rozšírena menších rešení. Všeto sa robí v duch počítana celového rešena od záladov od najmenších rešení až po vrchol pyramídy zadaná úloha. 4.2.4. Časové a pamäťové nároy Pr rešení ne sú dôležté len požadavy na čas výpočtu, ale aj na množstvo spotrebovaných pamäťových zdrojov. Vo väčšne prípadov, ale ne vždy, úlohy rešteľné dynamcým programovaním majú zaujímavú vlastnosť, že pre veľosť vstupu, pamäťové nároy ladené na program sú -rát menše ao časové nároy. Tento rozdel, vzná vôl spôsobu onštruce väčšeho rešena z menšeho. Postup väčšemu rešenu s často vyžaduje prebrať nejaú množnu menších rešení, toré sombnujeme, alebo z torých s vybereme jeden najlepší. Teda pre výpočet ďalšeho prvu, potrebujeme prebrať veľa (zhruba ) menších. Gymnázum Jura Hronca 7