Công thức đệ quy

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

- Coi vòng lặp như một thuật toán đệ quy Coi vòng lặp như một thuật toán đệ quy

2.Công thức đệ quy

2. Công thức đệ quy

Việc đánh giá thời gian tính của các thuật toán đệ quy Việc đánh giá thời gian tính của các thuật toán đệ quy là rất khó. Ta thường xây dựng công thức đệ quy là rất khó. Ta thường xây dựng công thức đệ quy

để đánh giá thuật toán đệ quy. để đánh giá thuật toán đệ quy. Công thức đệ quy thường gặp:

Công thức đệ quy thường gặp: T(n)=

T(n)= ΘΘ(1) (1) nếu n<=cnếu n<=c

T(n)=T(n/b)+D(n)+C(n) nếu ngược lại T(n)=T(n/b)+D(n)+C(n) nếu ngược lại Các phương pháp giả công thức đệ quy: Các phương pháp giả công thức đệ quy:

+ Phương pháp đoán nhận + Phương pháp đoán nhận + Phương pháp lặp + Phương pháp lặp + Định lý thợ + Định lý thợ

C-1) Phương pháp đoán nhận C-1) Phương pháp đoán nhận - Dự đoán lời giảiDự đoán lời giải

- Dùng quy nạp để chứng minh tính đúng đắn của Dùng quy nạp để chứng minh tính đúng đắn của dự đoán

dự đoán Ví dụ

Ví dụ. Giải công thức đệ quy T(n)=3T(. Giải công thức đệ quy T(n)=3T(n/3n/3) +n) +n - Dự đoán: T(n)=O(n log n)Dự đoán: T(n)=O(n log n)

- Chứng minh điều dự đoán trên:Chứng minh điều dự đoán trên: Ta cần chứng minh T(n)

Ta cần chứng minh T(n)≤≤ c.n.logn. Ta có c.n.logn. Ta có T(n) = 3T(

T(n) = 3T(n/3n/3) +n ) +n ≤≤ 3.c. 3.c. n/3n/3.log .log n/3n/3+n+n

≤≤ c.n.log(n/3) + n c.n.log(n/3) + n ≤≤ c’.n.log(n), c’.n.log(n), với c’

với c’≥≥ max(c,1/log3). max(c,1/log3). Vậy công thức đúng. Vậy công thức đúng.

! Để dự đoán lời giải, ta thường sử dụng các cách ! Để dự đoán lời giải, ta thường sử dụng các cách

sau: sau: i)

i) Dựa vào các lời giải tương tự đã gặp.Dựa vào các lời giải tương tự đã gặp. ii)

ii) Chứng minh cận trên và cần dưới cho công thức Chứng minh cận trên và cần dưới cho công thức đệ quy. Chẳng hạn nếu T(n)=

đệ quy. Chẳng hạn nếu T(n)= ΩΩ(n) và T(n)=O(n(n) và T(n)=O(n22) ) => Dự đoán T(n)=

=> Dự đoán T(n)= ΘΘ(n logn)(n logn) iii)

iii) Sử dụng kỹ thuật đổi biến. Chẳng hạn để giải Sử dụng kỹ thuật đổi biến. Chẳng hạn để giải công thức T(n)=2T(

công thức T(n)=2T(nn1/21/2) + logn. ) + logn. - Đặt m=log n => T(2Đặt m=log n => T(2mm) = 2T(2) = 2T(2m/2m/2)+m.)+m. - Đặt S(m)=T(2Đặt S(m)=T(2mm) => S(m)=2S(m/2)+m) => S(m)=2S(m/2)+m

- Do đó S(m)=O(mlogm) => T(n)=O(log n loglog n).Do đó S(m)=O(mlogm) => T(n)=O(log n loglog n). iv) Nếu không chứng minh được dự đoán => Điều iv) Nếu không chứng minh được dự đoán => Điều

chỉnh số hạng tăng chậm trong dự đoán. chỉnh số hạng tăng chậm trong dự đoán.

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