ce.sharif.educe.sharif.edu/courses/92-93/2/ce354-1/resources/...ûݵþ¤ Úó Û Ü½ ø ü ÂÏ...

30
Dynamic Programming c n m n m n m = , n = m m = n- m + n- m- , c Combination (n, m) Computes n m using ’+’ only 1 if n = m or m =0 2 then return 1 3 else 4 return Combination(n-1,m)+Combination (n-1,m-1) c = 20 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 c

Upload: others

Post on 06-Apr-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ce.sharif.educe.sharif.edu/courses/92-93/2/ce354-1/resources/...ûݵþ¤ Úó Û Ü½ ø ü ÂÏ ûݵþ¤ Úó ü ÂÏ ¤¢ þ (ýÃþ¤ õ ÷ ) ©ø¤ (Dynamic Programming)

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

ûݵþ¤Úó üÂÏ ¤¢ þ (ýÃþ¤õ÷Â) ©ø¤

(Dynamic Programming) þ ýÃþ¤õ÷ Ûù¤ ûüðÄþø.´¨ ý¥¨ú fÞãõ ÜÿÆõ •.À÷ª Û ú Àþ Ýû ûÜÿÆõÂþ¥ Ýû ú Ûù¤ ý •.¢ªüõ Èõ ýûÜÿÆõ Âþ¥ Û ¤ÂØ °õ ,ÛøÝÆÖ ©ø¤ Û •

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 1 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

n ¥ m °îÂ:Ýû¢ ô¹÷ âÞ ÛÞä ú ¤ (

nm

) Û¬ Ýû¡üõ

n

m

=

1, n = m þ m = 0 Âð

(

n−1m

)

+(

n−1

m−1)

, ¤¬ ßþ Âè ¤¢

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 2 ³õî ü¨Àúõ ýùÀØÈ÷¢ ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%ÛøÝÆÖ ©ø¤

Combination (n, m). Computes

(

nm

)

using ’+’ only1 if n = m or m = 02 then return 13 else4 return Combination(n−1,m)+Combination (n−1,m−1)

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 3 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

(11) (11) (11) (11) (11) (11)(10) (10) (10) (10) (10) (10)

(22) (22) (22) (21)(21) (21) (21) (21) (21)(20) (20)(20)

(33) (32) (32) (31) (32) (31) (31) (30)

(42) (42) (41)(43)

(53) (52)

(63)

= 20

1

1

1 1 1 1 1 1 1 1 1 1 1 1

1

1

(63) ý±¨½õ ý ´È𥠴¡¤¢

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 4 ³õî ü¨Àúõ ýùÀØÈ÷¢

Page 2: ce.sharif.educe.sharif.edu/courses/92-93/2/ce354-1/resources/...ûݵþ¤ Úó Û Ü½ ø ü ÂÏ ûݵþ¤ Úó ü ÂÏ ¤¢ þ (ýÃþ¤ õ ÷ ) ©ø¤ (Dynamic Programming)

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

Ûܽ:Àª âÞ ñÞä ¢Àã T (n,m) Âð

T (n,m) =

0, n = m þ m = 0 Âð

T (n− 1,m) + T (n− 1, m− 1) + 1, ¤¬ ßþ Âè ¤¢

T (n, m) =(

nm

)

− 1 î Àþ¢ öüõ(!?´¤ Ûù¤)

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 5 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

ü÷õ ¢Àä ýù¡£ ý ÅþÂõ ¥ ù¢Ôµ¨

C(i, j) =(

ij

) .Ýîüõ ù¢Ôµ¨ C ô÷ (n + 1)× (m + 1) ¢ã ÅþÂõ ×þ ¥

0 1 2 3 4 5 . . m--------------------------

0 11 1 12 1 2 13 1 3 3 14 1 4 6 4 15 1 5 10 10 5 1.....n c

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 6 ³õî ü¨Àúõ ýùÀØÈ÷¢ ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%þ¤ ×þ ¥ ù¢Ôµ¨ ±¨½õ

Combination (n, m). A is an array of [0..100]

1 A[0]← 12 for i← 1 to n3 do if i ≤ m4 then A[i]← 15 for j ← mini− 1, m downto 16 do A[j]← A[j] + A[j − 1]7 return A[m]

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 7 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

ñ·õ

0 1 2 3 4 5 6

0 1

1 1 1

2 1 2 1

3 1 3 3 1

4 1 4 6 4 1

5 1 5 9 10 5 1

6 1 6 15 19 15 6 1

7 1 7 21 34 34 21 7

8 1 8 28 35 68 55 28

9 1 9 36 63 103 123 83

10 1 10 45 99 166 226 206

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 8 ³õî ü¨Àúõ ýùÀØÈ÷¢

Page 3: ce.sharif.educe.sharif.edu/courses/92-93/2/ce354-1/resources/...ûݵþ¤ Úó Û Ü½ ø ü ÂÏ ûݵþ¤ Úó ü ÂÏ ¤¢ þ (ýÃþ¤ õ ÷ ) ©ø¤ (Dynamic Programming)

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

Ûܽ ´¨  ݵþ¤Úó ßþ ¤¢ âÞ ñÞä ¢Àã

T (n, m) = 1 + 2 + ... + m− 1 + m(n−m) = m(2n−m− 1)/2µð¤Ã n ø m ×þ¢Ã÷ Âþ¢Öõ ý üóø (

nm−1) ¥ Â×î m ø n Âþ¢Öõ ü¡Â ý î.´¨ ö ¥

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 9 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

 ©ø¤

0 1 2 3 4 . . . m0 11 1 12 1 x 13 1 x x 14 x x x 1. x x x 1. x x x 1. x x x 1. x x x 1. x x x

x xn x

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 10 ³õî ü¨Àúõ ýùÀØÈ÷¢ ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

 ݵþ¤Úó

Combination ()1 for i← 1 to n2 do if i ≤ m3 then A[i]← 14 for j ← min(i− 1, m) downto max(1, m− n + i)5 do A[j]← A[j] + A[j − 1]6

(n−m)m =âÞ ñÞä ¢Àã.(n−m)m ≤(

nm

)

− 1 Ýþ¤¢ ø ´¨ Þî ¢Àã ßþ (

nm

)

=(

nn−m

) î ßþ ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 11 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

©Â

.ݪøÂÔ ø Ýî ÝÆÖ üãÎì Ýû¡üõ ¤ n ýù¥À÷ ãÎì ×þ •(¼½¬ ¢Àä ûù¥À÷) .´¨ ôÜãõ ãÎì Âû ´Þì •.¢¤À÷ ýþÃû ©Â •?Ýþ± ¤ ¢¨ ßþÂÇ Àª ü¤¬ ©Â •

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 12 ³õî ü¨Àúõ ýùÀØÈ÷¢

Page 4: ce.sharif.educe.sharif.edu/courses/92-93/2/ce354-1/resources/...ûݵþ¤ Úó Û Ü½ ø ü ÂÏ ûݵþ¤ Úó ü ÂÏ ¤¢ þ (ýÃþ¤ õ ÷ ) ©ø¤ (Dynamic Programming)

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

ñ·õ ãÎì ´Þì

i ýãÎì ñÏ 1 2 3 4 5 6 7 8 9 10

pi ©¥¤ 1 5 8 9 10 17 17 20 24 30.Àþ öüõ ´ó 2n−1 ¤¢ ¤ n ýù¥À÷

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 13 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%Àª 4 ýù¥À÷ Âð

59 1 8 5 5

1 1 1 1 1 1 1 1 15 5 18 1

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 14 ³õî ü¨Àúõ ýùÀØÈ÷¢ ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%üµÈð¥ Ûù¤ø Àª i ñÏ ýãÎì ©øÂê ´Þì (1 ≤ i ≤ n ýÂ) pi Âð,Àª n ñÏ ©Â ¥ ¢¨ ßþÂÇ rn

rn = max1≤i≤npi + rn−i

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 15 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

ßþ-- ¥ üµÈð¥ Ûù¤

Top-Down-Cut-Rod (p, n)1 if n = 02 then return 03 q ← −∞4 for i← 1 to n5 do q ← max(q, p[i] + Top-Down-Cut-Rod(p, n− i))6 return q

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 16 ³õî ü¨Àúõ ýùÀØÈ÷¢

