Phân tích thuật toán đệ quy và đánh giá - Pdf 23

27/03/2008
1
ĐỆ QUY VÀ ĐÁNH GIÁ
Phạm Thế Bảo
Khoa Toán – Tin học
Trường Đại học Khoa học Tự nhiên Tp.HCM
• Là mở rộng cơ bảnnhấtcủa khái niệmthuật toán.
• Tư tưởng giải bài toán bằng đệ quy là đưa bài toán
hi

nt

ivề m
ột
b
ài toán cùn
g
lo

i
,
cùn
g
tính chấ
t
Thuật toán đệ quy



g
ạ ,

không
cần
thực
hiện
lại
thuật

các
trường
hợp
không
cần
thực
hiện
lại
thuật
toán (không yêu cầugọi đệ quy). Nếuthuậttoánđệ
quy không có phầnnàythìsẽ bị lặpvôhạnvàsinh
lỗi khi thựchiện. Đôi lúc gọilàtrường hợpdừng.
– Phần đệ quy:

phần
trong
thuật
toán

yêu
cầu
gọi
đệ

chỉ

duy

loại
đệ
quy

trong
một
cấp
đệ
quy
chỉ

duy
nhấtmộtlờigọi đệ quy xuống cấpthấp.
Ví dụ:
i. Tính giai thừa
giaiThua(int n){
if(n==0)
giaiThua = 1;
else giaiThua= n*giaiThua(n-1);
}
Phạm Thế Bảo
27/03/2008
3
ii. Tìm kiếmnhị phân
int searchBinary(int left,int right, intx){
if(left<right){


phần

tử

a
i
vào

lại

dãy

số
Nếu (Dãy số) rỗng thì thứ tự các phần tử được lấy ra chính là
một hoán vị
iii. Bài toán tô màu (floodfill)
Phạm Thế Bảo
27/03/2008
4
3. Đệ quy hỗ tương
Là dạng đệ quy mà trong đóviệcgọi có xoay
vòn
g,
như A
gọ
iB
,
B
gọ

quan
hệ
giữa
T(n)

T(k)
Với
T(n)


thời
gian

thực
quan
hệ
giữa
T(n)

T(k)
.
Với
T(n)

thời
gian
thực
hiệnchương trình vớikíchthướcdữ liệunhậplàn,T(k)
là “thờigian”thựchiệnchương trình vớikíchthướcdữ
liệunhậplàk,k<n.Dựatrênchương trình đệ quy ta sẽ

+

• C(n) “thời gian” thực hiện chương trình ứng với
trường hợp đệ quy dừng.
• F(T(k)) hàm xác định thời gian theo T(k).
• d(n) thừa số hằng
Ví dụ: phương trình đệ quy của bài toán giai thừa.
GọiT(n)là“thời gian” tính n giai thừa thì T(n-1)
là “thời gian” tính n-1 giai thừa.
Trong
trường
hợp
n=
0
thì
chỉ

01
lệnh
gán
nên
Trong
trường
hợp
n=
0
thì
chỉ

01

C
Tn
Tn C

=

−+



d
ụ:
Ph
ương p

p
M
erge
S
or
t
Chia dãy ban đầu thành 2 dãy gần bằng nhau.
Chia đến khi nào chỉ còn một phần tử thì dừng chia.
Trộn các dãy lại thành dãy hoàn chỉnh được sắp xếp.
Lý luậntương tự ta có:


luận

tương

4. Phương pháp hàm sinh
Phạm Thế Bảo
27/03/2008
7
Phương pháp truy hồi
• Thay thế các giá trị trong phương trình để suy
T( )
ra
T(
n
)
.
Ví dụ: giải phương trình
1
()
(1)
neáu n=0
ne
á
un>0
C
Tn
Tn C

=

+

Phạm Thế Bảo
2

]
2
(
)
2

=[T(n-3) + C
2
] + 2C
2
= T(n-3)+3C
2

T(n) =T(n-i) + iC
2
Quá trình kết thúc khi n
-
i
=
0hayi
=
n. Khi đó
Quá

trình

kết

thúc


neáu n>1
C
Tn
n
TnC


=

+


n
⎛⎞
2
22 2
22 2
() 2
2
22 4 2
42 4
42 2 8 3
84 8
n
Tn T nC
nn n
TCnCTnC
nn n
TCnCTnC
⎛⎞

⎝⎠ ⎝⎠
⎣⎦
⎛⎞
=+
⎜⎟
⎝⎠
1
i
n
quaù trình döøng khi hay i=logn
2
=
2
21
2
T(n)=nT(1)+ logn
=nC logn
=O(nlogn)
nC
nC

+
Phạm Thế Bảo
=O(nlogn)
27/03/2008
9
Bài tập
Giải các phương trình đệ quy sau với T(1)=1:
1
T(n)=3T(n/2)+n


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status