Dynamisk programmering II - Matematik og optimering
Dynamisk programmering II - Matematik og optimering
Dynamisk programmering II - Matematik og optimering
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 />
(∗)