Page 5: ce.sharif.educe.sharif.edu/courses/92-93/2/ce354-1/resources/...ûݵþ¤ Úó Û Ü½ ø ü ÂÏ ûݵþ¤ Úó ü ÂÏ ¤¢ þ (ýÃþ¤ õ ÷ ) ©ø¤ (Dynamic Programming)

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

Ûܽ ´È𥠴¡¤¢

13 2 0

2 1 0 1 0 01 0 0 00

4

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 17 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

ý¤ÂØ ýûÜÿÆõÂþ¥

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 18 ³õî ü¨Àúõ ýùÀØÈ÷¢ ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

(õ¢) Ûܽ

T (1) = 1

T (n) = 1 +n−1

j=0 T (j) .´¨ 2n ö î

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 19 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

(Memoized) ßþ-- ¥ Ûù¤

Memoized-Cut-Rod (p, n). r[0..n] is a new array

1 for i← 0 to n2 do r[i]← −∞3 return Memoized-Cut-Rod-Aux(p, n, r))

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 20 ³õî ü¨Àúõ ýùÀØÈ÷¢

Page 6: ce.sharif.educe.sharif.edu/courses/92-93/2/ce354-1/resources/...ûݵþ¤ Úó Û Ü½ ø ü ÂÏ ûݵþ¤ Úó ü ÂÏ ¤¢ þ (ýÃþ¤ õ ÷ ) ©ø¤ (Dynamic Programming)

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

Memoized-Cut-Rod-Aux (p, n, r)1 if r[n] ≥ 02 then return r[n]3 if n = 04 then q ← 05 elseq ← −∞6 for i← 1 to n7 do q ←

max(q, p[i] + Memoized-Cut-Rod-Aux(p, n− i, r))8 r[n]← q9 return q

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 21 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

O(n2) = Â öõ¥

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 22 ³õî ü¨Àúõ ýùÀØÈ÷¢ ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%(--ßþ ¥) þ Ûù¤

Dynamic-Cut-Rod (p, n). r[0..n] is a new array

1 r[0]← 02 for j ← 1 to n3 do q ← −∞4 for i← 1 to j5 do q ← max(q, p[i] + r[j − i])6 r[j]← q7 return r[n]

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 23 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

O(n2) = Â öõ¥

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 24 ³õî ü¨Àúõ ýùÀØÈ÷¢

Page 7: ce.sharif.educe.sharif.edu/courses/92-93/2/ce354-1/resources/...ûݵþ¤ Úó Û Ü½ ø ü ÂÏ ûݵþ¤ Úó ü ÂÏ ¤¢ þ (ýÃþ¤ õ ÷ ) ©ø¤ (Dynamic Programming)

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

ßµª÷ ýÂ

Dynamic-Cut-Rod-Extended(p, n). r[0..n] and s[0..n] are new arrays

1 r[0]← 02 for j ← 1 to n3 do q ← −∞4 for i← 1 to j5 do if q < p[i] + r[j − i]6 then q ← p[i] + r[j − i]7 s[j]← i8 r[j]← q9 return r and s

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 25 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

ßµª÷

Print-Cut-Rod-Solution (p, n)1 r, s← Dynamic-Cut-Rod-Extended(p,n)2 while n > 03 do print s[n]4 n← n− s[n]

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 26 ³õî ü¨Àúõ ýùÀØÈ÷¢ ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%ýÂ ýÜÿÆõ

ùÀª ù¢¢ ` ýù¥À÷ ãÎì ×þ •.Ýþ± (´¨¤ ² ¥) xn = ` x1 ¯Ö÷ ýÞû ¥ Àþ ¤ ö •.´¨ ñþ¤ r ö ýÎÖ÷ Âû ¥ 1 ≤ r ≤ n ñÏ ×þ ©Â ýþÃû •¢ª Þî ©Â ýþÃû Ýþ± ¤ ùÀª ù¢¢ ãÎì ü±Â •ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 27 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

? ÜÿÆõÂþ¥xj−1 xi+1 ¯Ö÷ ¥ [xi..xj] ãÎì ýú ©Â Pij.Pij ýÜÿÆõ ý ú ýþÃû Cij

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 28 ³õî ü¨Àúõ ýùÀØÈ÷¢

Page 8: ce.sharif.educe.sharif.edu/courses/92-93/2/ce354-1/resources/...ûݵþ¤ Úó Û Ü½ ø ü ÂÏ ûݵþ¤ Úó ü ÂÏ ¤¢ þ (ýÃþ¤ õ ÷ ) ©ø¤ (Dynamic Programming)

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

Cij = mini<k<j

xj − xi + Cik + Ckj

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 29 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

ûÅþÂõ ®:Ýî ® Ýû¤¢ Ýû¡üõ ¤ ÅþÂõ n

M1 ×M2 × · · · ×Mn

di−1 × di : ´¨  Mi ¢ã.¢ª Þî Ûî ýþÃû î Ýû¢ ô¹÷ ü±Â ¤ û® ßþ Ýû¡üõ

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 30 ³õî ü¨Àúõ ýùÀØÈ÷¢ ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

ñ·õ

M =M1

[10× 20] × M2

[20× 50] × M3

[50× 1] ×M4

[1× 100]ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 31 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

[10× 20]M1 M2× (M3 ×M4)M1 × (M2× (M3 ×M4))

[20× 100]

[20× 50]

M3 M4

[50× 1]

[10× 100]

[1× 100]

[50× 100]M2 M3 ×M4

C34 = 50× 1× 100 = 5000

C24 = C34 + 20× 50× 100 = 105, 000

C14 = C24 + 10× 20× 100 = 125, 000

M1 × (M2 × (M3 ×M4)) ý±¨½õ ¤¢ ûÅþÂõ ® ýþÃû ø °Âü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 32 ³õî ü¨Àúõ ýùÀØÈ÷¢

Page 9: ce.sharif.educe.sharif.edu/courses/92-93/2/ce354-1/resources/...ûݵþ¤ Úó Û Ü½ ø ü ÂÏ ûݵþ¤ Úó ü ÂÏ ¤¢ þ (ýÃþ¤ õ ÷ ) ©ø¤ (Dynamic Programming)

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

[10× 20]C24 = C23 + 10× 20× 1 = 1200 M4M1× (M2 ×M3)

(M1 × (M2×M3))×M4

[10× 1]

[10× 20]

M2 M3

[20× 50] [50× 1]

[20× 1]M1 M2 ×M3

C23 = 20× 50× 1 = 1000

C14 = C13 + 10× 1× 100 = 2200[10× 100]

.(M1 × (M2 ×M3))×M4 ý±¨½õ ¤¢ ûÅþÂõ ® ýþÃû ø °Âü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 33 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

üµÈð¥ Ûù¤

:ÜÿÆõ Âþ¥

Mij = Mi ×Mi+1 × · · · ×Mj

Cij : Mij ýÂ ú ýþÃû

Cij =

0 if i = jmini≤k<j

Cik + Ck+1,j + di−1dkdj if i < j

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 34 ³õî ü¨Àúõ ýùÀØÈ÷¢ ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%üµÈð¥ Ûù¤

Recursive-Matrix-Multiplication (d, i, j). Computes C[i, j], the optimal cost of Mi ×Mi+1 × · · · ×Mj

1 if i = j2 then return 03 C[i, j]← ∞4 for k ← i to j − 15 do q ← Recursive-Matrix-Multiplication(d, i, k) +

Recursive-Matrix-Multiplication(d, k + 1, j) +di−1dkdj

6 if q < C[i, j]7 then C[i, j]← q8 return C[i, j]ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 35 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

Ûܽ

Recursive-Matrix-Multiplication(d,1, n) ýÂ öõ¥ T (n)

T (1) ≥ 1

T (n) ≥ 1 +n−1

k=1[T (k) + T (n− k) + 1], for n > 1

Å ,¢ªüõ ¤ÂØ ¤ ø¢ T (i) Âû ,Τ ßþ ¤¢

T (n) ≥ 2 n−1

