konstantin tretjakov ([email protected])kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · linear program (~linear...

41
Dünaamiline Planeerimine Konstantin Tretjakov ([email protected]) EIO õppesessioon 19. märts, 2011

Upload: lamhanh

Post on 20-Sep-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

Dünaamiline Planeerimine

Konstantin Tretjakov ([email protected])

EIO õppesessioon

19. märts, 2011

Page 2: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

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

Page 3: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

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

Page 4: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

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

Page 5: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

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

Page 6: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

Arvutusprobleemide lahendamine

Täisläbivaatus

19.03.2011 Dünaamiline Planeerimine 6

Page 7: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

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

Page 8: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

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

Page 9: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

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

Page 10: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

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

Page 11: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

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

Page 12: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

Arvutusprobleemide lahendamine

Lihtsamateks ülesanneteks taandamine

„Jaga ja valitse“

19.03.2011 Dünaamiline Planeerimine 12

BDCA BD

CA

BD

AC ABCD

Merge sort

Page 13: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

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

Page 14: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

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

Page 15: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

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

Page 16: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

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)

?

Page 17: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

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

Page 18: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

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

Page 19: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

Longest Increasing Subsequence

19.03.2011 Dünaamiline Planeerimine 19

LIS*(1 5 3 2 7 9 7 8)

Page 20: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

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

Page 21: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

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

Page 22: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

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

Page 23: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

Longest Increasing Subsequence

19.03.2011 Dünaamiline Planeerimine 23

Page 24: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

Longest Increasing Subsequence

19.03.2011 Dünaamiline Planeerimine 24

Page 25: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

Longest Increasing Subsequence

19.03.2011 Dünaamiline Planeerimine 25

Page 26: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

Longest Increasing Subsequence

19.03.2011 Dünaamiline Planeerimine 26

Page 27: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

Longest Increasing Subsequence

19.03.2011 Dünaamiline Planeerimine 27

Page 28: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

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

Page 29: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

Harjutus: Is Bigger Better

Google:

19.03.2011 Dünaamiline Planeerimine 29

10131 site:onlinejudge.org

Page 30: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

Edit Distance

sõ-na

| |/

-õunu

19.03.2011 Dünaamiline Planeerimine 30

Page 31: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

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

Page 32: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

19.03.2011 Dünaamiline Planeerimine 32

. S Õ N A

. 0 1 2 3 4

Õ 1

U 2

N 3

U 4

Page 33: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

19.03.2011 Dünaamiline Planeerimine 33

. S Õ N A

. 0 1 2 3 4

Õ 1 1

U 2

N 3

U 4

Page 34: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

19.03.2011 Dünaamiline Planeerimine 34

. S Õ N A

. 0 1 2 3 4

Õ 1 1 1

U 2

N 3

U 4

Page 35: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

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

Page 36: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

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

Page 37: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

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

Page 38: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

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

Page 39: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

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

Page 40: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

Veel harjutus

19.03.2011 Dünaamiline Planeerimine 40

10154 site:onlinejudge.org

Page 41: Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear plan) X ülesannet * 10 punkti + Y ülesannet * 5 punkti tingimustel X * 1tund + Y

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