Dnaamiline planeerimine Ahto Truu ahto truuut ee Fibonacci

  • Slides: 23
Download presentation
Dünaamiline planeerimine Ahto Truu ahto. truu@ut. ee

Dünaamiline planeerimine Ahto Truu ahto. [email protected] ee

Fibonacci jada

Fibonacci jada

Naiivne lahendus function fib(n : longint) : longint; begin if n = 0 then

Naiivne lahendus function fib(n : longint) : longint; begin if n = 0 then exit(0); if n = 1 then exit(1); exit(fib(n - 1) + fib(n - 2)); end;

Mäluga lahendus const max = 100000; var a : array [2. . max] of

Mäluga lahendus const max = 100000; var a : array [2. . max] of longint; function fib(n : longint) : longint; begin if n = 0 then exit(0); if n = 1 then exit(1); if a[n] = 0 then a[n] : = fib(n - 1) + fib(n - 2); exit(a[n]); end;

Naiivne DP const max = 100000; var a : array [0. . max] of

Naiivne DP const max = 100000; var a : array [0. . max] of longint; function fib(n : longint) : longint; var i : longint; begin a[0] : = 0; a[1] : = 1; for i : = 2 to n do a[i] : = a[i - 1] + a[i - 2]; exit(a[n]); end;

Kokkuhoidlik DP var a : array [0. . 2] of longint; function fib(n :

Kokkuhoidlik DP var a : array [0. . 2] of longint; function fib(n : longint) : longint; var i : longint; begin a[0] : = 0; a[1] : = 1; for i : = 2 to n do a[i mod 3] : = a[(i - 1) mod 3] + a[(i - 2) mod 3]; exit(a[n mod 3]); end;

Lahendamise suund n “Ülalt alla” tükeldamine – mäluga rekursioon – sageli lihtsam taibata n

Lahendamise suund n “Ülalt alla” tükeldamine – mäluga rekursioon – sageli lihtsam taibata n “Alt üles” kokkukleepimine – “stiilipuhas” DP – võib olla efektiivsem

Mustkunstnik n Kaardipakk, N kaarti n Vaja valida komplekt, K kaarti n Kaartide järjekord

Mustkunstnik n Kaardipakk, N kaarti n Vaja valida komplekt, K kaarti n Kaartide järjekord pole oluline n Minu erinevat võimalust on? (Mustkunstnik, EIO 13. 03. 2004)

Kombinatsioonid

Kombinatsioonid

Maksimaalne summa n Nx. M arvutabel n Liikuda vasakust alumisest nurgast paremasse ülemisse nurka

Maksimaalne summa n Nx. M arvutabel n Liikuda vasakust alumisest nurgast paremasse ülemisse nurka n Igal sammul paremale või üles n Läbitud ruutude summa: max (Summa, EIO 15. 12. 2001)

Tagasiviited n Maksimaalne summa aga kuidas me selle saavutasime? n Maksimumi saavutamisel jätta meelde

Tagasiviited n Maksimaalne summa aga kuidas me selle saavutasime? n Maksimumi saavutamisel jätta meelde eelmine olek n Sageli parem lahendada ülesannet tagantpoolt ettepoole

Jadaülesanded n Alamülesanneteks antud jada – prefiksid (kokku N) – alamjadad (kokku N 2)

Jadaülesanded n Alamülesanneteks antud jada – prefiksid (kokku N) – alamjadad (kokku N 2) n Ülesande tekst annab vihje: – 1000000 operatsiooni – N kuni 100 alamjadad – N kuni 1000 prefiksid – N suurem fiks. arv alamaid

Maksimaalne summa n. N elemendiga jada n Leida maksimaalse summaga alamjada (Summa, EIO 15.

Maksimaalne summa n. N elemendiga jada n Leida maksimaalse summaga alamjada (Summa, EIO 15. 11. 1997)

Pikim kasvav osajada n. N elemendiga jada n Leida maksimaalse pikkusega kasvav osajada (Alamjada,

Pikim kasvav osajada n. N elemendiga jada n Leida maksimaalse pikkusega kasvav osajada (Alamjada, EIO 06. 02. 1999)

Kahe jadaga ülesanded n Alamülesanneteks tavaliselt antud jadade prefiksid – olekuruum 2 -mõõtmeline tabel

Kahe jadaga ülesanded n Alamülesanneteks tavaliselt antud jadade prefiksid – olekuruum 2 -mõõtmeline tabel n (N-1)-prefiksid – N 2 sammuga lahendus n kõik prefiksid – N 3 või N 4 sammuga lahendus

Pikim ühine osajada n N 1 elemendiga jada n N 2 elemendiga jada n

Pikim ühine osajada n N 1 elemendiga jada n N 2 elemendiga jada n Leida maksimaalse pikkusega ühine osajada

Lühim teisendus n N 1 elemendiga jada n N 2 elemendiga jada n Lubatud

Lühim teisendus n N 1 elemendiga jada n N 2 elemendiga jada n Lubatud operatsioonid – lisada, kustutada, asendada – 1 element korraga n Leida minimaalse sammude arvuga teisendus ühest teiseks

Läbivaatusülesanded n Olekuruum väga piiratud – K võimalikku olekut n Leiame N-ülesande olekuruumi (N-1)-ülesande

Läbivaatusülesanded n Olekuruum väga piiratud – K võimalikku olekut n Leiame N-ülesande olekuruumi (N-1)-ülesande olekuruumist – Üks (N-1)-ülesanne • N·K sammuga lahendus – N (N-1)-ülesannet • N 2·K sammuga lahendus

Valimised n 2 presidendikandidaati n N osariiki; K 1, K 2, . . .

Valimised n 2 presidendikandidaati n N osariiki; K 1, K 2, . . . , KN valijameest n Iga osariik annab kõik hääled ühele kandidaadile n Kas viik on võimalik? (Valimised, EIO 13. 01. 2001)

Tabeliülesanded n Maksimaalne nullidega alamtabel n Maksimaalse summaga alamtabel

Tabeliülesanded n Maksimaalne nullidega alamtabel n Maksimaalse summaga alamtabel

Graafiülesanded n DP info “voolab” ühes suunas n Järelikult tsükliteta graafid – puu, DAG

Graafiülesanded n DP info “voolab” ühes suunas n Järelikult tsükliteta graafid – puu, DAG n Vahel siiski ka muud graafid – kui ülesanne ise on monotoonne ja muudab info voolamise ühesuunaliseks

Pikim tee graafis n Pikkuse mõiste – samme/summa/korrutis n Üldjuhul NP-täielik – Hamiltoni ahel/tsükkel

Pikim tee graafis n Pikkuse mõiste – samme/summa/korrutis n Üldjuhul NP-täielik – Hamiltoni ahel/tsükkel n DAGi korral DP (Linker, EIO 09. 03. 2002)

Lisalugemist n http: //www. ut. ee/~at/eio/ – näited, konspekt n http: //www. cs. berkeley.

Lisalugemist n http: //www. ut. ee/~at/eio/ – näited, konspekt n http: //www. cs. berkeley. edu/ ~vazirani/algorithms/chap 6. pdf n http: //en. wikipedia. org/wiki/ Dynamic_programming