i=1 T (i) + nü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 36 ³õî ü¨Àúõ ýùÀØÈ÷¢

Page 10: ce.sharif.educe.sharif.edu/courses/92-93/2/ce354-1/resources/...ûݵþ¤ Úó Û Ü½ ø ü ÂÏ ûݵþ¤ Úó ü ÂÏ ¤¢ þ (ýÃþ¤ õ ÷ ) ©ø¤ (Dynamic Programming)

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

T (n) = Ω(2n) î Ýîüõ ± ¤ÂØ ø ý¤Áðý ©ø¤ ¥.T (n) ≥ 2n−1 Ýþ¤¢ n ≥ 1 ý î Ýû¢üõ öÈ÷.´¨ ߪø¤ ÂÖµ¨ ýþ,Ýþ¤¢ ÂÖµ¨ ôð ýÂ

T (n) ≥ 2 n−1

i=1 2i−1 + n

= 2 n−2

i=0 2i + n

= 2(2n−1 − 1) + n

= (2n − 2) + n

≥ 2n−1ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 37 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

ø Àîüõ ü¨¤Â ¤ ÅþÂõ n ® ýÞû âìø ¤¢ ݵþ¤Úó ßþ ,ÂÚþ¢ üêÂÏ ¥.¢¤øüõ ´¨¢ ¤ ú ´ó ûö ßß þ ® ý¤Á ðà µ ÷ þ ø ® ßØ Þ õ ¢À ã ° ¨ µ õ ö ý þà û.Ýû¢üõ ÇþÞ÷ T (n) ¤ö î ´¨ûÅþÂõ,Ýþ¤¢

T (n) =

1 n = 1

n−1∑

i=1 T (i)T (n− i) n > 1

´¨  ø öî ¢Àä ßõ n C(n) î T (n) = C(n− 1) î ¢¢ öÈ÷ öüõ

C(n) =

1n + 1

2nn

= Ω(4n/n

32)ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 38 ³õî ü¨Àúõ ýùÀØÈ÷¢ ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 39 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

ý¤ÂØ ýûÜÿÆõÂþ¥

1, 4

1, 1 2, 2

1, 2 3, 4 1, 3 4, 4

3, 3 4, 4

3, 3 4, 4

1, 1 2, 4

2, 2 3, 4 2, 3 4, 4

2, 2 3, 3 2, 2

1, 1 2, 3 1, 2 3, 4

3, 3 1, 1 2, 2

Recursive-Matrix-Multiplication(d,1,4) ý ûü÷¡Âê ´¡¤¢ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 40 ³õî ü¨Àúõ ýùÀØÈ÷¢

Page 11: ce.sharif.educe.sharif.edu/courses/92-93/2/ce354-1/resources/...ûݵþ¤ Úó Û Ü½ ø ü ÂÏ ûݵþ¤ Úó ü ÂÏ ¤¢ þ (ýÃþ¤ õ ÷ ) ©ø¤ (Dynamic Programming)

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

þ Ûù¤? ,¢¤¢ þ Ûù¤ ÜÿÆõ:ÜÿÆõÂþ¥

Mij = Mi ×Mi+1 × · · · ×Mj!À÷ª Û ú Àþ Ýû ûÜÿÆõÂþ¥ ýÞû ÜÿÆõ ýú Û ýÂ î ´¨ üúþÀø Cii = 0 :Ýþ¤¢ ,Àª Mij ýú ýþÃû Cij Âð

Cij = mini≤k<j

Cik + Ck+1,j + di−1dkdj

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 41 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

þ ݵþ¤Úó

Dybnamic-Matrix-Multiplicationi(d)1 for i← 1 to n2 do C[i, i]← 03 for l← 2 to n4 do

. l = number of multiplied matrices5 for i← 1 to n− l + 16 do j ← i + l − 1

. solving Mij

7 for k ← i to j − 18 do C[i, j] ← minC[i, k] + C[k + 1, j] + d[i − 1] ∗

d[k] ∗ d[j]9 R[i, j]← the value of k that makes the minimumü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 42 ³õî ü¨Àúõ ýùÀØÈ÷¢ ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%ú ý¤Áðõ÷ ߵª÷

PrintResults (i, j)1 if i 6= j2 then k ← R[i, j]3 Print ′(′

4 PrintResults(i, k)5 Print ′×′

6 PrintResults (k + 1, j)7 Print ′)′

O(n2) ýÑê ø O(n3) öõ¥ :Ûܽ

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 43 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

1 ñ·õ

M =M1

[10× 20] × M2

[20× 50] × M3

[50× 1] ×M4

[1× 100]

1 2 3 41 0 10000, 1 1200, 1 2200, 32 0 1000, 2 3000, 33 0 5000, 34 0

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 44 ³õî ü¨Àúõ ýùÀØÈ÷¢

Page 12: ce.sharif.educe.sharif.edu/courses/92-93/2/ce354-1/resources/...ûݵþ¤ Úó Û Ü½ ø ü ÂÏ ûݵþ¤ Úó ü ÂÏ ¤¢ þ (ýÃþ¤ õ ÷ ) ©ø¤ (Dynamic Programming)

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

ñ·õ :Âþ¥ ýûù¥À÷ ÅþÂõ Ǫ ®

M1

[30× 35]

×M2

[35× 15]

×M3

[15× 5]

×M4

[5× 10]

×M5

[10× 20]

×M6

[20× 25]

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 45 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

C[i,j]

1

2

3

4

5

6

6

5

4

3

2

1

M1 M2 M3 M4 M5 M6

j i

15, 125

11, 875 10, 500

9, 375 7, 125 5, 375

7, 875 4, 375 2, 500 3, 500

15, 750 2, 625 750 1, 000 5, 000

0 0 0 0 0 0

2

3

4

5

6

R[i,j]

5

4

3

2

1

1

j i

2 3 4 5

1 3 3 5

3 3 3

33

3

((M1 × (M2 ×M3))× ((M4 ×M5)×M6))

C[2, 5] = min

C[2, 2] + C[3, 5] + d1d2d5 = 0 + 2500 + 35 ∗ 15 ∗ 20 = 13000,C[2, 3] + C[4, 5] + d1d3d5 = 2625 + 1000 + 35 ∗ 5 ∗ 20 = 7125,C[2, 4] + C[5, 5] + d1d4d5 = 4375 + 0 + 35 ∗ 10 ∗ 20 = 11375

= 7125.

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 46 ³õî ü¨Àúõ ýùÀØÈ÷¢ ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

(Memoization) ý¤³¨ ÂÏ¡ ©ø¤

÷¤î¤î ø ßþ ¥ : üµÈ𥠕ûÜÿÆõÂþ¥ Û¬ ýù¡£ ø ßþ ¥ : þ •ý¤ÂØ ¤î ö¢À÷ ô¹÷ üóø ßþ ¥ : ý¤³¨ÂÏ¡ •ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 47 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

Memoized-Matrix-Multiplication (d)1 n← length[d]− 12 for i← 1 to n3 do for j ← i to n4 do C[i, j]← ∞

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 48 ³õî ü¨Àúõ ýùÀØÈ÷¢

Page 13: ce.sharif.educe.sharif.edu/courses/92-93/2/ce354-1/resources/...ûݵþ¤ Úó Û Ü½ ø ü ÂÏ ûݵþ¤ Úó ü ÂÏ ¤¢ þ (ýÃþ¤ õ ÷ ) ©ø¤ (Dynamic Programming)

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

Lookup-Matrix (p, 1, n)1 if C[i, j] <∞2 then return C[i, j]3 if i = j4 then C[i, j]← 05 elsefor k ← i to j − 16 do q ← Lookup-Matrix(d, i, k) +

Lookup-Matrix(d, k + 1, j) + di−1dkdj

7 if q < C[i, j]8 then C[i, j]← q9 return C[i, j]

