öä
Þû¤ ¢µ¨
°óÎõ ´¨Âúê
õÀÖõ
1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ü±÷¹õ ýû¢Þ÷ .1
86 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ö¤ ø¢ 3.7.3
87 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ¤¢ 4.7.3
89 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . éÁ 5.7.3
126 . . . . . . . . . . . . . . . . (û Åþ Âõ ® ݵþ ¤ Úó) ߨµ¨ ݵþ ¤ Úó 4.2.4
n
128 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ±¨½õ 1.3.4
k
ùÀØÈ÷¢ ³õî ü¨Àúõ µª¤ öþ¹È÷¢ ¥ üãÞ Í¨ î Àª üõ ݵþ ¤ Úó
ú ×
ü ¨¤ ê ¤Ã ê ô ÷ Í ¨ 1384 ñ ¨ ù õ ¤£ ¤¢ í¤ ù Ú È ÷¢ ü ¨À ú õ ø ü ê
í¤ ùÚÈ÷¢
ü±÷¹õ ýû¢Þ÷ .1
À þ ø¢ ùÀ ª µ ê ð Ñ ê þ øÂ ö õ¥ ö ü õ ú ÷ Í ¨ î ü û¤Ã
6 f1
f2 ∈ O(f1 )
...
... f2
...
...
. -
M
6
f2 f1 ∈ O(f2 )
f1 f2 ∈ O(f1 )
.˻
Âç Ý÷ üõ ¤ °þ® Âþ ¥ À÷¤À÷ üøÔ µØî þ ýøÆõ µØî ¹þ ¤¢
:Ýû¢
θ ¢Þ÷ 3.1
θ(f (n)) = O(f (n)) ∩ Ω(f (n)) : Ýþ ¤¢ùÚ÷ f : N −→ R+ Âð
: ñ·õ
: µØ÷
üþ ßþ öÂî Àþ âìø ¤¢,¢Þ÷ ù¢Ôµ¨ Ω ¥ Àþ ݵþ ¤ Úó ýÀ É¿È ýÂ
. Ýþ ¤ ø ´¨¢ ö ýÂ
3 SM ALL − O¢Þ÷ .4.1
: ñ·õ
c=1
2n ∈ o(n) ⇐⇒ ∀c > 0 2n ≤ cn F =⇒ 2n ∈
∞
∀n∈N ⇐⇒ / o(n)
c= 13
∞
n ∈ o(2n) ⇐⇒ ∀c > 0 ∀ n ∈ N n ≤ c2n ⇐⇒ / o(2n)
F =⇒ n ∈
: î
: 2 ±
M AX{f (n), g(n)} ≤ f (n) + g(n) =⇒ f (n) + g(n) ∈ Ω(M AX{f (n), g(n)})
f (n) + g(n) ∈ O(M AX{f (n), g(n)}), f (n) + g(n) ∈ Ω(M AX{f (n), g(n)})
=⇒ f (n) + g(n) ∈ Θ(M AX{f (n), g(n)})
:ßþ ÂÞ
: ñø ù¤
√
(n! = 2πn) Ùóµ¨ ñõÂê ¥ ù¢Ôµ¨ ±
( ne )n
√ √
n! = ( ne )n 2πn =⇒ log n! = log( ne )n + log 2πn
√
=⇒ log n! = n log ne + log 2πn
√
=⇒ log n! = n log n − log en + log 2πn
√
=⇒ log n! = n log n + log e2nπn
=⇒ log n! ∈ Θ(n log n)
: ôø¢ ù¤
.log n!∈ Ω(n log n) ø log n! ∈ O(nlog n) ÝþÞ÷ ± Àþ ¹þ ¤¢
(n!)2 = (1 × 2 × . . . × (n − 1)n)2 ⇒
Q
n
(n!)2 = (1 × 2 × . . . × (n − 1)n)(n(n − 1) × . . . × 1) = x(n − x + 1)
x=1
y = −x + (n + 1)x
2
1 =⇒ y (n+1)2
x = n+ max =
x = 1 ⇒ y = n, x = n ⇒4 y = n =⇒ y
2
min = n
5 Ìì À ± .7.1
(n + 1)2 n + 1 2n
n
Y n
Y
n ≤ (n!)2 ≤ =⇒ nn ≤ (n!)2 ≤ ( ) =⇒
x=1 x=1
4 2
n+1 n
nlogn ≤ 2logn! ≤ 2nlog ≤ 2nlogn =⇒ logn ≤ logn! ≤ nlogn
2 2
=⇒ log n! ∈ θ(n log n)
o(f (n)) ⊆ O(f (n))\Ω(f (n)) = O(f (n))\(O(f (n))) ∩ Ω(f (n))
=⇒ o(f (n)) ⊆ O(f (n))\θ(f (n))
.¢ª ÛþÀ± ýøÆ À÷ üÞ÷ üÜî ´ó ¤¢ ë ê Ìì Àû¢ öÈ÷ : ñ·õ
:Û
µª¢ ¤ Âþ ¥ â Àî Âê, Ýû¢ üõ öÈ÷ ¤ á®õ ßþ ËÖ÷ ñ·õ ¥ ù¢Ôµ¨
: ݪ
ü±÷¹õ ýû¢Þ÷ üêÂãõ .1 ÛÊê 6
12 ¢Âê ýû n
g(n)= n ø ¥ ýû n
: Ýþ ¤¢
0 0
∞ ∞ g(n)
g(n) ∈ Ω(n) ⇔ ∃c > ∀ n g(n) ≥ cn ⇔ ∃c > ∀n c ≥n⇔F
(ÀµÆ÷ ¤¢ öÂî ¥ ¢Âê ¢Àä) =⇒ g(n) 6∈ Ω(n)
Àª ¤Âì Τ ßþ Àî Âê, ÷ þ ´¨ ¤Âì g(n) ∈ o(n) Τ ݱ ñ
: Ýþ ¤¢ Å
î ü ó ¤¢ À µ Æ û ýÀ ã ø ü ¨ Ø ã ÷ Ωø OÀ û¢ ö È ÷ : ß þ  Þ
: Û
=⇒ g(n) ∈ O(h(n))
: Û
: Ýþ ¤¢ Å g(n) ∈ θ(f (n)) Ýî üõ Âê Ã÷ ü÷¤Ö ´¬¡ ü¨¤  ýÂ
g(n) ∈ θ(f (n)) =⇒ g(n) ∈ O(f (n)), g(n) ∈ Ω(f (n)) =⇒ f (n) ∈ Ω(g(n)),
f (n) ∈ O(g(n)) =⇒ f (n) ∈ Ω(g(n)) ∩ Og(n)) =⇒ f (n) ∈ θ(g(n))
.Àª üõÃ÷ ü÷¤Ö ´¬¡ ý¤¢ θ Àû¢ üõ öÈ÷ î
L= limn→∞ fg(n)
(n)
, f, g : N −→ R +
: ÀþÞ÷ ±
: ñ·õ
2 ) =⇒ 2 ∈ O(2log2 ) =⇒ nn ∈ O(n!)
n n!
n logn2 ∈ O(logn! n log2
:Û
:Û
ùÀª Óþ Âã Û±ì ¥ óø ¤ÀÖõ À þ ×þ ý ùø ä ø ´¨ ö Û±ì õ ýÜÞ
. ´¨
n Â ç µ õ × þ Í Ö ê ø ´ ¨ ´ k ,À µ Æ û É ¿ È õ Û ± ì ¥ t0 , · · · , tk−1 ° þ ®
Âê Àµ ¤¢ .Ýî üõ ù¢Ôµ¨ Ê¿Èõ ó¢ãõ ¥ Þãõ ¢ãõ ßþ Û ýÂ
ó¢ãõ Û ßþ ,f (n) = 0 üãþ Àª ßÚÞû á÷ ¥ üµÈð¥ ó¢ãõ Ýî üõ
:Ýþ ¤¢ ¤ Âþ ¥ ´ °þ® üµÈð¥
a0 tn + a1 tn−1 + · · · + ak tn−k = 0
Èþ ¤ ñ·õ ý ,Àª ý ¤ÂØ ü¡Â ñ ßä ¤¢ø üÖÖ ýûÈþ ¤ ý¤¢ ó¢ãõ(2
Àìê üóø ´¨ (x − rp )m ¤ µîê ý¤¢ ¤±ä üãþ) Àª m üþµÆ ¥ ý ¤ÂØ rp
m+1
: ´¨ Âþ ¥ ôÂê ó¢ãõ ¤ ¬ ßþ ¤¢ (´¨(x − rp ) ¤ µîê
¤ øõ¢ Ìì ¥ù¢Ôµ¨ ,ÀªüÖÖ Âè ø üõûõ ýû Èþ ¤ ý¤¢ ó¢ãõ Âð(3
ö üõ ùÀª µÔð Ê¿Èõ ó¢ãõ üÖÖ ýû Èþ ¤ ¢¤ õ ¤¢ î ö±ª fÖì¢
: ñ·õ
n n≤1
g(n) =
5g(n − 1) − 6g(n − 2) else
: Û
2tn−1 − tn−2
tn = t0 = 1
t1 = 3
: Û
tn − 2tn−1 + tn−2 = 0 =⇒ x2 − 2x + 1 = 0 ⇒ x1 = x2 = 1
⇒ tn = c1 + c2 n t0 = 1 , t1 = 3 ⇒ c1 = 1, c2 = 2 =⇒ tn = 1 + 2n
2tn−1 + 1
tn = t0 = 0
t1 = 1
: Û
: Àþ ÂÚ ÂÑ÷ ¤¢
ó¢ãõ ýû Èþ ¤ ±¨½õ ¥ Å .Ýî üõ ±¨½õ ¤ ó¢ãõ ýû Èþ ¤ ų¨
üõÞä ö üõ Àª µÔð ßÚÞû ¢ãõ ¢¤ õ ¤¢ »÷ Èõ f Öì¢ üªø ¤
tn − 7tn−1 + 12tn−2 = 2n + n + 3n (n + 1)
: Ýþ ¤ ø üõ ´¨À ¤ Ê¿Èõ ýó¢ãõ
⇒ r1 = 1, r2 = 1, r3 = 2, r4 = 3, r5 = 3, r6 = 3, r7 = 4
⇒ tn = c1 (1)n + c2 n(1)n + c3 (2)n + c4 (3)n + c5 n(3)n + c6 n2 (3)n + c7 (4)n
: ñ·õ
1 n=1
t(n) =
2t( n2 ) + n o.w
:Û
n = 2k ⇒ t(n) = t(2k )
t(2k ) = 2t( 22 ) + 2k = 2t(2k−1 ) + 2k
k
g(k) = t(n)
⇒ g(k) = 2g(k − 1) + 2k ⇒ (x − 2)(x − 2) = 0 ⇒ r1 = 2, r2 = 2
=⇒ g(k) = c1 2k + c2 k 2k 2k = n =⇒ log2 n = k
t(n) = c1 n + c2 n logn2
t(1) = c1 = 1 t(2) = 2t(1) + 2 = 4 = 2c1 + 2c2 ⇒ c2 = 1
=⇒ t(n) = n + n logn2
: ñ·õ
1 n=1
3
2 n=2
T (n) =
3 n 1 n 1
2T(2) − 2T(4) − n o.w
:Û
c1 + c2 = 1
T (n) = c1 + c2 n1 + c3 lgnn , c1 + c22 + c23 = 32
c1 + c42 + c23 = 32
=⇒ T (n) = 1 + lg n
n
t(n) + nt(n − 1) = 2n!
t(0) = 1
:Û
t(n−1)
t(n) + nt(n − 1) = 2n! =⇒ t(n)
n! + (n−1)!
=2
t(n)
n! = g(n)
: ñ·õ
.Àî Û ¤ Âþ ¥ ó¢ãõ
a n=0
b n=1
T (n) =
1+T (n−1)
T (n−2)
o.w
: Û
: ñ·õ
.Àî Û ¤ Âþ ¥ ó¢ãõ
üµÈð¥ ýû ݵþ ¤ Úó .2 ÛÊê 14
1
4−t(n− 1) n>1
t(n) =
1 n=1
:Û
t(2) = 13 , t(3) = 11
3 , t(4) = 11 =⇒ t =
41 n
pn
qn
pn+1 = qn =⇒ pn = qn−1
√
qn+1 = 4qn − qn−1 =⇒ (x2 − 4x + 1) = 0 =⇒ x = 2 ± 3
√ √
=⇒ qn = c1 (2 + 3)n + c2 (2 − 3)n q2 = 3, q3 = 11
µª¢ üþÂÖµ¨ Τ ×þ ùø ä øÀª É¿Èõ Û±ì ¥ óbÆõ ¥ óø ´ã®ø À
Ø÷ üãþ ÀþÞ÷ ͱÂõ ö Û±ìõ ýÜÞ À þ ×þ ¤ ¡ ÜÞ À÷µ î ݪ
ßþ î ´¨ ö éÀû .´¨ µêÂÚ÷ ¤Âì µØî ׯþ¢ ýø ¤ ý µð¤ Ã ×Æþ¢ ÃðÂû
ùÀ ÷ Þ ì ü Ø Þ î Ü õ ¥ ù¢ Ô µ ¨ ¤ î ß þ î ¢Â î Û Ö µ õ ô jÜõ ¤ × Æ þ¢ n
¤ Âû ø ¢Âð üÞ÷¤Âì µØî ׯþ¢ ýø ¤ µð¤ Ã ×Æþ¢ ÃðÂû ø ¢Âð üõ ¤ ¬
i −→ j i + j + x = 1 + 2 + 3 −→ x = 6 − (i + j)
j 6-(i+j)
i
T (0) = 0
T (n) = T (n − 1) + 1 + T (n − 1) =⇒
T (n) = 2 T (n − 1) + 1 ⇒ T (n) = 2n − 1
üµÈð¥ ýû ݵþ ¤ Úó .2 ÛÊê 16
:ßþ ÂÞ
öµ÷ ¤ üØÆþ¢ ºû ý÷û  ób Æõ ¤¢ ö ܨø î ÀÆþ üÞµþ ¤ Úó
(.Àî ±¨½õ Àû¢ üõ ¤ ô j Üõ ׯþ¢ n ñÖµ÷ ý ô¥ ýû ´îÂ
: Û
T ( 0) = 0
T ( 1) = 2 ⇒ T (n) = 3n − 1
T (n) = 3 T (n − 1) + 2
: ñ·õ
¤ ¤÷ ßþ ýû ÷¡ ¥ ü¡Â Ýû¡ üõ î Ýþ ¤¢ n ñÏ ý ¤÷ Àî Âê
¤ Àî üõ ¢¹þ ¤ ¢ÊÖõ ßþ ýÂ ßØÞõ ýû ´ó ôÞ î üµÈð¥ ݵþ ¤ Úó
¢ÊÖõ ßþ ý ¤ ߨÞõ ¢Àã î üµÈð¥ Τ ß»Þû .Àþ ¤ ø ´¨¢
Ù÷¤ ø À÷ Ù÷¤ ÀÔ¨ ÷¡ n î ´¨ ö Âê).Àþ ¤ ø ´¨À Ã÷ ¤Àû¢ üõ õ
:Û
17 üµÈð¥ ýû ݵþ ¤Úó .2.2
a
a[1] a[2] ............. a[n]
ù¨ a[3]
ù¨ a[2]
ÀÔ¨ a[3]
a[1] ù¨ a[3]
ÀÔ¨ a[2]
ÀÔ¨ a[3] ù¨
2 n=1
4 n=2
a(n) =
7 n=3
1 × a(n − 1) + 1 × a(n − 2) + 1 × a(n − 3) else
: ñ·õ
ÝÞþ ÃîõûÆþÖõ ¢Àã ÛìÀ Ýû¡ üõ.Ýþ ¤¢ ¤µ¡ ¤¢ n ñÏ ý þ¤
: Û
ø Ýþ ¤¢¥÷ ñø ÷¡ø¢ ÝÞ÷ üõ ø ÝÞþ Ãîõ ö¢¤ ø ´¨À ý ÆþÖõ ×þ î ´Ôð
ø¢ ÝÞ÷ üõ ¤ ¢Àä n-2 ÝÞ÷ üõ ø ñø ¢Àä ø¢ ÝÞþ Ãîõ ¤ ¢Àä n-2 ÝÞþ Ãîõ Àþ
.
1 ´¨ ¥÷ ÆþÖõ ¨ fãÞ Å. Ýî ÆþÖõ ñø ¢Àä
| {z } | {z }
2 n−2
: Ýþ ¤¢ Å
1 n=2
T (n) = =⇒ T (n) = 32 n − 2
T (n − 2) + 3 n = 2k
ß üþú÷ ÝÞ÷ üõø ÝÞþ Ãîõ ö¢Þ÷ À ý Ã÷ ÆþÖõ ø¢ ų¨, Ýþ ¤ ø üõ ´¨¢
( 32 (n − 1) − 2) + 2fãÞ Å, Ýþ ¤¢ ¥÷÷¡ n-1 ÝÞ÷ üõø ÝÞþ Ãîõ ø ñø ý÷¡
: Ýþ ¤¢ Ûî ¤¢ Å. ´¨ ¥÷¢Âê n ý ÆþÖõ
0 n=1
T (n) = 3 (n − 1) n = 2k + 1
2
3
2n − 2 n = 2k
: AVL ´¡¤¢
1 ùÂð Âû ´¨¤ ø ² ´¡¤¢ Âþ ¥ áÔ¤ é
µ¡ î üø¢ø¢ ý¹µÆ ´¡¤¢
ùÂð ö üõ O(log n) ÆþÖõ ý Š. ´¨ log n ¥´¡¤¢ ßþ áÔ¤ . Àª
. ¢Âî ´þ Ãþø ¤ û
: ñ·õ
: Û
T(n-2) T(n-1)
T(0) T(1) T(2) T(3) T(n)
1 n=0
2 n=1
T (n) =
4 n=2
T (n − 1) + T (n − 2) + 1 o.w
üµÈð¥ ýû ݵþ ¤ Úó .2 ÛÊê 20
ý Î ¤ T (n) = T (n − 2) + T (n − 1) + 1 ó ± ÷¢ ø ü ÷ ± ê ó ± ÷¢ ß
1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 , 55
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
1 , 2 , 4 , 7 , 12 , 20 , 33 , 54
T (n) = f (n + 2) + (−1)
f (n) = f (n − 1) + f (n − 2) f (0) = 1 , f (1) = 1
√
1 1 + 5 h+2
n ≥ T (h) = f (h + 2) − 1 =⇒ n ≥ √ ( ) − 1 =⇒
5 2
√
n+1 ≥ √ (
1 1 + 5 h+2
) =⇒ log(n+
1
1) ≥ log 5 +(h + 2) =⇒ √
5 2 ϕ ϕ
1 √
h + 2 ≤ log(n+ 1) − log 5 =⇒ h ∈ O(log 5(n+1) ) =⇒ h ∈ O(logn )
√
ϕ ϕ ϕ 2
þ
1 √
1) (n+1) (n+1)
h + 2 ≤ log(n+ × log2ϕ + logϕ 5 = 1.44 log2 +1.67
√
ϕ − logϕ 5 = log2
(n+1)
=⇒ h ≤ 1.44 log2 −0.33 =⇒ h ∈ O(logn
2)
logn2 üãþ ´¡¤¢ áÔ¤ ù¥À÷ ùÂð ×þ ´þ Ãþø ý ÆþÖõ ·îÀ ßþÂ
. ´¨
21 üµÈð¥ ýû ݵþ ¤Úó .2.2
: ñ·õ
ck
c1 < c2 < ... < ck−1 ck+1 < ... < cn
T (k − 1) T (n − k)
T (1) = 1 T (2) = 2
T (n) =
Pn 1 2n
T (k − 1) × T (n − k) = n+ (öî ¢Àä)
k=1 1 n
: ñ·õ
: Û
T ( 0) = 0
T ( 1) = 1 (A)
T ( 2) = 1 (AB)
T ( 3) = 2 A(BC), (AB)C
T ( 4) = 5 A(BCD), (AB)(CD), (ABC)D
⇒ T (4) = T (1).T (3) + T (2)T (2) + T (3).T (1)
..
.
(A1 · · · Am ) (Am+1 · · · An ) ⇒
| {z }| {z }
m n−m
X1
T (n) =
n−
1 2n − 2
T (m)T (n − m) =
n n−1
m=1
:ßþ ÂÞ
:ñ·õ
üµÈð¥ ýû ݵþ ¤ Úó .2 ÛÊê 22
¤¢ ùÀª ÂûÒ ýû ÂÔ¬ ¢Àã î ´¨ ±µãõ ü÷õ¥ n ñÏ 10 ý±õ ¤¢ ýÀî
.ÀþÞ÷ ±¨½õ
:Û
´ó 9 a(n − 1)
z }| {z }| {
1,2,...,9
.´¨ ¢Âê Çþû ÂÔ¬ ¢Àã î n-1 ñÏ üþû µª¤ ôÞ ¢Àã = b(n − 1)
(.Àª ÂÔ¬ ñø ÷¡ î üµó ¤¢)
b(n − 1)
z }| {
0
1 2 n−1
10 10 ......... 10
(n-1) ñÏ û µª¤ ôÞ ¢Àã
= a(n-1)+b(n-1)=10n−1
: ñ·õ
.Àû¢ öÈ÷
23 üµÈð¥ ýû ݵþ ¤Úó .2.2
: Û
1
T(1)=2
2
1
T(2)=4
2 3
4
1 4
3 T(3)=7
2
5 6
7
ôn Í¡ ö¢Âî ê ® ý Å. ¢Âî ¢¹þ ö üõ ÷ T (n − 1) Í¡ n − 1
¹ µ ÷ ¤¢ Å ¢ ª ü õ ê ® À þÀ ÷ n î ¢Â î â Î ì ¤ Û ± ì Í ¡ n − 1À þ
.´ª¢ Ýû¡ ÷ T (n) = T (n − 1) + n
n(n + 1)
T (n) = T (n − 1) + n =⇒ T (n) = +1
2
: ñ·õ
¢Àä ßþ ö üõ Õþ ÂÏ À Ýþù¢Âî ´êþ ¤¢ ¤ n ≥ 2 üã±Ï ¢Àä Àî Âê
: Û
T ( 2) = 1 : 2
T ( 3) = 1 : 3
T ( 4) = 2 : 2 + 2, 4
T ( 5) = 3 : 2 + 3, 3 + 2, 5
T ( 6) = 5 : 2 + 2 + 2, 2 + 4, 3 + 3, 4 + 2, 6
ê® ¤ " 2+ ' ¤±ä ô k − 2 ¢Àä ýû¥Âê Àþ üã±Ï ¢Àä ßõ k ýÂ
: Ýî ê® Àø ×þ , ¢Àä ßõ k − 1 ýû¥Âê ñø ýûÀ÷ø âÞ ø Ýî
: ñ·õ
×þ ø¢ þ üóµõ ÂÔ¬ ø¢ î ´¨ ±µãõ ü÷õ¥ 0,1,2 ôì¤ Ûõª n ñÏ ý µª¤
¤ n ñÏ Â±µãõ ýû µª¤ ¢Àã î ÀÆþ üµÈð¥ Τ ,Àª µªÀ÷ üóµõ
.Àû¢ öÈ÷
:
αn = an + bn + cn
: ñ·õ
éÂÏ À÷ üõ ÍÖê î ´¨ ½Ô¬ ßþ ¤¢ üªõ .Ýþ ¤¢ n×m ½Ô¬ ×þ
: Û
T(n,m-1)
6
c B
d - T(n-1,m)
n
| {z }
A
m
©õ Àª m ñøÀ ýú÷ µ¨ ¢Àã ø n ñøÀ ýûÂΨ ¢Àã Âð ÛØª ¤¢
ÂÆõ T (n − 1, m) ´ó ßþ ¤¢ î Àî ¤ ±ä d ÎÖ÷ ¥ Àþ þ ø ¢¤¢ ¢ø ÂÆõ
: ßþ ÂÞ
üµìø ø ù¢Þ÷ ´îÂ áø Âª ½Ô¬ ý ¥ ¤õ ßþ.Àî üõ ´î ´¨¤ þ ßþ
üµÈð¥ ýû ݵþ ¤ Úó .2 ÛÊê 26
: ßþ ÂÞ
:ßþ ÂÞ
 ð Ý þ  ð ü õ Â Ñ ÷ ¤¢ ´ × þ Ì ä  û ý¥ ,ý  þ ©ø ¤ ¤¢ : ü þ Þ û¤
.Ýþ Âð
1 2 3 4
0 0 0 0 {}
0 0 0 1 {4}
0 0 1 0 {3}
:ßþ ÂÞ
n2 1 ¢À ä ö ¤¢ î ö ü þø¢ â  õ ø µ êÂ ð ¤ n ¢À ä î À Æ þ ý õ ÷Â
:ßþ ÂÞ
a
.T (n) ∈ Θ(nlog b ) î ¢ª üõ ¹µ÷
0 1 0 (3
a
× þ ¥ < δ < , > × þ ýÂ ø f (n) ∈ Ω(nlog b + ) Â ð
. T (n) ∈ Θ(f (n)) ùÚ÷ a f ( nb ) < δ f (n) ݪ µª¢ Àã üþ
¤Â ì ý ¹ µ ÷ ¥ ¢Â ð ¤Â ì à ÷ b nb c þ d nb e ,
n
b ý Â ð µ ± ó)
( . ´¨
:±
.´¨ ´ÞÆì ø¢ Ûõª ±
ÀûÀõ öÈ÷ ´ÞÆì ßõø¢øÀî üõ Ãó÷ n = 1, b, b2 , .. üãþ b > 1¥ ¼½¬ ýû
ê ¬ ø À î À ã ¨ ü ã ± Ï ´ ± · õ ¢À ä Þ û À ÷ ü õ à ó ÷ ß þ ¤ Î î
ÝþÞ÷ üõ ù¢¨ ¤ Âê ý Ìì ± ý üµìø ݪ °ìÂõ Àþ õ ñ ßþ
¤¢ ¤ T(n) À÷õ üã ñ·õ öä . À÷¨Â ÍÜè ¸þµ÷ ¤ õ Àþ±÷ ý¥¨ ù¢¨ ßþ
üµ÷Þ® ºû ¤ ¬ ßþ ¤¢, ´¨ n  ´¨ 2 ¥ üþû ö n üµìø î Àþ ÂÚ ÂÑ÷
:¢Þ÷ Óþ Âã ¤ ¬ ßþ ¤ T(n) â ö üõ Âþ ¥ , T(n)∈O(n) î ´Æ÷
n n=1,2,3,..
T(n)=
n2 otherwise
. T(n)∈O(n2 ) î üó ¤¢
T (n) = aT ( nb ) + f (n)
üµÈð¥ ýû ݵþ ¤ Úó .2 ÛÊê 28
.ÀþÞ÷ üõ ù¢Ôµ¨ , ´¨ b¥ ü½½¬ ýû ö n Øþ Âê ü¨¨ ýÌì ±
: 1Ýó
ý ûö ¥ ü Ô õ ÷ ü ã f (n) ø À ª ´ ¢À ä ø¢ b> 1ø a ≥ 1 À î  ê
üõ Óþ Âã Âþ ¥ ¤ ¬ b ¼½¬ ýû ö ýø ¤ ¤ T(n)â .Àª b¥ ü½½¬
. Ýî
θ(1) n=1
T(n)=
aT ( nb ) + f (n) n = bi
logn− 1
X b
: ±
ø ´ ¨f (n) ©¥ ¤ ý¤¢ ö ý È þ ¤ î Ý î ü õ ù¢ Ô µ ¨ ü µ È ð¥ ´ ¡¤¢ ¥ õ
j
ý¤¢ ôÀ î  û î ¢¤¢ ¢ ø È þ ¤ ¥ j Ü ¬ ê ù ð a ¢À ã ü Ü î ¤ Ï . Ý þ ¤¢
T (1) = Θ(1)
j
 û ø ´ ¨   ´ ¡¤¢ ß þ ï  û ©¥ ¤.À ª ü õ f ( nb ) ©¥ ¤
loga n
Ýû¡ ï n b ¢Àã ø logb áÔ¤ üµ¡¤¢ Å.¢¤¢ ¤Âì lognb ÕÞä ¤¢ ïÂ
. ´ª¢
29 (MASTER THEOREM) ü¨¨ Ìì .3.2
f(n) - f(n)
6 a
? j
f(n/b) f(n/b) f(n/b) af(n/b)
a a a
lognb f (n/b2 ) ................................................................... f (n/b2 ) a2 f (n/b2 )
a a a a a a a a a
.. .. .. .. ..
.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
.. .. .. .. ..
.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
.. .. .. .. ..
.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
a
?Θ(1)Θ(1)Θ(1) Θ(1)Θ(1)Θ(1)Θ(1)Θ(1)Θ(1)Θ(1) Θ(nlogb )
| {z }
a
nlogb
j Û·õ ¼Î¨ Âû ©¥ ¤ , ´¨ ùÀª ù¢¢ öÈ÷ ÛØª ¤¢ î ÷Ú÷Þû. Ýî ±¨½õ ö
logb n−1
X
aj f (n/bj )
j=0
a
´¨¢ (1) Τ °Â ßþ . Àª üõ Θ(nlogb )  Ã÷ û ï ôÞ ©¥ ¤ø
.Àþ üõ
¨ üµÈ𥠴¡¤¢ °Æ  Øþ öø¢Þ÷ ù¤ª üÔþ ÂÒ µØ÷ Àþ ´ÞÆì ßþ ¤¢
. Àª ùÀª Ç¿ ´¡¤¢ Ψ ¤¢ ýøÆõ f±þ ÂÖ ¤ ¬ ´¡¤¢ Ûî ©¥ ¤ (2
: 2Ýó
ý ûö ¥ ü Ô õ ÷ ü ã f (n) ø À ª ´ ¢À ä ø¢ b> 1ø a ≥ 1 À î  ê
: ݪ µª¢Âþ ¥ ¤ ¬ ¤ g(n) â ø .Àª b¥ ü½½¬
üµÈð¥ ýû ݵþ ¤ Úó .2 ÛÊê 30
logn− 1
Xb
loga
. g(n) = O(n b )
a a
. g(n) = Θ(nlogb . log n) ùÚ÷ f (n) = Θ(nlogb )Âð(2
:±
a
Ý þ ¤¢ ¹ µ ÷ ¤¢ Å f (n) = O(nlogb − ) Ý þ ¤¢ ñø¢¤ õ ± ý •
n j loga
b −
Àþ üõ ´¨À Âþ ¥ Τ (2)Τ ¤¢ ý ¤ÁÚþ î f ( j ) = O((n/b ) )
b
:
1
logn− n logab −
X b
g(n) = O aj (3)
bj
j=0
1 1
logn−
X b n logab − X ab j
logn−
b
j loga
b −
a =n a
bj blogb
j=0 j=0
logn− 1
X b
loga
b −
j
=n (b )
j=0
b logb − 1
n
loga
b −
=n
b − 1
a n − 1
= nlogb − .
b − 1
loga
b −
a
.´ª÷ n O(n ) = O(nlogb )
31 (MASTER THEOREM) ü¨¨ Ìì .3.2
a
g(n) = O(nlogb )
a
Ýþ ¤¢ f (n) = Θ(nlogb ) ýΤ ôø¢ ¢¤ õ ý •
a
f (n/bj ) = Θ((n/bj )logb )
1
logn− n logab
bX
g(n) = Θ aj (4)
bj
j=0
1 1
logn−
X b n logab logn−
X b j
j loga a
a =n b
a
bj blogb
j=0 j=0
logn− 1
X b
=n loga
b 1
j=0
a
= nlogb lognb
a
g(n) = Θ(nlogb lognb ) =⇒
a
g(n) = Θ(nlogb log n)
ýû ö ý î Ýþ ÂÚ ¹µ÷ Ý÷ üõ (2) Τ ¥ ù¢Ôµ¨ ô¨ ¢¤ õ ¤¢ •
ý af (n/b) ≤ cf (n) î  ê ß þ . g(n) = Ω(f (n)) Ý þ ¤¢, b ¼½¬
. f (n/b) ≤ (c/a)f (n) Ýþ ¤¢ n ≥ b Âþ¢Öõ ôÞ ø c<1 ´ Âþ¢Öõ üÌã
logn− 1
X b
g(n) = aj f (n/bj )
j=0
logn− 1
X b
≤ cj f (n)
j=0
∞
X
≤ f (n) cj
j=0
1
= f (n)
1−C
= O(f (n)).
ß þÀ .g(n) = Θ(f (n)) ß þÂ g(n) = Ω(f (n)), g(n) = O(f (n))
.Àª ± Ã÷ 2 Ýó ô¨ ¢¤ õ °Â
3 Ýó
ýûö ¥ üÔõ÷ üã f (n) ø Àª ´ ¢Àä ø¢ b > 1ø a ≥ 1 Àî Âê
. Ýî
θ(1) n=1
T(n)=
aT ( nb ) + f (n) n = bi
loga
.T (n) = Θ(n b )Ýþ ¤¢
a a
.T (n) = Θ(nlogb log n)) ùÚ÷ f (n) = Θ(nlogb )Âð (2
33 (MASTER THEOREM) ü¨¨ Ìì .3.2
Ýþ ¤¢ ùÚ÷ af (n/b) ≤ cf (n) ݪ µª¢ n ï¤ Ã Âþ¢Öõ ø c < 1 ´ Âþ¢Öõ
:±
:Ýî üõ ù¢Ôµ¨ 1 Ýó ¥ (1)Τ üþ ¥ ¤ ý 2 Ýó ¢¤õ ¥ õ
a a a
T (n) = Θ(nlogb ) + O(nlogb ) = Θ(nlogb ),
: 2 ¢¤ õ ý ø
a a a
T (n) = Θ(nlogb ) + Θ(nlogb log n) = Θ(nlogb log n),
: 3 ¢¤ õ ý ø
a
T (n) = Θ(nlogb ) + Θ(f (n)) = Θ(f (n)),
:Âþ ¥
loga+
f (n) = Ω(n b )
üµÈð¥ ýû ݵþ ¤ Úó .2 ÛÊê 34
T (n) = 2 T ( 2 ) + n − 1
n
⇒ T (n) ∈ Θ(n2 )
: Û
 ý ¤ t2 öõ¥ ý ÂÚþ¢ ø t1 öõ¥ üØþ î ù¢Þ÷ ý¥¨ ù¢ Óܵ¿õ ÛØª
¤¢ ý Âb ݵþ ¤ Úó ý¥¨ ù¢ î üãõ ßþÀ.t1 ∈ θ(t2 ) ùÚ÷ Àª µª¢ ¥÷
¥÷  ý ¤ t2 öõ¥ ý ÂÚþ¢ ø t1 öõ¥ üØþ î Àª õ÷Â Ø ø¢ p2 , p1 Âð
¤¢ ,Àª µªÀ÷ Ýû  ü±÷  ºû õ÷Â Ø ø¢ ßþ ö  ùø
ä ,Àª µª¢
t1 + t2 ∈ θ(max{t1 , t2 })
ÝÆÖ ÂµØî ýà ¤Ãê ´¿¨ ¼Î¨ ¤¢ î ´¨ ý ¤ µ¨¢ ×Þ ¤ µ¨¢ Âû
üõÀÖõ ¤ µ¨¢ ß»Þû ø .´¨ θ(1) ¥ ¤ µ¨¢ ßþ ý öõ¥ ,¢ª üÞ÷
θ(1) ù¥À÷ ü÷õ¥î Àþ üõ ¢ ×Þ ¤ µ¨¢ üûµõ ¢Àã °î ¥
.À÷¤¢ ¥÷
: ü÷õ¥ Ãó÷
i←1
while (i <= m)
p(i)
i←i+1
öÂ î × þ Ý û ¡ ü õ ,À ª Ý µ þ ¤ Ú ó ýÂ ýÂ ô¥ ö õ¥ L À î Â ê
.¢Âî éÁ ¤
 öõ¥ ¤ ¬ ö ¤¢ Ýõ ti ¤ üþ öÂî ßþ Âð ,ù¢Âî ±¨½õ¤ p(i) üþ
:´¨ Âþ ¥ ¤ ¬
m
!
X
L ∈ O max{1, m, ti }
i=1
öõ¥ ßþ ,¢ª üõ ý¥¨ù¢ while À÷õ ¤Ãê ´¿¨ ¼Î¨ ¤¢ for ¤ µ¨¢ Âû
.´¨ while ÖÜ ýÂ öõ¥ Û·õ for ÖÜ ýÂ
for i ← 1 to n − 1 do
for j ← i + 1 to n do
write(’*’);
n
X
ti = (1) = n − (i + 1) + 1 = n − i
j=i+1
X1
n− X1
n−
(n − 1)n (n − 1)n
L∈ ti = (n − i) = n(n − 1) − = ∈ O(n2 )
i=1 i=1
2 2
Âû î , ÛØª ¤¢ üܬ ÂÎì ý ýû ù¤µ¨ ¢Àã î ´¨ ßþ Û·õ á®õ ßþ
n2 −n
.ÀµÆû
2  î. Ýþ ¤ÞÈ ¤ ÀµÆû O(1) ¥ ôÀî
1 2 ................. n
1 .*....*. *
2. *......
... *....
... ....
... ....
... ....
... ....
. .*...
n ....
*.
n2 −n
2 ∈ O(n2 )
37 ý¥¨ °Âõ ýû ݵþ ¤Úó .5.2
P1
n− P
n
L ≤ (O( 1 ) + O(1)) ∈ O(n2 )
i=1 j=i+1
⇒ L ∈ Θ(n2 )
P1
n− P
n
L> (Ω(1) + Ω(1)) ∈ Ω(n2 )
i=1 j=i+1
Ìä Âû ¢ø ¤ ø ´ó ßþ ¤¢ ,Àª °Âõ þ¤ î Àû¢ üõ ¤ ü÷õ¥ ´ó ßþ µú
¤¢ ¢ª  Àþ±÷ while ÖÜ üãþ .¢ª ¤¢ ´ãìõ öÞû ¤¢ Ìä ö Àþ ÀþÀ
.Àª üõ θ(n) ¥  öõ¥ ¹µ÷ ¤¢ ,´¨ ù¢ Ω(n) ݵþ ¤ Úó
while ¤ µ¨¢ ý öõ¥ Ω(i) ù¥À÷ ¹µ÷ ¤¢ .´¨ ¥÷ ÆþÖõ i (ôi Ìä Û·õ)
P
E(x) = x × f (x) ü®þ ¤ Àõ
x∈X
ci =
i
X
k×
1=1X i
1 i(i + 1) = i + 1
k= ×
k=1
i i
k=1
i 2 2
: ´¨  ý¥¨ °Âõ ݵþ ¤ Úó ý ý ô¥ öõ¥ ͨµõ ¹µ÷ ¤¢
i+1 1X 1 n(n + 1)
n
X n
X n n
X
ci = = ( i+ 1) = ( − 1 + n − 1) = θ(n2 )
i=2 i=2
2 2 i=2 i=2 2 2
´ ¨  µ ú û sort Ö ¥ insertion sort ¤ µ ê¤ ´ ¨ Ý î û ù¢¢ ¢À ã î ü õ Ú û
üÞ÷ øÀµê üõ ëÔ Âþ¢ üÜ¡ ´ó ßþ µú ö Àª ¢þ ¥ û ù¢¢ ¢Àã üµìø üóø
. ´¨
1 n!
n! ´ó ßþ µú î ´¨û ´ó Ûî
u üãþ °Âõ÷ ýþ¤ ÂÊä ßþ µð¤ à ýù¥À÷ ý þ¤ Àµ ý¥¨ °Âõ ßþ ¤¢
¤¢ ¤ °Âõ÷ ýþ¤ ¤¢ ÂÊä Âû ü÷øÂê âìø ¤¢ þ¤ ßþ î ,¢ª üõ µêÂð ÂÑ÷ ¤¢
üÆþ÷ ¥ °Âõ ¤ ¬ ¤ óø ýþ¤ þ¤ ßþ ýø ¤ ¥ ų¨.¢¤¢ üõ ùÚ÷ ¢¡
öÞû üãþ û ü÷øÂê âÞø ´¨û ü÷øÂê  üµ±õ ý¥¨ °Âõ ßþ Å. Àî üõ
T 2 1 3 2 1 2 5 3 4 2 5 °Âõ÷ þ¤
1 2 3 4 5
u 0 0 0 0 0 m=5
1 2 3 4 5
u 2 4 2 1 2
| {z } | {z }| {z } | {z }
1 ø¢ 2 ¤ú 3 ø¢ 5 ø¢
?
4 üØþ
41 ý¥¨ °Âõ ýû ݵþ ¤Úó .5.2
i ← lef t, j ← right, i = 0, j = n − 1
.¢ª ´êþ ö ¤¢ temp ´¨ ¤Âì î ´¨ ýþ¤ ñÏ d
¤Áð ¥ Å ,Àª if ¤ µ¨¢ ¥ Û±ì middle, right, lef t Âþ¢Öõ k, j, i Àî Âê
 þ¢ Ö õ ý °  ¤ ˆ ĵ, î þ¢ Ö õ ø
d, À û¢ ¤ ´ ¨ ß Ø Þ õ ´ ó ø¢ if ¤ µ ¨¢ ¥
∈ O(nlogn) or
P
n
i P
n
i Rn x
• blog2 c ∈ O log2 ∈O 2 log2 dx ∈ O(nlogn)
i=2 i=2
43 ý¥¨ °Âõ ýû ݵþ ¤Úó .5.2
while((gap/=2)≥1){
int j=i;
swap(A[j - gap],A[j])
j -=gap;
.À÷¢Âð üõ ÆþÖõ Ýû ܬê ßþ Â¬ä ø ¢¢Âð üõ ÓÊ÷ ¤ ±ä ¤ Âû ¤¢ gap ßþ
Ýû 2 ýܬê ñø ¥ þ¤ ¬ä ù¤ø¢ Àþ ø ùÀª ÓÊ÷ ܬê ñÏ Å³¨
 ¡ ü ó ø 5 2 ° Â ß Þ û ø ¢Â þÁ ü Þ ÷ ¤ ¬ ü þ ¹ ø ùÀ ª Æ þ Ö õ
´ ó ß þ ¤¢ î Ý þ¢Â ð ü õ ¤ ¡ Ý µ þ ¤ Ú ó ¥ ø ¢ ª ü õ  µ Þ î × þ ¥ Ü ¬ ê Ø þ
Len=8=gap
2 7 4 8 5 6 1 10 gap=4
| {z }
| {z }
| {z }
| {z }
2 6 1 8 5 7 4 10 gap=2
| {z } | {z } | {z }
| {z } | {z } | {z }
| {z } | {z }
| {z } | {z }
| {z }
| {z }
1 6 2 7 4 8 5 10 gap=1
|{z} |{z}
2 6|{z} |{z}
4 7|{z} |{z}
|{z} 5 8 |{z}
4 6 |{z}
|{z} 5 7
5 6
1 2 4 5 6 7 8 10 gap= 21
üÞ÷ ýÀ÷ ´Æó ¤ ݵþ ¤ Úó ßþ.À÷¤¢ üÚµÆ gap ùÀõ ´¨À ¢Àä
.Àª üõ
2 3 4 5 1 2 1
⇓
0 2 2 1 1 1
⇓
1 1 2 2 3 4 5
Bucket-Sort2(A)
n ← [A]
for i ← 1 to n do
insert A[i] into list B[bnA[i]c]
for i ← 0 to n-1 do
sort list B[i] with insertion sort
concatenate the list B[0],B[1],...,B[n-1] together in order
üµÈð¥ ýû ݵþ ¤ Úó .2 ÛÊê 46
A B
1 .78 0
- .12 - .17
2 .17 - .23 - .26
- .21
3 .39 - .39
4 .26
5 .72
6 .94 - .68
7 .21 - .72 - .78
8 .12
9 .23
9 - .94
10 .68
Àþ ݪ µª¢ Ýû ý ¤ÂØ Â¬ä Ýû¿ Âð, Àª À÷ üÞ÷ ý ¤ÂØ Â¬ä
a: 3 7 2 8 1
bin: -1 1 2 3 -1 -1 -1 7 8
a: 1 2 3 7 8
47 ý¥¨ °Âõ ýû ݵþ ¤Úó .5.2
counting-sort
for i←0 to k do k is maximum of elements
c[i]←0
for j← 1 to n do
c[a[j]]←c[a[j]]+1;
for i← 2 to k do
c[i] ← c[i]+c[i-1];
for j ← n downto 1 do
b[c[a[j]]] ← a[j];
c[a[j]] ← c[a[j]] -1 ;
¥÷ ÆþÖõ ¢Àã log n! Ûì À ÆþÖõ üµ±õ ý¥¨ °Âõ ݵþ ¤ Úó Âû : µØ÷
. ¢¤¢ ¥÷ ÆþÖõ dlog n!e ÛìÀ ´ó ßþ ÂÀ ¤¢. ¢¤¢
.¢ÂþÁ³ ¤ ¬ Ã÷ θ(n log n)¥ µÞî ü÷õ¥ ¤¢ À÷ üõ ݵþ ¤ Úó
stable á÷ ¥ ݵþ ¤ Úó ßþ.¢ÂþÁ üÞ÷ ¤ ¬ ý ÆþÖõ ¬ä ß Ýµþ ¤ Úó ßþ ¤¢
¬ä ų¨. ÝþÞ÷ üõ °Âõ öØþ °Â ¤ ¬ä Àµ ©ø ¤ ßþ¤¢ .´¨ sort
üõ °Âõ öÚû¢ °Â ¤ ¬ä ñ . ÝþÞ÷ üõ üܬ þ¤ ¢¤ø °Â ¤
Ýû¢ üõ õ¢ °Â ßÞû ø ÝþÞ÷ üõ þ¤ ¢¤ø ø ÝþÞ÷ üõ ´Æó ¢¤ø ø ÝþÞ÷
·îÀ α(n) î Àª üõ O(nα(n)) ¥ ݵþ ¤ Úó ßþ ý öõ¥.¢¢Âð °Âõ þ¤
0
1 - 531 - 1
2
3 - 13 - 43 - 313
4 - 124
5 - 25 - 5 - 205
6 - 96
7
8
9 - 999
531,1,13,43,313,24,25,5,205,96,999
. Ýþ ¥¢Â üõ ý¥¨ °Âõ ýõ¢ ø
θ(n)
O( n5 ) O( 710n )
n
O( 25 ) O( 750n ) O( 750n ) O( 49 n
100 )
¤ ¬ û ´¡¤¢ Âþ ¥ Þû üãþ ´Æ÷ ùÀ÷ø ¤ ßþ ö ¤Öµõ ´¡¤¢ ´¡¤¢
Æ ¤ O Àþ Àª±÷ ö ¤Öµõ ´¡¤¢ Âð âìõ ßþ ¤¢ .Àþ üÞ÷ ßþ öÆØþ
. Ýî
49 üµÈ𥠢ãõ ( ö¢Âî Û) ö¢Âî TRACE ÛÞä .6.2
i i
7 10
n ≤ 1 =⇒ n ≤ =⇒ logn10 ≤ i =⇒ i = dlogn10 e =⇒
10 7 7 7
dlogn10 e logn10 +1
1− 9
X7 9
i
10
7
T (n) ≤ n=
i=0
10 9
1 − 10
1 10
53 > =⇒ logn 1 > logn10 =⇒ 3 logn5 > logn10 =⇒
7 53 7 7
dlogn10 e
X7 i 3X 5
logn i
T (n) ≤
9 n≤
9 n
i=0
10 i=0
10
θ(n)
θ( n3 ) θ( 23n )
i i
2 3 l m
n ≤ 1 =⇒ n ≤ =⇒ logn3 ≤ 1 =⇒ i = logn3
3 2 2 2
l m
logn3
X2
=⇒ T (n) ≤ n ≤ O(n logn3 )
2
i=0
üµÈð¥ ýû ݵþ ¤ Úó .2 ÛÊê 50
Ýþ ùÀÈî ùÂþ¢ ö¤ ø¢ î ü¨¤ ú÷¤¢ î Ý üõ üþø¢ø¢ ´¡¤¢ø¢ 1 ÛØª ¤¢
( ¡ª ô÷ ) ñþø¢Â·îÀ §¤ Âû ¥ Øþ Ûó¢ ¤ úµ¡¤¢ ßþ.´¨ Èþ ¤ éÂãõ
¥ î ü³ ¡ª îãõ ßþÀÀ÷ °Âõ,¤¢ Èþ ¤ üþø¢ø¢ öµ¡¤¢ ßþ «Ê¿
ÂÑ÷ ¤¢ Àþüõ ßþ §¤ öÞû¥ îüµ¨¤ ¡ª ¥ øÔµõÀþüõ ßþ §¤
×þ ý¤¢Â¡ üþø¢ø¢ ´¡¤¢ ¤ú,Àª±÷ Ýúõ °ÂÂð) ùÀª ù¢¢ öÈ÷ ø¢ ÛØª¤¢
(.À÷¤µ¡¨
n≥ 0,§¤ n ¯ Âõ ¤¢ Èþ ¤ °Âõ üþø¢ø¢ öµ¡¤¢ ¢Àã,bn ©¤Þªõ éÀû
´ ¨¢ ý À ª ´ ¨¢ ¤¢ 0 ≤ i ≤ n ý¥ bi  þ¢ Ö õ Ø þ  ê . ´ ¨
üú ´¡¤¢ Âþ ¥,ߨÞõ ýúµ¡¤¢Âþ ¥ ßþ ÜÞ ¥.Àõ÷ üõ ø ÂÔõ ´¡¤¢ ýúµ¡¤¢
1 ÛØª
1 2 3 4 5
2 ÛØª
3 ÛØª
ýÀ Ö±Ï ´¡¤¢ Âþ ¥ ø¢ ßþ ¤¢ ö üõ ¤ §¤ n ÷Ú î Ýî üõ ü¨¤  ×þ
.¢Âî
îÀû¢ üõ ¹µ÷ Âõ ßþ.´¨¤ ´Þ¨ ¤¢ §¤ n,¢¤¢¤Âì ² ´Þ¨ ¤¢ §¤ 0 (1)
üµÈð¥ ýû ݵþ ¤ Úó .2 ÛÊê 52
´ ¡¤¢ b1 bn−1 î,´ ¨¤ ´ Þ ¨¤¢ §¤ n − 1,¢¤¢ ¤Â ì ² ´ Þ ¨ ¤¢ §¤ 1 (2)
.Àû¢ üõ ´¨¢ §¤ n + 1,¤¢ Èþ ¤ °Âõ üþø¢
.
.
.
¤ ¬ ßþ ¤¢,´Æ÷ ´¨¤ ´Þ¨¤¢ ü¨¤ ºû ø ´¨ ² ´Þ¨ ¤¢ §¤ n (n+1)
. ´¨úµ¡¤¢ ¥ bn b0  bn+1
∞
X ∞
X
bn+1 xn+1 = (b0 bn + b1 bn−1 + · · · + bn−1 b1 + bn b0 )xn+1 (1)
n=0 n=0
P
∞
ùÚ÷ , Àª a0 , a1 , a2 , · · · ó±÷¢ ý Àóaõ â f (x) = ai xi Âð î Ý÷¢ üõ
i=0
üãþ , ©¢¡ a0 , a1 , · · · ó±÷¢ Ç» , [f (x)]2
a0 a0 , a0 a1 + a1 a0 , a0 a2 + a1 a1 + a2 a0 , · · ·
P
∞
b0 , b1 , b2 , · · · À aó õ â f (x) = bn xn À î Â ê × þ .À î ü õ À ó ¤
n=0
¤ ¬ ¤ (1) ó¢ãõ .´¨
∞
X
(f (x) − b0 ) = x (b0 bn + b1 bn−1 + · · · + bn b0 )xn = x[f (x)]2
n=0
53 CATALAN NUMBER öî ¢Àä  ý¤Áð .7.2
. ÝÆþ÷ üõ
Å
√
[1 ± 1 − 4x]
f (x) =
(2x)
õ
a
1 − 4x = (1 − 4x)1/2 = 1/2 1/2 1/2 (−4x)2 + · · ·
p
+ (−4x) +
0 1 2
: ´¨  n ≥ 1, xn °þ ® ö ¤¢ î
1/2 (−4)n =
(1/2)((1/2) − 1)((1/2) − 2) · · · ((1/2) − n + 1)
(−4)n
n n!
(1/2)(1/2)(3/2) · · · ((2n − 3)/2)
= (−1)n−1 (−4)n
n!
(−1)2n (1)(3) · · · (2n − 3)
=
n!
(−1)2n (n!)(1)(3) · · · (2n − 3)(2n − 1)
=
(n!)(n!)(2n − 1)
(−1)(2)(4) · · · (2n)(1)(3) · · · (2n − 1) (−1) 2n
= =
(2n − 1)(n!)(n!) (2n − 1) n
ý üÔõ ý Âþ¢Öõ , ¤ ¬ ßþ Âè ¤¢ ; Ýî üõ ¿µ÷ ¤ üÔõ ñØþ¢¤ f (x)¤¢
Å ; Ýî üõ À û bn
" " ##
1 X∞
1 2n
f (x) = 1− 1− xn
2x n=1
(2n − 1) n
∞
X 1 2n xn
(2n − 1) n
n=1
üµÈð¥ ýû ݵþ ¤ Úó .2 ÛÊê 54
î üÞÆì ,´¨
1 1 2(n + 1) (2n)! 1 2n
bn = = =
2 2(n + 1) − 1 (n + 1) (n + 1)!(n!) (n + 1) n
û
ù ¡£ Ñ ê ¥ ü µ Þ Æ ì ¤¢ ü µ Æ þ ü ä Ï ÷ ð  û î ü þ ¹ ÷ ¥
üÔܵ¿õ ñت Ñê ¤¢ À÷ üõ, ÀµÆ÷ á÷ ×þ ¥ û ù¢¢ fõø Ãó Øþ ø ¢¢Âð
ýù¢¢ Âû ùø ä ø .À÷ª üÈîø üÔܵ¿õ ñت ß»Þû ø À÷ª ù¡£
. Àû¢ «Êµ¡ ¢¡ ¤ Ñê ¥ üøÔµõ ñÏ ´¨ ߨÞõ ö üð¤ à öÃõ
°îÂõ ø ù¢¨ ýù¢¢ á÷ ÛØª ø¢ Ý÷ üõ ¤ ýù¢¢ á÷ üÜî¤ Ï . ÝþÞ÷
üÆþ÷ õ÷  ýû ö ¥ î ÀµÆû üþû ù¢¢ á÷ üÞ þ ù¢¨ ý ù¢¢ á÷
.ùÂè ø char, bool ,int:À÷õ ,Àû¢ üõ ¤Âì  ¤î ¤µ¡ ¤¢ ø ù¢Þ÷ Óþ Âã ¤ ö÷
õ÷ ¤ ö÷ ¤î ¢¡ ø ¢ª üõ µ¡¨ Åþ÷ õ÷ ͨ °îÂõ ýù¢¢ á÷
ø À÷ª üÞ÷ ý ¤Áð ¤ÀÖõ þ¤ ýû ÷¡ ôÞ f õø Ãó üãþ , ´¨ §¤³¨ ÛØª
ý ¤Áð ¤ÀÖõ ¤ Ñõ ßþ ý .À÷ª üõ ý ¤Áð¤ÀÖõ «¡ ýû÷¡ ¥ ü¡Â ÍÖê
´Æ÷ ¤Âì ø ´¨ ï¤ Ã þ¤ ñÏ ö , ´Æ÷ üÖÎõ ÂÔ¬ ¤ÀÖõ þ¤ ö¢Âî
û þ¤ ßþ ¯±¤ µú í¤¢ ýÂ. ÝþÞ÷ ù¢Ôµ¨ üܬ ýþ¤ ñÏ Ýû üØÞî
1 2 3 4 5 6 7 8
T 3 11 13
1 29 U 3 4 5 6 7 8
a 4 8 2
?
j z
b 3 1 2
1 2 3 4 5 6 7 8
, T üãþ üܬ ýþ¤ ý ¤Áð ¤ÀÖõ ¤ Âû ¤¢. Ýî üõ ÂÔ¬ ¤ ctr Âçµõ ¤ÀÖõ Àµ
Ýû¢ üõ ¤Âì T ¥ ý ÷¡ ÅþÀ÷  ¤ a[ctr] ø Ýî üõ ê® ctr Àø ×þ
ßþ . Ýû¢ üõ ¤Âì ctr  ¤ b[ ÅþÀ÷] ß»Þû ø ´¨ ùÀª ý ¤Áð¤ÀÖõ î
:Àª ¤ÂìÂ
. ´¨ ÂÔ¬ ctr î ´¨ ¼®ø ݪ ù¢ÂØ÷ üû¢ §¤¢ ýà Âð
. ÷ þ Ýþ ù¢Âî
b[8]=2 , 1≤ b[8]≤ 3 ⇒ ݪ ù¢Âî üû¢ ¤ÀÖõ õ ¤ ÷¡ ßþ ´¨ ߨÞõ
.Àµê üõ ëÔ ÂÔ¬ ¼Î¨ ¤¢ ö ýúð ôÞ î ´¨ ý Âþ ´¡¤¢ ×þ : ´¡¤¢
×þ áÔ¤ . ´¨ ï ùÂð ö ¥ ÂÆõ ßþ µð¤ à ñÏ : ´¡¤¢ ¥ ùÂð ×þ áÔ¤
. (ùÂð ö ùÀª
: ñ·õ
ø¢ ͨ
a
ÂÔ¬ áÔ¤
N
×þ áÔ¤
b f ×þ ͨ
c d e ÂÔ¬ ͨ
a 2 0 2
b 1 1 1
c 0 2 0
d 0 2 0
e 0 2 0
f 0 1 1
ýû ùÂð ÕÞä áÞ¹õ I(T) ø ´¡¤¢ ýû ï ÕÞä áÞ¹õ E(T).Àª üõÀ÷¥ Âê
û ù¢¢ öÞµ¡¨ ¥ ü¡Â ý ¤ ø¢þ .3 ÛÊê 58
ö üµÈð¥ Τ ùÚ÷ Àª T(n)= E(T)-I(T)Âð .Àª üõ ´¡¤¢ ßþ üÜ¡¢
? ´¨ ôÀî
6 6
h
h+1
T(n) T(n+2)
E(T ) = E(T 0 ) − h + h + 1 + h + 1
I(T ) = I(T 0 ) + h
.¢¤¢ À÷¥ Âê
î Ýõ÷ üõ ü¨¨ Ûõî ´¡¤¢ ¤ üþø¢ø¢ ´¡¤¢ : ü¨¨ Ûõî üþø¢ø¢ ´¡¤¢
üµÆþ À÷¥ Âê ö Àª µª¢À÷¥ Âê ×þ ¼Î¨ ßþ¤¢ ýùÂð Âð .(¡ üØþ ¼Î¨
À÷ùÀõ ö ² ´Þ¨ ¤¢ î ö ¼Î¨ Ýû ýû ùÂð ôÞ ùø ä ø Àª ²À÷¥ Âê
¤Âì ´¨¤ ´Þ¨ ¤¢ î ö ¼Î¨ Ýû ýû ùÂð ôÞ ø Àª µª¢ À÷¥ Âê ø¢ Àþ fÖì¢
Ýû ôÞ Àª µªÀ÷ À÷¥ Âê ý ùÂð Âð ß»Þû ,Àª µªÀ÷ À÷¥ Âê üµÆþ À÷µêÂð
¼Î¨ ¤¢ û ï ôÞ ´¡¤¢ ßþ¤¢ .Àª À÷¥ Âê öøÀ Àþ ö ´¨¤ ýû ü½Î¨
ü¨¨ Ûõî ¤ Àþ üõ ´¨¢ î üµ¡¤¢ , Ýî éÁ ¤ û ùÂð Àã ý ù¤Þª
.Àþð
Àã 6 ¥ éÁ
- 1
1
3 2 3
2
4 5 6 7 4 5
. ´¨ ü¨¨ Ûõî üþø¢ø¢ ´¡¤¢ ,Ûõî üþø¢ø¢ ´¡¤¢ ¥ ¤ Ñõ °µî ü¡Â ¤¢
ÀÜî üóø ´Æ÷ ¢Âê Âʽõ °ÆÂ). ´Æ÷ µØî Ç÷À÷¥ Âê °ÆÂ ¥ ¤À
. ´¨ þ¤ heap ý¥¨ ù¢ ý ù¢¢ öÞµ¡¨ ßþ µú (. ´¨ ¢Âê Âʽõ
,Ã÷ ÝÞõ ÂÊä ö¢Âî À . ´¨ θ(1)¥ ÝÞþ Ãîõ ö¢Âî À Å , ´¨ þ¤ ¨
µÞî ý¢Àä ßþ ÃÚþ ÂµÈ ý¢Àä î ü÷õ¥ sift-down ÜÞäøÀþ Âç µÈ
.¢¢Âð
û ù¢¢ öÞµ¡¨ ¥ ü¡Â ý ¤ ø¢þ .3 ÛÊê 60
h+1
20 + 21 +....+2h−1 < n ≤ 20 + 21 +....+2h ⇒ 22−−11 < n ≤ 2 2−1−1
h
procedure percolate(T[1..n],i)
{we suppose that T would be a heap if T[i] were sufficiently small,
we also suppose that 1≤i≤ n the parametr n is not used here}
k←i
repeat
j←k
if ((j>1) && ( T[ 2j ] < T[k]) )
k← 2j
exchange T[j] and T[k]
until j=k; //O(log n)
........................................................
f unction f ind − max( T[1..n] )
{ returns the largest element of the heap T[1..n]}
return T[1]; //θ(1)
........................................................
procedure delete − max(T[1..n])
Delete the root}
T[1]←T[n]
sift-Down(T[1..n-1],1) //O(log n)
ÛÞä ø ¢Âð üõ ¤Âì ÂÊä ßóø ý ÂÊä ßþ ¡ .´¨ üÖÎõ éÁ, éÁ
P rocedure M akeHeap(T[1..n])
For i ← b n2 c DownTo 1 Do
SiftDown(T, i) //O(n)
.¢¥Æ
: öûÂ
r+1 ·îÀ ®ø r ¼Î¨ ¤¢ ùÂð ×þ ý SiftDown ݵþ ¤ Úó ¤¢ Repeat ÖÜ
´¡¤¢ ßþ áÔ¤ Âð ñ (.©¢¡ Ýû ¤ ×þ ø Àþüõ ßþ ¤ r) ¢¤¢ Ç¡Â
n
 þ ¥ ñ õÂ ê ¥ ô¥ ý û ´ îÂ Û î ¢À ã Ý þ Â Ú Â Ñ ÷ ¤¢ ¤ K = blog2 c ¤ Heap
:¢Èõ ±¨½õ
t ≤ 2 × 2k−1 + 3 × 2k−2 + . . . + (k + 1) × 20 ⇒
1 1
1−x = 1 + x + x + . . . 2 = 1 + 2x + 3x + . . .
2 ⇒ (1−x) 2
P
∞
x
⇒ (1−x) 2 = x + 2x2 + 3x3 + . . . x
⇒ (1−x) 2 = nxn
n=1
P
∞ 1
⇒ n( 12 )n = 2
(1− 12 )2
=2
n=1
¢¡ Bn−1 Èþ ¤ á÷ ßþ ¤¢.¢ª üõ Óþ Âã üµÈ𥠤 ¬ ´¡¤¢ á÷ ßþ
1 1 1 1
1 2 3
1 3
1
B0 B1 B2 B3
n=0
Bn =
. ÝþÞ÷ üõ ê® ¤ Bn−1 ¢¡ Bn−1
.´¨ (x + y)n ÍÆ °þ® Âþ ¥ ;¢ª üõ ùÀõ÷ ýÜÞø¢ ´¡¤¢,´¡¤¢ ßþ
. ´¨ ÂµÈ ÂÚþ¢ ýûùÂðÞû ¥ ùÂð ßþ ¤¢ , ´¨ nÃ÷ Bn Èþ ¤ ¤¢ •
¤À ù
b  ð ¢À ä î,À ª ù¢¤ ¡ ° Æ Â ý¢À ä ý Ü Þ ø¢ ´ ¡¤¢ × þ ù ð  û  ð
ù½÷. Àû¢ üõ ¤ Bn+1 ,Max Binomial Tree Bn0 ø Max Binomial Tree Bn ø¢
.´¨ ´¨¤ À÷¥ Âê min ÂÊä ø ¢¤¢ ¢ø ÆþÖõ ÍÖê . ´¨ θ(1)¥ merge ÛÞä
8 9
7 6 2 7 6 4
+
3 1 2 4 3 2
.5 1
7 6 4 8
⇒ 3 7 6 2
4 2
1 3 1 2
.5
Binomial-Heap
Head[H]
- 10 - 1 - 6
12 25 8 14 29
18 11 17 38
27
:¢¤¢
¤¬ Ýû ø ¢Þ÷ Óþ Âã ÝÞõ Heap ¤ ¬ ö üõ Ýû ¤û Heap Àª µª¢ 1
.¢¤À÷ ü÷À øÔ û ö ýø ¤  ÜÞä ¤ ¬ Âû ¤¢ ÝÞþ Ãîõ Heap
û ù¢¢ öÞµ¡¨ ¥ ü¡Â ý ¤ ø¢þ .3 ÛÊê 66
Èþ ¤ î ;´¨ ÝÞþ Ãîõ ý ÜÞ ø¢ öµ¡¤¢ ¥ üÜÚ Max Binomial Heap ×þ
ÛÚ ýû Èþ ¤ Âþ¨ ß ö °ÆÂ ¢Àä î ¢¤¢ ¢ø ´¡¤¢ ¥ ü Èþ ¤ ¢¥
4 ........ 9 ..................... 7
3 2 5 6 4
1 5 2 3
.´¨ Ýî û Èþ ¤ ¢Àã Âþ ¥,´¨ θ(1)¥Ã÷ ݵþ ¤ Úó ßþ öõ¥ .ÀþÞ÷
67 FIBONACCI HEAP .5.3
R ?
8 ......... 6 4 .......... 9 ............. 7
4 3 4 3 2 5 6 4
+
2 1 2 1 5 2 3
1 2
?
8 ......... 9 ............. 7
4 3 2 5 6 4 6
⇒ 4 3 4
1 5 2 3
2 1 2
2
1
.Àî °î ¤ ÀþÀ ø ÝþÀì ý ÂÈØþ¢ ø¢û Binomial Heap ͨ: ßþ ÂÞ
n=0
Fn = n=1
Ýî üõ ê® ´¨¤ ´Þ¨ À÷¥ Âê öä ¤ Fn−2 , Fn−1 Èþ ¤ else
û ù¢¢ öÞµ¡¨ ¥ ü¡Â ý ¤ ø¢þ .3 ÛÊê 68
.Àî ê® ´¨¤ À÷¥ Âê öä ¤ Fn−2 ,Fn−1 Èþ ¤ ´¡¤¢ á÷ ßþ ¤¢
F4 :
f0 = 0 , f1 = 1 , f2 = 1 , f3 = 2, ...
´ ¨   Fn ý û ï ¢À ã ø fn+2 ´ ¨   Fn ý ûù ð ¢À ã ù Ú ÷
öµ¡¤¢ ßþ ýû Èþ ¤ î ´¨û Fibonacci Tree¥ üÜÚ Fibonacci Heap ×þ
. ÀÜʵõ Ýû ý Âð ù¤ª Õþ ÂÏ ¥
ø ´¨ Fi+2 Û¬ ø ¢ÂÚõ ¤ ¬ Fi+1 ø Fi ß ö¢Âî Merge ÛÞä üóø ´¨
Å .¢Âî ê® Fi+1 ´¨¤ À÷¥ Âê öä ¤ Fi Àþ ú÷ ö¢Âî Merge ¤¢ ¹þ ¤¢
69 2-3 öµ¡¤¢ .6.3
ýøÆõ þ µð¤ à Fi+1 Èþ ¤ ¢Àä þ ,Àµê ëÔ ´¨ ߨÞõ ´ó ø¢ ö¢Âî ê® ¥
Û Þ ä × þ À þ ¤ Ê þ Â è ¤¢ þ ø ´ ¨ ùÀ ª ô Þ ¤ î î ´ ¨ Fi È þ ¤ ¢À ä
Àª¤ Âþ ¥ ´¨ âþ ¨ üÜ¡ ÅþÀ÷ ´±Æ÷ ü÷±ê ´¡¤¢ ýû ï ÇþÃê
´¨  ø Àî üõ Àª¤ üõ¤ ø ü¡ áÔ¤ üóø ´¨ ¢þ ¥ ü÷±ê â
A
40
B C
10 20 80
¤¢ .À÷ª üÞ÷ ù¢¢ ÇþÞ÷ ³õî ¤¢ üØþ Ãê ø üãìø ¤ Ï ü¤¡ ýû ùÂð
.¢Âð üõ ¤Âì ÂÔ¬  ü¤¡ ùÂð Âû ¤àµõ À÷¥ Âê ù¢¢ Ìä ä
3h
− 1ø 2h − 1 ß ÂÊä n ø h áÔ¤ 2-3 ´¡¤¢ ×þ ¤¢ ¬ä ßþ ¢Àã
üÜ¡¢ ùÂð Âû î ü÷õ¥ ñø ÷Âî î Àî , °ÜÎõ ßþ ùÀûÈõ ý . ´¨
.¢ Àû¡
h=1 X 20
h = 2 .. X X .. 21
...
..... ...
.. ...
h=h 2h−1
2-node
l m
n = 20 + 21 + · · · + 2h−1 ⇒ n = 22−−11 = 2h − 1 ⇒ h = log2n+1
h
71 2-3 öµ¡¤¢ .6.3
h=1 X X 2 × 30
h=2 X .X X .X X .. X 2 × 31
.. .. ...
..... ..
.. ...
. ...
... ..
. ..
h=h 2 × 3h−1
3-node
n = 2 × 30 + 2 × 31 + · · · + 2 × 3h−1 ⇒ n = 2×(33−1−1) = 3h − 1 ⇒ h =
h
l m
logn+ 1
3
: ßþÂ
l m l m
logn+ 1 < h < logn+1
3 2
class Two3Node{
private :
class Two3{
public:
:MAXKEY(max), root(init){};//constractor
Tow3Node< KeyT ype > *Search(const Element < KeyT ype >&);
private:
};
ø Àª±÷ M AXKEY ÀÜî ý¤¢ ý ±µãõ ÂÊä ºû î Ýî üõ Âê ¹þ ¤¢
.¢¢ ´±Æ÷ ù¿ó¢ ¤ÀÖõ Âû ö üõ RightChild ù¢¢ Ìä .Àî üõ ù¤ª ö
â ö¢¤ ø ´¨¢ ý ¤ üø¢ø¢ ý¹µÆ öµ¡¤¢ ݵþ ¤ Úó ö üõ üð¢¨
.¢¢ ÝÞã Àî üõ ¹µÆ ¤ xÀÜî ÂÊä ýø ùÂð îTow3::Search ý¹µÆ
ýûÀÜî ¤ x ÀÜî ×þ î Àî üõ ù¢Ôµ¨ compare ô÷ üã ¥ ¹µÆ â
ùÂð n ý¤¢ ´¡¤¢ Âð ßþ . Àª üõ 2-3´¡¤¢ áÔ¤ ¢øÀ½õ for ýû
switch(p→ compare(x)){
case 1 :p=p→ LeftChild;break;
case 2 :p=p→ MiddleChild;break;
case 3 :p=p→RightChild;break;
case 4 :return p ;// x is one of the keys in p
}
}
70 ÂÊä ¤¢ ñ·õ ý .Àª üõ ù¢¨ f µ±Æ÷ 2-3 ´¡¤¢ ×þ Û¡¢ ¤¢
ßþ ßµêþ ý ô¥ ý¹µÆ Àµ ¤¢.Àþ ÂÚ ÂÑ÷ ¤¢ ¤ 1 ÛØª 2-3 ´¡¤¢ Û¡¢
üÞ÷ ô¹÷ ø ùÀª ø Âø ¤ ´ÆØª ¤¢ ÛÞä ÀµÆû ¢Âê Âʽõ 2-3 ´¡¤¢ ¤¢
Ý÷À , 70 ÂÊä ý¹µÆ ñ ¡ ¤¢ ´¨ ô¥ ¤î ßþ ýÂ. Ýî üõ ¤¢ ´¡¤¢
¢Âê Âʽõ ï ùÂð ×þ ¹µÆ , Ýû¢ ¤Âì ¹µÆ ¢¤ õ ¢¤À÷ ¢ø 2-3
¢ Ýû¡ õ ö 70 ÂÊä ý¹µÆ üÏ ¤¢ î üð ùÂð .Àª Àû¡ ø Âø ¤
ÀþÀ ÂÊä, ´¨ ÂÊä ×þ ý¤¢ ú ùÂð ßþ î ¹÷ ¥. ´¨ 80 ÀÜî C ùÂð
ù¢¢ öÈ÷ (Óó) ´ÞÆì 2 ÛØª¤¢ Û¬ ´¡¤¢ .¢Âî ¤¢ ÎÖ÷ ßþ ¤¢ ö üõ ¤
. ´¨ ùÀª
¤ ßþ . Ýî ¤¢ ´¡¤¢ ¤¢ 30 ÀÜî x ÂÊä Ýû¡ üõ Àî Âê ñ
´¨ ô¥ Áó ù¢ 3-node ×þ B î ¹÷ ¥ .ÝþÈõ ø Âø ¤ B ï ùÂð ¹µÆ
Â Ê ä ø¢ ß ¥ î ´ ¨ ý Â Ê ä Û õ ª D . Ý î ¢ ¹ þ ¤ D ô ÷ ýÀ þÀ ù ð
Àû¡ ¤¢ B ¥ A ¤À ùÂ𠤢 D ý Âð ù¤ª ùÂÞû ͨµõ ÀÜî ÂÊä ø ´ª¢
. ´¨ ùÀª ¤ ()´ÞÆì 2 ÛØª ¤¢ Û¬ ´¡¤¢.Àª
û ù¢¢ öÞµ¡¨ ¥ ü¡Â ý ¤ ø¢þ .3 ÛÊê 74
A A
20 40 40
D C B C
B
10 30 70 80 10 20 70 80
30 ¤¢() 70 ¤¢(Óó)
ÛØª 2-3 ´¡¤¢ Û¡¢ ¤ 60 ÀÜî xÂÊä ý ¤ÁÚþ , ñ·õ ßþ ¡ öä
üõ ì õ C ùÂ𠤢 60 ý¹µÆ üÏ ¤¢ ï ùÂð .Àþ ÂÚ ÂÑ÷ ¤¢ () ´ÞÆì 2
ÀÜî ßþ µØî ý ÂÊä ýø Ã÷ CùÂð .(80) ´¨ ÀÜî ßþ µð¤ à ý ÂÊä
.¢ª üõ ¢¹þ 20, 40, 70 ß ¤¢ ÀÜî ßþ µð¤ à ý ÂÊä ýø F ÀþÀ ùÂð
ù¤ª ùÂÞû 40 ÀÜî ý ÂÊä ýø ùÂð ßþ .¢ª üõ ¢¹þ 2-3´¡¤¢ ýÂ
G
40
A F
20 70
B D C E
10 30 60 80
. Àþð üõ û ùÂð ÝÆÖ ¤î ßþ î . ¢Âî Ýû¡ ¢¹þ ¤ q À÷õ ýÀþÀ ùÂð
.˻
( ´¨ ùÀª ÂÑ÷ é¬ ü𢨠ý < KeyT ype > ýÚó µõ¤ ¥ )
.Àª Àû¡
ßþ Âè ¤¢ .¢ª üõ ù¢¢ ´Èð ÂÔ¬ ¤ÀÖõ ùÚ÷ Àª µª¢ ¢ø ÀÜî ßþ Âð
. Àª p root ÂÆõ ¤¢ ¢õ ýû ùÂð ¥ üµÆó À÷ üõ ý ù¢¢ öÞµ¡¨
ùÂð Àóø §Âµ¨¢ , ùÂð ×þ ÝÆÖ ¥ Å Âþ ¥ ´¨ ¥÷ ý ù¢¢ öÞµ¡¨ ß
:void InsertionError() •
¤¢ ö ¤¢ ´¨ ´¡¤¢ ¥ ý ÂÊä ýøÆõ ©ÀÜî ¤ ý ÂÊä Ýû¿ üµìø
. ¢Âî Àû¡ ô ä ¤ Ρ â ßþ . ¢¢ Àû¡ ¤ üþΡ Ýî
üܱì Âþ¢Öõ ùÀª Middle Child ýøÆõ a ùÚ÷ ¢¢Âð dataL  x Âð ¹µ÷
öÀ÷¥ Âê Âð ù¤ª ¨ .Àª üõ p ¤¢ ùÀ÷õ üì ÂÊä ú , ÀÜî ßþ µØî ý¤¢
¤ À÷ª Óþ Âã aøp ¤¢ Àþ î ýÀ÷¥ Âê ù¢¢ Ìä ¤ú olda Âð ù¤ª ø p üܬ
. ´¨ ùÀª ¢¹þ for ÖÜ ¤ÂØ ßþ ¡ ¤¢ üð¥ î ´¨ ý ùÂð ùÀû¢ öÈ÷
üÚµÆ ùÀª é¬ Ûî öõ¥ î Ýî üõ ùÀûÈõ üðÀ» Ûܽ ø þ ù ýÂ
ÂÊä n 2-3 ´¡¤¢ ×þ Û¡¢ ý ¤ÁÚþ ßþ . ¢¤¢ 2-3 ´¡¤¢ ÕÞä
ÂÊä ×þ ùÀª éÁ ùÂð ÛþÀ± ùÚ÷ Àª±÷ ï ùÂð î Ýî éÁ ¤ ý ÂÊä
ñ·õ ý . Ýû¢ üõ ô¹÷ ¤ éÁ ÛÞä ï éÁ ø ´¨ ï ùÂ𠤢 î °¨õ
éÁ ¤ ¢¤¢ ¤Âì (Óó) ´ÞÆì 4 ÛØª Èþ ¤ ¤¢ î 50 ÀÜî ÂÊä Ýû¿ Âð
60 ÀÜî ý ÂÊä þ 20 ÀÜî ýø ý ÂÊä ´¨ ߨÞõ ÂÊä ßþ ùÚ÷ Ýî
ÂÊä ¥ Ý÷ üõ üÜî ´ó ¤¢ . À÷¤¢ ¤Âì ï ùÂ𠤢 úþ ø¢ Âû ø ¢ª Ëþã
ÍÖê 70 ÀÜî ÂÊä éÁ ý . Ýû¢ üõ õ¢ (Óó) ´ÞÆì 4 ÛØª ´¡¤¢
A
50 80
B C D
10 20 60 70 90 95
óø2-3 ´¡¤¢(Óó)
A
50 80
B C D
10 20 60 90 95
70 ùÂð éÁ ( )
A
50 80
B C D
10 20 60 95
90 ùÂð éÁ()
C ùÂð î ¢ª üõ °õ Âõ ßþ. Àþ ÂÚ ÂÑ÷ ¤¢ ¤ 60 ÀÜî ÂÊä éÁ ñ
ßþ . ¢¢Âð üõ ÛþÀ± ,ùÀª ¤ () ´ÞÆì 4 ÛØª ¤¢ î »÷ ¤ ¬ 2-3
79 2-3 öµ¡¤¢ .6.3
60 éÁ î üõÚû À÷õ . ¢ª üõ üú D ùÂð ,¢¢Âð üõ éÁ 95 ÀÜî ÂÊä
2-node ×þ C üãþ ² ´Þ¨ ¢ÃÞû î  Àª üÞ÷ ߨÞõ rotation Àª ô¹÷
Ýî üõ éÁ ¤ D ùÂð ø ù¢Âî ÛÖµõ C ² ¢ÃÞû Û¡¢ ¤ 80 ¤ ßþ . ´¨
95 ÂÊä éÁ .¢¢Âð üÞ÷ éÁ ýùÂð ÷Ú»û ǡ ¤¢ î ü¤ ¬ ¤¢ ¢ª
B ùÂ𠢪 üõ °õ î Àþ ÂÚ ÂÑ÷ ¤¢ ´¡¤¢ ßþ ¥ ¤ 10 ÀÜî ÂÊä éÁ
2-node ×þ C üãþ B ´¨¤ ´Þ¨ ¢ÃÞû þ î Ýî üõ ü¨¤  öî .¢¢Âð üú
ÛÞä ×þ ùÚ÷ Àª 2-node ×þ Âð ø Ýû¢ ô¹÷, ´êÂð ¤ ¬ 60 éÁ ýÂ
ùÂ ð ø ùÀ ª Û Ö µ õ B 80 ø 20 ý ûÀ Ü î Â ¬ ä ¤ ß þ .Ý î ü õ Û Þ ä 95
éÁ ü𢨠, ´¨ Èþ ¤ A ö .Àþ¢Âð üõ üú (95ÂÊä éÁ) D ¹µ÷
A
20 80
B C D
10 50 95
60 éÁ()
A
20
B C
10 50 80
95 éÁ()
A
20
B C
10 80
50 éÁ()
B
20 80
10 éÁ()
4 ÛØª
:2 ÜÂõ
p ² ´ Þ ¨ À ÷¥  ê . À ª È þ ¤ À þ p ù Ú ÷,¢¤À ÷ ý Â Ê ä p  ð :3 Ü Â õ
¤ qùÚ÷ ,Àª r ² ´Þ¨ À÷¥ Âê p Âð . Àþ üõ ¢ø ¡þ Àª r üãþ ¢¡
ßµêÂð ÂÑ÷ ¤¢ öøÀ î Àª µª¢ . Àî Âê p ² ´Þ¨ À÷¥ Âê öä
üãþ)ÀµÆû û ùÂð öÀ÷¥ Âê ùÀû¢ öÈ÷ d ø c,b,a. ¢¤À÷ üµÞû ¢þ ¥ Ï Âõ ù¢¢
r r
X ? Y ?
p q - p q
Y Z X Z
a b c d a b c d
a b c d a b c d
Àª üõ r ü÷õ À÷¥ Âê p ()
r r
W Z W Y
-
a q p
p a q
X Y X Z
b c d e b c d e
Àª üõ r ´¨¤ À÷¥ Âê p ()
r r
x
p q - p
y x y
a b c a b c
( Óó)
r r
x z z
p q - p
y d x y d
a c a b c
b
( )
6 ÛØª
:Àª üõ Âþ ¥
:Àª üõ Âþ ¥ ¤ ¬
×þ Âð. ¢¢Âð üõ Ûõî éÁ ÛÞä ,¢ª ô¹÷ ǡ ×þ Âð . ¢Âð üõ ô¹÷
ü÷õ¥ ÂÊä n 2-3 ´¡¤¢ ×þ ¥ éÁ ÛÞä ¹µ÷ ¤¢ ø ¢Âî Àû¿÷ ¥ ø¹
À ÷ ü Þ ÷ à õ ì À ÷¥  ê,à õ ì ù ð × þ ¤¢ ) .À µ Æ û ù ¨ , à õ ì ù ð × þ À ÷¥ Â ê ø¢ •
(˻
¢À ã Û õ ª ( Ý Ö µ Æ õ À ÷¥  ê f õø à ó ÷) À ÷¥  ê ï ù ð × þ ¥ ù¢ ¨ Â Æ õ  û •
. ´¨ ù¨ ùÂð ü÷ÆØþ
26
17 41
14 21 30 47
10 16 19 23
28 38 NIL NIL
NIL NIL
7 12 15 15 NIL NIL NIL
NIL
35 39
NIL NIL
3 NIL
NIL NIL NIL NIL
NIL NIL NIL NIL
NIL NIL
: uncle(x)
if parent[x]=right[parent[parent[x]]] then
uncle[x]:=left[parent[parent[x]]]
else uncle[x]:=right[parent[parent[x]]]
áÔ¤ ýø ¤  ÂÖµ¨ ¥ ± ý . ´¨ üÜ¡¢ ùÂð 2bh(x) − 1 ý¤¢ ÛìÀ x
.¢ª üõ ù¢Ôµ¨ ´¡¤¢ ¤¢ x üÜ¡¢ ùÂð
: DZÂÖµ¨ þ
´¡¤¢ Âþ ¥ ßþÂ. ´¨ nil ¹µ÷ ¤¢ ø ï fÞµ x , Àª ÂÔ¬ x áÔ¤ Âð
À÷¥ Âê ø¢ ý¤¢ x ø Àª üõ ´±·õ ý¢Àä bh(x) . Àþ ÂÚ ÂÑ÷ ¤¢ ¤ x üÜ¡¢ ùÂð
ú÷ Black - Height, ù¨ þ Àª ÃõÂì Ø÷ °Æ  öÀ÷¥ Âê ¥ ôÀî Âû. Àª üõ
x ¢¡ ¥ µÞî üäÔ¤ x À÷¥ Âê Âû Ø÷ ´Üä . ¢ Àû¡ bh(x)-1 þ bh(x) ÂÂ
Âè ¤¢ Âþ ¥ . ÀµÆû ù¨ , ï Èþ ¤ ¥ ù¢¨ ÂÆõ Âû ýø ¤  ( Èþ ¤ ßµª¢ ÂÑ÷
h
.¢ Àû¡ ÛìÀ Èþ ¤
2
(n+1)
n ≥ 2 − 1 =⇒ 2 ≤ n + 1 =⇒ h ≤ 2 log2
h h
2 2
ö¤ø¢ 3.7.3
¤ ±¹õ Íþª üÌã ¤¢ éÁ ø ¤¢ ÜÞä ¥ Àã RB ´¡¤¢ «¡ üþ ¥ ýÂ
û Âð ù¤ª ¤µ¡¨ ¤¢ üÂç þ Ýî ä ¤ û ùÂð ¥ üÌã Ù÷¤ î Àª Ýû¡
ü õ Ó þ  ã ( ¢Â Ú ³ ø ¢Â Ú µ ¨¤ ) ö¤ ø¢ Û Þ ä ø¢ ¤ Ñ õ ß Þ û . Ý þ Þ ÷ ñ Þ ä
×þ «¡ ¤¢ üóØª ºû ÛÞä ø¢ ßþ î ´¨ ¼®ø Âþ ¥ ÛØª . ÝþÞ÷
Âç ö¤ ø¢ ×þ  ¤¢ û Âð ù¤ª ú Âþ ¥ Àª O(1) ¥ ö¤ ø¢ î ´¨ ¼®ø
Right-Rotate(T,y)
-
y x
Left-Rotate(T,x)
x α y
γ
α β β γ
Left-Rotate(T,x)
1. y ← right[x] // SET y
2. right[x] ← left[y] // Turn y’s left subtree into x’s right subtree
3. if left[y] 6= NIL then
4. p[left[y]] ← x
5. p[y] ← p[x] // Link x’s parent to y
6. if p[x] =Nil then
7. root[T] ← y
8. else if x= left[p[x]]then
9. left[p[x]] ← y
10. else right[p[x]] ←y
11. left[y] ← x // Put x on y’s left
12. p[x]← y
87 RED-BLACK ù¨ - ÃõÂì ´¡¤¢ .7.3
¤¢ 4.7.3
ü õ à õÂ ì ¤ x ¤ î ß þ ýÂ Ý þ Þ ÷ ü õ ¤¢ ¤ x ü ø¢ø¢ ´ ¡¤¢ ¤¢ ¤¢ § ¨ Â
´¡¤¢ ¯ Âõ 4 ´¬¡ ÐÔ ÜÂõ Âû ¤¢ î ´Æþ üܬ ùÀþ ýÀã ´ÞÆì
ø ¢ª ¤Âì x ¤À ö¢ ù¨ ¯Âª þ ݨ Èþ ¤ Ýû¢ õ¢ ¤ÀÖ÷  Ψ
¼½Ê ´¨ ÃõÂì x ¤À î ü÷õ¥ ú ´¡¤¢ î Àª üõ ôÜãõ . ݨ úµ÷
.¢¤¢ ¥÷
:
6 ´¨ ö ¤Öµõ Âþ ¥ ´ó ¨ ÂÚþ¢ ´ó ¨ î Àû¢ üõ ¤ øÔµõ ´ó
üõ ù¨ ´¡¤¢ Èþ ¤ 5 ´¬¡ ÐÔ ý RB-insert ý öþ ¤¢ : µØ÷
new x C . ¢ª
C
-
y A y
A D D
α Bx δ ε α B δ ε
β γ β γ
new x C
C
-
B Dy B D
x A γ A γ δ ε
δ ε
α β α β
ñø ´ó
Black-Height 5
¢ª üõ ßã y=uncle[x] Ù÷¤ §¨  ßþ 6
û ù¢¢ öÞµ¡¨ ¥ ü¡Â ý ¤ ø¢þ .3 ÛÊê 88
C ôø¢ ´ó C
y -
y
A δ B δ
α Bx x A ε
β ε
α β
ô¨ ´ó
?
B
x A C
α εβ δ
RB-Insert(T,x)
1. Tree-Insert(T,x)
2. color[x]← RED
3. while x6=root[T] and color[p[x]]=RED do
4. if p[x] =left[p[p[x]]] then
5. y ← right[p[p[x]]]
6. if color[y] =RED then
7. color[p[x]] ← BLACK // Case 1
8. color[y] ← BLACK // Case 1
9. color[p[p[x]]] ← RED // Case 1
10. x ← p[p[x]] // Case 1
11. else if x = right[p[x]] then
12. x ← p[x] // Case 2
13. LEFT-Rotate(T,x) // Case 2
14. color[p[x]] ← BLACK // Case 3
15. color[p[x]] ← RED // Case 3
16. RIGHT-Rotate(T,p[p[x]]) // Case 3
17. else(same as then clause with ”right” and ”left” exchanged)
18. color[root[t]]←BLACK
89 RED-BLACK ù¨ - ÃõÂì ´¡¤¢ .7.3
11 11
y
2 14 case 1- 2 14
x
1 7 15 1 7 15
5 8 5 8
x 4 4
case 2
?
11
7 y
x 14
2 11 case 3 7
x 2 8 15
1 5 14
1 5
4 15
4
ùÂð ×þ ¤¢
éÁ 5.7.3
ô÷ üµÒÔ ùÂð ×þ RB-Delete ý¥¨ ù¢ ¤¢ ý¥ Âõ Íþª ý¥¨ ù¢¨ ýÂ
î ´¨ üþû Ôóõ öÞû ýø ùÂð ßþ . ÝþÞ÷ üõ Óþ Âã T ´¡¤¢ ý nil[T]
Âþ¨ ø Àª üõ ù¨ DZüª ßþ Ù÷¤ Ôóõ . ¢¤¢ ¢ø ´¡¤¢ üóÞãõ ýû ùÂ𠤢
ßþ ¤¢) Ýû¢ ù¤ª nil[T] ¤ nil ýûÂð ù¤ª ôÞ RB ´¡¤¢ ¤¢ Àþ ßþÂ
¤¢ ýù¢Ôµ¨ Ûì ø «¡ ¤ÀÖõ ¥ û DZ üª ßþ ÂÒµõ Parent Ôóõ , ÜÂõ
(.¢¤À÷ ¢¡
Ý þ Þ ÷ ´ ì¢ À þ . Ý þ Þ ÷ ü õ ¼ ½ Ê ¤ ´ ¡¤¢ Å ³ ¨ ø éÁ ¤ Â Ñ ÷ ¢¤ õ Â Ê ä
ý¹µÆ ´¡¤¢ ¤¢ ¢¡ ýµÞû RB ´¡¤¢ ¥ éÁ ¯ Âõ ¤ µ¨¢ ±ª î
üõ ù¤ª nil[T] nil ýûÂð ù¤ª RB ´¡¤¢ ¤¢ ö ´Æ÷ öÆØþ f Öì¢ üø¢ø¢
û ù¢¢ öÞµ¡¨ ¥ ü¡Â ý ¤ ø¢þ .3 ÛÊê 90
. ¢ª üõ üû¢ ¤ÀÖõ üϪ ºû öøÀ 7 Í¡ ¤¢ Parent[x] Ôóõ ß»Þû ø ÀþÞ÷
16 ¯Î¡ ¤¢ ´¡¤¢ , Àª ù¨ y Ù÷¤ î ü¤ ¬ ¤¢ , ùÀª Âî£ Âç ø¢  ùø ä
¤ µ¨¢ ôø¢ ´ó ¤¢ . ¢ª üõ éÁ ö (Successor) ýÀã ÂÊä þ ¢ª üõ éÁ
¤±ä y ¥ µ ªÁ 𠤢 î ý Â Æ õ ¢ ª ü õ ° õ ö ¥ éÁ , À ª ù ¨ y  ð
ßµê¤ ß ¥ ¶ä ßþ ø Àª µª¢ û ÂÆõ Âþ¨ ¥ µÞî ù¨ ùÂð ×þ , ù¢Âî üõ
ùÂð Ý÷µ Øþ Âê ¤ ÛØÈõ ßþ Ý÷ üõ õ . ¢ª üõ ´¡¤¢ ¤¢ 4 ´¬¡
×þ ¤ ( ´¨ ù¢ y öÀª éÁ ¥ Û±ì y ùÂð ´¨¤ þ ² À÷¥ Âê ´ÖÖ ¤¢ î) x
ùÂð ø¢ ¥ ¤ ±ä ýãõ x ùÂð ¥ ¤ ±ä üãþ . ÝþÞ÷ Û , Ýî ù¨ Â ê® ¤
x üãþ ©À÷¥ Âê ¤ ö Ù÷¤ Ýî üõ éÁ ¤ y ùÂð î ü÷õ¥ ßþ . Àª ù¨
¥ ©¢¡) . Àª ùÀª ù¨ ¤ø¢ x ¢¤¢ öØõ î ´¨ ßþ ÛØÈõ ú . ݵ¨Âê üõ
. ¢ª üõ ´¡¤¢ ¤¢ 1 ´¬¡ ßµê¤ ß ¥ ¶ä ßþ ø ( Àª ù¨ Û±ì
´¡¤¢ ¤¢  äÔ¤ éÂÏ ¤ üê® ù¨ Ù÷¤ ×þ î ´¨ ßþ õ éÀû
. ¢Þ÷ ¤ 1 ´¬¡ öµ ¢À¹õ ýÃõ Ù÷¤ ø °¨õ ýû ö¤ ø¢ (
4 ´¨ ߨÞõ ݨ ´ã®ø ¨ ¥ üØþ î ÝþÈ÷ Õêõ ÜÂõ ×þ ¤¢ Âð
Àª ´¨¤ þ ² À÷¥ Âê x Øþ °Æ  ´ÖÖ ¤¢) Ýþª ø ¤ ø ¤ øÔµõ ´ó
ߪø ¤ ý µÆî¡ ýû ùÂð ø ÃõÂì ý µÆî¡ ýû ùÂð , ù¨ Ù÷¤ ù ýû ùÂð •
. c’,c À÷õ ´¨ ôÜãõ÷ Ù÷¤ ùÂð ÂÚ÷ þÞ÷
91 RED-BLACK ù¨ - ÃõÂì ´¡¤¢ .7.3
.... ....
.. ..
B D
case -
1
(a) x A B E
D
α β x ε ξ
A new x C
C E
α β γ δ
γ δ ε ξ
... ....
... .
B c new x . c
B
case -
2
(b) x A
A D D
α β α β
C E C E
γ δ ε ξ γ δ ε ξ
... ....
... .. c
Bc B
case 3- new w
x A w xA C
(c) D
β α β γ
α D
C E
γ δ ε ξ δ
E
... .... ε ξ
... .. c
c D
B
x case -
4
(d) w E
A D B
α β c’ ε ξ
C A C
E
γ ε ξ α β γ δ
δ
new x =root[T]
û ù¢¢ öÞµ¡¨ ¥ ü¡Â ý ¤ ø¢þ .3 ÛÊê 92
ö¤ ø¢ ô¹÷ ø ÂÚþÀØþ B ø D ýû ùÂð Ù÷¤ Ëþã 1 ´ó : ñø ´ó (1
. À¨¤ Àû¡ öþ ÖÜ ´¨ ÃõÂì c ö ݪ ùÀª 2 ´ó ¢¤ø ñø ´ó
ö¤ ø¢ × þ ô ¹ ÷ ø D ø C ý û ù ð Ù ÷¤ Ë þ ã 3 ´ ó : ô ¨ ´ ó (3
ä ö üõ ¤ ´¨ ùÀª ù¢¢ ÇþÞ÷ x î üê® ù¨ Ù÷¤ 4 ´ó ¤¢ (4
RB-Delete(T,z)
1. if left[z]=nil[T] or right[z]=nil[T] then
2. y←z
3. else y ← Tree-Successor(z)
4. if left[y] 6= nil[T] then
5. x ← left[y]
6. else x ← right[y]
7. p[x] ← p[y]
8. if p[y] = nil[t] then
9. root[T] ← x
10. else if y = left [p[y]] then
11. left[p[y]] ← x
12. else right[p[y]]← x
13. if y 6= z then
14. key[z]← key[y]
15. // if y has other fields , copy them , too
16. if color[y] = BLACK then
93 RED-BLACK ù¨ - ÃõÂì ´¡¤¢ .7.3
17. RB-Delete-Fixup(T,x)
18. return y
RB-Delete-Fixup(T,x)
1. while x 6= root[T] and color[x] =BLACK do
2. if( x = left[p[x]]) then
3. w ← right[p[x]]
4. if( color[w]=RED) then
5. color[w] ← BLACK //case1
6. color[p[x]] ← RED //case1
7. LEFT-Rotate(T,p[x]) //case1
8. w ← right[p[x]] //case1
9. if(color[left[w]]=BLACk and color[right[w]]=BLACK) then//case1
10. color[w]=RED //case2
11. x ← p[x] //case2
12. else if color[right[w]]=BLACK then
13. color[left[w]] = BLACK //case3
14. color[w] ← RED //case3
15. RIGHT-Rotate(T,w) //case3
16. w←right[p[x]] //case3
17. color[w]←color[p[x]] //case4
18. color[p[x]]←BLACK //case4
19. color[right[w]] ← BLACK //case4
20. LEFT-Rotate(T,p[x]) //case4
21. x←root[T] //case4
22. else(same as then clause with ”right” and ”left” exchanged)
23. color[x]← BLACK
û ù¢¢ öÞµ¡¨ ¥ ü¡Â ý ¤ ø¢þ .3 ÛÊê 94
°ÆÂ nø ...ø2ø1 ýû ù¤Þª î ýÌä näÞ¹õ ý¥¨ ù¢ ý ýù¢¢
.´¨þ¤¥ù¢Ôµ¨À÷ù¢¤ ¡
ö ÝÞ÷ üõ ÂÊä ô÷ ¤ äÞ¹õ Âþ ¥ Âû ¤ Ñõ ßþ ý .¢¢ ÇþÞ÷À÷ùÀª ¥Âê
. ÝþÞ÷ üõ üû¢¤ÀÖõ ö ýû ÅþÀ÷Âþ¢Öõ ¤ set þ¤ Ã÷ Àµ ¤¢. Ýû¢
set={1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 }
set
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1={1 , 5 } 2={2 , 4 , 7 , 10 } 3={3 , 6 , 8 , 9 }
1 2 3
5 4 7 10 6 8 9
. Ýû¢ üõ ¤Âì set þ¤ ¤¢ ¤ ©¤À ùÂð ¢Àä ÂÊä Âû ý ų¨
set
1 2 3 2 1 3 2 3 3 2
1 2 3 4 5 6 7 8 9 10
function find1(x)
{ find the lable of the set containing x}
return set[x]
ݵþ ¤ Úó ßþ. À÷¢Âð üõ ¤ ¢¤¢ ¤Âì ö ¤¢ x î ýäÞ¹õ °ÆÂ find1 â
. ´¨ θ(1) ¥
function merge1(a,b)
{merge the sets labled a and b }
i←min(a,b)
j←max(a,b)
fork←1 to n do
if set[k] = j then set[k]← i
function find2(x)
r ←x
while(set[r]6= r) do
r←set[r]
return r
function merge2(a,b)
if(a<b) then set[b]← a
else set[a]← b
merge2 â ø ´¨üΡ·îÀ áÔ¤ ´ó ßþ ÂÀ ¤¢Âþ ¥ ´¨ O(n) ¥find2 â
. ´¨  ú üܱì ݵþ ¤ Úó ´±Æ÷ î ´¨ θ(1) ¥
ݵþ ¤ Úó ¤¢ ´¨ µØî ö °ÆÂ î ´¨ ýÀÜî Èþ ¤ ÀÜî üÜ±ì ´¡¤¢ ø¢ ¤¢
ö öÀª ï¤ Ã ¥ø¢Âî ¤î áÔ¤ ýø ¤ Àþ Å ´¨ ý ÂµÈ öõ¥ ý¤¢ find ôø¢
.¢Âî ý ÂðÜ
function merge3(a,b)
if(height[a] = height[b])
û ù¢¢ öÞµ¡¨ ¥ ü¡Â ý ¤ ø¢þ .3 ÛÊê 96
set[b]← a
height[a] ++
r← a
else
if(height[a]>height[b]) then
set[b]← a
r←a
else
set[a] ← b
r←b
return r
function find3(x)
r←x
while(set[r]6=r) do
r← set[r]
i←x
while i6= r do
j ← set[i]
set[i] ← r
i←j
return r
.´¨ÂµÞî Ã÷ log n¥Ýµþ ¤ Úó ßþ öõ¥
4 ÛÊê
:¢Þ÷
÷Êþ Â ×Ø •
Û ø ÝÆÖ ×Ø •
À ø ¡ª ר •
©ø ¤ ßþ ¤¢ î ´Æ÷ ©ø ¤ ßþ ¤¢ ´Þû à µØ÷ õ .´¨ ý¥¨ ú ÛÆõ
´¨ ߨÞõ ÂÊä ßþ  ©¥ ¤  ¿µ÷ î ¢¤À÷ ¢ø á®õ ßþ èÀè¢ ÃðÂû
C äÞ¹õ ¥ ÂÊä ö¢Âî ê® þ î ´Æþ feasible â ÔÒø .¢ª üõ
solution , feasible ø Select â óbÆõ á÷ µÆ.¡ þ ´¨ ߨÞõ S äÞ¹õ
¤¢ µê¤ ¤î ýû Æþ÷ ¥ ×þ Âû Å÷îÂê ų¨ ¢ª üõ ´êþ ¤¢ Æþ÷ Æþ÷
Ýþ ¥¨ üõ ¤À ùÂð ×þ ùÂð ø¢ ö ý ø ù¢Âî °î Ýû ¤ ÀµÆû ý µÞî Å÷îÂê
ø¢ ß .´¨ ö ùÀ÷¥¨ ùÂð ø¢ ýû Å÷îÂê áÞ¹õ  ¤À ùÂð ßþ Å÷îÂê î
Ýû¢ üõ õ¢ ¤ À÷ø ¤ ßþ À÷ ùÀÈ÷ µêÂð ý¥ ñ½ î üþû ùÂð ø Â¡ ùÂð
 û ï ýû Å÷îÂê áÞ¹õ Àþ Èþ ¤ Å÷îÂê.Àþ ´¨¢ ´¡¤¢Èþ ¤
ÂÑ÷ ¤¢ ×þ þ ÂÔ¬ °ÆÂ ×þ ´¡¤¢ ñþ Âû ý Àª µ¡¨ ´¡¤¢ î ñ ,Àª
ÂÔ¬ °Æ  ¤ ² ´Þ¨ ñþ Âû ø ×þ °ÆÂ ¤ ´¨¤ ´Þ¨ ñþ Âû. Ýþ Âð üõ
ö ÂÒµõ Àî µª¤ ö î Àõ Àû¡ ´¨À ï ÂÒµõ ý Âþ Èþ ¤ ×þ, Ýî
. ´¨ ïÂ
ù¢ÂÈê ý ô¥ ýû ´ ¢Àã ÛìÀ Ýû¡ üõ. Ýþ ¤¢ Mé 200ø EéÂ
. Ýþ ¤ ø ´¨¢ ¤ ßµõ ßþý¥¨
7000
1
4000
0 0
2200
1
0 1
3000 1100
0 1
1 0
´ó ¤¢ µî¤î Âû ñ·õ ßþ ¤¢ .¢¢ ÇþÞ÷ ¤ ä Ï Ûî , Ñê ¥ ý µÞî ¤ÀÖõ
ñçª ¤ ´ 4·îÀ µî¤î Âû Ýû¢ ¤Âì ¤ ©ÂÒµõ üþø¢ø¢ Àî µî¤î Âû ý
2 ×1200 +2 ×1800+4×900+3×1100+2×1800+4×200=17300
.Àª üõ 7000×8=56000 üãþ ö ý¢ä ´ó ¥ µÞî ¤Æ î
ý Âþ Àî ´¨¤ ² ´Þ¨ ¥ ¤î ßþ ý ,Àª üõ ýµª¤ ñ¢ãõ Àî ßþ
Àû¢ üõ ¤ ü÷õ¥ ´ó ßþ µð¤ à . ¢ Àû¡ n-1 Æþ÷ ·îÀ ñÏ öõ¥ ßþ Â
...
.. .
..
15 ...
....
....
....
....
7 ....
....
....
....
....
....
3 ....
....
....
1 2 4 8
101 (GREEDY ALGORITHMS) ÷Êþ  ýû ݵþ ¤Úó .1.4
§¤ äÞ¹õ îÀª ù¢¨ ¤¢ ´ú ÂèÀ±Þû éÂð ×þ G=<N,A> Àî Âê
î ´¨ üµ¡¤¢ éÂð ßþ¥ª´¡¤¢ ×þ ¥¤ Ñõ.ÀªAö ýúóþ äÞ¹õø N ö
´¨ éÂð ßþ ýúóþ ¥ ü¡Â Ûõª ñ ßä ¤¢ üóø ù¢ éÂ𠧤 Þû Ûõª
: Ìì
:Àª ¤Âì üþú Âþ ¥ ýû ù¤Ãð ¥ ×þ Âû Âðúø Âð ´¨ ´¡¤¢ T=<V,E>
.(û ñþ ¢Àã q , §¤ ¢Àã p) p=q+1 ,Àª ¤ ø¢ Àìê T .1
. p=q+1ø À±Þû T .2
: ñ·õ
p−2
´ ¡¤¢ p ý¤¢ Kp Û õ î ´ ¡¤¢ :ü Þ û¤)?¢¤¢ ª ´ ¡¤¢ À  þ ¥ é ð
(.´¨ ª
| {z } | {z }
K3 K4
:Û
33−2 × 44−2 = 48
ö ýúóþ ¥ ×þ Âû îÀª ¤¢ ö¥ ø éÂð ¤ îÁõ Íþª G éÂð Âð ñ
áÞ¹õ Øþ ¤ Î ´¨ ö ýúóþ ¥ ü¡Âø éÂ𠧤 Þû Ûõªî ´¨ üµ¡¤¢
À÷µõ Øþ üãþ Àª±÷ ¢Âê Âʽõ À÷ üõ õø Ãó î ´¨ ÝÞõ ýª ´¡¤¢
: ¢¤¢ ¢ø ÝÞõ ýª ´¡¤¢ ßµêþ ý ݵþ ¤ Úó À üÜî ¤ Ï
¢Àã äÞ¹õ n ų¨ ÀØõ °Âõ ý¢ã¬ °Â ¤ éÂð ýúóþ Àµ
¥ ä Þ ¹ õ  ¬ ä î ´ ¨ ß þ   ê)¢¥ ¨ ü õ éÂ ð § ¤ ä Þ ¹ õ  ¬ ä
¿µ÷ ñþ n-1 ¢Èõ ¤ÂؤÀì ö greedy ÖÜ ñ( À÷ù¢¤ ¡ °ÆÂ n 1
find â ų¨ Àª µª¢ ¤ ߨÞõ ö¥ ø ßþ µÞî î ¢ª üõ ¿µ÷ üóþ. À÷ª
±¨½õ find(v) ,find (u) Àª e=uv Âð üãþ¢Èõ ü÷¡Âê ñþ ßþ¨ ø¢ ýÂ
ù¢ø Ãê éÂð ýúóþ äÞ¹õ ¤ îÁõ ñþ Àª±÷  ø¢ ßþ Û¬ Âð.À÷ª üõ
1 1 2
2
1 2 3
4 6 5 6 4
4
3
4 3 8
5 6
7 4 3
4 3
.n log n Ýþ ¤¢ ü÷¡Âê ¤ n Å , ´¨ log n ù¥À÷ merge,find öõ¥ ßþ ¤¢
: Ýþ ¤¢ üêÂÏ ¥. §¤ ¢Àã n ø ´¨úóþ¢Àã |A| = a
n(n−1)
(n − 1) ≤ a ≤ 2
⇒ log (n − 1) ≤ log a ≤ log n + log (n − 1) − log 2
⇒ log n ≤ log a ≤ 2 log n
.¢ Àû¡ O(a log a)¥ sort öõ¥ Å ´¨log n ¤¢ Ýû log a Å
üÆþ÷ ݵþ ¤ Úó Óܵ¿õ ýû ©ø ¤ üêÂãõ .4 ÛÊê 104
.¢ª éÂ𠧤 üãþ N äÞ¹õ  B ÀûÀõ õ¢ ¤ÀÖ÷ ¤ À÷ø ¤ ßþ.Àî üõ
ý¥¨ ù¢ (üÆþ Âõ ) ýÀã ø¢ ýû þ¤ ù¢¢ öÞµ¡¨ ¤ ݵþ ¤ Úó ßþ Âð
Ýî ý¥¨ ù¢ binary heap ×þ Âð õ . ´¨ O(n2 ) À ¤¢ ô¥ öõ¥ ÝþÞ÷
Âç ¤  öõ¥ ý ù¢¢ öÞµ¡¨ ø ý¥¨ ù¢ Âç Å. ´¨ O(a + nlogn) Â
.Àû¢ üõ
HEAP-PRIM(G)
1. A ←− φ
2. for each x ∈ V do key[x] ←− ∞
3. H ←− Build-heap(key)
4. select arbitrary vertex v
5. S ←− {v}
6. Decrease-key(H,v,0)
7. Extract-min(H)
8. for each x adjacent to v do
decrease-key(H,x,w(v,x)), π [x] ←− v
9. for i=1 to |V| - 1 do
10. begin
11. Extract-min(H),let v be the vertex
12. A ←− A∪ {(v,π[v])}
13. S ←− S ∪ {v}
14. for each x ∈ V-S adjacent to v do
15. if w(x,v) < key[x] Then
16. Decrease-key(H,x,w(x,v)),π[x] ←−v
17. end
18. return A
üÆþ÷ ݵþ ¤ Úó Óܵ¿õ ýû ©ø ¤ üêÂãõ .4 ÛÊê 106
öõ¥ ø ö ´ó ø¢ î.¢ª ý¥¨ ù¢ À÷ üõ ¤ ¬ ø¢ heap ݵþ ¤ Úó ßþ ¤¢
: ´¨ ùÀª ù¢¢ ª Âþ ¥ ¤¢ û ö ý ô¥
:binary-heap ¥ ù¢Ôµ¨ •
üõ key[x] óø  þ¢ Ö õ heap × þ õ ý î Build-heap â ´ ó ß þ ¤¢
Àþ ų¨,¢¤¢ ¤Âì Èþ ¤ ¤¢ ¤ÀÖõ ßþ Âþ ¥, ´¨ Θ(1)¥ heap ¤ÀÖõ ßþ µØî
O(|E|log|V | + |V |log|V |) = ¥ Ý µ þ ¤ Ú ó Û î ö õ¥ ° Â ß þ
:fibonacci-heap(amortized) ¥ ù¢Ôµ¨ •
Extract-Min â ,¢Âð üõ ¤ O(|V |) öõ¥ öÞû Build-heap â ´ó ßþ ¤¢
üõ ¤ O(1) öõ¥ Decrease-Key â õ, ¢Âð üõ ¤ O(log|V |) öõ¥ öÞû Ã÷
.¢Âð
|E| = Θ(|V |2 ) üãþ Àª (dense graph) Ýîµõ éÂð ×þ ÂÑ÷ ¢¤ õ éÂð Âð
.¢Âð üõ O(|V |2 ) ¥
107 (GREEDY ALGORITHMS) ÷Êþ  ýû ݵþ ¤Úó .1.4
üõ ¤Âì ñþ öøÀ ¤ û §b¤ ôÞ Àµ , Ýû¢ üõ ª Âþ ¥ ñ·õ ¤ ݵþ ¤ Úó ßþ
4| , {z
3, 2} ø1|{z}
, 6 ,5, 0 ´ ¡¤¢ ¨ ¤ ¬ ß þ ¤¢ À û¢ ü õ Û Ø È ¤ ñ þ × þ ´ ¨
|{z}
C B A
ýû ©¥ ¤ ý¤¢ ¢ª üõ Ûʵõ C B ´¡¤¢ ¥ î üþû ÂÆõ . ¢ª üõ ÛØÈ
28
0 1 0 1
10 14 16 10 14 16
5 6 2 - 5 6 2
24 18
25 12 25 12
4 3 4 3
22 22
algorithm Sollin(G)
begin
Fo =(v,k);
i=0;
while there is more than one tree Fj do
for each tree Tj in forest Fj do
choose the minimum weighted edge (u,v) joining some
vertix u in Tj to a vertix v in some other tree Tk in forest Fj
from the otherforest Fj+i by joining all Tj and Tk of Fj with tree
converesponding select edge
i++;
end;
üÆþ÷ ݵþ ¤ Úó Óܵ¿õ ýû ©ø ¤ üêÂãõ .4 ÛÊê 108
Boruvka( G = (V, E) , w ) {
initialize each vertex to be its own component ;
A = {} ; //A holds edges of the MST
do {
for ( each component C ) {
find the lightest edge (u,v) with u in C and v not in C ;
add { u, v } to A ( unless it is already there ) ;}
apply DFS to graph H = (V, A) , to compute the new components
} while (there are 2 or more components) ;
return A ;} // return final MST edges
BORUVKA(V,E):
F=(V,∅)
while F has more than one component
choose leader using DFS
FIND-SAFE-EDGES(V , E)
for each leader v̄ add safe ( v̄ ) to F
FIND-SAFE-EDGES(V, E):
for each leader v̄
safe(v̄)← ∞
for each edge (u,v)∈ E
ū ← leader(u)
v̄ ← leader(v)
if ū 6= v̄
if (w(u,v) < w( safe( ū ))
safe ( ū) ← (u, v)
if (w (u,v) < w(safe(v̄ ))
safe ( v̄) ← (u, v)
109 (GREEDY ALGORITHMS) ÷Êþ  ýû ݵþ ¤Úó .1.4
ßþ Ýû¡ üõ.Àî ÛÞ½ À÷ üõ ¤ W ö¥ ø î Ýþ ¤¢ üµÈ óî î Àî Âê
, i DZüª À÷õ û DZüª ¥ ×þ Âû Àî Âê .Ýî 1, 2, ..., nýû DZüª ¤ óî
ßþ ÂµÈ üµÈ óî ö¢Âî  ýÂ î ´Æ÷ éÀû .Àª vi ©¥ ¤ ø wi ö¥ ø ý¤¢
ø Àø ÂÔ¬ þ Àø ×þ üª Âû ¥ ö üõ ¤ Ñõ ßþ ý Ýþ ´¨¢ ߨÞõ ©¥ ¤
vi
üóø Ã÷ ´  ¤ ú÷ ų¨. Ýþ ¤ ø üõ ´¨À DZª ôÞ ý ¤
wi ´±Æ÷ Àµ
¤Âì óî ¤¢ ø Ýî üõ ¿µ÷ ¤ DZª üØþ üØþ ´Æó ¨ ¥ ßþ Ýî üõ °Âõ
¥ ÂµÈ weight üãþ Ýþ µ¿þ ¤ üµÈ óî Û¡¢ ¤¢ î üª ö¥ ø üª ö ¿µ÷
.¢ª W
W −weight
üõ ¿µ÷ x[k] = W [k] ù¥À÷ ô k üª üãþ üª ßþ ý ¤ ¬ ßþ ¤¢
ý¥¨ °ÂõÎÖê Âþ ¥ ´¨ O(n log n)¥ Ã÷ ݵþ ¤ Úó ßþ öõ¥ .Àª Àû¡ max Ã÷
. Ýþ ¤¢
function Knapsack(w[1..n],v[1..n],W):array[1..n]
for i ←1 to n do
x[i] ←0
weight← 0
{gready loop}
while (weight<W) do
i ← the best remaining object
if(weight+w[i]≤ W )then
x[i]←1
weight←weight+w[i]
else
(W −weight)
x[i]← w[i]
weight ← W
return x
üÆþ÷ ݵþ ¤ Úó Óܵ¿õ ýû ©ø ¤ üêÂãõ .4 ÛÊê 110
Ýþ ¤¢ ¤µ¡ ¤¢ ¤¢ ´ú üêÂð Àî Âê .´¨ üþ ÂÆõ ݵþ ¤ Úó ݵþ ¤ Úó ßþ
.Ýþ Âð üõ ÂÑ÷ ¤¢ ݵþ ¤ Úó ý¢ø ¤ ø öä ¤ éÂð ö¥ ø Åþ Âõ
1
10 50
=
5 30 R
100 32
10 20 5
U
W
4 -3
50
step v C D
initilization - 2,3,4,5 [50,30,100,10]
1 5 2,3,4 [50,30,20,10]
2 4 2,3 [40,30,20,10]
3 3 2 [35,30,20,10]
111 (GREEDY ALGORITHMS) ÷Êþ  ýû ݵþ ¤Úó .1.4
µª¢ ¤ ÂÆõ Øþ ý Š.Àû¢ üõ ¤ ñþ Âû ¥ ¤ ±ä þ Ãû ú ݵþ ¤ Úó ßþ
Ýû¡ Å Ýþ Ãþ  ö ¤¢ ¤ ý ¤ ±ä ýû ùÂð ݪ µª¢ ÂÚþ¢ ý þ¤ Àþ ݪ
: ´ª¢
(n − 1)(n − 2)
(n − 2) + (n − 3) + . . . + 2 + 1 = ∈ θ(n2 )
2
:ÂÆõ ö¢Âî À
2 3 4 5
P 3 0 5 0
üõ ÝÖµÆõ §b¤ ö 1 §b¤ ¥ î ÀµÆû üãõ ßþÀ ÀµÆû ÂÔ¬ î üþû þ¤¢
4 §b¤
f · õ,Â Ô ¬  è ý û þ¤¢ õ. ´ ¨ Â Æ õ ß þ  ù î ¢ ¡ Â Æ õ ß þø Ý þø ¤
ýþ¤¢ õ ø Ýþø ¤ 5 Àµ Àþ 4 ßµê¤ ý Š´¨ 5 ýø 4 ýþ¤¢ ö,
¤±ä öõ¥ ý¥¨ ú þ ø Ûõä ݵƨ ö ü·±õ ¤¢ Ýúõ ¤Æ ¶±õ ¥ üØþ
´¨ ¤î À ß server ×þ öõ¥ ÝÆÖ ôúÔõ ýÀ öõ¥. ýÀ öõ¥ ¥ ´¨
ÂÑ÷ ¢¤ õ éÀû Ý÷µ À÷Âð üõ Åþø ¨ öþ µÈõ ôÞ Ø÷ ßä ¤¢ î ý ¤ Ï
ùª ×þ ´¨ Ó¬ ¤¢ öþ µÈõ öõ¥ ö¢Âî minimum éÀû Âð. Ýþ ´¨¢ Ã÷
. Ýî ÛÞä ÂÚþ¢ ùª ´¨ ¥µõ þ ¢¨ ßþ ÂµÈ ö¢¤ ø ´¨À éÀû Âð ø
Àª üõ ´¿¨ ÛÆõ ¥ µ¨¢ ×þ ýÀ öõ¥ ÛÆõ üÞµþ ¤ Úó ¶½ Àþ¢ ¥
üõ ÝÆÖ (with deadline) ¤¢ ´Üúõ ø (simple) ù¢¨ µ¨¢ ø¢ ýÀ öõ¥
.¢ª
n ñ·õ ý ý µÈõ üÊ¿Èõ ¢Àã Àû¡ üõ î Ýþ ¤¢ server ×þ ÀþÞ÷ Âê
 Âê. Àª üõ É¿Èõ Û±ì ¥ ý µÈõ Âû Åþø ¨ öõ¥ .Àû¢ Åþø ¨ ý µÈõ
ü±Â ݱ Ýû¡ üõ. Àû¢ Åþø ¨ ý µÈõ ×þ À÷ üõ server öõ¥
Â Ñ ÷ Î Ö ÷ ¥ Ý µ Æ ¨ ¤¢ ùÀ ª ý  ³ ¨ ö õ¥ Ý û¢ Å þø  ¨ ö þ  µ È õ ß þ ö ü õ
öõ¥ ͨµõ öþ µÈõ ùÚ÷ ¥ Øþ üãþ . ¢¢Âð Þî Åþø ¨ ´êþ ¤¢ ý öþ µÈõ
, 5 ñø ý µÈõ ý öõ¥. Àû¢ üõ Åþø ¨ ý µÈõ 3 server ßþ ÀþÞ÷ Âê
.À÷ÂÚ Åþø ¨ À÷ üõ ´ó 6 ý µÈõ 3 ßþ î ´¨ 3 ô¨ ø 10 ôø¢
1 , 2, 3 =⇒ T = 5 + (5 + 10) + (5 + 10 + 3)
1, 3, 2 =⇒ T = 5 + (5 + 3) + (5 + 3 + 10)
2, 1, 3 =⇒ T = 10 + (10 + 5) + (10 + 5 + 3)
2, 3, 1 =⇒ T = 10 + (10 + 3) + (10 + 3 + 5)
√
3, 1, 2 =⇒ T = 3 + (3 + 5) + (3 + 5 + 10)
3, 2, 1 =⇒ T = 3 + (3 + 10) + (3 + 10 + 5)
113 (GREEDY ALGORITHMS) ÷Êþ  ýû ݵþ ¤Úó .1.4
ý¢ã¬ °Â Åþø ¨ öõ¥ °Æ  ¤ öþ µÈõ Åþø ¨ ý ݵƨ ßþ ¤¢
¤ À÷ø ¤ ßþ ø Ýû¢ üõ Åþø ¨ ú÷ ´Æó ýÀµ ¥ °Â ø ÝþÞ÷ üõ °Âõ
ý¥¨ °Âõ öõ¥ ú ö .À÷ÂÚ ¤ öÈÆþø ¨ û¤î ôÞ Ýû¢ üõ õ¢ ¤ÀÖ÷
ø À÷¤¢ ¥÷  ý öõ¥ Àø ×þ ×þ Âû î Ýþ ¤¢ üþ ¤î n ÀþÞ÷ Âê
: ñ·õ
ª û ö deedlineø ¢¨ öÃõ °Â î Ýþ ¤¢ ý µÈõ ¤ú î Àî Âê
: ´¨ Âþ ¥
i 1 2 3 4
gi 50 10 15 30
di 2 1 2 1
sequence profit sequence profit
1 50 2,1 60
2 10 2,3 25
3 15 3,1 65
4 30 4,1 80−→ optimum
1,3 65 4,3 45
äÞ¹õ Âû ßþ . ¢Âî  ¤ ú÷ °Â Ý÷µ Âð Ýð fisible ¤ ý ó±÷¢
ó±÷¢ õ ´¨ fisible , 2,1äÞ¹õ ñ·õ ý .´¨ fisible ó±÷¢ ×þ ý¤¢ fisible
. Àª üÞ÷ fisible , 1,2
° Ü Î õ ´ Ü î ¥ î ö öøÀ ø À ª Û ç ª k ¥ ý ä Þ ¹ õ j À þ Þ ÷ Â ê
°Â À÷¨¤ üõ î ý¢¨ §¨Â ¤ û Ûçª Àµ ¢¨ ßþ ÂµÈ öÀ¨¤ ýÂ
. Ýþ üõ ´¨¢
i 1 2 3 4 5 6
gi 20 15 10 7 5 3
di 3 1 1 3 1 3
3
Initialization: 1
↑
1 3
Try 2: 2 1
↑
Try 3: unchanged
1 3 3
115 (GREEDY ALGORITHMS) ÷Êþ  ýû ݵþ ¤Úó .1.4
Try 4: 2 1 4
↑
Try 5: unchanged
Try 6: unchanged
=⇒ optimal sequence: 2 , 1 , 4 value=42
. ´¨ O(n2 )¥ ݵþ ¤ Úó ßþ ý öõ¥
üõ ô¹÷ ¤ ýÀ öõ¥ ób Æõ ùõ äÞ¹õ ù¢¢ öÞµ¡¨ §¨  ݵþ ¤ Úó ßþ
f ±ì î ¤ Ï öÞû, Àû¢
merge â ø Àþ üõ ¤ ´¡¤¢ ýÈþ ¤ find â Àª ùÀûÈõ
´¨ µÞî ©ÀÜî î ö ø Àî üõ °î Ýû ¤ É¿Èõ ýû Èþ ¤ ´¡¤¢ ø¢
Function sequence2(d[1..n]):k,array[1..k]
array j ,F[0..n]
{initialization}
for i ← 0 to n do
j[i] ← 0
F[i]← i
initialize set [i]
{gready loop}
for i ← 1 to n do {decreasing order of g}
k ← find(min(n,d[i]))
m ← F[k]
if m 6= 0 then
j[m] ←i , l← find(m-1)
F[k]←F[l]
merge(k,l)
k←0
for i ←1 to n do
if j[i]>0 then k←k+1 , j[k]←j[i]
return k,j[1..k]
üÆþ÷ ݵþ ¤ Úó Óܵ¿õ ýû ©ø ¤ üêÂãõ .4 ÛÊê 116
F= 0 1 2 3 4 5 6
0 1 2 3 4 5 6
F= 0 1 2
0 1 2
M
0 2
F=
0 2
K K
1 3
F= 0
0
o
1 2
]
3
¤¢ ×þ ö üõ Ýû ú÷ °îÂø ùÀª ù¢¨ ø ×î üêî ù¥À÷ ýû
function DC(x)
return y;
¤ Ï Ý þ Þ ÷  ® Ý û ¤¢ ´ ¨ ü Þ ì¤ n  µ ð¤ à ¢À ä î ¤ ¢À ä ø¢ Ý û ¿  ð
?Àµê üõ üìÔ , Ýî ÛÞä Âþ ¥ ¤ ¬ Âð ñ .Àª üõ O(n2 ) ¥ ñÞãõ
2
µú ¤ öõ¥ î ´¨ O(n ) ¥Ã÷ ݵþ ¤ Úó ßþ ÀþõÂê üõ Ñ
õ î ¤ Î÷Þû
3
⇒ T (n) ≤ 3T ( n2 ) + θ(n) =⇒ T (n) ∈ O(nlog2 )
n n n n
¤¢ ´ ¨
2 ¥ ü Â Ì õ Å Ý þ ¤¢ â Þ
2 +1 þ 2 ü Þ ì¤
2 ¢À ä ø¢ â Þ ýÂ
: ݵþ ¤ Úó
.¢Èõ ù¢Ôµ¨
procedure merge(u[1..m+1],v[1..n+1],T[1..m+n]){
i,j← 1
u[m+1]=v[n+1] ← ∞
for k← 1 to m+n Do
if u[i]<v[j]
T[k]←u[i]
i++
else
T[k]←v[j]
j++}
üÆþ÷ ݵþ ¤ Úó Óܵ¿õ ýû ©ø ¤ üêÂãõ .4 ÛÊê 120
: ñ·õ
1 2 3 4 5 6 7 8
9 10 11
31 3 10 54 7 17 12 43 48 8 2
31 3 10 54 7 17 12 43 48 8 2
31 3 10 54 7 17 12 43 48 8 2
3 31 10 7 54 17 12 43 48 2 8
3 31 10 ∞ 7 54 ∞ 17 ∞ 1243 ∞ 48 ∞ 2 8 ∞
3 31 ∞ 7 10 54 ∞ 12 17 43 ∞ 2 8 48 ∞
3 7 10 31 54 ∞ 2 8 12 17 43 48 ∞
2 3 7 8 10 12 17 31 43 48 54
T (n) = T (d n2 e) + T (b n2 c) + θ(n)
T (n) = 2T ( n2 ) + θ(n)
=⇒ T (n) ∈ O(nlogn)
üÞ÷ inplace ݵþ ¤ Úó ßþ ß»Þû .¢ Àû¡ stable Ýî ÛþÀ± if u[i] ≤ v[j]
.ÀþÞ÷ üõ ù¢Ôµ¨ üØÞî ýÑê ¥ Âþ ¥ Àª
121 (DEVIDE AND CONQUER) Ûø ÝÆÖ .2.4
: ñ·õ
i j
5 1 17 4 48 7 3 9 8 5 25
1 2 3 4 5 6 7 8 9 10 11
p=T[i]=5
k←i
L ← j+1
üÆþ÷ ݵþ ¤ Úó Óܵ¿õ ýû ©ø ¤ üêÂãõ .4 ÛÊê 122
5 1 17 4 48 7 3 9 8 5 25
↑ ↑
k L
5 1 5 4 48 7 3 9 8 17 25
↑ ↑
k L
5 1 5 4 3 7 48 9 8 17 25
↑ ↑
L k
.¢ª üõ ä p ô LÂÊä ý Å¢µêÂÜ L¥ k
3 1 5 4 5 7 48 9 8 17 25
| {z } ⇑ | {z }
T(n)=T(n-1)+θ(n)
=⇒ T(n)=θ(n2 )
T(n)=c n≤ n0
÷¡ ¤¢ þ ø ¢¡ ý¤¢ þ ¤ Âû ¤¢ pivot î Àµê üõ ëÔ ü÷õ¥ ´ó ßþ ÂÀ
: ñ·õ
√
×þ ¤ þ¤ ñø ÂÊä 2 n+1 , quick sort ݵþ ¤ Úó ¥ ýÀþÀ ý ÷𠤢
¤ ÷õ ÂÊä ų¨ , ÝþÞ÷ üõ °Âõ insertion sort À÷õ üõÀÖõ ݵþ ¤ Úó
¥ ݵþ ¤ Úó ßþ ý öõ¥ ´ó ßþ  À ¤¢ , Ýþ Âð üõ ÂÑ÷ ¤¢ pivot öä
?Àþ üõ ´¨¢ üµÈð¥ Τ
:Û
√
=
2 n+1+1
=
√
n+1
÷õ ÂÊä
2
µ ¨¢ ø¢ Å À ÷ Þ ü ì ¢ ¡ ý ¤¢ Â Ê ä ß þ î ´ Æ ÷ ö õ¥ ß þ  À Å
√ √
.Àã n+2 ¥ ôø¢ µ¨¢ ø ¢Àä n µ¨¢ ×þ , Ýþ ¤¢ ÂÊä
√ 2
´ ¨ O((2 n + 1) ) ∈ O(n) Ý û insertion ý¥ ¨ ° Â õ ýÂ ô¥ ö õ¥
√
T(n-( n+2)) θ(n)
√ z }| √ { z }| {
T(n)≤ T ( n) + T (n − n) + θ(n) + O(n)
T (n) = T (k − 1) + T (n − (k + 1) + 1) + θ(n) =
1 P (T (k − P P
n n n
n 1) + T (n − k)) + θ(n) = 1n T (k − 1) + n1 T (n −
k=1 k=1 k=1
1 P1
n−
1 P1
n−
0 2 P1
n−
k) + θ(n) = n T (k) + n T (k ) + θ(n) = n T (k) + θ(n) =
k=0 k=0 k=0
n−1 n−1
2 2 P T (k) + θ(n) = 2 × a + 2 P T (k) + θ(n)
n (T (0) + T (1)) + n n n
k=2 k=2
üÆþ÷ ݵþ ¤ Úó Óܵ¿õ ýû ©ø ¤ üêÂãõ .4 ÛÊê 124
θ(n lg n) Í ¨ µ õ ´ ó ¤¢ ö õ¥ î Ý û¢ ü õ ö È ÷ ü ® þ ¤ ýÂ Ö µ ¨ ñ
ü êÂ Ï ¥ .´ ¨ 1 Ý µ þ ¤ Ú ó ö õ¥ À ª n=2 ð î ´ ¨ ¼ ®ø .´ ¨
ü Àî Âê ñ. ´¨ ¤Âì ñø ôð Å, ´¨ θ(n lg n) = θ(2 lg 2) = 2
ùÚ÷, ´¨ θ(k lg k) ô¥ öõ¥ k < nÂû
X1
2 × a + 2 n− X1
2 a + 2 n−
T (n) = T (k) + θ(n) = θ(klogk) + θ(n)
n n n n
k=2 k=2
X1
2 × a + θ(( 2 ) n−
→ T (n) = (klogk)) + θ(n)
n n
k=2
Z n−1
=
2 × a + θ( 2 xlogxdx) + θ(n)
n n 2
→ T (n) = θ(nlogn)
:ßþ ÂÞ
´¨¢ ¤ ÂÊä ßþ µØî ßõ k î Àû¢ Âç ý ¤ Ï ¤ quick sort ݵþ ¤ Úó
. Ýþ ¤ ø
:ßþ ÂÞ
.Àþ ¤ ø ´¨¢ quick sort ¤¢ Âç ×þ ¥ ù¢Ôµ¨ ¤ û ÷õ ö¢Âî À
Ý µ þ ¤ Ú ó ¥ ù¢ Ô µ ¨ ¤ ý Ì ä 5 ý û µ ¨¢ ¥ × þ  û ý ÷ õ Â Ê ä Å ³ ¨
㨠¿Æ÷ ×þ ¥ ù¢Ôµ¨ ,Ýþ ¤ ø üõ ´¨À ¤ ¬ä ýû ÷õ ÷õ select ô
i î Àî Âê ßþ . Ýî üõ ÝÆÖ x üãþ û ÷õ ÷õ ñ ¤ pivotµêþ
ý Ç¿ ¤¢ Â¬ä ¢Àã n−i Å Àª ÝÆÖ ÎÖ÷ ßþ Ç¿ Â¬ä ¢Àã
ý üµÈ𥠤 ¬ select ¥ Àª i ýøÆõ µØî k Âð . Àª ÝÆÖ ÎÖ÷
125 (DEVIDE AND CONQUER) Ûø ÝÆÖ .2.4
k − i ¤ ¬ ßþ Âè ¤¢ø Ýî üõ ù¢Ôµ¨ üþ Ç¿ ¤¢ Þî ÂÊä ßõ k ßµêþ
• • • • •
• • • • • •
• • x• ◦ ◦ ◦
• • ◦ ◦ ◦ ◦
• • ◦ ◦ ◦
x 3( 12 d n5 e − 2) ≥ 310n − 6
¥ µð¤ Ã Â¬ä ¢Àã ÛìÀ:
üþ5 ýûµ¨¢ ý¥¨ °Âõ ýÂ î ¢ª Âî£ Àþ ݵþ ¤ Úó öõ¥ ü¨¤  ýÂ
Å Ýþ ¤¢ µ¨¢ dn/5e ö ø ´¨ O(1) ¥ î ¢ª üõ ù¢Ôµ¨ insertion sort ¥
¤¢ .´¨ T (dn/5e) Å Àþ ´¨Àû÷õ ÷õ Àþ ÂÚþ¢ üêÂÏ ¥ø ´¨ O(n) ¥
3n − 6 þ
7n + 6 ýûµ¨¢ ¥ üØþ ¤¢ ÂÊä ßõ k î ´¨ ߨÞõ ´ó ßþ ÂÀ
10 10
: Ýþ ¤¢ Ûî ¤¢ Ýî üõ ±¨½õ ¤ µð¤ à µ¨¢ öõ¥ Àû¢ ¤
ý Â¬ä ¢Àã ·îÀ 2(n/5) − 1 Ýþ ¤¢ ÂÚþ¢ ö ¥ ùÀª ¤ üÞµþ ¤ Úó ¤¢
.Àª û ÷õ ÷õ éÂÏ ø¢ ¤¢ À÷ üõ î ´¨
1 ((n − 1) − 2( n − 1)) + 2( n − 1) = 7n − 3
2 5 5 10 2
ü ªø ¤ Ý û ¡ ü õ , 2 ¥ ü ÷
b ±  õ ¥ Ý þ ¤¢ ¤ µ ¡ ¤¢ Å þ  õ ø¢ À î  ê
¥÷ θ(n3 ) bù¥À÷ ü÷õ¥ ý¢ä ´ó ¤¢ î ¤ û Åþ Âõ ® ö üõ î ¢¢
7
.¢¢ Çûî θ(nlog2 ) ñ¢ãõ ü÷õ¥ , ¢¤¢
Åþ Âõ ø¢ ® ´Æ÷ û Åþ Âõ ö¢Âî îÜ ß¨Âµ¨ ¤ Ñõ ßþ ýÂ
n×n
2 2
A= a%
11 a12 B=
b11 b12
,C = A ×B
a21 a22 b21 b22 n×n
n×n
n n
. Ý þ ¤¢ ¥ ÷
2×2 ý û Å þ Â õ ýÂ â Þ Û Þ ä 18ø Â ® Û Þ ä 7 ß þÂ
: ´ª¢ Ýû¡ Å
n 2
T (n) = 7T ( n2 ) + 18 2
18 n2 2 ∈ O(nlog27 − ) =⇒ T (n) ∈ O(nlog27 )
. Ýþ¢Þ÷ ù¢Ôµ¨ O ¥ θ ý À÷ª ÂÔ¬ û þ¤¢ ¥ üÌã ´¨ ߨÞõ ö
127 (DEVIDE AND CONQUER) Ûø ÝÆÖ .2.4
:ßþ ÂÞ
ÛìÀ.Ýû¢ ô¹÷ ¤ 24 ±Âõ ¥ Åþ Âõ ø¢ ® ߨµ¨ ©ø ¤ Ýû¡ üõ
. Ýþ ¤ ø ´¨¢ Àû¢ üõ õ
n 2
(a 2 ) ø ¥ n
an = a × an−1 ¢Âê n
a n=1
T (n) = T (n − 1) + 1 n
¢Âê
0 n=1
T (b 2 c) + 1
n
ø ¥ n
⇒ T (n) = T (n − 1) + 1 = T ( n−1 ) + 2 = T (b n c) + 2 ¢Âê n
2 2
0 n=1
⇒ T (n) = θ(logn)
üÆþ÷ ݵþ ¤ Úó Óܵ¿õ ýû ©ø ¤ üêÂãõ .4 ÛÊê 128
¤ ü Ü ¬ ób Æ õ ö ¤¢ î ´ ¨ û Ý µ þ ¤ Ú ó ß µ ª ÷ ©ø ¤ × þ þ ü Æ þ ÷ õ ÷Â
ý ü¿¨ î Ýû¢ üõ õ¢ ¹÷ ¤ À÷ø ¤ ßþ . ÝþÞ÷ üõ ñ±÷¢  ´ó
n
: k
±¨½õ 1.3.4
n
1
k = 0 or k=n
k = n−1 n−1
k + k−1 else
5
2
4 4
1 2
3 3 3 3
0 .1.. 1.. 2
.. . .. ..
? ... ... .... ...
2 2
1 1 2
1 1 ?
1 0 1
? ?
1 1
n
ݵþ ¤ Úó ßþ ý ô¥ öõ¥ ÛìÀ üãþ ´¨ µÞî ¥ üØþû âÞ ¢Àã
k
n
.´¨ Ω( k )
0 k = 0 or k=n
T (n − 1, k) + T (n − 1, k − 1) + 1
T(n,k)=
else
129 DYNAMIC PROGRAMMING þ üÆþ÷ õ÷ .3.4
1 k = 0 or k = n
g(n − 1, k) + g(n − 1, k − 1)
g(n,k)=
else
g(n, k) = T (n − 1, k) + T (n − 1, k − 1) + 1 + 1 = (T (n − 1, k) + 1) +
(T (n − 1, k − 1) + 1) = g(n − 1, k) + g(n − 1, k − 1) ⇒ g(n, k) = nk
⇒ T (n, k) = nk − 1
: Ýþ ¤¢ üÜî¤ Ï
1−l k = 0 or k = n
T (n − 1, k) + T (n − 1, k − 1) + l
T(n,k)=
else
. ´¨ T (n, k) = n
k −l üµÈð¥ ó¢ãõ 1 − l ≥ 0 ýÂ
ÛÞä Âþ ¥ Õþ ÂÏ ×õþ¢ üÆþ÷ õ÷ ¥ ù¢Ôµ¨ °î ßþ ±¨½õ ýÂ
:Ýî üõ
c[n,k]=c[n-1,k-1]+c[n-1,k]
. Ýû¢ ÛØÈ ¤ Âþ ¥ ñøÀ ´¨ üêî Å
c 0 1 2 . . . . k-1 k
0 1
1 1 → 1
↓
2 1 → 2 → 1
↓ ↓
3 1 → 3 → 3
. .
. .
. .
. .
. .
n-1 1 c[n-1,k-1] → c[n-1,k]
↓
n 1 c[n,k]
Âê .Ýî ¢Â¡ ýÀø dn ,. . . d2 ,d1 ýû ب ͨ ¤ ñ Àø N Ýû¡ üõ
û ب ¢Àã ßþ µÞî ¥ î ý ¤ Ï Ýî ¢Â¡ ¤ ñ Àø N ßþ Ý÷ üõ ü±Â
.Ýî ù¢Ôµ¨
¢Â¡ ý ô¥ ب ¢Àã ÛìÀ ¤ c[i,j] Ýî üõ Óþ Âã ób Æõ ßþ Û ýÂ
0 j=0
∞ i=1 , j < d1
c[i,j]= 1+c[1 , j-d1 ] i=1 , j ≥ d1
c[i-1 , j] i > 1 , j < di
min{ c[i-1 , j],1+c[i , j - di ]} i >1 , j ≥ di
amount 0 1 2 3 4 5 6 7 8
d1 =1 0 1 2 3 4 5 6 7 8
d2 =4 0 1 2 3 1 2 3 4 2
d3 =6 0 1 2 3 1 2 1 2 2
:ݵþ ¤ Úó
Function coins(N,n)
{array d[1..n] specifies the coin,in example there are 1,4,6 units}
array d[1..n]
array C[0..n,0..N]
for i ←1 to n do
C[i,0]←0
for i ←1 to n do
for j ←1 to N do
if(i=1 and j<d[1]) then C[i,j]← ∞
else if(i=1 and j≥ d[1]) then C[i,j]← 1+C[1,j-d[1]]
else if(i>1 and j<d[i])then C[i,j]← C[i-1,j]
else C[i,j]← min{C[i-1,j],1+C[i,j-d[i]]}
. Ýþ ¤¢ öµ¨ N+1ø ÂΨ n Âþ ¥ ,´¨ θ((N + 1)n) ¥ öõ¥
131 DYNAMIC PROGRAMMING þ üÆþ÷ õ÷ .3.4
Àþ ßþ .(Ýþ ¤À÷ ý ÂÆî ´ó)¢ÂØ÷ þ ¢Âî ¿µ÷ ¤ üª ö ö üõ ¤ Âû
P P
.x i ∈ {0, 1} ö ¤¢ î ݪ µª¢ ¤ max( xi vi ) ø xi wi ≤ W
Ûì ö¥ ø üµÈ óî ×þ î üª¥ ¤ ·îÀ v[i,j] Ýî üõ Óþ ÂãÛ ýÂ
0 j=0,∀ i
−∞ or 0 i=1 , 0<j < w1
V[i,j]= V1 i=1 , j ≥ w1
V[i-1,j] i > 1 ,0< j < wi
max{ V[i-1,j],Vi +V[i-1,j-wi ]} i >1 , j ≥ wi
weight unit 0 1 2 3 4 5 6 7 8 9 10 11
w1 =1 v1 =1 0 1 1 1 1 1 1 1 1 1 1 1
w2 =2 v2 =6 0 1 6 7 7 7 7 7 7 7 7 7
w3 =5 v3 =6 0 1 6 7 7 18 19 24 25 25 25 25
w4 =6 v4 =22 0 1 6 7 7 18 22 24 28 29 29 40
w5 =7 v5 =28 0 1 6 7 7 18 22 28 29 34 35 40
¤¢ ´ú éÂð ×þ ¥ ÃþÞµõ §¤ ø¢ Âû ß ÂÆõ ßþ  ùî þ Ãû ݵþ ¤ Úó ßþ
P üØÞî þ¤ ¥ ö üõ ÂÆõ ßµêÂð ýÂ. ´¨ θ(n3 ) ¥ ݵþ ¤ Úó ßþ öõ¥
:¢Þ÷ ù¢Ôµ¨
15
1 I 4
30 5
5 50 15 5
2 - 3
15
0 5 ∞ ∞ 0
5 ∞ ∞
50 0 15 5 50 0 15 5
D0 = L =
30 ∞ 0 15 D1 =
30 35 0 15
15 ∞ 5 0 15 20 5 0
0 5 20 10
0 5 20 10
50 0 15 5 45 0 15 5
D2 =
30 35 0 15 D3 =
30 35 0 15
15 20 5 0 15 20 5 0
0 5 15 10
0 0 4 2
20 0 10 5 4 0 4 0
D4 =
30 35 0 15 P =
0 1 0 0
15 20 5 0 0 1 0 0
?Àî ¢¹þ À÷ üõ üÜØÈõ Àª üÔõ éÂð ýû ñþ ö¥ ø Âð : ßþ ÂÞ
÷ð Àþ û Åþ Âõ ¤î ßþ ý ´¨ üúþÀ .Àµê ëÔ ßØÞõ öõ¥ ßþ µÞî ¤¢
® ¢Àã ÛìÀ mij îÝþ ¥¨ üõ ö ¤ M=(mij )n∗n Åþ Âõ ¤ Ñõ ßþ ýÂ
.Àª Ai Ai+1 .....Aj ® ±¨½õ ý ô¥
: Ýþ ¤¢ ßþÂ
0 i=j
mij =
mini≤k≤j−1 {mik + mk+1,j + di−1 dk dj } j>i , i=1,2,.....n-1
j=i+s⇒
0 s=0 , i=1,...,n
mi,i+s =
mini≤k≤i+s−1 {mik + mk+1,i+s + di−1 dk di+s } i=1,2,.....n-s ,
1≤ s ≤n-1
üÆþ÷ ݵþ ¤ Úó Óܵ¿õ ýû ©ø ¤ üêÂãõ .4 ÛÊê 134
: ݵþ ¤ Úó
X1
n−
s(n − s) = Θ(n3 )
s=1
m13 = {m11 + m23 + 13 × 5 × 3, m12 + m33 + 13 × 89 × 3}
s=2 =⇒ = min{1530, 9256} = 1530
m24 = 1845
135 DYNAMIC PROGRAMMING þ üÆþ÷ õ÷ .3.4
m14 = min{m11 + m24 + d0 d1 d4 , m12 + m34 + d0 d2 d4 , m13 +
s=3 =⇒
m44 + d0 d3 d4 }=2856
¢Âê Âʽõ ÀÜî) .À÷ ùÀª °Âõ ý¢ã¬ °Â û ÀÜî .Àª üõ ü¨Âµ¨¢
´¨ ¼®ø .Àª üõ pi ô i ÀÜî ü¨Âµ¨¢ ñÞµ î ´¨ ßþ  Âê( ´¨
P
n
× þ ¤ À Ü î n ß þ ü ±  î Ý þ Þ ÷ ü ¨¤ Â Ý û ¡ ü õ . pi = 1 î
i=1
ÝÞ÷ üõ û ùÂð ü¨Âµ¨¢ þ Ãû ͨµõ ÝþÞ÷ ÛþÀ± üþø¢ø¢ ý¹µÆ ´¡¤¢
.˻
ÕÎõ ú÷ ü¨Âµ¨¢ ñÞµ ø û ÀÜî ù¤Þª ñøÀ î Àî Âê ñ·õ ýÂ
:Àª Âþ ¥
node 6 12 18 20 27 34 35
probability 0.2 0.25 0.05 0.1 0.05 0.3 0.05
üõ. ´¨ Âþ ¥ ÛØª ´ª¢ üþø¢ø¢ ý¹µÆ ´¡¤¢ ×þ ö üõ î ü¥ üØþ
¢Àã üê¢Ê Âçµõ Å. Ý ¤ û ùÂð áÞ¹õ ü¨Âµ¨¢ þ Ãû ͨµõ Ýû¡
34
12 35
6 20
18 27
1×0.3+2×0.25+2×0.05+3×0.2+3×0.1+4×0.05+4×0.05 = 2.2
üÆþ÷ ݵþ ¤ Úó Óܵ¿õ ýû ©ø ¤ üêÂãõ .4 ÛÊê 136
P
n
ñ , Àª üõ pi (depth(ci ) + 1) ÂÂû ùÂð ôÞ ü¨Âµ¨¢ þ Ãû ͨµõ
i=1
.Àõ Àû¡ ´¨¢ ý ÂÚþ¢ ¤ÀÖõ Àª Âþ ¥ ¤ ¬ ´¡¤¢ Âð
12
6 20
18 34
27 35
1×0.25+2×0.2+2×0.1+3×0.05+3×0.3+4×0.05+4×0.05 = 2.3
ck
1)i = j ⇒ cii = pi
2)j > i ⇒ ci < . . . < ck−1 < ck < ck+1 < . . . < cj
´¨¤ ´Þ¨ ý þ Ãû ø ´¨ ci,k−1  ck ² ´Þ¨ ýûÈþ ¤ ý þ Ãû
j
X
ci,k−1 + ck+1,j + pk + pi + ... + pk−1 + pk+1 + . . .+ pj = cik−1 + ck+1j + pt
t=i
137 DYNAMIC PROGRAMMING þ üÆþ÷ õ÷ .3.4
j
X
⇒ cij = mini≤k≤j {(cik−1 + ck+1j ) + pt }
t=i
: Ýþ ¤¢ Å j = s + i ÝþÞ÷ üõ Óþ Âã
pi s = 0, i = 1, ..., n
ci,i+s = P
i+s
mini≤k≤i+s {ci,k−1 + ck+1,i+s } + pt 1≤s≤n−1
t=i
,1 ≤ i ≤ n−s
.´¨ û Åþ Âõ ý ù¹÷¥ ® ±ª õ÷ ßþ Àî
P1
n−
. (n − s)(s + 1) = θ(n3 ): Ýþ ¤¢ Ã÷  öõ¥ ý ø
s=1
: ñ·õ
C 1 2 3 4 P 1 2 3 4
1 38 98 11 7
8 4
1 1 1 2 2
2 3 5 2 2 2 2
8 8 1
1 3 3 3 3
3 8 8
4 1
8 4 4
Isabelle
Don Rulph
Wally
Ý û ¡ ü õ .À ª µ ª¤ ø¢ Y = y1 y2 . . . yn , X = x1 x2 . . . xn À î  ê
.Àª ùÀõ ´¨À µª¤ ö ¥ é À þ ×þ þ ºû éÁ ¥ î ´¨ ý µª¤
:×õþ¢ Û
Print-LCS(b,X,i,j)
1 if i=0 or j=0 then
2 return
3 if b[i,j]=”-” then
4 Print-LCS(b,X,i-1,j-1)
5 Print xi
6 if b[i,j]=”↑ ” then
7 Print-LCS(b,X,i-1,j)
8 else Print-LCS(b,X,i,j-1) //O(n + m)
Âþ ¥ ö¢¤ ø ´¨¢ ýÂ.Àª üÞ÷ ¢Âê Âʽõ ßþ î ¢Þ÷ Àþ
: ñ·õ
j 0 1 2 3 4 5 6
i yj B D C A B A
0 xi 0 0 0 0 0 0 0
↑ ↑ ↑ - ← -
1 A 0 0 0 0 1 1 1
- ← ← ↑ - ←
2 B 0 1 1 1 1 2 2
↑ ↑ - ← ↑ ↑
3 C 0 1 1 2 2 2 2
- ↑ ↑ ↑ - ←
4 B 0 1 1 2 2 3 3
↑ - ↑ ↑ ↑ ↑
5 D 0 1 2 2 2 3 3
↑ ↑ ↑ - ↑ -
6 A 0 1 2 2 3 3 4
- ↑ ↑ ↑ - ↑
7 B 0 1 2 2 3 4 4
üÆþ÷ ݵþ ¤ Úó Óܵ¿õ ýû ©ø ¤ üêÂãõ .4 ÛÊê 140
ø¢ ßþ î ´¨ üúþÀ .Àþ ù¤ ÖÆõ Àã ýÜÂõ À÷ üõ Ý ßþ ¤ ¬
.(¢¤À÷ ¢ø ýøÆ ´ó ) Àª µª¢ ý¥ 2n − 1 ·îÀ ø n ÛìÀ Àþ Ý
Àª q  B ¢Â ¹µ÷ ¤¢ A ´ÆØª ñÞµ ø p ý¥ Âû ¤¢ A Ý ¢Â ñÞµ Âð
» ÷ ¢Â ð ü õ ¤ ¬ Â Ú þ¢ ý¥ ¥ Û Ö µ Æ õ Û Ø ª ý¥  û î Ý î Â ê ø
ý¥ ø  j B Ý ø ý¥ ø  i A Ý Øþ  ¯ø ÂÈõ Àª A ¢Â ñÞµ p(i, j)
.Àª µª¢ ¥÷
: ´¨ Âþ ¥ üµÈð¥ ÛØª p(i, j) üóÞµ ý Τ •
p(i, j) = p ∗ p(i − 1, j) + q ∗ p(i, j − 1) , i ≥ 1, j ≥ 1
p(0, j) = 1 ∀j ≥ 1
p(i, 0) = 0 ∀i ≥ 1
function p(i,j){
};
ý Τ ø Ý ¤ p(n, n) ý ±¨½õ ý ô¥ ýû âÞ ¢Àã Ýû¡ üõ ñ
h(i + j, j) = h(i + j − 1, j) + h(i + j − 1, j − 1) + 1
h(i + 0, 0) = h(0 + j, j) = 0
.¢ Àû¡
i+j
j −1 µê¤ ¤î ýû âÞ ¢Àã ñب ñõÂê ¥ ù¢Ôµ¨
: Dynamic programming ©ø ¤ Û •
function series(n,p){
array p[0..n,0..n]
q=1-p
for s = 1 to n do
p[0,s] = 1 , p[s,0] = 0
for k = 1 to s - 1 do
for s = 1 to n do
for k = 0 to n - s do
return p[ n , n ]};
. ´¨ Û±ì ©ø ¤ ¥  ú ¤Æ î Àª θ(n2 )¥ ü÷õ¥ üðÀ» °Â ßþ
2 3 4 n
0 1
0 .... ..1.. ..1..
0
.........1 ........ ........
.... . .
1
.....0 ........p .... .p+pq
.. ..
....
..... . ....
..2.. 3 2
2....0 ........p p + pq + pq
.....
3 ....0.
n 0
üÆþ÷ ݵþ ¤ Úó Óܵ¿õ ýû ©ø ¤ üêÂãõ .4 ÛÊê 142
É¿Èõ þ Ãû ÂÆõ ×þ ÂÚþ¢ Âúª Âû ¥ üãþ Àª µª¢ ¤ ÂÆõ þ Ãû ßþ µÞî
.¢¤¢ ¢ø
ÅþÀ÷ P[i][A] . ´¨ ùÀª ý ¤Áð ÅþÀ÷ V − v1 ýû äÞ¹õ Âþ ¥ ͨ ö öµ¨
index i,j,k;
D[i][∅]=W[i][1];
for(k=1;k≤n-2;k++)
minleght=D[1][V-{v1 }];
}
143 û ý¥ ´Þ÷¤ .4.4
©ø ¤ ßþ ¤¢. ´¨ ùÀª ý ¤¢Â Úó üêÁ ýû ô ©ø ¤ ¥ ´Þ÷¤ ©ø ¤ Ý
ÖÆõ Ýû Ý ø¢ Âû ų¨ ùÀª ÝÆÖ üþ 2 ýû µ¨¢ ¢õ ýû Ý
ý ¤Ãð  À÷ø ¤ ßþ ų¨ Àþ ù¤ Àã ¤ ø¢ À÷ üõ û Ý ßþ öõÂúì Àû¢ üõ
:ñ·õ
20
20 13
20 14 12 13
19 20 14 9 12 5 13 8
(1 − ( 12 )lg n ) 1
lg n
X n
n
n=2 : k
= 2 = n(1 − ) = n − 1
i=1
2i 1− 2 1 n
Àª±÷ 2 ¥ ü÷ öª¢Àã î ý ¬ä ÝÞþ Ãîõ ö¢¤ ø ´¨À ý ©ø ¤ ßþ
Èþ ¤ ýû ùÀ÷¥ ß ¤¢ ¤ ÝÞÆîõ Àþ ÂÊä ßþ µð¤ à ßõø¢ ö¢¤ ø ´¨À ýÂ
.Ýþ ¤¢ Èþ ¤ ùÀ÷¥ ÂÊä, ´¡¤¢ áÔ¤ ù¥À÷ Å . ÝþÞ÷ À( 20 üãþ)
. Ýþ ¤¢ ÆþÖõ
üÆþ÷ ݵþ ¤ Úó Óܵ¿õ ýû ©ø ¤ üêÂãõ .4 ÛÊê 144
ö¢¤ ø ´¨À ý ÆþÖõ ¢Àã ÛìÀ ÆþÖõ ¢Àã ßþ Àû¢ öÈ÷ : ßþ ÂÞ
ýÌê ¥ ÎÖ÷ Âû üãþ. ¢¢Âð üõ ù¢Ôµ¨(¤¢ ´ú ´¡¤¢) ¤¢ ´ú éÂð ×þ
þ î À î ü õ ü ¨¤ Â î ´ ¨ ü ã promissing â ø ´ ª¢ ü ¨Â µ ¨¢ À ÷¥  ê
üãþ ¡ ùÂð ¿µ÷ öØõ ¥ ¤ Ñõ . ¡ þ ´¨ (fisible) ü÷Àª ¡ ùÂð ¿µ÷
ßþ ´þ Ãõ . ¡ þ Àõ Àû¡ ¢ø üÜ¡À þ Ëì ùÂð ßþ ¿µ÷ Øþ
Û ¡À î ¢ ª × À þ ¹ þ ¤¢ .À þ Þ ÷ À þÀ ú ¤ Â Ú þÀ Ø þ ý  þ ¥ ø ø¢ º û î
[k,col[k]] ÷¡ ¤¢ ôk Âþ ¥ ø . ´¨ [i,col[i]] ÷¡ ¤¢i Âþ ¥ ø . ÀµÔ÷ ëÔ ô kø ôiÂþ ¥ ø
:Àû¢ ¤ Âþ ¥ ´ó ø¢ k < i ýÂ Àþ Å .´¨
ߨÞõ ýúµó ôÞ Ýû¡ üõ .Àª w  À÷ª üõ ¿µ÷ î üþª ö¥ ø fÖì¢
.Ý ¤
Â𠢪 üõ ê® üª ö Àª ×þ ñþ °ÆÂ Âð ´¡¤¢ ßþ ¤¢ .Àª w4 = 6 ø
¤¢ Âþ ¥ ´¨ 2 ¡ª ¤ µîê .´¨ ÕÞä ñø ´¡¤¢ ßþ. ¢ÈÞ÷ ê® Àª ÂÔ¬
w1 0
1 0
w2 3 0
1 0 1 0
7 3 4 0
w3 1 1 0 1 0
0 ×
12 7 8 3 9 4
1 0 × × × ×
×
13 7
√
×
üÆþ÷ ݵþ ¤ Úó Óܵ¿õ ýû ©ø ¤ üêÂãõ .4 ÛÊê 146
P1
k− P
n
weightk = xi wi , totalk = wi
i=1 i=k
void sum-of-subset(index i,int weight,int total){
if (promissing(i)){
if(weight==W)
cout<<x[1] through x[n];
else{
x[i+1]←− 1
sum-of-subset(i+1,weight+w[i+1],total-w[i+1]);
x[i+1]←− 0
sum-of-subset(i+1,weight,total-w[i+1]);}
}
}
bool promissing(index i){
return
((weight + total ≥ W )&&((weight == W )||(weight + w[i + 1] ≤ W ))
}
void hamiltonian(index i)
index j;
if(promissing(i))
if(i==n-1)
cout vindex[0] through vindex[n-1];
else
for(j = 2 ;j ≤n ; j++){
vindex[i+1] = j ;
hamiltonian(i+1);}
}
147 B &T ( BACK TRACKING ) .5.4
ýÃõ Ù÷¤ ö Ù÷¤ m ¤ Àªüõ §b¤ n Ûõª î éÂð ×þ §¤ Ýû¡üõ
Ýî ùÂð Âû ¿µ÷ ø ÂÆõ Âû ¿µ÷ ý üµÆþ ¹µ÷ ¤¢ ,¢ªüõ µêÂð ÂÑ÷
ÂÑ÷ ¤¢ î Àª ýÀ÷ ¥ ÂµÈ ÀÊÖõ ùÂð ùÂð ßþ ¥ öÀ¨¤
b þ Ãû Âð î
û éÂð Çþ
for each v ∈ N do
DFS(v)
procedure DFS(v)
mark[v] ← visited
DFS(w)
û éÂð Çþ .5 ÛÊê 150
2 3 4
5 6 7 8
2 4
3 7
6 8
6. DFS(4)
7. DFS(7)
8. DFS(8)
: ñ·õ
:Û
öõ¥ öÞû Öì¢ Ýµþ ¤ Úó ý¥¨ ù¢ î ¢Þ÷ öÈ÷ ÂÏ¡ Àþ ¾¨ ¤¢
.¢Þ÷ ù¢Ôµ¨ ´Æó ý¥¨ ù¢ ¥ ö üõ ø ¢¤¢ ¥÷ ùÀª Âî£
´¨ ¼®ø Àª À±Þû Âè éÂð »÷.¢Âî ÇþÞ ¤ §¤ ôÞ öµ÷ §b¤ ×þ
1
6
- R
2 3 4
6I 6 6
R ?
5 w 6 7 8
I
-
1
~
2 4
o
5
? ?
3 q 8
K ?
? 6
7
1. DFS(1)
2. DFS(2)
3. DFS(3)
4. DFS(4)
5. DFS(8)
6. DFS(7)
7. DFS(5)
8. DFS(6)
û éÂð Çþ .5 ÛÊê 152
Procedure DFS2(v)
p ←empty-stack
Mark[v]←visited
push v on to p
while p is not empty do
while there exites a node w adjacent to top(p)
such that mark[w]6=visited do
mark[w]← visited
push w on to p{w is the new top(p)}
pop(p)
(Breath First Search) BFS ݵþ ¤Úó 2.5
procedure BF-Search(G)
for each v ∈ N do Mark[v]← not-visited
for each v ∈ N do
if Mark[v] 6= visited then
BFS(v)
procedure BFS(v)
Q← empty-queue
mark[v] ← visited
enqueue v into Q
While Q is not empty do
u ← first(Q)
dequeue u from Q
for each node w adjacent to u do
if Mark[w] 6= visited then
Mark[w] ←− visited
enqueue w into Q
ö¢Â î visit à ÷ û ñ þ ô Þ Â þ ¥ ´ ¨ O(|N | + |A|) ¥  µ Þ î Ý µ þ ¤ Ú ó ö õ¥
.À÷¤À÷
153 TOPOLOGICAL SORT ý¦ó ý¥¨ °Âõ .3.5
node visited Q
1. 1 16 , 2 , 3, 4
| {z }
2. 2 26 , 3, 4, 5 ,6
|{z}
3. 3 36 , 4, 5, 6
4. 4 46 , 5, 6, 7 ,8
|{z}
5. 5 56 , 6, 7, 8
6. 6 66 , 7, 8
7. 7 76 , 8
8. 8 86
´¨ ÕÞä ñø ÇþÞ) .´¨ ÂÔ¬ ö ý¢ø ¤ ø ¤¢ î Ýþ üõ ¤ ü¨b¤ Àµ
Ûʵõ ýû ñþ ôÞ ø §b¤ ö ų¨ ù¢Þ÷ ¿µ÷ ¤ §b¤ ö ( ê® ¯Âª õ
¤À Ö ÷ ¤ À ÷ø ¤ ß þ . Ý ûÀ õ õ¢ ¤ Õ ¨ þø ¤ f¢À ¹ õ . Ý î ü õ éÁ ¤ ö
¥ µêÂð ©ø ¤ ßþ î ´¨ üúþÀ . À÷ª ù¢Þ éÂ𠧤 ôÞ ÝûÀõ õ¢
öõ¥ ¹µ÷ ¤¢. ÂµÈ ùÀî ¢øÀ½õ Íþª õ , ´¨ ö Èõ f Öì¢ ø DFS ©ø ¤
.´¨ θ(1) ¥ ùÀî ¢øÀ½õ Íþª öõ¥ Âþ ¥ ´¨ θ(|N | + |A|) À ¤¢ ö ýÂ
¥ Óܵ¿õ üø ¡ À ø Àª üÞ÷ ¢Âê Âʽõ î ´ª¢ Àþ
-6
*3
j
1 5
3
s 2? -4
Bellmanݵþ ¤ Úó ¢ª ù¢Ôµ¨ üþ ÂÆõ ý À÷ üõ î üþû ݵþ ¤ Úó ¥ üØþ
À÷µõ ö ýúóþ °ÆÂ î ¤¢ ´ú éÂð ×þ ý ݵþ ¤ Úó ßþ . ´¨ Ford
¤Ø §¤ Âþ¨ â±õ ùÂð ô÷ üûÂð ¥ ÂÆõ ßþ µûî ßµêþ ´ú Àª üÔõ
üÔõ ö¥ ø ý ¤ ø¢ î Àî ¤î ´¨¤¢ À÷ üõ ü÷õ¥ ݵþ ¤ Úó ßþ µ±ó . ¢ø ¤ üõ
.Àª µªÀ÷
RELAX(u, v, w)
1. if d[v] >d[u]+w[u,v] then
2. d[v] ← d[u] + w[u, v]
3. π[v] ← u
BELLM AN − F ORD(G,w,s)
1. INITIALIZE-SINGLE-SOURCE(G,s)
2. for i← 1 to (|V [G]|-1) do
3. for each edge (u, v) ∈ E(G) do
4. RELAX(u,v,w)
5. for each edge (u, v) ∈ E(G)
6. if d[v] > d[u]+w(u,v) then
7. return FALSE
8. return TRUE //θ(|V ||E|)
5 5
r ^x r R x
∞ ∞ 6 ∞
6> Y
-2
6 3 I-2 6 6
8 -3 8 -3
s 0y2 7 s 0 y2 7
-4 -4
j ? R 7s ? R
7 ∞ -∞ 7 -∞
9 y 9
y z z
(a) (b)
5 5
r ^ x r ^ x
6 -2 4 2 4
6 I 7 6 6 3 I -2 6
8 -3 8 -3
s 0 i 2 7 s 0 y2 7
? -4 w 7 s ? -4
-R
7s 7 -2 7 2
9 y 9 z
y z
(c) (d)
5
r x
w
2 4
63 I-2 6
8 -3 7
s 0 y2 ? -4R
q - -2
7 7
y 9 z
(e)
DAG-Shortest-Path(G,w,s)
1. Topologically sort the vertics of G
2. initialize-single-source(G,s)
3. for each vertex u,taken in Topologically sorted order do
for each vertex v∈Adj[u] do
RELAX(u,v,w)
û éÂð Çþ .5 ÛÊê 156
θ(|V | + |E|)ÂÂ
:Àî ´ì¢ Âþ ¥ ñ·õ .´¨ ñØþ¦ ó
6 1
r s t ~
x y sz
∞ 5- 0 2- ∞ 7- ∞ -1- ∞ -2 -∞
* 4 > >
3
2
6 1
r s x y
7-s -1- ∞ -2-~
t z
∞ 5- 2- ∞
0 ∞ ∞
3 4 *
3
6 2
1
s
r
2-
t sx y ~z
∞ 5- 0 2 7 - 6 -1- ∞ -2- ∞
> 4
3
6 2 1
r s x y z
7 -s
5- t s
∞ 2- -1- -2-
0 2 6 6 4
4 * >
3 2
6 1
r s y z
t s x -1 -2~
∞ 5-
0
2-
2
7- 6 - 5 - 4
3 4 3 3
3 2
6 1
r s t j x y jz
∞ 5 - 0 2- 2 7 - 6 -1- 5 -2- 3
3 >
4
3
2
6 1
r x z
-2 s
s t s y
-1-
∞ 5- 0 5 -3
2- 7-
2 6
* * 3
3 4
2
6 ÛÊê
. ´¨ üÜØÈõ ¤Æ ¤î Àµê üõ üìÔ ÖÜ Âû¤¢ Ý÷À õ î ßþ
,À÷ÂþÁ üõ öþ ÂÑ÷ ¢¤ õ éÀû öÀ¨¤ öøÀ î üþû ÖÜ þ öþ ü ýû ÖÜ
Loop Invariant ßþ õ¥ ßþ ¤¢.ÀµÆû ³õî üÆþ÷ õ÷ ¤¢ ¸þ¤ ÛØÈõ ×þ
´¨¤¢ ݵþ ¤ Úó ×þ þ Ý÷À ÝþÞ÷ üõ ù¢Ôµ¨ û Loop Invariant ¥ õ âìø ¤¢
û Âçµõ ß Î¤ î ´¨ µó õÂê ¤±ä À üûð þ ×þ Loop Invariant
ß»Þû ø ÖÜ Û¡¢ öõ¥ Âû ,ÖÜ ý ¥ Û±ì î Àî üõ ö ¤õ ýõ÷ ¤¢
ñ·õ À Ã÷ úµ÷ ¤¢ ø ¢ª ù¢¢ ¼® Âʵ¿õ üÜ¡ ¤ ¬ ö ¥ ù¢Ôµ¨ ¥ ÂÏ
:ÀþÞ÷ üõ
...
// the Loop Invariant must be true here
while ( TEST CONDITION ) {
//top of the loop
...
//bottom of the loop
//the Loop Invariant must be true here
}
// Termination + Loop Invariant ⇒ Goal
...
üÞ÷ ý Âç Loop Invariant üµ¨¤¢ Àî Âç ÖÜ ¤¢ û Âçµõ Âþ¢Öõ î üµìø
¤±ä î ¢Þ÷ µØ÷ ßþ Àþ Loop Invariant ö¢Þ÷ É¿Èõ ý .Àî
õ À÷õ üõ üì ´¨¤¢ ø ´ ÖÜ ¤ÂØ Âû ¥ Àã ø Û±ì î À÷¤¢ ¢ø ý ¤Æ
î ßþ  Ýúõ ö ¥ ø ´¨ ͱ Âõ ÖÜ ¤î î ´¨ Loop Invarint ü¤±ä
À÷õ üõ üì ´¨¤¢ ÖÜ Ûõî ý ¥ Àã î ´¨ ýà ö :Post-condition
. ´¨ ´¨¤¢ ¢ª ¥è ÖÜ Øþ ¥ Û±ì Pre-condition Ýþª ßÿÞÎõ 1
.¢¤À÷ Loop Invariant üµ¨¤¢  ü±÷  Loop Variant ý Ýû¢ öÈ÷ 3
.´¨ ´¨¤¢ ÖÜ ý Âû¥ Àã Loop Invariant Ýû¢ öÈ÷ 4
159 LOOP INVARIANT .1.6
×þ ¥ Û±ì loop Invariant ÂðÝû¢ öÈ÷ Àþ ô¤ú ¢¤ õ üµ¨¤¢ ö¢¢ öÈ÷ ýÂ
.À÷õ üõ ´¨¤¢ Ã÷ ýÀã ¤ÂØ ¥ Û±ì ´¨ ´¨¤¢ ÖÜ ¤ÂØ
î ´ ¨ ß þ ö ø Ý þ Þ ÷ ü ± ó µ Ø ÷ À þ ´ Þ Æ ì ß þ ¤¢
þ 2 ¢¤ õ ö¢¢ öÈ÷ âìø ¤¢. ´¨ ü®þ ¤ ýÂÖµ¨ Èõ 14 ÛÂõ ýÂ
øÔ ßþ Ýþ ù¢Þ ¤ ÂÖµ¨ ýû ôð 4 ¢¤ õ ö¢¢ öÈ÷ ø Ýþ ù¢ú÷ ¤ ÂÖµ¨
1. int sum=0;
2. int k=0;
3. while(k < n){
4. k++;
5. sum+=k;
6. }
........................................................................................................
precondition : sum = 0, k = 0
P
n
postcondition : sum = i
i=1
P
k
loop invariant : sumk = i
i=1
INITIALIZATION:
¤Þ¨ ø¢ ¤  Âʵ¿õ üûÚ÷ .6 ÛÊê 160
:
0
P
k = 0 ⇒ sum = i = 0 = sum
i=1
MAINTENANCE:
Àª ´¨¤¢ ÖÜ ¤ÂØ ¥ ô j ÜÂõ ý loop invariant ÂðÝû¢ üõ öÈ÷ ñ
TERMINATION:
P
n
sum = i ≡ postcondition
i=1
:ÀþÞ÷ üõ ±¨½õ ¤ ÂÔ¬ ¥ µð¤ Ãø ¼½¬ ý¢Àä Ûþ ¤ µîê î üÞµþ ¤ Úó(2
1. int factorial(n){
2. i =1;
3. fact =1;
4. while(i ! = n){
5. i++;
6. fact=fact×i; }
7. return fact;
8. }
.............................................................................................................
precondition : n ≥ 1
161 LOOP INVARIANT .1.6
¤ precondition ¯Âª ´Þû ö ¤¢ î ´¨ üÞµþ ¤ Úó, ݵþ ¤ Úó ßþ : µØ÷
Ýþ ÂÚ ÂÔ¬  ¤ nø µêÂÚ÷ ÂÑ÷ ¤¢ ¤ n ≥ 1 Ϫ Âð Âþ ¥,Àû¢ üõ öÈ÷ ü¡
.À÷¨¤ Àû¿÷ ù¿ó¢ ¹µ÷ ¤ õ øÀª Àû¡ ¤ÂØ ¤ ´þú÷ ü ÖÜ
¤ ÂÔ¬ ¥ µð¤ à ¼½¬ ¢Àä ø¢ ß íµÈõ Üä ôÆÖõ ßþ µð¤ à î üÞµþ ¤ Úó(3
:À÷¢Âð üõ Â
2. int mprime = m;
3. int nprime = n;
4. while(mprime ! =nprime){
6. mprime - = nprime;
7. else
8. nprime - = mprime;}
9. return mprime;
10. }
.....................................................................................................
precondition : m, n ∈ Z +
¤Þ¨ ø¢ ¤  Âʵ¿õ üûÚ÷ .6 ÛÊê 162
MAINTENANCE:
• else :
nprimei+1 = nprimei − mprimei , mprimei+1 = mprimei
⇒ gcd[mprimei+1 , nprimei+1 ] = gcd[mprimei , nprimei −mprimei ] =
gcd[mprimei , nprimei ] = gcd[m, n]
TERMINATION:
4. int denom=1;
5. while (count<k){
6. count ++;
7. denom×=count;
8. result+=pow(n,count)/denom;
9. }
2
loop invariant : result = 1 + n + n2! + · · · + ncount
count! , denom = count!
2
postcondition : 1 + n + n2! + · · · + nK! = result
K
...............................................................
INITIALIZATION:
0
count = 0, denom = 1, result = 1 ⇒ n0! = 1 = result
MAINTENANCE:
2
resulti = 1 + n + n2! + · · · + ncounti
counti ! , denomi = counti !
2
= 1 + n + n2! + · · · + ncounti ! + (count
counti+1 counti counti+1
n n
resulti+1 = resulti + (count i+1 )! i+1 )!
TERMINATION:
2
count = k ⇒ result = 1 + n + n2! + · · · + nK
K! ≡ postcondition
¤Þ¨ ø¢ ¤  Âʵ¿õ üûÚ÷ .6 ÛÊê 164
ô¹÷ ¤ üã±Ï ¢Àä ø¢ âÞ Âþ ¥ ݵþ ¤ ÚóÀû¢ öÈ÷ loop invariant ¥ ù¢Ôµ¨ (5
:Àû¢ üõ
function add(y,z)
1. x := 0 ; c := 0 ; d := 1 ;
2. while(y > 0 ) ∨ (z > 0 ) ∨ (c > 0 )do
3. a := y mod 2;
b :=z mod 2;
4. if a ⊕ b ⊕ c then x : = x+d ;
5. c := (a ∧ b) ∨ (b ∧ c) ∨ (a ∧ c);
6. d :=2 d; y := b y /2 c;
z:=b z /2 c;
7. return(x)
.......................................................................................................
loop invariant : (yj + zj + cj )dj + xj = y0 + z0
x0 = 0, c0 = 0, d0 = 1 ⇒
(yj + zj + cj )dj + xj = (y0 + z0 + 0) × 1 + 0 = y0 + z0
: üãþ ´¨ ¤Âì ô j ýÜÂõ ý loop invariant ÝþÞ÷ üõ Âê ñ
(yj + zj + cj )dj + xj = y0 + z0
¥ Ü Â õ ß þ ¤¢ î cj+1 ¢ ª ü õ ùÀ û È õ Ý ¹ Í ¡ ¤¢ î ¤ Ï ö Þ û ß » Þ û
:¢Þ÷ Óþ Âã Âþ ¥
dj ((yj mod 2 + zj mod 2 + cj ) mod 2) (∗) (byj /2c + bzj /2c) × 2dj
(yj + zj + cj ) dj + xj = y0 + z0
¤Â Ø k ¥ À ã  ð,À î ü õ À Þ ¡ Ö Ü î Ý þ  ð ü õ Â Ñ ÷ ¤¢ ¤ ü ÷ õ¥ ñ
(yk + zk + ck )dk + xk = y0 + z0
yk = zk = ck = 0 ⇒ xk = y0 + z0
¤Þ¨ ø¢ ¤  Âʵ¿õ üûÚ÷ .6 ÛÊê 166
ô¹÷ ¤ üã±Ï ¢Àä ø¢ ® Âþ ¥ ݵþ ¤ ÚóÀû¢ öÈ÷ loop invariant ¥ ù¢Ôµ¨ (6
:Àû¢ üõ
function multiply(y,z)
1. x :=0
2. while (z >0)do
3. x :=x + y × (z mod 2);
4. y := 2 y; z :=b z/2 c;
5. return(x)
........................................................................................................
loop invariant : xj + yj × zj = y0 × z0
x0 = 0 ⇒ xj + yj × zj = x0 + y0 × z0 = y0 × z0
: üãþ ´¨ ¤Âì ô j ýÜÂõ ý loop invariant ÝþÞ÷ üõ Âê ñ
xj + yj × zj = y0 × z0
: Ýþ ¤¢ Å
k ¤¢ ëÔ ßþ Âð î Àª Àû¡ ÂÔ¬  z ¤ÀÖõ Àþ üõ öþ ÖÜ î úµ÷ ¤¢ø
: Ýþ ¤¢ Àû¢ ¤ ÖÜ ¤ÂØ ßõ
zk = 0, xk + yk × zk = y0 z0 ⇒ xk + yk × zk = xk + yk × 0 = xk = y0 × z0
ùÀ ÷¢Â ð î ý x ¤À Ö õ À ¨¤ ü õ ö þ Ý µ þ ¤ Ú ó ü µ ìø î À ª ùÀ û È õ Å
ø ÜÎõ ¹µ÷ öÞû ßþ ø ¢ Àû¡ z ø y ýóø Âþ¢Öõ ® ¢ª üõ
. ´¨õ ¤Ñµ÷ ¢¤ õ
ùÀ÷õ üì ø ´ÞÆì ¤¡ Âþ ¥ ݵþ ¤ ÚóÀû¢ öÈ÷ loop invariant ¥ ù¢Ôµ¨ (7
function divide(y,z)
2. while w ≤y do w :=2 w;
3. while w > z do
4. q :=2 q; w := b w /2 c ;
5. if w ≤ r then
6. r :=r - w; q :=q+1;
7. return (q , r)
.......................................................................................................
loop invariant : qj wj + rj = y0 , rj < wj
r = y0 , q = 0 ⇒ qj wj + rj = 0 + y0 = y0
qj wj + rj = y0 , rj < wj
ÖÜ ø¢ ýø ¤ ý ¤Àì ´¨ ô¥ ýÀã ¤ÂØ ¤¢ û Âçµõ ´ã®ø ßã ý ñ
ÖÜ ¤¢, ݵêÂð ÂÑ÷ ¤¢ z  ¤ w ñø ÖÜ áø Âª ¥ Û±ì,ÝþÞ÷ Ûõ ݵþ ¤ Úó
ýúµ÷ ¤¢ Å, ÀþÞ÷ üõ  ø¢ ¤ w ´¨ ¤Âì w≤y ¯Âª î üãìõ ñø
ø ¥ z Âð, ݵêÂð ÂÑ÷ ¤¢ w = z õ Âõ ýÀµ ¤¢ î ´¨ ÂÏ¡ ßþ ßþ ø ´¨
¤ Â û ø À ÷ õ ü õ ü ì ø ¥ Ã ÷ öÀ ª Â Â ø¢ ¤ Â û ø ù¢ ø ¥ Ã ÷ w À ª
Àª ¢Âê z ¤ÀÖõ Âð ñ, Ýþ ÂÚ ùÀþ¢÷ ¤ Óî ´õ ä Ý÷ üõ Ã÷ öÀª ÓÊ÷
w ßþ Ã÷ ôø¢ ÖÜ ¤¢ õ , Ýþ ¤¢ ¤µ¡ ¤¢ üø ¥ ý w ñø ÖÜ ýúµ÷ ¥ Àã
ý¢Âê ¤ÀÖõ Àû¿ Âð ø ¢¢Âð üõ ±¨½õ ö Óîø ùÀª ÓÊ÷ ¤ Âû ùÀõ ´¨¢
ÖÜ ý ¤Â젯ª î ´¨ üó ¤¢ ßþ ø ¢ Àû¡ z ¢¡  Àª µª¢
.Àª üõ w/2  bw/2c ¤ÀÖõ ÖÜ ßþ ¤¢ ¤ÂØ ¤ Âû ¤¢ Å, ´¨ w>z
qj+1 = 2qj , wj+1 = bwj /2c : Ýþ ¤¢ ô j + 1 ¤ÂØ ¤¢ ñ
1: rj+1 = rj , qj+1 wj+1 + rj+1 =
2qj bwj /2c + rj = 2qj (wj /2) + rj = qj wj + rj = y0
wj+1 > rj ⇒
2: wj+1 > rj ⇒ rj < wj+1 , rj+1 = rj
⇒ rj+1 < wj+1
öþ ¤ÂØ k ¥ Àã ݵþ ¤ Úóø ùÀª ¤¡ ôø¢ ýÖÜ ¥ üµìø Ã÷ úµ÷ ¤¢
function power(y,z)
1. x :=1;
2. while z > 0 do
4. z :=bz /2 c;
5. y :=y2 ;
6. return (x)
¤Þ¨ ø¢ ¤  Âʵ¿õ üûÚ÷ .6 ÛÊê 170
loop invariant : xj yj zj = y0 z0
xj yj zj = y0 z0
j+1 ÜÂõ ý ÖÜ ñø ¤ Õ±Ï ø ô j ÜÂõ ý loop invariant §¨  ñ
: Ýþ ¤¢ ô
xj yj zj = y0 z0 ,
2
Àª ¢Âê z Âð ⇒ xj+1 = xj yj , zj+1 = bzj /2c, yj+1 = yj
Àª ø ¥ z Âð ⇒ xj+1 = xj , zj+1 = bzj /2c, yj+1 = yj 2
: Ýþ ¤¢ Å
2×bzj /2c
Àª ¢Âê z Âð : xj+1 yj+1 zj+1 = xj yj × (yj ) =
2×(zj −1)/2
xj yj × (yj ) = xj yj zj = y0 z0
2×bzj /2c
Àª ø ¥ z Âð : xj+1 yj+1 zj+1 = xj × (yj ) =
2×(zj )/2
xj × (yj ) = xj yj zj = y0 z0
ô k ÜÂõ À÷õ ÜÂõ ×þ ¤¢ î À¨¤ üõ öþ üãìõ ÖÜ Ã÷ ¤î ýúµ÷ ¤¢
xk × yk zk = y0 z0 , zk = 0 ⇒ xk = y0 z0
ö óø y ¢ª üõ ù¢¢ Ûþ½ õ ݵþ ¤ Úó ýúµ÷ ¤¢ î ý x °Â ßþÀ
.¢¢ õ ¤ ÜÎõ ý¹µ÷ Ã÷ ݵþ ¤ Úó ßþ Å, ´¨ óø z
171 LOOP INVARIANT .1.6
function sum(A)
Pn
comment return i=1 A[i]
1. s :=0;
2. for i := 1 ton do
3. s :=s+A[i]
4. return (s)
.....................................................................................................
j
X
loop invariant : sj = A[i]
i=1
: Ýþ ¤¢ invariant
0
X
j = 0 ⇒ s = s0 = A[i] = 0
i=1
ýÜÂõ ýÂ, Àª ¤Âì ô j ýÜÂõ ý loop invarint Ýî üõ Âê ñ
: Ýþ ¤¢ ô j+1
j
X j+1
X
sj+1 = sj + A[j + 1] = ( A[i]) + A[j + 1] = A[i]
i=1 i=1
n
X
j = n ⇒ s = sn = A[i]
i=1
1. v := 0
2. for i := n downto 0 do
3. v := A[i]+v.x
4. return (v)
..................................................................................................
n
X
loop invariant : vj = A[i]x i−j
i=j
Á ó, À þ Þ ÷ ü õ ù¢ Ô µ ¨ ü È û î for ý Ö Ü ¥ Ý µ þ ¤ Ú ó ß þ î ¢ Þ ÷ À þ
: Ýþ ¤¢ ýÀã ýÜÂõ ¤¢, Àª ¤Âì ô j ýÜÂõ ýÂloop invariantÂð ñ
P
n P
n
A[i]xi−j −A[j] A[i]xi−j
vj −A[j] i=j i=j+1
vj = A[j] + vj+1 .x ⇒ vj+1 = x = x = x =
P
n P
n
A[i]xi−j−1 = A[i]xi−(j+1)
i=j+1 i=j+1
P
n
öÞû î j=0⇒v= A[i]xi : Ýþ ¤¢ ø ùÀª j=0 ÖÜ ¥ ø ¡ ôÚû ¤¢
i=0
. ´¨õ¤Ñµ÷ ¢¤ õ ý¹µ÷
173 (AMORTIZED ANALYSIS) üî
úµ¨ Ãó÷ .2.6
Ýî üõ ù¢Ôµ¨ µØ÷ ßþ ö¢¢ öÈ÷ ý ©ø ¤ ßþ ¥ . ¢ª üõ ߨªÂ¨ ùÀª Â
þ Ãû äÞ¹õ ×þ öø ¤¢ ÛÞä ×þ Âð üµ ´¨ ×î ÛÞä Âû ͨµõ þ Ãû î
Ãó÷ õ Ýî üõ ´±½¬ ͨµõ ø ßÚ÷õ ¢¤ õ ¤¢ õ Âð . Àª µª¢ ý¢þ ¥
üÞ÷ Ûõª ¤ ý ¤õ ýû ©ø ¤ ø ¢¤¢ øÔ ßÚ÷õ ´ó ¤¢ Ãó÷ üî úµ¨
´÷Þ® ¤ ´ó ßþ ÂÀ ¤¢ ÛÞä Âû ͨµõ ý öõ¥ üî úµ¨ Ãó÷ ×þ . ¢ª
. Àî üõ
:¥
ͨµõ þ Ãû , ´ó ßþ ÂÀ ¤¢ ßþ  . ¢Âð üõ ¤ T (n) fäÞ¹õ, ´ó ßþ ÂÀ
T (n)
ý ͨµõ þ Ãû ßþ î Àî . ´¨
n ÜÞä Âû üî
úµ¨ þ Ãû þ
¢õ äÞ¹õ ¤¢ ÜÞä ¥ á÷ ßþÀ î üµìø üµ , ´¨ 뢬 ÜÞä Âû
ÜÞä ¤ üøÔµõ ͨµõ ýû þ Ãû ´¨ ߨÞõ ýÀã ©ø ¤ ø¢ ¤¢ õ . ÀµÆû
¤ ýÀã ©ø ¤ ø¢ ´ì¢ õ ´¨ ù¢¨ Âð ©ø ¤ ßþ . Ýû¢ ´±Æ÷ Óܵ¿õ ýû
. Ýî üõ Ãó÷ ¤
1 µÈ ù¢¢ öÞµ¡¨ , üãÞ¹ Ãó÷ ¥ ñ·õ ßóø ¤¢ : 1 ñ·õ
¢¤ø ¤ x ÂÊä : push(S, x) :¥ ´Æ¤±ä ÀµÆû O(1) ¥ î µÈ üܬ ÛÞä ø¢
.ÀØõ S µÈ
push ÜÞä n ¥ äÞ¹õ ×þ üþú÷ þ Ãû ßþ . Àª 1 ôÀî Âû þ Ãû Ýî
. ´¨ n , pop ø
ý ¥ ¤ ÂÊä k î Ýî üõ ê® µÈ ¤ multipop(S, k) ÛÞä ×þ õ ñ
. Àî
µÈ ¤¢ ý ÂÊä ºû Âð ¢Âð üõ TRUE ¤ÀÖõ Stack-Empty â Âþ ¥ Àî ±ª ¤¢
Multipop(S, k)
1. while not Stack-Empty(S) and k 6= 0
2. do pop(S)
3. k ←k−1
µÈ Ãþ¨ Âð ´ó ßþ ÂÀ ¤¢ äÞ¹õ ßþ¤¢ , Ýî üõÃó÷ ´Æó¡ Àµ ¤¢ î
ý öõ¥ ´ó ßþ ÂÀ ¤¢ . ´¨ O(n) ¥ multipop ÛÞä þ Ãû Àª n ·îÀ
ßþ ÂÀ ¤¢ þ Ãû ùÀõ ´¨¢ ¹µ÷ õ ´¨ ´¨¤¢ Ûܽ ßþ Âð
ÛÞä Âð , ´ÖÖ ¤¢ . Ýþ ¤ ø ´¨À µú üþ öÂî ×þ ÜÞä n Ûõª
×þ ýø ¤ , (multipop ßµêÂð ÂÑ÷ ¤¢ ) pop â ü÷¡Âê ¢Àã , ßþ . ¢ª
stack 1
175 (AMORTIZED ANALYSIS) üî
úµ¨ Ãó÷ .2.6
ßþ ¤¢ ßþ . ´¨ ÛÞä ö ͨµõ þ Ãû öÞû âìø ¤¢ ÛÞä Âû ý üî úµ¨
ýû ©ø ¤ ¥ õ Ýþ ù¢Âî ±¨½õ ¤ ͨµõ þ Ãû õ Âð î ¢ª üõ Àîb ù¤ø¢
. ´¨
2 üÈþÃê k-bit üþø¢ø¢ ùÀ÷¤Þª ób Æõ ©ø ¤ ßþ ¥ ÂÚþ¢ ñ·õ : 2 ñ·õ
üþø¢ø¢ ¢Àä . ´¨ ùÀ÷¤Þª öä length[A]=k ñÏ A[0..k − 1] þ¤ ×þ
INCREMENT(A)
1: i ← 0
2: while i < length[A] and A[i] = 1
3: do A[i] ← 0
4: i←i+1
5: if i < length[A]
6: then A[i] ← 1
Ü Þ ä n ¥ µ ª¤ × þ ý ´ ó ß þ  À ¤¢ î ý ¤ Ï Ý û¢ ¤ ý  µ Ö ì¢
A[1] , Àî üõ Âç â ü÷¡Âê ¤ Âû ¤¢ A[0] . ¢ª O(n) ¥ INCREMENT
. Àî üõ Âç ¤
n
b4c Âû A[2] ø Àî üõ Âç ¤
n
b2c Âû â ý ¤ n ¤¢
blg nc
X n
∞
X 1
b c<n = 2n
i=0
2i
i=0
2i
O(2n)
. ¢ª üõ
n = O(1) ÜÞä Âû ͨµõ þ Ãû ßþÂ
þ µÞî ÛÞä üãìø þ Ãû ¥ ´¨ ߨÞõ üûð ¦ ¤ª ßþ î ¢ª üõ ù¢¢ «Êµ¡
þ Ã û ¤ ¢ ª ü õ ùÂ ¡£ Û Þ ä × þ ýø ¤ ¦ ¤ ª ö ä î ý þ Ã û .À ª Â µ È
, Àª ÛÞä üãìø þ Ãû ¥ ÂµÈ üî úµ¨ þ Ãû î üõÚû . Ýþð í úµ¨
ü õ µ ê ð Â Ñ ÷ ¤¢ ù¢¢ ö Þ µ ¡ ¨ ¤¢ « Ê ¡ Û Þ ä ö ¤ ± µ ä ö ä é µ ¡
¤Æ üãÞ¹ ©ø ¤ ©ø ¤ ßþ . ¢ª ù¢Ôµ¨ ´¨ üãìø þ Ãû ¥ µÞî öÈî úµ¨
. ´¨ øÔµõ
¥ Ýû¡ üõ õ Âð . ¢ª É¿Èõ ´ìÀ ÜÞä Âû üî úµ¨ þ Ãû Àþ Àµ
×î ÜÞä Âû ´ó ßþ ÂÀ ¤¢ ͨµõ þ Ãû Øþ ± ý üî úµ¨ ©ø ¤
Ûî üãìø þ Ãû ý üþ öÂî ×þ üÜî üî úµ¨ þ Ãû Àþ Ýî ù¢Ôµ¨ , ´¨
. ˻
: Ýþ ¤¢ , Ýî
n
X n
X
Ĉi ≥ Ci
i=1 i=1
ü î ú µ ¨ ø ü ã ìø þ à û ß é µ ¡ ù¢¢ ö Þ µ ¡ ¨ ¤¢ ùÀ ª ù ¡£ ü þ ú ÷ ¤ ± µ ä
. ´¨
n
X n
X
Ĉi − Ci
i=1 i=1
þ à û ù Ú ÷ À ª ü Ô õ ü þ ú ÷ ¤ ± µ ä  ð . À ª ü Ô õ  è È Þ û À þ ¤À Ö õ ß þ
üþú÷ ¤±µä ݪ °ìÂõ Àþ ßþ . ¢ Àû¿÷ üãìø þ Ãû ý öÂî ×þ
177 (AMORTIZED ANALYSIS) üî
úµ¨ Ãó÷ .2.6
ÜÞä üãìø þ Ãû î Ýî üõ ý ¤ ø¢¢þ Àþ ÂÚ ÂÑ÷ ¤¢ ¤ µÈ ñ·õ :1 ñ·õ
: ´¨ Âþ ¥ ¤ ¬
Push : 1
Pop : 2
Multipop : 3
Push : 2
Pop : 0
Multipop : 0
â üî úµ¨ þ Ãû õ ´¨ Âçµõ multipop üãìø þ Ãû Âð Àî
¥ ( üãìø þ Ãû ù¥À÷ ) Àø 1 Ýî üõ µÈ ¢¤ø ¤ ÂÊä ×þ üµìø ´¨ ÂÔ¬
ù¡£ üª ¤¢ ùÀ÷õ üì Àø ×þ ø Ýþ ¥¢Â üõ ¤î ßþ ô¹÷ ý üî
úµ¨ þ Ãû
b
. ¢ª üõ
â üµìø . ´¨ µÈ ¥ üª ßµª¢Â þ Ãû âìø ¤¢ üª ýø ¤ ùÀª ù¡£ ¤±µä ßþ
b b
¢ª üõ ßõ ùÀª ù¡£ ¤±µä ßþ ¥ ÂÊä ßµª¢Â þ Ãû ¢ª üõ ü÷¡Âê pop
¤ ü ª ýø ¤
b
multipop þ pop Û Þ ä ô ¹ ÷ ýÂ ü ê î ¤ ± µ ä È Þ û õ ß þ Â .
. ¢ª üÞ÷ üÔõ ùð ºû ¤±µä ´¨ µÈ ¤¢ ý ÂÊä î ü÷õ¥ . Ýþ ¤¢
î ´¨ O(n) í úµ¨ þ Ãû multipop ø pop ø push ÛÞä n ¥ äÞ¹õ Âû ýÂ
Âç ÂÔ¬ ¤ ´ î ü÷õ¥ ý ¤±µä ÂÚþ¢ Àø ø ¢ª üõ ´¡¢Â Àø ×þ
ÀþÀ ¤±µä ý¥÷ ø ´¨ ¢õ ô¥ ¤±µä , ö ö¢Âî ÂÔ¬ ý ßþ ¢¤¢
Ã÷ üþú÷ ¤±µä Å ´Æ÷ üÔõ ùð ºû ùÀ÷¤Þª ¤¢ û ×þ ¢Àã ö ø ´Æ÷
þ Ãû ý öÂî î ´¨ O(n) ߨªÂ¨ þ Ãû ßþ . ¢ª üÞ÷ üÔõ ùð ºû
. ´¨ üãìø
¤Þ¨ ø¢ ¤  Âʵ¿õ üûÚ÷ .6 ÛÊê 178
ýø ¤ Û Æ ÷ µ ©ø ¤ , À ÷¢Â î ü õ ¤ î ù¢¢ ö Þ µ ¡ ¨ × þ ¤¢ É ¿ È õ ü ª × þ ýø ¤
b
üê® ¤ÀÖõ î ´Æþ üÆ ©ø ¤ ö ë Âê . Àî üõ ¤î Ûõî û ù¢¢ öÞµ¡¨
. ¢ª üõ Óþ Âã ÛÆ÷µ ý¦ Â÷ öä ¹þ ¤¢ ¢¨ öÞû þ ùÀª ù¡£
ý Àª óø ù¢¢ öÞµ¡¨ D0 ø Àª n 1 ¥ ù¢¢ öÞµ¡¨ ýû ¢Àã Âð
: Ýî üõ Óþ Âã i = 1, 2, · · · , n Âû
Ci =ô iÜÞä ô¹÷ üãìø öõ¥
Di = ô i ÜÞä ô¹÷ ¥ Àã ù¢¢ öÞµ¡¨
P
n P
n P
n P
n
Ĉi = [Ci + Φ(Di ) − Φ(Di−1 )] = Ci + Φ(Di ) − Φ(Di−1 )
i=1 i=1 i=1 i=1
P
n
= Ci + Φ(Dn ) − Φ(D0 )
i=1
ý üþ öÂî Ûî üî úµ¨ þ Ãû ßþ Φ(Dn ) > Φ(D0 ) Ýî ÂêÂð
. ¢ ª ô ¹ ÷ ´ ¨ ß Ø Þ õ Ü Þ ä À Ý ÷¢ ü Þ ÷ õ ö . ´ ¨ Û î ü ã ìø þ Ã û
´¨ ÂÂ ÛÆ÷µ Âç ßþ . ´¨ üÔõ Âè â ×þ ÛÆ÷µ â üãþ
:
. ´¨ µÆø ÛÆ÷µ â ¿µ÷ ¹þ ¤¢ ùÀõ ´¨À üî úµ¨ þ Ãû
ßþ . ´ª¢ Ýû¡ Óܵ¿õ üî úµ¨ ýû þ Ãû Óܵ¿õ ýûÛÆ÷µ â ý¥
D0 = üó¡ µÈ
Φ(D0 ) = 0
Å ¢ ª ü Þ ÷ ü Ô õ ù ð º û þ¤ × þ Û ¡¢ Â ¬ ä ö
Φ(Di ) ≥ 0 = Φ(D0 )
Àª µª¢ ÂÊä s µÈ , i − 1 ÜÂõ ¤¢ Ýî üõ Âê
Φ(Di−1 ) = s
Φ(Di ) − Φ(Di−1 ) = (s + 1) − s = 1
Ĉi = Ci + Φ(Di ) − φ(Di−1 ) = 1 + 1 = 2 → O(1)
Φ(Di ) − Φ(Di−1 ) = (s − 1) − s = −1
Ĉi = Ci + Φ(Di ) − φ(Di−1 ) = 1 − 1 = 0 → O(1)
0 0 0
k = min(s, k) Φ(Di ) − Φ(Di−1 ) = (s − k ) − s = −k
Ĉi = Ci + Φ(Di ) − φ(Di−1 ) = k 0 − k 0 = 0 → O(1)
î ´¨ ¼®ø
Φ(Di ) ≥ 0
ti = ô i ÜÂõ ¤¢ À÷ª üõ ÛþÀ± ÂÔ¬ î üþû ×þ ¢Àã
Ci = ti + 1
¤Þ¨ ø¢ ¤  Âʵ¿õ üûÚ÷ .6 ÛÊê 180
if bi = 0 ⇒ bi−1 = k = ti
⇒ bi ≤ bi−1 − ti + 1
if bi > 0 ⇒ bi = bi−1 − ti + 1
P
n
Ci0 ≤ 2n → O(n)
i=1