Sep 20, 2018
Linear program (~linear plan)
X ülesannet * 10 punkti + Y ülesannet * 5 punkti
tingimustel
X * 1tund + Y * 0.5 tundi < 5 tundi
Nimetuse saladus
Vanasti kandis sõna „programmeerimine“ natuke
teistsugust tähendust:
19.03.2011 Dünaamiline Planeerimine 2
Linear programming
Etteantud lineaarse programmi optimaalse
lahenduse leidmine
Quadratic program
X ülesannet * 10 punkti + Y ülesannet * 5 punkti
+ XY * 2 punkti
tingimustel
X * 1tund + Y * 0.5 tundi < 5 tundi
Nimetuse saladus
19.03.2011 Dünaamiline Planeerimine 3
Quadratic programming
Etteantud ruut-programmi optimaalse lahenduse
leidmine
Nimetuse saladus
19.03.2011 Dünaamiline Planeerimine 4
„Dynamic program“ (R. Bellman, 1950)
Otsus X1 päeval 1 * tulemused
+ Otsus X2 päeval 2 * tulemused
+ Otsus X3 päeval 3 * tulemused
…
tingimustel
…
Dynamic programming
Etteantud „dünaamilise programmile“ optimaalse
lahenduse leidmine
Nimetuse saladus
Bellman pakus enda sõnastatud probleemi
lahendamiseks teatud arvutusliku meetodi.
See meetod osutus hiljem väga laialt kasutatud,
mitte ainult Bellmanni „dünaamilise
programmeerimise“ ülesande lahendamiseks.
… kuid nimi jäi samaks.
19.03.2011 Dünaamiline Planeerimine 5
Arvutusprobleemide lahendamine
Täisläbivaatus
19.03.2011 Dünaamiline Planeerimine 6
Arvutusprobleemide lahendamine
Täisläbivaatus
19.03.2011 Dünaamiline Planeerimine 7
ABCD ACBD ABDC
ACDB
BACD BCDA BADC
BCAD
ADBC CABD
ADCB
CADB
BDAC
CBAD
BDCA
CBDA
CDAB
DCBA
CDBA
DCAB
DABC
DBAC
DACB DBCA
Arvutusprobleemide lahendamine
Täisläbivaatus
19.03.2011 Dünaamiline Planeerimine 8
ABCD ACBD ABDC
ACDB
BACD BCDA BADC
BCAD
ADBC CABD
ADCB
CADB
BDAC
CBAD
BDCA
CBDA
CDAB
DCBA
CDBA
DCAB
DABC
DBAC
DACB DBCA
Arvutusprobleemide lahendamine
Iteratiivne parandamine
Alustame suvalisest seisundist,
Kui ta pole optimaalne
(näiteks, leidub kaks kõrvutiasetsevat tähte vales
järjekorras)
Parandame natuke (vahetame tähed omavahel)
Kordame senikuni lahendus on optimaalne
19.03.2011 Dünaamiline Planeerimine 9
BDCA
BDCA
BCDA
Bubble sort
Arvutusprobleemide lahendamine
Ahne algoritm
Leiame minimaalse väärtusega tähe ja paigutame
algusesse.
Jätkame rekursiivselt ülejäänutega
19.03.2011 Dünaamiline Planeerimine 10
Selection sort
Arvutusprobleemide lahendamine
Lihtsamateks ülesanneteks taandamine
„Jaga ja valitse“
„Ühe sammu võrra lihtsama ülesande lahendamine“
„Mitme natuke lihtsama ülesande lahendamine“
19.03.2011 Dünaamiline Planeerimine 11
Arvutusprobleemide lahendamine
Lihtsamateks ülesanneteks taandamine
„Jaga ja valitse“
19.03.2011 Dünaamiline Planeerimine 12
BDCA BD
CA
BD
AC ABCD
Merge sort
Arvutusprobleemide lahendamine
Lihtsamateks ülesanneteks taandamine
„Jaga ja valitse“
19.03.2011 Dünaamiline Planeerimine 13
BDCA BD
CA
BD
AC ABCD
BDCA BA
DC
AB
CD ABCD
Quicksort
Arvutusprobleemide lahendamine
Lihtsamateks ülesanneteks taandamine
„Jaga ja valitse“
„Ühe sammu võrra lihtsama ülesande lahendamine“
19.03.2011 Dünaamiline Planeerimine 14
BDCA B DCA B ACD ABCD
Insertion sort
Arvutusprobleemide lahendamine
Lihtsamateks ülesanneteks taandamine
„Jaga ja valitse“
„Ühe sammu võrra lihtsama ülesande lahendamine“
„Mitme natuke lihtsama ülesande lahendamine“
19.03.2011 Dünaamiline Planeerimine 15
BDCA BDC
DCA
BCD
ACD ABCD
(hüpoteetiline) sort
Arvutusprobleemide lahendamine
Täisläbivaatus
Iteratiivne parandamine
Ahne algoritm
Lihtsamateks ülesanneteks taandamine
Jaga ja valitse
Ühe sammu võrra lihtsustamine
Mitme natuke lihtsama ülesande lahendamine
19.03.2011 Dünaamiline Planeerimine 16
O(n!)
O(n2)
O(n)
O(n log n)
O(n2)
?
Arvutusprobleemide lahendamine
Täisläbivaatus
Iteratiivne parandamine
Ahne algoritm
Lihtsamateks ülesanneteks taandamine
Jaga ja valitse
Ühe sammu võrra lihtsustamine
Mitme natuke lihtsama ülesande lahendamine
19.03.2011 Dünaamiline Planeerimine 17
O(n!)
O(n2)
O(n)
O(n log n)
O(n2)
O(n2)
Dünaamiline planeerimine
Longest Increasing Subsequence
Ülesanne: leida etteantud numbrite jadas
võimalikult pikk kasvav alamjada
19.03.2011 Dünaamiline Planeerimine 18
1 5 3 2 7 9 7 8 3
Longest Increasing Subsequence
19.03.2011 Dünaamiline Planeerimine 19
LIS*(1 5 3 2 7 9 7 8)
Longest Increasing Subsequence
19.03.2011 Dünaamiline Planeerimine 20
LIS*(1 5 3 2 7 9 7 8)
LIS*(1 5 3 2 7 9 7) + 1
LIS*(1 5 3 2 7) + 1
LIS*(1 5 3 2) + 1
LIS*(1 5 3) + 1
LIS*(1 5) + 1
LIS*(1) + 1
ma
x
Longest Increasing Subsequence
19.03.2011 Dünaamiline Planeerimine 21
LIS*(1 5 3 2 7 9 7 8)
LIS*(1 5 3 2 7 9 7) + 1 LIS*(1 5 3 2) + 2
LIS*(1 5 3 2) + 1
LIS*(1 5 3) + 1
LIS*(1 5 3) + 2 LIS*(1 5) + 2 LIS*(1) + 2
…
Longest Increasing Subsequence
19.03.2011 Dünaamiline Planeerimine 22
LIS*(1 5 3 2 7 9 7 8)
LIS*(1 5 3 2 7 9 7) + 1 LIS*(1 5 3 2) + 2
LIS*(1 5 3 2) + 1
LIS*(1 5 3) + 1
LIS*(1 5 3) + 2 LIS*(1 5) + 2 LIS*(1) + 2
…
LIS*(1) + 3
Longest Increasing Subsequence
19.03.2011 Dünaamiline Planeerimine 23
Longest Increasing Subsequence
19.03.2011 Dünaamiline Planeerimine 24
Longest Increasing Subsequence
19.03.2011 Dünaamiline Planeerimine 25
Longest Increasing Subsequence
19.03.2011 Dünaamiline Planeerimine 26
Longest Increasing Subsequence
19.03.2011 Dünaamiline Planeerimine 27
DP elemendid
Rekurrentne valem
„Cachimine“ või „Tabeli täitmine“ selle valemi
järgi.
Olümpiaadi puhul teine variant tavaliselt parem.
Väljundi väljastamine tüüpiliselt rekursiivselt.
19.03.2011 Dünaamiline Planeerimine 28
Harjutus: Is Bigger Better
Google:
19.03.2011 Dünaamiline Planeerimine 29
10131 site:onlinejudge.org
Edit Distance
sõ-na
| |/
-õunu
19.03.2011 Dünaamiline Planeerimine 30
D(sõna, õunu) =
D(sõn,õun) + 1 (a→u)
D(sõna,õun) + 1 (-→u)
D(sõn,õunu) +1 (a→-)
19.03.2011 Dünaamiline Planeerimine 31
sõn a
/
õun u
sõna -
|
õun u
sõn a
|
õunu -
min
19.03.2011 Dünaamiline Planeerimine 32
. S Õ N A
. 0 1 2 3 4
Õ 1
U 2
N 3
U 4
19.03.2011 Dünaamiline Planeerimine 33
. S Õ N A
. 0 1 2 3 4
Õ 1 1
U 2
N 3
U 4
19.03.2011 Dünaamiline Planeerimine 34
. S Õ N A
. 0 1 2 3 4
Õ 1 1 1
U 2
N 3
U 4
19.03.2011 Dünaamiline Planeerimine 35
. S Õ N A
. 0 1 2 3 4
Õ 1 1 1 2
U 2
N 3
U 4
19.03.2011 Dünaamiline Planeerimine 36
. S Õ N A
. 0 1 2 3 4
Õ 1 1 1 2 3
U 2
N 3
U 4
19.03.2011 Dünaamiline Planeerimine 37
. S Õ N A
. 0 1 2 3 4
Õ 1 1 1 2 3
U 2 2 2 2 3
N 3 3 3 2 3
U 4 4 4 3 3
DP tunnused
F(n) lahendus põhineb F(k) lahendusel (k<n).
Võib olla ka F(n,m) või F(n,m,p)
Sarnaneb matemaatilise induktsiooniga.
Uuritavate objektide hulk peab omama mingit
loomuliku järjestust.
Sekventside töötlus & kombinatoorika.
Tüüpiliselt O(n2) algoritm.
19.03.2011 Dünaamiline Planeerimine 38
DP kasutamine
Mõtle hoolikalt kogu arvutusskeem paberil
enne läbi.
Muidu riskid ühe väikese eksituse tõttu tundide kaupa
debugida.
Pigem tee tabelitäitmisega kui cache’ga.
Muidu on debugimine keerukam (juhul kui selleks läheb)
Harjuta.
Kui põhitrikid kätte saad muutuvad DP ülesanded su
jaoks kõige lihtsamateks. Ilma selleta on nad kõige
vastikumad.
19.03.2011 Dünaamiline Planeerimine 39
Veel harjutus
19.03.2011 Dünaamiline Planeerimine 40
10154 site:onlinejudge.org
Kodus
Skiena & Revilla, Ch. 11
http://uva.onlinejudge.org/index.php?option=com_onlin
ejudge&Itemid=8&category=39
19.03.2011 Dünaamiline Planeerimine 41