ÅþÂõ ýþ¤¢ (Θ(n2) î  ,´¨ Θ(n3) ý±Âõ ¥ þ ©ø¤ À÷õ Ã÷ ©ø¤ ßþ.¢ªüõ Æ Θ(n) ý±Âõ ¤ Âû ø ¤×þ ÍÖê ×þ Âû C

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 49 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

À½õ üãÜ®À ýú ýÀ¶Ü·õ

v1v2

v3v0

v4v5v6 v1

v2v3

v0v4

v5v6

ö ýÀ¶Ü·õ á÷ ø¢ ø À½õ üãÜ®À ×þ

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 50 ³õî ü¨Àúõ ýùÀØÈ÷¢ ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%ÜÿÆõ ýÀñõÂê

´¨ ùÀªù¢¢ P0,n−1 =< v0, v1, . . . , vn−1 > À½õ üãÜ®- n •ôi §b¤ ʵ¿õ vi •ÀµÆû P á® < vi, vi−1 > ø < vi, vi+1 > •À÷Âðüõ ¤Âì P Û¡¢ ¤¢ ûÂÎì .´¨ ÂÎì ,Àª±÷ âÜ® î < vi, vj > •? .´ ¨ n − 3 ûÂ Î ì ¢À ã ø n − 2 ýÀ ¶ Ü · õ  û ý û¶ Ü · õ ¢À ã •(3(n− 2) = n + 2(n− 3))¢Âðüõ ¤Âì ¶Ü·õ ×þ ¤¢ âÜ® Âû •ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 51 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

À½õ üãÜ®À ×þ v0, v1, . . . , vn−1 §¤ ʵ¿õ :ÜÿÆõ ý¢ø¤ø.Àª Þî öÈóÏ ø Àî ýÀ¶Ü·õ ¤ üãÜ®À î üþûÂÎì :üø¡.¢Âî ÓþÂã Û¬ ýû¶Ü·õ þ ûÂÎì ,ûâÜ® ýø¤  w ö¥ø â öüõ¢ª Þî ûö¥ø âÞ Û¬ ö ¤¢ î ýýÀ¶Ü·õ :ú ýÀ¶Ü·õÀª ö¥ø â ×þ À÷üõ ûÂÎì ñÏ:¢ªüõ ÓþÂã Âþ¥ ¤¬ ¶Ü·õ Âû ýø¤  û¶Ü·õ ö¥ø

w(∆vivjvk) = vivj + vjvk + vivk

.´¨ vj ø vi ß ü¨ÀÜì ýܬê vivjü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 52 ³õî ü¨Àúõ ýùÀØÈ÷¢

Page 14: ce.sharif.educe.sharif.edu/courses/92-93/2/ce354-1/resources/...ûݵþ¤ Úó Û Ü½ ø ü ÂÏ ûݵþ¤ Úó ü ÂÏ ¤¢ þ (ýÃþ¤ õ ÷ ) ©ø¤ (Dynamic Programming)

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

A1

A2

A3

A4 A5

v1

v2

v3

v0

v4

v5v6

A1

A2 A3 A4

A5 A6

A6

.À½õ üãÜ®À ×þ ýÀ¶Ü·õ ø ûÅþÂõ ® ýûÜÿÆõ ÂÒ

((A1(A2A3))(A4(A5A6)) : ÂÒµõ

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 53 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

ú ýÀ¶Ü·õ ûÅþÂõ ® ýÜÿÆõ ÛþÀ±

d0, d1, . . . , dn ýûù¥À÷ A1 ×A2 × ...×An :ý¢ø¤øú ýÀ¶Ü·õ ¤ö ø Ýþ¥¨üõ v0, v1, . . . , vn §¤ À½õ üãÜ® n + 1 ×þ •Ýîüõ

< vi−1vi > âÜ® ÂÒµõ Ai ÅþÂõ •A1 × A2 × ...×An ¢ªüõ ±¨½õ w(∆vivjvk

) = didjdk ¶Ü·õ ö¥ø •Ai+1 ×Ai+1 × ...×Aj ýûÅþÂõ ® ´¨ ÂÒµõ (i < j) < vi, vj > ÂÎì •ý §¤ ´¡¤¢ ë ê â ß µ ê ð Â Ñ ÷ ¤¢ P üã Ü®À ú ýÀ ¶ Ü · õ •.Àîüõ ¢¹þ ¤ A1A2...An ýú ý¤Áðõ÷Âü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 54 ³õî ü¨Àúõ ýùÀØÈ÷¢ ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

ú ýÀ¶Ü·õ ýÜÿÆõ Û ý ûÅþÂõ ® Àî ¥ ù¢Ôµ¨

v0, v1, . . . , vn−1 §¤ P üãÜ® n :ý¢ø¤ø.ÝþÂðüõ ÂÑ÷ ¤¢ ¤ A1 ×A2 × ...×An−1 ýûÅþÂõ ® •ÂÑ ÷ ¤¢ w(Ai) = vi−1vi ¤ö ö¥ø ø < vi−1vi > â Ü® ´¨ ÂÒ µ õ Ai Åþ õ •.ÝþÂðüõø .Ýîüõ ±¨½õ w(Ai) + w(Ai+1)  Ai × Ai+1 ÅþÂõ ø¢ ® ýþÃû •.ÝþÂðüõ (ÂÎì ñÏ) w(Ai × Ai+1) = vi−1vi+1

< vi−1vi+1 > âÜ® ´¨ ÂÒµõ Ai ×Ai+1 ÅþÂõ •Ai+1 ×Ai+1 × ...×Aj ýûÅþÂõ ® ´¨ ÂÒµõ (i < j) < vi, vj > ÂÎì •ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 55 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

.Ýîüõ  Âç ßþ ¤ ûÅþÂõ ® Àî •

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 56 ³õî ü¨Àúõ ýùÀØÈ÷¢

Page 15: ce.sharif.educe.sharif.edu/courses/92-93/2/ce354-1/resources/...ûݵþ¤ Úó Û Ü½ ø ü ÂÏ ûݵþ¤ Úó ü ÂÏ ¤¢ þ (ýÃþ¤ õ ÷ ) ©ø¤ (Dynamic Programming)

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

ÝÖµÆõ Ûù¤

i ≤ j + 2 ýÂ Pi,j =< vi, vi+1, . . . , vj > :ÜÿÆõÂþ¥ •(P1,n ýÂ ÂÚõ) ´¨ ÂÎì < vi, vj > •

Pij ýú ýþÃû Cij •(i < k < j) .< vi, vj > âÜ® ü·Ü·õ ÛÖõ §b¤ vk •

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 57 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

:Ýþ¤¢

Ci,j =

0 i ≤ j ≤ i + 2

mini<k<jCik + Ckj + dik + dkj, j > i + 2

.dij = 0 ,Àª âÜ® < vi, vj > Âð .´¨ < vi, vj > ÂÎì ýù¥À÷  dij.´¨ üúþÀ O(n3) þ ݵþ¤Úó

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 58 ³õî ü¨Àúõ ýùÀØÈ÷¢ ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%íµÈõ ýó±÷¢Âþ¥ ßþÂï¤Ã

b

a b c b d a b

d bcfÀî ýó± ÷¢ Âð ´¨ X =< x1, x2, · · · , xm > ýó± ÷¢Âþ¥ Z =< z1, z2, · · · , zk >ý îý¤Ï Àª µª¢ ¢ø X ¬ä ýûÅþÀ÷ ¥ < i1, i2, · · · , ik > ý¢ã¬.zi = xij :ݪ µª¢ j = 1, . . . , ký ó ± ÷¢ î ´¨ X =< a, b, c, b, d, a, b > ¥ ó ± ÷¢Â þ¥ × þ Z =< b, c, d, b > f · õ.Àªüõ < 2, 3, 5,7 > ¯Âõ ýûÅþÀ÷ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 59 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

Longest Common Subsequence) "íµÈõ ýó±÷¢Âþ¥ ßþÂï¤Ã' Z ö¢Âî À :ÜÿÆõ.´¨ Y ø X ýùÀª ù¢¢ ýó±÷¢ ø¢ ý ((LCS)

c

a b c b d a b

b d ba a

c

a b c b d a b

b d ba a

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 60 ³õî ü¨Àúõ ýùÀØÈ÷¢

Page 16: ce.sharif.educe.sharif.edu/courses/92-93/2/ce354-1/resources/...ûݵþ¤ Úó Û Ü½ ø ü ÂÏ ûݵþ¤ Úó ü ÂÏ ¤¢ þ (ýÃþ¤ õ ÷ ) ©ø¤ (Dynamic Programming)

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

Y =< y1, y2, · · · , yn > ø X =< x1, x2, · · · , xm > ýó±÷¢ ø¢ :ý¢ø¤ø.ó±÷¢ ø¢ ßþ LCS :üø¡

diff file1 file2 :¢Â¤î

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 61 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

ú ¤µ¡¨Âþ¥

xm. . .

y1 y2 yn−1 yn

. . .

x1 x2 xm−1xm

. . .

y1 y2 yn−1 yn

. . .

x1 x2 xm−1

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 62 ³õî ü¨Àúõ ýùÀØÈ÷¢ ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

xm. . .

y1 y2 yn−1 yn

. . .

x1 x2 xm−1

xm. . .

y1 y2 yn−1 yn

. . .

x1 x2 xm−1

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 63 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

ó±÷¢ ×þ :X =< x1, x2, · · · , xm >

i = 1..m ý X (prefix) À÷È ßõ i :Xi ≡< x1, x2, · · · , xm >.X4 =< A,B,C, B > :Ýþ¤¢ ,X =< A, B,C,B,D,A,B > ý f ·õ

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 64 ³õî ü¨Àúõ ýùÀØÈ÷¢

Page 17: ce.sharif.educe.sharif.edu/courses/92-93/2/ce354-1/resources/...ûݵþ¤ Úó Û Ü½ ø ü ÂÏ ûݵþ¤ Úó ü ÂÏ ¤¢ þ (ýÃþ¤ õ ÷ ) ©ø¤ (Dynamic Programming)

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

ý¢ø¤ø ýû ó ± ÷¢ Y =< y1, y2, · · · , yn > ø X =< x1, x2, · · · , xm > Âð 1 ýÌì:Ýþ¤¢ Àª Z =< z1, z2, · · · , zk > ø¢ ßþ LCS ø Àª.´¨ Yn−1 ø Xm−1 LCS  Zk−1 ø zk = xm = yn Ýþ¤¢ ,xm = yn Âð .1.´¨ Y ø Xm−1 LCS  Z î ÝþÂðüõ ¹µ÷ zk 6= xm ¥ ùðö ,xm 6= yn Âð .2.´¨ X ø Yn−1 LCS  Z î ÝþÂðüõ ¹µ÷ zk 6= yn ¥ ùðö ,xm 6= yn Âð .3

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 65 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

üµÈð¥ Ûù¤.¢ªüõ Óܵ¿õ ýûÜÿÆõÂþ¥ ý¤ÂØ Û Â¹õ üµÈð¥ Ûù¤

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 66 ³õî ü¨Àúõ ýùÀØÈ÷¢ ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

þ Ûù¤,Àª Yj ø Xi ý LCS ñÏ c[i, j] Âð

c[i, j] =

0 if i = 0 or j = 0,c[i− 1, j − 1] + 1 if i, j > 0 and xi = yj,max(c[i, j − 1], c[i− 1, j]) if i, j > 0 and xi 6= yj.

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 67 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

for i := 1 to m do c[i, 0] := 0;

for j := 1 to m do c[0, j] := 0;

for i := 1 to m do

for j := 1 to n do

if xi = yj then begin

c[i, j] := c[i− 1, j − 1] + 1;

b[i, j] := ‘ ’

end

else if c[i− 1, j] ≥ c[i, j − 1]

then begin

c[i, j] := c[i− 1, j];

b[i, j] := ‘ ↑ ’

end

else begin

c[i, j] := c[i, j − 1];

b[i, j] := ‘← ’

end

O(mn) Ã÷ ö üêÂÊõ ýÑê öÃõ ø O(mn) ü÷õ¥ ý±Âõ ¥ ùÀª ¤ ݵþ¤Úóü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 68 ³õî ü¨Àúõ ýùÀØÈ÷¢

Page 18: ce.sharif.educe.sharif.edu/courses/92-93/2/ce354-1/resources/...ûݵþ¤ Úó Û Ü½ ø ü ÂÏ ûݵþ¤ Úó ü ÂÏ ¤¢ þ (ýÃþ¤ õ ÷ ) ©ø¤ (Dynamic Programming)

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

.´¨

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 69 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

Y =< B,D,C,A, B,A > ø X =< A, B,C,B,D,A, B > :ñ·õ

0

0

0

0

0

0

0

0

0 0 0 0 0 0

0 0 0

1

1

1

1

1

1

1

1

1

1 1

2

2

2

2 2

1 1 1

2222

2 2

22

2

2 3

3 3

3 3

33

4 4

4

↑ ↑ ↑

↑↑

↑↑↑

↑↑↑↑

↑↑↑↑

↑↑↑↑

←←←

ab

a

a

bb

b

b

b

c

c

d

d

xi

yj

0

0

1

1

2

2

3

3

4

4

5

5 6

6

7

ij

↑↑

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 70 ³õî ü¨Àúõ ýùÀØÈ÷¢ ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

LCS ßµ¡¨ü ÷ ¡Â ê ¤ LCS ö ü õ b Å þ õ ¤¢ ùÀ ªù ¡£ ä Ï .´¡¨ Print-LCS(b, X,m, n)

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 71 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

Print-LCS(b, X, i, j)

if (i = 0 or j = 0)

then return;

if b[i, j] = ‘ ’

then begin

Print-LCS (b, X, i− 1, j − 1);

print xi

end

else if b[i, j] = ‘ ↑ ’

then Print-LCS (b, X, i− 1, j)

else Print-LCS (b, X, i− 1, j).´¨ O(m + n) ý±Âõ ¥ ݵþ¤Úó ßþ

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 72 ³õî ü¨Àúõ ýùÀØÈ÷¢

Page 19: ce.sharif.educe.sharif.edu/courses/92-93/2/ce354-1/resources/...ûݵþ¤ Úó Û Ü½ ø ü ÂÏ ûݵþ¤ Úó ü ÂÏ ¤¢ þ (ýÃþ¤ õ ÷ ) ©ø¤ (Dynamic Programming)

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

(Optimal BST) ú ýø´Æ üþø¢ø¢ ´¡¤¢

¬ ä ßþ ý ø´Æ ñÞ µ ø a1 < a2 < · · · < a7 ÂÊä 7 Ûõª ´¡¤¢Àª 624 324 , 524 , 424 , 324 , 124 , 224  °Â

a1 a2 a4 a5

a3

a7

a6ßÚ÷õ ö¥µõ÷ ´¡¤¢5826 ýø´Æ öõ¥

a1 a2 a4

a3 a6

a5 a7öõ¥ ßÚ÷õ ö¥µõ ´¡¤¢6426 ýø´Æ

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 73 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%û¢Þ÷ ñøÀ ,÷¡µî :ûñ·õ

b6

b5b3b2 a3b0

else

fora5

a7b1a2

do

begina1

b4a4

end

then

a6

b8

if

b7

a8

while

û¢Þ÷ ñøÀ ý ø´Æ üþø¢ø¢ ´¡¤¢ ×þ

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 74 ³õî ü¨Àúõ ýùÀØÈ÷¢ ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%üÜî ´ó ¤¢ ÜÿÆõ

ü¤¡ ø üÜ¡¢ ÂÊä :(bi ø ai) Õêõ÷ ø Õêõ ýø´Æ

b0 < a1 < b2 < · · · < ai−1 < bi < ai < · · · < bn−1 < an < bn

n + 1  ÂÊä n ø´Æ üþø¢ø¢ ´¡¤¢ ×þ ý ,ü¤¡ Â¬ä ¢Àã .Ýó.´¨

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 75 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

ÜÿÆõ ý¢ø¤ø Õì¢ ÓþÂã´¡¤¢ ¬ä a1 < a2 < · · · < an /(i = 1..n) ai ý Õêõ ø´Æ ñÞµ pi /(i = 1..n− 1) ai < bi < ai+1 Âð ,bi ý Õêõ÷ ýø´Æ ñÞµ qi /

b0 < a1 ýÂ Õêõ÷ ýø´Æ ñÞµ q0 /

an < bn ýÂ Õêõ÷ ýø´Æ ñÞµ qn /

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 76 ³õî ü¨Àúõ ýùÀØÈ÷¢

Page 20: ce.sharif.educe.sharif.edu/courses/92-93/2/ce354-1/resources/...ûݵþ¤ Úó Û Ü½ ø ü ÂÏ ûݵþ¤ Úó ü ÂÏ ¤¢ þ (ýÃþ¤ õ ÷ ) ©ø¤ (Dynamic Programming)

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

ÜÿÆõ üø¡

öõ¥ ͨµõ î Àþ¥Æ ú ýø´Æ üþø¢ø¢ ´¡¤¢ ×þ û qi ø û pi ßµª¢ ¢ª Þî ö ¤¢ ( Õêõ ÷ þ Õêõ¥ Ýä) ø´Æ¤ÀÖõ ßþ

n∑

i=1 pi(1 + depth(ai)) +n∑

i=0 qi(depth(bi))

n∑

i=1 pi +n∑

i=0 qi = 1 î

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 77 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

ÜÿÆõÂþ¥ ÓþÂã

Tij ýÜÿÆõ Âþ¥ •qi, pi+1, qi+1, . . . , pj, qj ý¢ø¤ø ai+1 < · · · < aj ý OBST ´¡¤¢.´¨ üܬ ýÜÿÆõ T0n

Tij ýþÃû : Cij •

Cij =j

r=i+1 pr[depht(ar) + 1] +j

r=0 qr[depth(br)]

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 78 ³õî ü¨Àúõ ýùÀØÈ÷¢ ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

.Àª Tij ýÈþ¤ ak Âð Cij : C(k)ij •:Tij ¤¢ qi ø pi ýûñÞµ áÞ¹õ  ,Tij ´¡¤¢ ö¥ø : wij •

wij = qi +j

r=i+1(pr + qr)

Tij ýÈþ¤ rij •ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 79 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

ai+1 < · · · < aj ý Tij ´¡¤¢ Âþ¥ak

Tij

Tk,jTi,k−1

i < k ≤ j

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 80 ³õî ü¨Àúõ ýùÀØÈ÷¢

Page 21: ce.sharif.educe.sharif.edu/courses/92-93/2/ce354-1/resources/...ûݵþ¤ Úó Û Ü½ ø ü ÂÏ ûݵþ¤ Úó ü ÂÏ ¤¢ þ (ýÃþ¤ õ ÷ ) ©ø¤ (Dynamic Programming)

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

Tij ýÜÿÆõ Âþ¥ Û:Ýþ¤¢ ,Àª Èþ¤ (i < k ≤ j ýÂ) ak Âð

C(k)ij = (Ci,k−1 + wi,k−1) + (Ckj + wkj) + pk

= Ci,k−1 + Ckj + wij :Ýþ¤¢ ø

Cij = mini<k≤j

C(k)ij

cii = 0 ø wii = qi ⇐= Ýþ¤¢ Tii ý áøª ¤¢

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 81 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

ݵþ¤Úó

OBST (p1, . . . , pn, q0, . . . , qn)1 for i← 0 to n2 do wii ← qi

3 cii ← 04 for l← 1 to n5 do for i← 0 to n− l6 do j ← i + l7 wij ← wi,j−1 + pj + qj

8 cij ← mini<k≤j

ci,k−1 + ckj + wij

9 rij ← the k for which above is mininimum

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 82 ³õî ü¨Àúõ ýùÀØÈ÷¢ ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

Ûܽ.´¨ Θ(n3) ¥ ëê ݵþ¤Úó

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 83 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

¢Âî Û O(n2) ¤¢ ¤ ݵþ¤Úó ßþ öüõ

,Àª Tij ýÜÿÆõ Âþ¥ ýú ýÈþ¤ ýù¤Þª rij Âðri,j−1 ≤ rij ≤ ri+1,j

.Àîüõ O(n2) ¤ Ûù¤ þ ݵþ¤Úó ¤¢ ëê ýΤ ¥ ù¢Ôµ¨

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 84 ³õî ü¨Àúõ ýùÀØÈ÷¢

Page 22: ce.sharif.educe.sharif.edu/courses/92-93/2/ce354-1/resources/...ûݵþ¤ Úó Û Ü½ ø ü ÂÏ ûݵþ¤ Úó ü ÂÏ ¤¢ þ (ýÃþ¤ õ ÷ ) ©ø¤ (Dynamic Programming)

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

ñ·õ

n = 4

a1 < a2 < a3 < a4

p1 = 14

p2 = 18

p3 = p4 = 116

q0 = 18

q1 = 316

q2 = q3 = q4 = 116

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 85 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

ûñøÀ:Àþüõ Âþ¥ ñøÀ ¤¢ ùÀªµÔð ݵþ¤Úó Óܵ¿õ ÛÂõ

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 86 ³õî ü¨Àúõ ýùÀØÈ÷¢ ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

0 1 2 3 4

c00 = 0 c01 = 9 c02 = 18 c03 = 25 c04 = 330 w00 = 2 w01 = 9 w02 = 12 w03 = 14 w04 = 16

r01 = a1 r02 = a1 r03 = a1 r04 = a2

c11 = 0 c12 = 6 c13 = 11 c14 = 181 w11 = 3 w12 = 6 w13 = 8 w14 = 10

r12 = a2 r13 = a2 r14 = a2

c22 = 0 c23 = 3 c24 = 82 w22 = 1 w23 = 3 w24 = 5

r23 = a3 r24 = a4

c33 = 0 c34 = 33 w33 = 1 w34 = 3

r14 = a4

c44 = 04 w44 = 1

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 87 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

ñ·õ ´¡¤¢

T01

a1

T04

a2

T24

a4

T23

a3

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 88 ³õî ü¨Àúõ ýùÀØÈ÷¢

Page 23: ce.sharif.educe.sharif.edu/courses/92-93/2/ce354-1/resources/...ûݵþ¤ Úó Û Ü½ ø ü ÂÏ ûݵþ¤ Úó ü ÂÏ ¤¢ þ (ýÃþ¤ õ ÷ ) ©ø¤ (Dynamic Programming)

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

(Knapsack) üµÈóî ýûÜÿÆõ:ý¢ø¤ø¤ ö¥ø Àø M ÛÞ üþ÷ üµÈóî ×þ •¤ á÷ N •

Ni  i á÷ ¤ ¢Àã •Wi ô i á÷ ¤ ö¥ø •

Ci ô i á÷ ¤ ©¥¤ •.ÀµÆû ¼½¬ ¢Àä Wi ø M :­Âê

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 89 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

û¤ Âð îý¤Ï Ýî  öØõ À þ f õî û¤ ßþ ¤ üµÈóî Ýû¡ üõ.¢ª È û¤ ©¥¤ áÞ¹õ ,Àª µª¢ ©¥¤

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 90 ³õî ü¨Àúõ ýùÀØÈ÷¢ ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

¢ª  üµÈóî ø ,Ni = 1 ,Ci = 0 :ñø ´ó.´¨ NP-Complete ýÜÿÆõ ×þ î ´¨ ¤úÈõ 0-1-Knapsack ÜÿÆõ ßþ

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 91 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

(Backtracking) ¢ÂðÅ Ûù¤

N i ýû¤ ¥ M ýù¥À÷ üµÈóî ö¢Âî ÂKnapsack (M, i)

. returns true if M can be filled from loads i to N1 if M = 02 then return true3 if M < 0 or i > N4 then return false

. load i is a candidate5 if Knapsack (M −Wi, i + 1)6 then Print i, Wi7 return true8 elsereturn Knapsack (M, i + 1)

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 92 ³õî ü¨Àúõ ýùÀØÈ÷¢

Page 24: ce.sharif.educe.sharif.edu/courses/92-93/2/ce354-1/resources/...ûݵþ¤ Úó Û Ü½ ø ü ÂÏ ûݵþ¤ Úó ü ÂÏ ¤¢ þ (ýÃþ¤ õ ÷ ) ©ø¤ (Dynamic Programming)

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

.Àª µªÀ÷ ÜÿÆõ î ´¨ üõÚû ´ó ßþÂÀ

T (n) = 2T (n− 1) + Θ(1)⇒ T (n) = Θ(2n)

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 93 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

÷¤î¤î Û ù¤

BlindKnapSack ()1 for i← 0 to 2N − 12 do find the N-bit binary representation of i3 find the loads with 1’s in binary form of i4 if the sum of weights of the selected loads is equal to M5 then this is one solution

.Àîüõ ÛÞä Ýû À÷õ ݵþ¤Úó ø¢ ßþ ´ó ßþÂÀ ¤¢

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 94 ³õî ü¨Àúõ ýùÀØÈ÷¢ ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

þ Ûù¤

i 1 ýû¤ ¥ j üµÈóî ö¢Âî  ,S[i, j] :ÜÿÆõÂþ¥?À÷ª Û ú Àþ ûÜÿÆõÂþ¥ ýÞû þÝû ÜÿÆõÂþ¥ ö ,Ýþ¤¢Â ¥ ¤ ×þ ,Àª ùÀª Û ú ÜÿÆõ Âð .Ü :.¢ª Û ú Àþ

Wi ≤M :­Âê:SM×N ÅþÂõ´¨ k > 0  ÷Âð ø ´¨ ÂÔ¬ ¤ÀÖõ ßþ ,¢Âî  öµ÷ ¤ j üµÈóî Âð :S[i, j].Ýû¢üõ ¤Âì üµÈóî ¤¢ î ´¨ ý¤ ßþ¡ ýù¤Þª k î

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 95 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

0 1 j k = j + Wi M

i

N

1

S[i, k] = S[i− 1, k] ∨ S[i− 1, j]

i− 1

?¢Âî  i 1 ¥ ýû¤ ¤ j ýù¥À÷ üµÈóî öüõ þ :S[i, j]

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 96 ³õî ü¨Àúõ ýùÀØÈ÷¢

Page 25: ce.sharif.educe.sharif.edu/courses/92-93/2/ce354-1/resources/...ûݵþ¤ Úó Û Ü½ ø ü ÂÏ ûݵþ¤ Úó ü ÂÏ ¤¢ þ (ýÃþ¤ õ ÷ ) ©ø¤ (Dynamic Programming)

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

0 1 M

N

1

W1ñø ÂΨ ,áøª

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 97 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

N

1

W1W2 W1 + W20 1 M

ôø¢ ÂΨ

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 98 ³õî ü¨Àúõ ýùÀØÈ÷¢ ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

N

1

W1W2 W1 + W20 1 M

ô¨ ÂΨ

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 99 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

N

1

0 1 M

¡ ÂΨ

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 100 ³õî ü¨Àúõ ýùÀØÈ÷¢

Page 26: ce.sharif.educe.sharif.edu/courses/92-93/2/ce354-1/resources/...ûݵþ¤ Úó Û Ü½ ø ü ÂÏ ûݵþ¤ Úó ü ÂÏ ¤¢ þ (ýÃþ¤ õ ÷ ) ©ø¤ (Dynamic Programming)

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

0 1 j k = j + Wi M

i

N

1

:ö¢Âî  ÂÚþ¢ á÷

S[i, k]← i ,Àª µªÀ÷ ¤ÀÖõ S[i, k] Âð

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 101 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

ÅþÂõ ö¢Âî Â(k = j + Wi ­Âê) :ݵþ¤Úó ª

S[1,W1] = 1 :Ýþ¤¢ ñø ÂΨ ¤¢ •.¢ªüõ  i− 1 ÂΨ §¨  i ÂΨ •.¢ªüõ ü³î i ÂΨ ¤¢ i− 1 ÂΨ Âþ¢Öõ ýÞû Àµ •.Àª ùÀÈ÷  üܱì ýû¤ ͨ S[i, k] Âð ,Ýîüõ  ¤ S[i, k] ,S[i, j] ¥ •.Ýîüõ  i ¤ ¢Àä ×þ ÍÖê ¤ S[i, k] ,S[i, j] <> i þ ,j = 0 Âð •

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 102 ³õî ü¨Àúõ ýùÀØÈ÷¢ ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

KnapSack-1 (M, Weight)1 N ← length[Weight]2 for i← 1 to N3 do for j ← 0 to M −Wi

4 do S[i, j]← S[i− 1, j]5 k ← j + Wi

6 if (j = 0) or((S[i, j] > 0) and (S[i, j] <> i) and (S[i − 1, k] =

0))7 then . we can fill S[i, k], putting load i last8 S[i, k]← i

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 103 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

.¢¢ ô¹÷ öüõ ¤ ¤î ßÞû þ¤ ×þ KnapSack-1 (M, Weight)

1 N ← length[Weight]2 for i← 1 to N3 do for j ← 0 to M −Wi

4 do k ← j + Wi

5 if (j = 0) or((S[j] > 0) and (S[j] <> i) and (S[k] = 0))

6 then . we can fill S[i, k], putting load i last7 S[k]← i

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 104 ³õî ü¨Àúõ ýùÀØÈ÷¢

Page 27: ce.sharif.educe.sharif.edu/courses/92-93/2/ce354-1/resources/...ûݵþ¤ Úó Û Ü½ ø ü ÂÏ ûݵþ¤ Úó ü ÂÏ ¤¢ þ (ýÃþ¤ õ ÷ ) ©ø¤ (Dynamic Programming)

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

Print-One-Result (S, j). print the one solution for knapsack of size j

1 if j = 02 then return3 k ← S[j]4 if k > 05 then Print k6 Print-One-Result (j −Wk)

i ¤ ¥ ù¢Ôµ¨ üØþ) Àª µª¢ ×þ ¥ Ç S[i, j] ýÜÿÆõ Âð î ßþ Ûó¢ëê Ûù¤ ,Ýû¢üõ S[i− 1, j] ¤ ´þóø õ (ö ¥ ÂÝî ýû¤ ýÂÚþ¢ ø.j = k þ S[j − k] < k fÞµ ,S[j] = k Âð üãþ .´¨ ´¨¤¢

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 105 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

 f õî ø ,1 < Ni <∞ ,Ci = 0 :(üÜî) ôø¢ ´óø S[i − 1, j] ý û Ü ÿ Æ õ þ¥ ,S[i, j] ý ú Û ý .S[i, j] : Ü ÿ Æ õ þ¥ (Ý ú õ).Àª ùÀª Û ú Àþ Ýû S[i− 1, j −Wi].¢Âî Û ¢ªüõ Ýû þ¤ ×þ ¤ö ø ¢¤¢ þ Ûù¤ ÜÿÆõ Å:´¨ Ôóõ ø¢ Ûõª S[j] ýþ¤¢ ´ó ßþ ¤¢üµÈóî ßþ Âð .¢Âðüõ ¤Âì j üµÈóî ¤¢ î ý¤ ßþ¡ ýù¤Þª :last(S[j]) •.´¨ ÂÔ¬  Ôóõ ßþ ,¢Âî  öµ÷ ¤.üµÈóî ßþ ¤¢ last(S[j]) ¤ ¥ ùÀª ù¢Ôµ¨ ¢Àã :Num(S[j]) •.i á÷ ¥ ¤ ¢Àã :Ni

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 106 ³õî ü¨Àúõ ýùÀØÈ÷¢ ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

ݵþ¤Úó ª¤¬ ßþ ¤¢ .Ýîüõ  ¤ ÅþÂõ ô i ÂΨ i Âû ý¤Âì ¤ S[k] üÎþª ´½ S[j] ¥ ,k = j + Wi ­Âê ø ,j = 1..M −Wi ý •.Ýîüõ  ô i ¤ ¥ ÂÚþ¢ ¢Àä ×þ ö¢¢.¢ªüõ  ,Àª ùÀÈ÷  f ±ì î ü¤¬ ¤¢ ÍÖê S[k] •¤ ßþ¡ üóø Àª  S[j] þ ,j = 0 Âð ,¢ªüõ ù¢Ô µ¨ ¤ ß óø ý i ¤ •.Àª±÷ i ö ¤¢ ùÀª ù¢Ôµ¨.Àª ¢õ üêî ¢Àã Âð ,¢ªüõ ù¢Ôµ¨ f¢À¹õ i ¤ •.À÷Âðüõ ¤Âì üµÈóî ¤¢ öªù¤Þª °Â û¤ :

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 107 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

KnapSack-2 (M, Weight)1 N ← length[Weight]2 for j ← 1 to M3 do last(S[j])← 04 for i← 1 to N5 do for j ← 1 to M −Wi

6 do k ← j + Wi

7 if last(S[k]) = 08 then . trying to fill S[k]9 if (j = 0) or ((last(S[j]) > 0)

10 then if last(S[j]) 6= i))11 then . use load i for the first time12 last(S[k])← i13 Num(S[k])← 114 elseif Num(S[j]) < Ni

