Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled...
Transcript of Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled...
![Page 1: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/1.jpg)
PSA UP FAMNIT 1
Dinamičnoprogramiranje
osnove
Andrej Brodnik
![Page 2: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/2.jpg)
PSA UP FAMNIT 2
Pregled
● rekurzija (recursion)
● pomnenje ali memoizacija (memoization)● dinamično programiranje – primer 1: množenje matrik
– definicija problema; osnovni program; pomnenje; kaj inkako se izračunava; program malo drugače; rekonstrukcijarešitve
● dinamično programiranje – primer 2: Needleman–Wunsch
– osnovni prostor je O(nm)
– zmanjšanje prostora na O(n+m) a brez rekonstrukcijerešitve
2
![Page 3: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/3.jpg)
PSA UP FAMNIT 3
Fibonaccijeva številaF(n) = 1, če n=1 ali 2
F(n-1)+F(n-2), sicer
F(n) = {1, 1, 2, 3, 5, …}
In koliko je F(64)?
3
![Page 4: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/4.jpg)
PSA UP FAMNIT 4
Fibonaccijeva številaF(n) = 1, če n=1 ali 2
F(n-1)+F(n-2), sicer
int Fib (int n) {
if ((n == 1) || (n == 2)) return 1;
return Fib(n-1) + Fib(n-2);
}
4
![Page 5: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/5.jpg)
PSA UP FAMNIT 5
Pregled
● rekurzija (recursion)
● pomnenje ali memoizacija (memoization)
● dinamično programiranje – primer 1: množenje matrik
– definicija problema; osnovni program; pomnenje; kaj inkako se izračunava; program malo drugače; rekonstrukcijarešitve
● dinamično programiranje – primer 2: Needleman–Wunsch
– osnovni prostor je O(nm)
– zmanjšanje prostora na O(n+m) a brez rekonstrukcijerešitve
5
![Page 6: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/6.jpg)
PSA UP FAMNIT 6
Fibonaccijeva števila – pomnenjefib_stevila[*]= nedefinirano;
int Fib (int n) {
if fib_stevila[n] == nedefinirano {
if ((n == 1) || (n == 2)) result= 1;
result= Fib(n-1) + Fib(n-2);
fib_stevila[n]= result;
}
return fib_stevila[n];
}6
![Page 7: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/7.jpg)
PSA UP FAMNIT 7
Pregled
● rekurzija (recursion)
● pomnenje ali memoizacija (memoization)
● dinamično programiranje – primer 1: množenje matrik
– definicija problema; osnovni program; pomnenje; kaj inkako se izračunava; program malo drugače; rekonstrukcijarešitve
● dinamično programiranje – primer 2: Needleman–Wunsch
– osnovni prostor je O(nm)
– zmanjšanje prostora na O(n+m) a brez rekonstrukcijerešitve
7
![Page 8: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/8.jpg)
PSA UP FAMNIT 8
Množenje matrik Recimo, da moramo množiti matriki A in B, kjer je A dimenzije a x b inB dimenzije b x c; rezultat je v matriki R (a x c):
int Produkt (A, B) {
for i= 1 … a
for j= 1 … c
R[i,j]= 0;
for k= 1 … b R[i,j]+= A[i,k]*B[k,j]
return R;
}
8
![Page 9: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/9.jpg)
PSA UP FAMNIT 9
Množenje matrik
● Če natančno preštejemo, potrebujemo a*b*cmnoženj.
● Recimo: A: 2 x 6, B: 6 x 4 in C: 4 x 5 – za A x B => 48 množenj
– za B x C => 120 množenj
– kaj pa A x B x C?
9
int Produkt (A, B) { for i= 1 … a for j= 1 … c C[i,j]= 0; for k= 1 … b C[i,j]+= A[i,k]*B[k,j] return C;}
![Page 10: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/10.jpg)
PSA UP FAMNIT 10
Množenje matrik
● Recimo: A: 2 x 6, B: 6 x 4 in C: 4 x 5 in kolikomnoženj za A x B x C?
1) (A x B) x C => 48 + 40 = 88 množenj
2) A x (B x C) => 120 + 60 = 180 množenj
● Kaj pa v splošnem?
10
![Page 11: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/11.jpg)
PSA UP FAMNIT 11
Množenje matrik – problemImamo:
● n matrik: M1, M
2, M
3, …, M
n
● dimenzija matrike Mi je d
i-1 x d
i
Problem:
● kakšno naj bo zaporedje množenja matrik, da bomo opravili najmanjoperacij?
11
![Page 12: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/12.jpg)
PSA UP FAMNIT 12
Množenje matrik – formalnejeImamo:
● n matrik: M1, M
2, M
3, …, M
n
● dimenzija matrike Mi je d
i-1 x d
i
Opomba:
● definirajmo c(i, j), kot ceno množenja j matrik od i. naprej(vključno)
● zanima nas najti čim manjši c(1, n)
12
![Page 13: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/13.jpg)
PSA UP FAMNIT 13
Množenje matrik – premislekRešitev:
● recimo, postavimo oklepaje: (M1x M
2 x … x M
i) x (M
i+1,…, M
n)
● potem cena: c(1, n) = c(1, i) + c(i+1, n-i) + d0 * d
i * d
n
● seveda: c(i, 1) = 0 za vsak i= 1 … n
● na koncu nas zanima, pri katerem i bo c(1, n) najmanjši?
13
![Page 14: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/14.jpg)
PSA UP FAMNIT 14
Pregled
● rekurzija (recursion)
● pomnenje ali memoizacija (memoization)
● dinamično programiranje – primer 1: množenje matrik
– definicija problema; osnovni program; pomnenje; kaj inkako se izračunava; program malo drugače; rekonstrukcijarešitve
● dinamično programiranje – primer 2: Needleman–Wunsch
– osnovni prostor je O(nm)
– zmanjšanje prostora na O(n+m) a brez rekonstrukcijerešitve
14
![Page 15: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/15.jpg)
PSA UP FAMNIT 15
Množenje matrik – opomba
● rešitev problema P(1, i) je povsem neodvisna od rešitve problemaP(i, n-i)
● če je c(1, i) optimalen in tudi c(i+1, n-i), potem je pri delitvi pri itudi optimalen c(1, n)
● Kako najdemo najboljši i?
– Poskusimo vse možnosti.
15
c(1,n)={ 0 if n=0min
i=0. .n−1c(1, i)+c(i+1, n−i)+d1d i+1d n sicer
![Page 16: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/16.jpg)
PSA UP FAMNIT 16
Množenje matrikint Mnozenje (int prva, stevilo) { if (stevilo == 1) return 0; najcenejse= oo; for (i= 1; i <= stevilo; i++) { tmp= Mnozenje(prva, i) + Mnozenje(prva+i, stevilo-i) + d[prva-1] * d[prva+i-1] * d[prva+stevilo-1]; if tmp < najcenejse najcenejse= tmp; }}
16
![Page 17: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/17.jpg)
PSA UP FAMNIT 17
Množenje matrik – čas● za vsak i= 1 … n izračunamo c(1, i), c(i+1, n-i) in 2 množenji
● Skupaj:
● kaj je narobe?
17
T (n)=∑i=1
n
(T (i)+T (n−i)+2)
=∑i=1
n
T (i)+∑i=1
n
T (n−i )+∑i=1
n
2
=∑i=1
n
T (i)+∑j=n
1
T ( j )+2n
=2∑i=1
n
T (i)+2n=O (2n)
![Page 18: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/18.jpg)
PSA UP FAMNIT 18
Pregled
● rekurzija (recursion)
● pomnenje ali memoizacija (memoization)
● dinamično programiranje – primer 1: množenje matrik
– definicija problema; osnovni program; pomnenje; kaj inkako se izračunava; program malo drugače; rekonstrukcijarešitve
● dinamično programiranje – primer 2: Needleman–Wunsch
– osnovni prostor je O(nm)
– zmanjšanje prostora na O(n+m) a brez rekonstrukcijerešitve
18
![Page 19: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/19.jpg)
PSA UP FAMNIT 19
Množenje matrik – čas● recimo, da množimo matrike M
1 x M
2 x M
3 x M
4
● potem štejemo število operacij za naslednja množenja:
– M1 x (M
2 x M
3 x M
4) =>
M1 x ((M
2 x M
3) x M
4), M
1 x (M
2 x (M
3 x M
4))
– (M1 x M
2 x M
3) x M
4 =>
((M1 x M
2) x M
3) x M
4, (M
1 x (M
2 x M
3)) x M
4
● večkrat naračunavamo (optimalno) ceno množenja istih podmatrik
19
![Page 20: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/20.jpg)
PSA UP FAMNIT 20
Množenje matrikint Mnozenje (int prva, stevilo) { if (stevilo == 1) return 0; najcenejse= oo; for (i= 1; i <= stevilo; i++) { tmp= Mnozenje(prva, i) + Mnozenje(prva+i, stevilo-i) + d[prva-1] * d[prva+i-1] * d[prva+stevilo-1]; if tmp < najcenejse najcenejse= tmp; }}
20
![Page 21: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/21.jpg)
PSA UP FAMNIT 21
Množenje matrik – s pomnenjemc[prva,stevilo]= oo; // začetna nastavitevint Mnozenje (int prva, stevilo) { if c[prva, stevilo]= oo { if (stevilo == 1) c[prva, stevilo]= 0; else { for (i= 1; i <= stevilo; i++) { tmp= Mnozenje(prva, i) + Mnozenje(prva+i, stevilo-i) + d[prva-1] * d[prva+i-1] * d[prva+stevilo-1]; if tmp < c[prva, stevilo] c[prva, stevilo]= tmp; } } return c[prva, stevilo];} 21
![Page 22: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/22.jpg)
PSA UP FAMNIT 22
Pregled
● rekurzija (recursion)
● pomnenje ali memoizacija (memoization)
● dinamično programiranje – primer 1: množenje matrik
– definicija problema; osnovni program; pomnenje; kaj inkako se izračunava; program malo drugače; rekonstrukcijarešitve
● dinamično programiranje – primer 2: Needleman–Wunsch
– osnovni prostor je O(nm)
– zmanjšanje prostora na O(n+m) a brez rekonstrukcijerešitve
22
![Page 23: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/23.jpg)
PSA UP FAMNIT 23
Množenje matrik – primer
● recimo, da množimo matrike M1 x M
2 x M
3 x M
4, velikosti: d[0...4]=
(3, 6, 2, 4, 5)
● naračunali bomo matriko c[i,j], kjer i= 1 … 4, in j= 1 … 4-i
23
prva-> 1 2 3 4
1
2
3
4
![Page 24: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/24.jpg)
PSA UP FAMNIT 24
Množenje matrik – primer
prva-> 1 2 3 4
1 0 0 0 0
2 0+0+48
3 48+0+120
4
● matrike M1 x M
2 x M
3 x M
4, velikosti: d[0...4]= (3, 6, 2, 4, 5)
– M1 x (M
2 x M
3 x M
4) => M
1 x ((M
2 x M
3) x M
4), M1 x (M2 x
(M3 x M4))
– (M1 x M
2 x M
3) x M
4 => ((M
1 x M
2) x M
3) x M
4, (M
1 x (M
2 x
M3)) x M
4
24
![Page 25: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/25.jpg)
PSA UP FAMNIT 25
Množenje matrik – primer
prva-> 1 2 3 4
1 0 0 0 0
2 0+0+48 0+0+40
3 48+0+120
4
● matrike M1 x M
2 x M
3 x M
4, velikosti: d[0...4]= (3, 6, 2, 4, 5)
– M1 x (M
2 x M
3 x M
4) => M
1 x ((M
2 x M
3) x M
4), M
1 x (M
2 x (M
3
x M4))
– (M1 x M
2 x M
3) x M
4 => ((M
1 x M
2) x M
3) x M
4, (M
1 x (M
2 x
M3)) x M
4
25
0+40+60
![Page 26: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/26.jpg)
PSA UP FAMNIT 26
Pregled
● rekurzija (recursion)
● pomnenje ali memoizacija (memoization)
● dinamično programiranje – primer 1: množenje matrik
– definicija problema; osnovni program; pomnenje; kaj inkako se izračunava; program malo drugače; rekonstrukcijarešitve
● dinamično programiranje – primer 2: Needleman–Wunsch
– osnovni prostor je O(nm)
– zmanjšanje prostora na O(n+m) a brez rekonstrukcijerešitve
26
![Page 27: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/27.jpg)
PSA UP FAMNIT 27
Računamo c[i,j] drugače – 1. korak
● Zagotovo:
c[prva,1] = 0
za prva= 1 … n
27
prva-> 1 2 3 4
1 0 0 0 0
2
3
4
![Page 28: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/28.jpg)
PSA UP FAMNIT 28
Računamo c[i,j] drugače – 2. korak
● Poleg tega:
c[prva,2] = c[prva,1] + c[prva+1,1] + d[prva-1]*d[prva]*d[prva+1]
za prva= 1 … n
28
prva-> 1 2 3 4
1 0 0 0 0
2 X X X
3
4
![Page 29: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/29.jpg)
PSA UP FAMNIT 29
Računamo c[i,j] drugače – p. korak
● Sedaj pa c[prva,p]:
min( c[prva, i] + c(prva+i, p-i) + d[prva-1]*d[prva+i-1]*d[prva+p])
za vse i= 1 … p
29
prva-> 1 2 3 4
1 0 0 0 0
2 X X X
3 X X
4 X
![Page 30: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/30.jpg)
PSA UP FAMNIT 30
Računamo c[i,j] drugačeint Mnozenje (int stevilo) { for (prva= 1; prva <= stevilo; prva++) c[prva,1]= 0; for (dolzina= 2; dolzina <= stevilo; dolzina++) { for (prva= 1; prva+dolzina <= stevilo; prva++) {
c[prva, dolzina]= najcenejša } }}
30
![Page 31: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/31.jpg)
PSA UP FAMNIT 31
Čas in prostor● Prostor: v obeh primerih enak in je odvisen od velikosti
– d[] - n vrednosti ter
– c[] - n (n+1)/2 = O(n2) vrednosti
● Čas: v obeh primerih enak in odvisen od tega kdajnapolnimo c[1,n]
– za vsako polje c[i,j] iščemo najboljšo vrednost, kartraja O(n) korakov
– ker je O(n2) polj v c[i,j], potrebujemo O(n3) časa
31
![Page 32: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/32.jpg)
PSA UP FAMNIT 32
Pregled
● rekurzija (recursion)
● pomnenje ali memoizacija (memoization)
● dinamično programiranje – primer 1: množenje matrik
– definicija problema; osnovni program; pomnenje; kaj inkako se izračunava; program malo drugače; rekonstrukcijarešitve
● dinamično programiranje – primer 2: Needleman–Wunsch
– osnovni prostor je O(nm)
– zmanjšanje prostora na O(n+m) a brez rekonstrukcijerešitve
32
![Page 33: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/33.jpg)
PSA UP FAMNIT 33
Rekonstrukcija rešitve
● Doslej smo računali koliko stane najcenejše množenje in ne katero je to.
● Ko računamo c[prva,r]:
min( c[prva, i] + c(prva+i, r-i) + d[prva-1]*d[prva+i-1]*d[prva+r])
za vse i= 1 … r, si zapomnimo, za kateri i je bil optimum dosežen.
● Potrebujemo dodatno polje p[1,dolzina].
● MMG, cost in parent
33
![Page 34: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/34.jpg)
PSA UP FAMNIT 34
Pregled
● rekurzija (recursion)
● pomnenje ali memoizacija (memoization)
● dinamično programiranje – primer 1: množenje matrik
– definicija problema; osnovni program; pomnenje; kaj inkako se izračunava; program malo drugače; rekonstrukcijarešitve
● dinamično programiranje – primer 2: Needleman–Wunsch
– osnovni prostor je O(nm)
– zmanjšanje prostora na O(n+m) a brez rekonstrukcijerešitve 34
![Page 35: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/35.jpg)
PSA UP FAMNIT 35
Needleman–Wunsch
● V biologiji osebke določa DNK, ki je zaporedje nukleotidov A,C, G in T
– iz DNK se gradijo aminokisline (preko RNK), katerih številoje tudi omejeno (24): 3 nukleotidi (kodon) določajo enoaminokislino
– Levenshteinova razdalja● Dva osebka sta si bolj v sorodu, če imata bolj podobno DNK
– edino enojajčni dvojčki imajo enako DNK● Koliko sta si v sorodu osebka Iztok (AACGCGG) in Ljubinica
(CTAATCTTAAGCCGGGGAAGGCGC)?35
![Page 36: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/36.jpg)
PSA UP FAMNIT 36
Needleman–Wunsch (wikipedia)
for i=0 to length(A) F[i,0] = d*ifor j=0 to length(B) F[0,j] = d*jfor i=1 to length(A) for j=1 to length(B){ Match = F[i-1,j-1] + S(A[i], B[j]) Delete = F[i-1, j] + d Insert = F[i, j-1] + d F[i,j] = max(Match, Insert, Delete) }
36
![Page 37: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/37.jpg)
PSA UP FAMNIT 37
Čas in prostor● Prostor: v obeh primerih enak in je odvisen od velikosti
– A[] in B[] - n in m vrednosti ter
– F[] - n m = O(nm) vrednosti
● Čas: v obeh primerih enak in odvisen od tega kdajnapolnimo F[n,m]
– za vsako polje F[i,j] iščemo najboljšo vrednost, kartraja 3 korake
– ker je O(nm) polj v c[i,j], potrebujemo O(nm) časa
37
![Page 38: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/38.jpg)
PSA UP FAMNIT 38
Pregled
● rekurzija (recursion)
● pomnenje ali memoizacija (memoization)
● dinamično programiranje – primer 1: množenje matrik
– definicija problema; osnovni program; pomnenje; kaj inkako se izračunava; program malo drugače; rekonstrukcijarešitve
● dinamično programiranje – primer 2: Needleman–Wunsch
– osnovni prostor je O(nm)
– zmanjšanje prostora na O(n+m) a brez rekonstrukcijerešitve 38
![Page 39: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/39.jpg)
PSA UP FAMNIT 39
Needleman–Wunsch
for i=0 to length(A) F[i,0] = d*ifor j=0 to length(B) F[0,j] = d*jfor i=1 to length(A) for j=1 to length(B){ Match = F[i-1,j-1] + S(A[i], B[j]) Delete = F[i-1, j] + d Insert = F[i, j-1] + d F[i,j] = max(Match, Insert, Delete) }
39
![Page 40: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/40.jpg)
PSA UP FAMNIT 40
Čas in prostor – boljše?● Prostor: v obeh primerih enak in je odvisen od velikosti
– A[] in B[] - n in m vrednosti ter
– F[0,n] in F[m,0] – O(n+m) vrednosti
– pri računanju optimuma potrebujemo samo 3vrednosti, kar pomeni, da lahko nekatere F[i,j]pozabimo – pozabimo jih lahko večino, saj jihpotrebujemo samo O(n+m)
● Čas: ostaja O(nm), ker še vedno naračunavamo vse F[]
40
![Page 41: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/41.jpg)
PSA UP FAMNIT 41
Pregled
● rekurzija (recursion)
● pomnenje ali memoizacija (memoization)
● dinamično programiranje – primer 1: množenje matrik
– definicija problema; osnovni program; pomnenje; kaj inkako se izračunava; program malo drugače; rekonstrukcijarešitve
● dinamično programiranje – primer 2: Needleman–Wunsch
– osnovni prostor je O(nm)
– zmanjšanje prostora na O(n+m) a brez rekonstrukcijerešitve 41
![Page 42: Dinamično programiranje - Spletna učilnica FRI 17/18 · PDF filePSA UP FAMNIT 5 Pregled rekurzija (recursion) pomnenje ali memoizacija (memoization) dinamično programiranje –](https://reader034.fdocuments.in/reader034/viewer/2022052305/5a72911a7f8b9a93538dcd72/html5/thumbnails/42.jpg)
PSA UP FAMNIT 42
Izzivi● Rekonstrukcija rešitve za Needleman-Wunsch
– koliko prostora potrebujemo● Sprogramirajte kar smo pregledali
42