Konstantin Tretjakov (kt@ut.ee)kodu.ut.ee/~ahto/eio/2011.03.19/dp.pdf · Linear program (~linear...

Preview:

Citation preview

Dünaamiline Planeerimine

Konstantin Tretjakov (kt@ut.ee)

EIO õppesessioon

19. märts, 2011

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

Recommended