15 then last(S[k])← i16 Num(S[k])← Num(S[j]) + 1ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 108 ³õî ü¨Àúõ ýùÀØÈ÷¢

Page 28: ce.sharif.educe.sharif.edu/courses/92-93/2/ce354-1/resources/...ûݵþ¤ Úó Û Ü½ ø ü ÂÏ ûݵþ¤ Úó ü ÂÏ ¤¢ þ (ýÃþ¤ õ ÷ ) ©ø¤ (Dynamic Programming)

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

Print-One-Result (S, j). print the one solution for knapsack of size j

1 if j = 02 then return3 k ← last(S[j])4 if k > 05 then Print k6 Print-One-Result (j −Wk)

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 109 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

 f õî ø ,Ni =∞ ,Ci = 0 :ô¨ ´ó.¢ª ù¢Ôµ¨ ¤ ×þ ¥ Ç À÷üõ i á÷ ¤ ´ó ßþ ¤¢

KnapSack-3 (M, Weight)1 N ← length[Weight]2 S ← 03 for i← 1 to N4 do for j ← 0 to M −Wi

5 do k ← j + Wi

6 if j = 0 or S[j] 6= 07 then S[k]← i

.Àîüõ ¤î ´¨¤¢ Ã÷ ´ó ßþ ¤¢ Print-One-Result ýþø¤

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 110 ³õî ü¨Àúõ ýùÀØÈ÷¢ ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

