- T(n) xác định với mọi số nguyên không âmT(n) xác định với mọi số nguyên không âm- n/b có thể là n/b có thể là n/bn/b hoặc hoặc n/bn/b.. - n/b có thể là n/b có thể là n/bn/b hoặc hoặc n/bn/b..
Khi đó T(n) có thể đánh giá tiệm cận như sau:
Khi đó T(n) có thể đánh giá tiệm cận như sau:
1. Nếu f(n)=O(n
1. Nếu f(n)=O(nlogba-logba-εε) với hằng số ) với hằng số εε>0 nào đó, >0 nào đó, thì T(n)= thì T(n)=
2. Nếu f(n)=
2. Nếu f(n)= ΘΘ(n(nlogbalogba), thì T(n)= ), thì T(n)= ΘΘ(n(nlogbalogbalogn) logn) 3. Nếu f(n)= 3. Nếu f(n)=
3. Nếu f(n)= ΩΩ(n(nlogba+logba+εε) với hằng số ) với hằng số εε>0 nào đó >0 nào đó và nếu a.f(n/b)< c.f(n) với hằng số c<1, thì và nếu a.f(n/b)< c.f(n) với hằng số c<1, thì
và nếu a.f(n/b)< c.f(n) với hằng số c<1, thì
T(n)=
T(n)= ΘΘ(f(n)).(f(n)).
Định lý thợ rút gọn
Định lý thợ rút gọn. Giả sử a . Giả sử a ≥≥1, b>1 là các 1, b>1 là các hằng số và T(n)=a.T(n/b)+c.n hằng số và T(n)=a.T(n/b)+c.n
hằng số và T(n)=a.T(n/b)+c.nk, vk, với n>0. Khi ới n>0. Khi đó ta có đó ta có
đó ta có
1. Nếu a>b
1. Nếu a>bkk thì T(n)= thì T(n)= ΘΘ(n(nlogbalogba) ) 2. Nếu a=b 2. Nếu a=b
2. Nếu a=bkk thì T(n)= thì T(n)=ΘΘ(n(nk k log n) log n) 3. Nếu a<b 3. Nếu a<b
Ví dụ 1
Ví dụ 1. Giải công thức đệ quy T(n)=16T(n/4)+n. Giải công thức đệ quy T(n)=16T(n/4)+n
Áp dung định lý thợ với trường hợp (1): a=16, b=4 và Áp dung định lý thợ với trường hợp (1): a=16, b=4 và
ε
ε=1 ta có, f(n)=n= =1 ta có, f(n)=n= ΘΘ(n(nlogba- logba- εε ) => T(n)= ) => T(n)= ΘΘ(n(nlogbalogba)= )=
Θ
Θ(n(n22).). Ví dụ 2
Ví dụ 2. Giải công thức đệ quy T(n)=T(3n/7)+1. Giải công thức đệ quy T(n)=T(3n/7)+1
Áp dung định lý thợ với trường hợp (2): a=1, b=7/3 ta Áp dung định lý thợ với trường hợp (2): a=1, b=7/3 ta
có, f(n)=1= O(n
có, f(n)=1= O(nlogbalogba) => T(n)= ) => T(n)= ΘΘ(n(nlogbalogbalogn)= logn)=
Θ
Θ(logn).(logn). Ví dụ 3
Ví dụ 3. Giải công thức đệ quy T(n)=3T(n/4)+nlogn. Giải công thức đệ quy T(n)=3T(n/4)+nlogn
Áp dung định lý thợ với trường hợp (3): a=3, b=4 và Áp dung định lý thợ với trường hợp (3): a=3, b=4 và
ε
ε=(1-log=(1-log443) 3) ≈≈ 0.2 ta có, f(n)=n.logn= 0.2 ta có, f(n)=n.logn=ΩΩ(n(nlog43+log43+εε) (vì ) (vì n
nlog43+log43+εε≈≈n => n.logn > n) và lấy c=3/4 n => n.logn > n) và lấy c=3/4
=> a.f (n/b)<c.f(n). Vậy T(n)= => a.f (n/b)<c.f(n). Vậy T(n)= ΘΘ(f(n))= (f(n))= ΘΘ(nlogn).(nlogn). Chú ý
Chú ý. Có thể áp dụng định lý thợ rút gọn với các ví . Có thể áp dụng định lý thợ rút gọn với các ví dụ 1 và 2.
3. Phương pháp sử dụng câu lệnh đặc trưng
3. Phương pháp sử dụng câu lệnh đặc trưng
- Câu lệnh đặc trưng là câu lệnh có số lần thực Câu lệnh đặc trưng là câu lệnh có số lần thực hiện không ít hơn bất kỳ câu lệnh nào trong thuật hiện không ít hơn bất kỳ câu lệnh nào trong thuật
toán. toán.
- Khi phân tích thuật toán ta chỉ quan tâm đến việc Khi phân tích thuật toán ta chỉ quan tâm đến việc đếm số lần thực hiện của câu lệnh đặc trưng.
đếm số lần thực hiện của câu lệnh đặc trưng. Ví dụ
Ví dụ. Với thuật toán Fibiter trên, ta chọn câu lệnh . Với thuật toán Fibiter trên, ta chọn câu lệnh j:=i+j là câu lệnh đặc trưng. Khi đó ta có thời gian j:=i+j là câu lệnh đặc trưng. Khi đó ta có thời gian
tính của thuật toán là
tính của thuật toán là ΘΘ(n).(n).
!Ngoài các phương pháp trên còn có các phương
!Ngoài các phương pháp trên còn có các phương
pháp phân tích thuật toán khác, chẳng hạn
pháp phân tích thuật toán khác, chẳng hạn
phương pháp phân tích khấu trừ.
3. Phương pháp phân tích khấu trừ
3. Phương pháp phân tích khấu trừ