F(n) là hàm số tiệm cận dương f(n) là hàm số tiệm cận dương

Một phần của tài liệu Thuật toán (Trang 37 - 41)

- 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 (adsbygoogle = window.adsbygoogle || []).push({});

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ừ

Một phần của tài liệu Thuật toán (Trang 37 - 41)