üµÈóî ýÜÿÆõ ×þ (Àª Þî ûب ¢Àã Ýû¿÷ Âð) ñ ö¢Âî ¢Â¡ ýÜÿÆõ.´¨ ni =∞

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 111 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

 f õî ø Ci > 0 ,Ni = 1 :ô¤ú ´óø S[i− 1, j] ýûÜÿÆõÂþ¥ ýû ÝÞþÃîõ  S[i, j] ýÜÿÆõ ýú S[i− 1, j −Wi].À÷ª Û ú Àþ ø ¢ªüÞ÷ ù¢Ôµ¨ i ¤ ¥ ÜÿÆõÂþ¥ ø¢ ßþ ¤¢þ Ûù¤ :ú ýÜÿÆõÂþ¥.j üµÈóî ö¢Âî ý i 1 á÷ ¥ ýû¤ ©¥¤ ßþÂµÈ : value(S[i, j])ëê üµÈóî ¤¢ ¤ ßþ¡ : last(S[i, j])

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 112 ³õî ü¨Àúõ ýùÀØÈ÷¢

Page 29: ce.sharif.educe.sharif.edu/courses/92-93/2/ce354-1/resources/...ûݵþ¤ Úó Û Ü½ ø ü ÂÏ ûݵþ¤ Úó ü ÂÏ ¤¢ þ (ýÃþ¤ õ ÷ ) ©ø¤ (Dynamic Programming)

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

