Tải bản đầy đủ (.ppt) (28 trang)

Tiểu luận môn Kỹ thuật lập trình Hệ thức truy hồi (Recurrence)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (266.83 KB, 28 trang )


Hệ thức truy hồi
(Recurrence)

 !"#$%&'()*+
Nguyễn Thị Thanh Tâm
Lê Bá Minh Phong
Trần Thị Thành
Nguyễn Vũ Cát Tường
Trần Như Đăng Tuyên


,-.+/"0 1" 2*34
50 1" 2*346(7 89 1"+3
7 :; 89 1" 287 (8<"
0 = 0>*+ 2-"?+"@(8
2""8ABACD&
2E(3BF8/"GHD
=>*3I # 1" 2*34&,6(

D I

D"J38#>*3

D+B K2

&LD I

=# 1" 2*34:MD I4
:"
"&,N"?+#


"&OP>*3N Q"8R"1
@8S8T"?+#8<"8U84 V6(
"@W"+#:M"" X""MBAP
<

LD I6(7 D=# 1"
2*34Y !&2; #*>*=U *3"Z
[ 2"" 2V<N"?+#6(\
8&

LD I" R8<"B][8R8
"^ 2+3"^8A# 1" 2*34&

_@[
5S + ]8"^ 28A# 1" 2*34B+*
 
nnTnT += )2/(2)(
Bước 1: Suy đoán T(n)=O(nlgn)
Bước 2: Sử dụng phương pháp qui nạp để chứng minh T(n) ≤ c.nlogn
(c:hằng số thích hợp nào đó):
Giả sử rằng giả thiết quy nạp đúng với n/2, có nghĩa là:
T([n/2]) ≤ c[n/2]lg[n/2]. Thế bất đẳng thức ở giả thiết quy nạp vào hệ thức
truy hồi (1.1), ta có:
(1.1)
trong đó bất đẳng thức đúng với mọi c ≥1.

 _#""1 @8S8T"?+B*38:M
>*3N"` R#a8/*Y#:&0
VU"S +"Z2+2M8/*Y#: 2P
:""DBa 2"1>*3NUXG36(

8S8TB!B*38&,A# 1" 2*34
&U"S +="Z2+2M" R"QMBA"
8?68R"^ 2b"68S8/*Y#
:&*3U3*"E*(380YJ32+7 BA
;8/&=B]c&_c Xb"6
8Ib"6cJ* *c&O8U
2V<"DBa"?+"1>*3NY0
C+d @8S8T&
,RYT"["8/*(3

Chọn điều kiện biên n0, chứng minh (n)≤cnlgn với
n>=n0.

Ta có thể chọn n=3 là điều kiện biên. Khi đó T(3)=5 và
T(3) ≤ C3lg3 . Với C>=2

5"B*38# A 

0"D"*"#"8#

O!+(Y#(B!B N

I* "0 1" 2*3 4 " N 8d ^ 2" X +
8# D !
 
nnTnT ++= )172/(2)(
Xét ví dụ:
Mới nhìn vào công thức truy hồi này có vẻ phức tạp vì
sự có mặt của tham số 17. Tuy nhiên tham số 17 này
về cơ bản không ảnh hưởng đến nghiệm của hệ thức

truy hồi trên khi n đủ lớn.
Vì vậy, có thể đoán luôn nghiệm T(n)=O(nlgn)

Dự đoán các cận trên và cận dưới một cách sơ lược
rồi sau đó thu nhỏ miền giữa cận dưới và cận trên bằng
cách cố gắng làm tăng cận dưới và giảm cận trên

7 BA8R"E6*e

0
f
 BA 2V < " R ! 8 8S N

f
"?+
f
 1" 2*34>*3N 
Q"Y0"18<"&

*3J= I >*3N"+8?N

T" [" WK 6N ! 8 :M #" 2g ^"
"77 BAN @"<
_@[
   
1)2/()2/()( ++= nTnTnT
   
11)2/()2/()( +=++≤ cnncncnT
Dự đoán mới: T(n) ≤ cn-b
   

bcn
bcnbncbncnT
−≤
+−=+−+−≤ 121)2/()2/()(
(với b ≥1)
Ta đoán rằng nghiệm là O(n), và gắng chứng tỏ T(n) ≤ cn
với một chọn lựa thích hợp cho hằng c. Thay thế suy
đoán vào phép truy hồi ta có:
sai

I8h:IBA"?+# 1"/N @"<
,0Y"Z"E8/*"ZC 28ABA6(YI7
# 1" 2*34"+8<"W"8- 2a (N
D
!8d^ 2"8&
ij # 1" 2*34
5 R8D=+# 1" 2*34(3:M"" +3
8h"":IU8R #[ +BFY0>*+ J/#"
6( 2`"" 2-BF6(""BA*3&
,^ c6&
+"

c
k
l
J3V +" R8^ 6N'c

8R"8<"# 1"
2*34B+*
'c'kl

# 1" 2*34 D !# 1"&("P
"#6('cm6&
+38h g' (
+"c

c'cm6cm6&66
 
nnTnT lg)(2)( +=

GWj /D I

LD I6(D=# 1" 2*3
4 Y 8D =U 2;  n* [ 8A  n #
1" 2*34"N#\8

*3Y0""DBa 2#"8#U
X G3 \  8I #" 8 # " R Y0
"@W"

,R YT" [" 8/* (3U"S + BF 8 X R* /
D  "J3 8# >* BF "* ";  
D  8 # " BD Ba ( "@ W"
D&

&LD"J38#>*3

2D"J38#>*3U"0 1" 2*34
8<" R#N"J3&

5J38#>*38<"WJ3!EE!+("0 1"

8#>*3&nS a g1" 2"J38#>*38N#
""@"B ="-*a1"8 2>* 2X
J2d&

V+ !"# *G  BF6( h"@ K
(:7""1""?+"J38#>*3&O!+ 2 h8U"S
+BF2S 2+8<"8/ V+ !"#"?+ *G
:M"":I8h Q"&

ij @[U"9NWj 7 "J38#>*38R8+2+
7
C8# 1" 2*34B+*
5S +:T 8E*:M"" G 2*( X"G 2
"
6V=(3&5S +BF N7 "J38#>*3 g# 1"
2*3
4U"o&
 
)()4/(3)(
2
nnTnT Θ+=
 
)()4/(3)(
2
nnTnT Θ+=



Kích thước của bài toán con giảm khi chúng ta triển khai
tiếp cho đến khi chúng ta đạt đến điều kiện biên.


Kích thước của bài toán con ở một nút với độ sâu i là n/4
i
.

kích thước của bài toán con đạt đến giá trị 1 khi mà n/4
i
=1
hoặc là tương đương khi mức i=log4
n
do vậy cây có log4
n
+1
mức (0,1,2 log4
n
).
Xác định độ cao của cây đệ quy:

Tiếp đến chúng ta tính chi phí cho mỗi mức của cây, số lượng nút của mức
dưới gấp 3 lần số lượng nút của mức kề trên nó và vì thế số nút tại độ sâu i
là 3
i
. Bởi vậy kích thước của bài toán con sẽ giảm xuống với cấp số nhân hệ
số 4 cho mỗi mức khi chúng ta đi xuống từ gốc, mỗi nút tại độ sâu i với i=0,
1, 2, 3, , log4
n
– 1 có chi phí là c(n/4
i
)2. Việc nhân lên chúng ta sẽ thấy tổng
chi phí của tất cả các nút tại độ sâu i với i = 0, 1, 2, , log4

n
- 1, là 3
i
c(n/4
i
)
2
=
(3/16)
i
cn
2
. Ở mức cuối cùng tại độ sâu log4
n
có nút với chi phí đóng
góp là T(1) vì vậy tổng chi phí của mức này là T(1) với .
3log
4
n
3log
4
n
)(
3log
4

Chi phí cây đệ quy:

J3V"S + @ h"@"?+ ; "=""
1"8RW"8-"@" (:7"J3

( )
)(
1)16/3(
1)16/3(
16
3
)(
16
3

16
3
16
3
)(
3log
2
log
1log
0
3log
2
3log
2
1log
2
2
22
4
4

4
4
4
4
ncn
ncn
ncncncncnnT
n
n
i
i
n
Θ+


=
Θ+






=
Θ+







++






++=


=


Trong công thức cuối này nó có dạng là tổng cấp số nhân
vì vậy chúng ta có:
Do đó chúng ta có thể suy ra phỏng đoán T(n)= O(n
2
) cho
hệ thức truy hồi
 
)()4/(3)(
2
nnTnT Θ+=

 J3V"S +B][D I8RYR"1
!8"?+"S +6(8S&
 G G3Ucm

6(7 "G 2"?+# 1" 2*34

cH k% lp⌊ ⌋


5S +*A"Z2+2Mb

6(7 MBAo

=B]2M= I >*3N8Sk%U".+6(
⌊k%⌋b⌊k%⌋
I:; 89 1"a= I >*3N(# 1" 2*34
+"
 bH⌊k% l⌋ "

bH⌊k%⌋

l"

bHk%

l"

cHkq

l"

b

UrHkq"&
_G3#"?+cH k% lp⌊ ⌋


6(m


Dùng phương pháp thế kiểm chứng

GWj 
lOPD(3 +" R8#""D
Ba("@W"D&
l  "*A "P "s = B] [ 6N D
 I8RYR"1&
l!""; t 2<8#"D I&

H&LD+B K2

LD+B K2"*";7 D
Y h>* (2u2(8R=>*3I 
""# 1" 2*34N
c+k:lv
28+rU:oUv6(7 (W"
8-D" 2"

# 1" 2*3 4 2 0 = V + !"
# "?+ *G   8# >*3& 2 8U :(
"Y@" "8<""+ (+:(
""Y@" "k:+U:D

V + !" # :(  " 6( k:&
V+8RJ"+( h<""YI >*=
:( "6(v


,-6e+B K2

5+r(:o6(""MUv6(7 (U(8<"
8-.+ 2""BA*3Y0J K"0 1"
2*34
c+k:lv
1. Nếu f(n) = O(n
log
:
+

w
) với ε > 0 nào đó, thì T(n)=Θ(n
log
:
+
)
2. Nếu f(n) = Θ(n
log
:
+
) thì T(n)= Θ(n
log
b
a
lgn)
3. Nếu f(n) = Ω(n
log
:
+ +


w
) với ε > 0 nào đó.
Nếu af(n/b) ≤ cf (n) khi n đủ lớn thì T(n) = Θ (f (n))
(c là một hằng số nào đó, c < 1)

GWj 

2"=:+ 2V<U +8+BB(v
(
6
:
+
&

K 2!""U#"?+# 1" 2*348<"W"
8-:a(6D 2+(&

 2 2V<UI*(
6
:
+
6(6DU
#BF6(cp
6
:
+
&

2 2V<HUI*(v6DU#BF6(

cpv&

2 2V<I*+("PY@""xU +J
7  g+BA6+2 (#BF6(c
6
:
+
6c
pv6&

( 2!""U"7 (" I =
8<"6(2u&

2 2V<UY0"Zv=C
DU"`=CD K8+ 1"&1"
6(U K #"Gv=CD
6
:
+
7 
g+BA7 Mo(8&

2 2V< 1:+UY0"Z=v
=6D
6
:
+
U"`=6D K
8+ 1"((2+"`= C+8/*Y#
y @"J8Az+vk:b"v&,/*Y#(3

8<" C+E*I ""(8+ 1"( +BF
^&




,/*>*+ 2Q6(=G2+2M:+
2V<Y0:+4 ; "=""Y=
{"v&

57 Y=""n+ 2V<(
Yv6(CD6:+Y0C
D K8+ 1"&

5sG3U"7 Y=""n+""
2V<(HYv6(6D
6
:
+

Y0=6D K8+ 1"&

I*(v2D(7  2n6t
h8U^"=B]8/*Y# 2 2V
<HY08<"*3 2XU +Y0 RB]
[D+B K28R=>*3I #
1" 2*34&

_@[
5"0 1" 2*34c|kHl


50 1" 2*34 2"

a=9

b=3

f(n)=n

'*32+U
6
:
+
c


6
H
|
cp



_Xvcm
6
H
|$w
wcU[ 2V
<"?+8-6e+B K2( *8<"YI >*=
cp




_@[
ckHl

50 1" 2*34 2"

a=1

b=3/2

f(n)=1

n
log
b
a
= n
log
3/2
1
= n
0
= 1

Vì f(n)=Θ(n
log
3/2
1

)=Θ(1) áp dụng cho trường hợp 2 ta
được
T(n) =Θ(n
log
3/2
1
lgn)=Θ(lgn)

×