29.08.2013 Views

Dynamisk programmering II - Matematik og optimering

Dynamisk programmering II - Matematik og optimering

Dynamisk programmering II - Matematik og optimering

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Kompleksitetsbetragtninger<br />

Lad os fx betragte problemet:<br />

⎧<br />

⎨ Q(x1,...,xn) = ϕ1(x1) + ··· + ϕn(xn) = Max!<br />

x1 + ··· + xn b<br />

⎩<br />

x1,...,xn 0 heltal<br />

Der er (binomialkefficient) n+b<br />

b<br />

Dias 21/36 — Henrik Holm (IGM) — <strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong> — 31. marts 2011<br />

6<br />

5<br />

4<br />

3<br />

2<br />

1<br />

0<br />

*<br />

*<br />

*<br />

*<br />

*<br />

*<br />

*<br />

x 2<br />

*<br />

*<br />

x 1 + x2 = 5<br />

*<br />

*<br />

*<br />

*<br />

*<br />

2+5<br />

tilladte punkter. Eksempelvis er = 21.<br />

*<br />

*<br />

*<br />

*<br />

*<br />

*<br />

*<br />

*<br />

*<br />

*<br />

*<br />

*<br />

*<br />

*<br />

0 1 2 3 4 5 6<br />

Kompleksitet ved dynamisk <strong>pr<strong>og</strong>rammering</strong>.<br />

• Der kræves λ binære operationer for udregning af<br />

g1(λ) = max<br />

0x1λ {ϕ1(x1)}.<br />

Udregning af første tabel g1(0),...,g1(b) har alts˚a kompleksitet:<br />

0 + 1 + ··· + b = 1<br />

b(b + 1).<br />

2<br />

• Der kræves (λ+1)+λ = 2λ+1 binære operationer for udregning af<br />

gs(λ) = max<br />

0xsλ {gs−1(λ − xs) + ϕs(xs)}.<br />

Udregning af den s’te tabel gs(0),...,gs(b) har alts˚a kompleksitet:<br />

(2·0 +1) + (2·1+1) + ··· + (2b +1) = (b +1) 2 .<br />

• Udregning af de n −1 tabeller for g2,...,gn kræver s˚a (n − 1)(b + 1) 2 .<br />

Den samlede kompleksitet ved dynamisk <strong>pr<strong>og</strong>rammering</strong> er derfor:<br />

Dias 23/36 — Henrik Holm (IGM) — <strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong> — 31. marts 2011<br />

cdynamisk(b,n) = 1<br />

2 b(b + 1) + (n − 1)(b + 1)2 .<br />

*<br />

*<br />

*<br />

*<br />

*<br />

*<br />

*<br />

*<br />

*<br />

*<br />

*<br />

*<br />

*<br />

*<br />

*<br />

*<br />

*<br />

*<br />

*<br />

*<br />

x 1<br />

*<br />

5<br />

Kompleksitet ved naiv løsning.<br />

⎧<br />

⎨ Q(x1,...,xn) = ϕ1(x1) + ··· + ϕn(xn) = Max!<br />

x1 + ··· + xn b<br />

⎩<br />

x1,...,xn 0 heltal<br />

• Udregn Q(x) = ϕ1(x1) + ··· + ϕn(xn) i samtlige n+b<br />

tilladte punkter.<br />

b<br />

Kompleksitet: (n − 1) n+b<br />

. b<br />

• Udtag blandt de n+b<br />

beregnede funktionsværdier den største.<br />

b n+b<br />

Kompleksitet: − 1.<br />

b<br />

Den samlede kompleksitet ved naiv løsning er derfor:<br />

<br />

n + b n + b<br />

n + b<br />

cnaiv(b,n) = (n − 1) + − 1 = n − 1.<br />

b b<br />

b<br />

Dias 22/36 — Henrik Holm (IGM) — <strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong> — 31. marts 2011<br />

(b,n) cnaiv(b,n) cdynamisk(b,n)<br />

(50,5) 17393804 11679<br />

(100,5) 482803229 45854<br />

(50,20) 10 18<br />

50694<br />

(100,20) 10 23<br />

198869<br />

(50,40) 10 27<br />

102714<br />

(100,40) 10 36<br />

402889<br />

Hvis 1000000 IBM Roadrunners (hver 10 15 FLOPS) samarbejdede om den<br />

naive løsning for b = 100 <strong>og</strong> n = 40, ville tidsforbruget være:<br />

10 36<br />

1000000 · 10 15 sek −1 = 1015 sek ≈ 32 millioner ˚ar.<br />

Hvis en lommeregner (10 FLOPS) løste samme problem med dynamisk<br />

<strong>pr<strong>og</strong>rammering</strong> ville tidsforbruget være:<br />

Dias 24/36 — Henrik Holm (IGM) — <strong>Dynamisk</strong> <strong>pr<strong>og</strong>rammering</strong> <strong>II</strong> — 31. marts 2011<br />

402889<br />

= 40289sek ≈ 11 timer.<br />

−1<br />

10sek<br />

(∗)

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!