KnapSack-4 (M, Weight)1 N ← length[Weight]2 for i← 1 to N3 do for j ← 0 to M4 do V alue(S[i, j])← 05 for i← 1 to N6 do for j ← 1 to M −Wi

7 do k ← j + Wi

8 if j = 0 or V alue(S[i− 1, j]) > 09 then . we may be able to fill S[i, k]

10 if V alue(S[i− 1, k]) < V alue(S[i− 1, j]) + Ci

11 then last(S[i, k])← i12 V alue(S[i, k])← V alue(S[i− 1, j]) + Ci

13 elseS[i, k]← S[i− 1, k]

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 113 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

:´ª÷ öüõ Ã÷ ¤ ,ݪ ù¢Âî Û ÅþÂõ Âð

Print-One-Result (i, j)1 if j = 02 then return3 k ← last(S[i, j]) . k has to be > 04 Print k5 Print-One-Result (k − 1, j −Wk)

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 114 ³õî ü¨Àúõ ýùÀØÈ÷¢ ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

öüÞ÷ ¤ ùÀª ù¢Ôµ¨ ýû¤ üóø .¢Âî Û Ýû þ¤ ×þ öüõ ¤ ÜÿÆõ ßþ? .¢¤ø ´¨¢.´¨ ©¥¤ öÞû S[0..M ] ýþ¤

