TRUONG DAI HOC CONG NGHE THONG TIN KHOA KHOA HOC MAY TINH BAI TAP MON PHAN TICH VA THIET KE THUAT TOAN HOMEWORK #02: PHAN TICH THUAT TOAN DE QUY GV hướng dẫn: Huỳnh Thị Thanh Thương
Trang 1
TRUONG DAI HOC CONG NGHE THONG TIN
KHOA KHOA HOC MAY TINH
BAI TAP MON PHAN TICH VA THIET KE THUAT TOAN
HOMEWORK #02: PHAN TICH THUAT TOAN DE QUY
GV hướng dẫn: Huỳnh Thị Thanh Thương
Nhóm thực hiện:
1 Bui Nhat Phi 22521078
2 Thái Ngọc Quân 22521189
3 Nguyễn Phú Tài 22521280
4 Huỳnh Nhật Minh 22520862
TP.HCM, ngày 12 tháng 4 năm 2024
Trang 21 Bài tập 1
a) Gửi ngân hàng 1000 USD, lãi suất 12% / năm Số tiền có được sau 30 năm là bao nhiêu?
Gọi 7(m) là thời gian thực hàm đệ quy
e Véi n = 0, số tiền nhận được là hằng số, nên tốn thời gian IA ¢
e V6in > 0:
— Số tiền gửi ngân hàng sẽ được tính theo công thức:
Số tiền sau n năm = Số tiền sau (n - 1) năm * (1 + Lãi suất)
— Do đó, hàm sẽ gọi đệ quy 1 lần ứng với thời gian 7{ø— 1) và c¿ là tổng chi phi tính toán
Vậy:
Tín) = Cy ; neu n=0 T(n-l+eo ,néun>O0
b) Cho doan chương trình sau:
long Fibo(int n)
{
if @ = 0 || n = 1)
return 1;
return Fibo(n-1) + Fibo(n-2);
}
Gọi T{(n) là thời gian thực hiện Fibo(n)
e Với › = 0 hoặc 1, số lệnh thực hiện là hằng số, nên tốn thời gian e¡
® VỚI n > ]:
— Hàm Fibo(n) gọi đệ quy 2 lần gồm: 1 lần gọi Fibo(n-1) ứng với thời gian 7{w — 1)
và 1 lần gọi Fibo(n-2) ứng với thời gian 7{n — 2)
— Thời gian tính tổng kết quả của 2 lần gọi đệ quy là œ›
= T(n) = Tín — L) + Tín — 3) + œ
Vậy:
m) =
T(n— 1)+ T{n— 2) +œ›, nêu n > ]
c) Cho đoạn chương trình sau:
Trang 3public int g(int n)
{
if ( == 1)
return 2;
else
return 3*g(n/2) + g(n/2)+5;
}
Goi T(n) 1a théi gian thye hién g(n)
e Véin = 1, số lệnh thực hiện là hằng số, nên tốn thời gian e¡
e V6in > 1:
— Ham g(n) gọi đệ quy 2 lần: 2 lần gọi g(n/2) ứng với thời gian 72/2)
— Thời gian tính tổng kết quả của 2 lần gọi đệ quy là œ›
= T(n) = 2T(n/2) + œ
Vậy:
Tín) = Cy , neu n=l 2T(n/2)+ ca, nếu n > ]
d) Cho đoạn chương trình sau:
long xn(int n)
{
if (mn == 0) return 1;
long s = 0;
for (int i=1; i<=n; i++)
s = s + i*i*xn(n-1);
return s;
}
Goi T(r) 1a thai gian thue hién cha wn(n)
e Với n = 0, hàm chỉ thực hiện duy nhất lệnh return 1, nên tốn thời gian c¡
e Với n > 0, ta thay:
— Chương trinh duyét qua vong l&p for n lan, vi mdi lan goi dé quy ham an(n — 7), với i
là index của vòng for
— Ứng với mỗi lần lặp, ta lại thực hiện phép cộng tổng
Do đó chỉ phí là: Ð 7, T{n — 7) + œ
Vậy:
T(n) C1, néu n = 0
3), ¡7í n—)+@, néun>0
Trang 4{
if(n < 1) return 0;
for(i=1; i<= n; i++)
for(j=1; j<= n; j++)
print ("*");
Draw (n-3);
}
Gọi T(n) là thời gian thực hiện của Draw(n)
e Với ø› < 1 số lệnh thực hiện là hằng số, nên tốn thời gian e¡
® VỚI n >= Ì:
— Hàm Draw(n) gọi đệ quy một lần: Draw(n-3) ứng với thời gian 7'{» — 3)
— Có hai vòng lặp được duyệt qua n lần, thdi gian sé 1A cyn?
= 7(n) = Tín — 3) + c2n?
Vậy:
Tín) = Cy 3 neu n<l Tín — 3) + cạn? ,néun>1
f)
hanoi (n,A, B, C)
{
if(m == 1) transfer(A, C);
else
{
hanoi(n-1, A, C, B);
transfer(A, C); //chuyén 1 dia tit cOt A sang cét C
hanoi(n-1, B, A, C);
}
}
Phân tích:
e Với n = I1, chỉ thực hiện một lần chuyển đĩa từ A sang C, nên tốn thời gian 1
® Với n > 1, ta có:
— Trước khi chuyển đĩa cuối từ A sang , ta chuyển (ø — 1) đĩa từ A sang B hoặc từ B
sang Ở ứng với thời gian Tín-])
— San khi chuyển (»— 1) đĩa từ A sang B hoặc từ B sang C, ta chuyển một đĩa từ A sang
€ ứng với thời gian là 1
— Ban đó ta chuyển (ø — 1) từ B sang hoặc tit C sang A ứng với thời gian T{m-1) Do đó: 7(m) = 2f(n — 1) +1
Trang 5kh¿ m = 1
2T(n-—1)+1 khí n >
2 Bai tap 2
Tín) = 270) +n?
olor) +] 4 =47f+ 12+
= ( 7 n2 = 7 " n2
4|srf9 + TẾ | + tẺ về =gr() + 2+ TP +
= (Orig — — — ta n= — gtyptyte — —
i-1 9
=2 'T0)+Ð (Se)
k=0
Qua trinh ditng khi téi T(1), hay 5 = 1 i = logy n
"Ta có: 2! = 2l98% — „
Vậy:
logs n—1 2 logs n—1 1
T(n) =n-TO)+ » = mon » (5)
ange et Poy 3 ay 1 =i 2
: 1
=; n+ 2n*( In? (1 — ¬)
=2n?—n
T(n) =2 T7 logn
n
2b ) + log 3 +logn
irs g) + los 1J* 285 +logn
“ib
S7(
)+
(
AT(Z) + 2log 5 “+logn
(
` +4log 7 - + 2log 5 “4 log n
_ 2T(5) +2) Mog 5-5 + + 2log 5 +logn
Trang 6Quá trình dừng lai khi téi T(1), hay 2’ =n => i= logan
= T(n) = 2° "T(1) + So 2" hog
logs n—1
logs n
i=1
» log
i=0
= » (2' log n — 2! log 2") i=0
logs n—1
= logn » gi
¿=0
= logy n(2'°?” —
logs n—1
» ¡2i
¡=0
= (n — 1) logy n — (nlogy n — 2n) — 2
= 2n — logon — 2
=> T(n) = 3n — loggn — 2
3 T(n) =87(5) +! nh
Quá trình dừng lại khi tới 7(1), hay 2
Ta có: 8! = 89" — nổ
Vậy:
T (n) =87(5 5) +
=s [rq
oar) 4
(
7) =1
)+ vere
SẼ DI +? '=647(1) +i +
= 64 [sr §)+ G0] +2
=
=5127( ~) + 3n3
=8'T(5) + in?
, 2b = glegan — ny
T(n) = n®T(1) +n logy n
4 T(n)
nề +n} logy n
n° (logy n + 1)
=47T(z) +n
n= i=logyn
2:—1
1) — (logon _— 2)212%n " 2
Trang 7Tín) = 47(3) +n
=4 |) + 3Ì +n
= 16S) +4040 ey ge,
= 16 |#f()+ g]+ stn ya +4 +)
=647(—)+16—+4~ (5) + 65 tdgtn +:
=47()+4 (53) + 1 gai to + 165 + s1” +16— +4 +!
Quá trình dừng lai khi téi T(1), hay 3’ =n > i= logsn
= T(n) = 4°"T (1) + » 41 3T
¿=1
Tà có
log; n log, n—1 i
4 \ logan
"
g—l
Alogsn
= 3n ( —]
Tr Alogsn
= T(n) = 49%" + 3u ( — ) = 4° n1! — su,
T(n) =9T() +
=9 orca) + “| +n? = 9T(—) + 2n?
=9 lori) + a + 2n? = 9T(—) + 3n?
=9-T(G) tien?
Qua trinh ditng khi téi T(1), hay = 1 + i = logy n
Ta cd: 9 = Qs” — ¡2, 3° = 3984" cứ
Vậy:
T(n) =n? -T() +n? logs n
=n? +n? logs n
=n" (logsn +1)
Trang 86 T(n) = 2T(/n) +1 T(2)=0
T(n) = 2T(/n) +1
=2 [27(n?) + 1 41=4T (nt) +3
=4 [27(n*) + 1 +3= 8T (n>) +7
i-1
=9! T (ns) + S 2t
Quá trình dừng khi tới T(2), hay nấr = 2 4 i = log(log(n)), với log là logarit cơ số 2
Vậy:
3 Bai tap 3
a)
T(n) =4T(n — 1) — 3T(n — 2) T(0) =1,70) =2
Xét: T(n) — 4f{n — 1) + 3f7{n — 2) =0
pat 7 un = X"T—4X" !+3X"?=0
at Pn) = x" ©œ X""?(X?—4X+3) =0
Phương trình đặc trưng: X?— 4X +3=0 œ(X— I)(X—3) =0
X: =1, nghiệm đơn
Xa =3, nghiệm đơn
=> T(n) = cđ1#1 + G4! © c¡ị + œ3”
7) =e¡ + 3{ =2 =
Ma ta có:
1 rr
T(O)=a+@=1 ° ng
⁄ 2
(
b)
T(n) = 4T(n — 1) — 5T'{n — 3) + 2T(n — 3)
T(0) =0,T(1) = 1,T(2) =2
Xét: Tín) — 4f'(n — 1) + 5TÍn — 3) — 2T(n — 3) =Ú
Đặt Tín) = X”":
= X"T—-4X" !l+Lø" 2T—2X" 3=0
© X"3(X”—-4X?+5X-9)=0
7
Trang 9-trình đặc trưng: X3—4X?+5X—9 = 0 œ (X—1)2(X—2) = _-
Phương trình đặc trưng +5 0©( }Ÿ( )=0© X =2, nghiệm đơn
=> 7(n) = c2" + œ + cạn T{(0) = c¡ +ca=0 fe, =0
Mà ta cố: $ 7(1) = 2œ + ca-+ ca = 1 = \° =0
T(2) = 4c, + co + 2c3 = 2 cz =1
= T(n) =n
0)
T{(n) = Tín — L) + Tín — 2) 7(0) =1
T{Ù =1
Xét: Tín) — Tín — 1) — Tín — 2) =0
Đặt X"* = 7(n), ta có phương trình đặc trưng:
©X"”(X?-X-I1)=0
®X”—X—-1=0
1+v5 1-vV5
Phương trình đặc trưng vừa tìm có 2 nghiệm đơn: X; = vi Xo = by 5
1 5 1— 4⁄5
Khi đó: T(n) = XP + Xz = er: ( +i + c+ ( ep
rùi =1 ( == +@- iv =1 ‘2 = avs
“Tra 5+V¥5 ,l+Vỗ„,ð=Vỗ ,l=Vỗð„
Kết luận: 7 (n5) = T0 ( 5 )"+ " ( 5 )
4_ Bài tập 4
a)
Tứ) = 4 2 khi n = 1,
(77 — 1) — 12f{n— 2) khin > 2
Trang 10Hàm sinh của day v6 han T(n)* , Ia:
f0) =Š 7n)
„=0
= » (77(m — 1) — 127 (n — 2)ja" + (1+! + 7(0)z9
n=2
=7 SOT (n — 1)#” — 12 » —3)#”" + 2z + 1 (*)
Dat A= » T{n — 1z”, B= » —3)z”
Xét A:
A T(n — 1z”
n=2
=# » T(n — 1a"
n=2
=#[T(1#! + T(9)+? + 7)” + )
= #ƒ(#) — # Xét B:
=x 5 Tụ —1)#"?
= #[T(0)z*+7(1)+! + 7(2)4?®+ ]
=P fle)
Thay vào (*) ta có:
ƒ(#) = T#ƒ(#) — 12#”ƒ(œ) — 5œ + 1
® ƒ(#)(1— 7# + 122?) =1 — 5z
1— 5a
# fl) = aT
7 1— 5a
~ (1 = 3x)(1 - 42)
a _ l— 4z
Sy
(2.3" — 4” )a"
(4z)”
ll S
+:
\ Meat
=> T(n) = 2.3" — 4"
Trang 11b)
T(0) =7
T(nt+1)=T(n)+3n (n> 0) Nhan thay:
T(n +1) = T(n) 4+ 3n (n>
= T(n) = Tín T— 1L) + 3n — 1) (n > 1)
Hàm sinh của day v6 han {T(n)} 1a:
n=1
Dat: A = SO, T(n — 1a”, B= 395%, (n - 1a”
Xét A:
T(0)a° +T(1)a"
Xét B:
So (n= 1x" = (-1)2°
n=0
=3 La" +3 =3/-— 1 |43
7 „0= jan +3= (l-2#)? l-«
Thay vào (x) ta có:
ƒŒœ) = #ƒ(+) +3 ln x 1
=#)2 =] 10a? — 14x +7
= (l-«)f(«) =
(l-«/)?
10a? — 14% +7
© fle) =
(l—«)8 Lai có:
f(a) = l-a (1-2) + (1—z)3
— 10 + —6 3 _ l—# m- (đồng nhất thúc) (5)
Trang 12Xét Toa
oO oO oO oO
= › +” › nie” + › +” › oe
Nhan thay:
na” = ¢°- 00° +0°- lel + x9 - 20? + 2° ‹ đưổ +
3 ll S 3 ll Š
+a) Oe +a!-lattat- de? +e! - 308 +
+a? - Oa +a? - lat ta? - 2a? +47 - 3a +
+3 - 0a +03 - lat ta? - Qe? 43-308 +0
=0+zt+2z2 + 3z” +
+0+z?~+92z9 + 3z2+
-+0+z + 2z“ + 3z5 +
+0407 + 24° + 306 +
=0+1z+(1+9)z”+(1+2+3)z3+(1+2+3~+4)z°+
s » n(n + 1) an
=)
=0
Trang 13y a” › a” = 0? + at + a? + oe? +
tale tala + g2 + gi ưŠ +
+ 2210 + x21 + x22 + x2) +
+1? + re! +a2+? + aba? +
=2° + at + + + a’ +
hư! +2 + + g4 +
+2 +9 + Ta +
+ a’ + at +a ° + a5 +
= lz? + 2%! + 342 + 4z) +
=>» (n+1)z"
„=0
Thay vào (+) ba có:
yrs) (n+ 1) 2+3 nà aye
(6) (nt Ve "43
3n(n +1) 10+ (-6)(n+ 1) + 5
Ge-be)e
3.5 3
=> T(n) = 5h —sm+ 7
c)
i 2
+ 3(n + ) x”
ll S
+:
Zeta(n)1
if ( == 0) Zeta = 6
else{
k = 0;
Ret = 0;
while (k <= n-1)
{
Ret = Ret + Zeta(k);
k=k+4+1;
}
Zeta = Ret
}
}
Goi T(n) 1a théi gian thuc hién phép cộng của Zeta(n)
12
Trang 14e Với ø = Ú, số phép công thực hiện là 0, nên tốn thời gian là 0
e Với ø > 1: While lặp n lần, tại lần thứ & (0 < k < n=— l):
— Hàm gọi đệ quy đến hàm Zeta(k) tương ứng thời gian 7(k)
— Có 2 phép cộng nên tốn thời gian là 2
n—-1
= T(n) = > (7) +2)
k=0
Vậy:
(0 , nếu „ =
Tự») | 2n +> T(k) ,néun>1 ( k=0
Hàm sinh của dãy vô hạn {7(n)}£°¿ là:
ƒ() = S oT (n)x" = » T(n)x" +T(0)2° = » T(n)z"
= » (» + » rø) a
„=1 k=0
= » (» +T(n-1)+ » rw) #"
T(n) = 2n+ ST (k) => T(n-1) =2(n-1) +> T(k) => »_ T(È) = T(n— 1) — 2(n — 1)
= ƒ(+) = » (2n + Tín — 1) + Tín — 1) + 2(n - 1)) a”
n=1
I Me (27 (n — 1) 4+ 2)2”
| T{n — 1)z”+2 Soa"
n=1
Trang 15
=À_.(2:2"—9)4” = Tín) = 21! — 2
5 Bai tap 5
a)
T(n) =47(§) tn n>2
ne =C,
i Doan f(n) = an?
e Chứng minh 7(1) < ƒ(): 7Œ) = Cy, fl) =4
Dé T(1) < ƒ(1), ta can chon a > Cy
e Giả sử 7(k) < f(k), Vk <n
e Ta can ching minh T(n) < f(n) tain
Ta có:
Tín) = 47(2) +n
< 4/(5) +n
I 3 +
= -ứn” + mi
2
„3
"1"
2
an
= ƒ(n)+n— ——
2
Néu n — > < 0 thì 7(m) < f(n)tn- > < f(n)
œ > ƠI Chon a,b sao cho — và
, , na ane <0
Trang 16an’?
Tft— —— < a.< an?
®nữ = =—) <0
an2
®1~ =~ <0 >1) San >
>a>1
Ma a > C1, nén chon a=1+C;,
=> T(n) < ƒ(n) = (1+ G)nẺ
Vậy đoán ƒ(z) = an” là thành công
ii Doan ƒ(n) = an?
e Chứng minh 7(1) < ƒ(): 7) =Œi, fl) =4
Dé T(1) < ƒ(1), ta cần chọn ø > Cy
e Giả sử 7(k) < f(k), Vk <n
e Ta cần chúng minh 7{n) < f(n) tain
Tà có:
n T(n) = AT (5) +n
<4 ⁄@) +n
=an?+n
=ƒ(n)+m Néu n <0 thi T(n) < f(n) +n < f(n)
MA n > 1 nên dự đoán ƒ(n) = an? 1a that bai
iii Doan f(n) = an? — bn
e Chitng minh T(1) < ƒ(1): 7) =Œi, fl) =a-b
Dé T(1) < ƒ(1), ta can chon a — b> Œ¡
e Gia stt T(k) < f(k), Vk <n
e Ta can ching minh T(n) < f(n) tain
Ta có:
Tín) = 47) +n
<4 1S) +n
an? Ùm
by an? — bn + 7 tn
= fn) tn4
Trang 17bị bị
Nêu ø + > < 0 thì 7(m) < ƒ(n) +n+ > < f(n)
a-b>C, m+ = <0
Ta thấy, với ø = C1 +2, b = —2 thì thỏa hệ trên
=> T(n) < ƒ(m) = (Œ\ +3)"?+2n
Vậy đoán f(r) = an? — bn là thành công
Cần chọn a,b sao cho
b)
1 khin =1
T(n) = _ hin
BT (2) +n? 2 khin>1
Du dodn f(n) = an? +b
e Chứng minh 7(1) < f(1)
Để T(1) < f(1), ta cin chon a, b sao chol <a+b
e Giả sử 7(k) < f(k), Vk <n
e Ta can ching minh T(n) < f(n) tain
Ta có:
Tín) = 35) tm s 3f(5) +”
T(n) < 3[a(>) +b) +n
< (an? +b) +n? - ze +2b
< f(n) +n? - ra +2b
Néu n? — zn + 2b <0 thi T(n) < f(n) +n? - 7 +2b < f(n)
atb>1
n2— on? + 2b <0
Ta thấy, với ø = 4,b = 0 thì thỏa hệ trên
= Tu) < ƒ(n) = 4n?
Vậy dự đoán f(n) = øn? + b là đúng
Chon a,b sao cho
c )
T(n) = T(5) + 7Œ) +n T{n) =lvớin <5 Giả sử ø nhỏ nhất là 1 Dự đoán ƒ(n) = an +b
e Chứng minh 7(1) < ƒ(): 7Œ) =1,()=a+b
Dé T(1) < ƒ(1), cần chọn œø+Ð > 1
e Giả sử 7(k) < f(k), Vk <n
e Ta cần chứng mình 7») < ƒ(n) tại n
Trang 18n
4
n rn
<f(_~ yy
</)+/)+n
= on tb + ont b+
—an+b+ r1" D +
Tín) = 7©) +T(—)+n
a
=ứn +b— 1u+b+n
= f(n)- nỶ b+n
Néu cản +b+n<0 thi T(n) < ƒf(n) — zn +b+n< f(n)
atb>1
—‡n+b+m <0
Ta thấy, với ø = 4,b = 0 thì thỏa hệ trên
= T(n) < ƒ(n) = 4n => T(n) = O(n)
Vậy dự dodn T(n) = O(n) la ding
Như vậy ta cần chọn a,b sao cho