KnapSack-4 (M, Weight)1 N ← length[Weight]2 for j ← 0 to M3 do S[j]← 04 S[W1]← C1

5 for i← 2 to N6 do for k ← M downto Wi

7 do j ← k −Wi

8 if S[k] < S[j] + Ci

9 then S[k]← S[j] + Ci

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 115 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

öüÞ÷ ¤ ùÀª ù¢Ôµ¨ ýû¤ üóø .¢Âî Û Ýû þ¤ ×þ öüõ ¤ ÜÿÆõ ßþ? .¢¤ø ´¨¢ö¢Âî ý ´¨ ßØÞõ ,Àª j ýóî ö¢Âî ý ¤ ßþ¡ k Âð îßþ ýÂ.Àª ùÀª ù¢Ôµ¨ k ¤ ¥ Ýû j −Wk ýú

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 116 ³õî ü¨Àúõ ýùÀØÈ÷¢

Page 30: ce.sharif.educe.sharif.edu/courses/92-93/2/ce354-1/resources/...ûݵþ¤ Úó Û Ü½ ø ü ÂÏ ûݵþ¤ Úó ü ÂÏ ¤¢ þ (ýÃþ¤ õ ÷ ) ©ø¤ (Dynamic Programming)

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

 f õî Ci > 0 ,ni <∞ :ݹ ´ó ¤¢ Âð) S[i− 1, j] ýÜÿÆõÂþ¥ ¨ ¥ S[i, j] ýÜÿÆõ Âþ¥ ´ó ßþ ¤¢ú ¤¢ Âð) S[i− 1, j −Wi] þ ø ,(Àª ùÀÈ÷ ù¢Ôµ¨ i á÷ ¤ f ¬ ö ýúÇ ú ¤¢ Âð) S[i, j −Wi] ¥ þ (Àª ùÀª ù¢Ôµ¨ i á÷ ¤ ¥ ¢Àä ×þ ÍÖê¢õ ¤ ßþ ¥ üêî ¢Àã îö ¯Âª ,Àª ùÀª ù¢Ôµ¨ i á÷ ¤ ¥ ¢Àä ×þ ¥.´¨ ßþµú Àû¢ ´¨¢ ¤ ©¥¤ ßþÂÇ î üµó .Àþüõ ´¨¢ (Àª.Àª ú S[i, j −Wi] ¢¤À÷ üõøÃó ÷Ô¨bµõ.¢¤À÷ ýÀã ø¢ ýþ Ûù¤ ÜÿÆõ Å

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 117 ³õî ü¨Àúõ ýùÀØÈ÷¢

ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

ýÀ㨠ýþ Û

i ¤ î i 1 ýû¤ ¥ j üµÈ óî ö¢Âî  ý ßþ ©¥¤ S[i, j, k].Àª ùÀª ù¢Ôµ¨ ¢Àä k ·îÀ

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 118 ³õî ü¨Àúõ ýùÀØÈ÷¢ ûݵþ¤Úó Ûܽ ø üÂÏ'

&

$

%

.¢È÷  f õî üµÈóî ´¨ ßØÞõ ßþ©¥¤ ö¢Âî À ýÂ.Ýþ¢Âðüõ ©¥¤ ßþÂï¤Ã ñ±÷¢ ô N ÂΨ ¤¢ ¤¬ ßþ ¤¢

ü¨Àì ÀÞ½õ c© 1392 ÀÔ¨ 4 119 ³õî ü¨Àúõ ýùÀØÈ÷¢