Professional Documents
Culture Documents
Tuan 3 Thuat Toan Phuc Tap
Tuan 3 Thuat Toan Phuc Tap
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 1 / 19
Thuật toán và độ phức tạp
Thuật toán là một dãy hữu hạn các bước, mỗi bước mô tả chính xác các
phép toán, hoặc hành động cần thực hiện,...để cho ta lời giải của bài toán.
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 2 / 19
Thuật toán và độ phức tạp
Thuật toán là một dãy hữu hạn các bước, mỗi bước mô tả chính xác các
phép toán, hoặc hành động cần thực hiện,...để cho ta lời giải của bài toán.
Một vấn đề quan trọng của thuật toán là ta phải đánh giá và so sánh
được các thuật toán với nhau. Nói chung tiêu chuẩn để đánh giá một
thuật toán là tốt hay không chủ yếu dựa trên độ phức tạp của nó, tức là
dựa trên số thời gian cần dùng để thực hiện nó.
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 2 / 19
Tiêu chuẩn: Thuật toán sử dụng tiết kiệm nhất các nguồn
tài nguyên của máy tính và đặc biệt chạy nhanh nhất có
thể được, được gọi là tính hiệu quả của thuật toán. Tính
hiệu quả của thuật toán gồm 2 nhân tố cơ bản:
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 3 / 19
Tiêu chuẩn: Thuật toán sử dụng tiết kiệm nhất các nguồn
tài nguyên của máy tính và đặc biệt chạy nhanh nhất có
thể được, được gọi là tính hiệu quả của thuật toán. Tính
hiệu quả của thuật toán gồm 2 nhân tố cơ bản:
1 Dung lượng không gian nhớ cần thiết để lưu dữ liệu
vào, các kết quả tính toán trung gian và các kết quả
của thuật toán.
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 3 / 19
Tiêu chuẩn: Thuật toán sử dụng tiết kiệm nhất các nguồn
tài nguyên của máy tính và đặc biệt chạy nhanh nhất có
thể được, được gọi là tính hiệu quả của thuật toán. Tính
hiệu quả của thuật toán gồm 2 nhân tố cơ bản:
1 Dung lượng không gian nhớ cần thiết để lưu dữ liệu
vào, các kết quả tính toán trung gian và các kết quả
của thuật toán.
2 Thời gian cần thiết để thực hiện thuật toán. Một
thuật toán có hiệu quả được xem là thuật toán có
thời gian chạy ít hơn so với các thuật toán khác.
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 3 / 19
Có 2 cách tiếp cận để đánh giá thời gian thực hiện của
một thuật toán: phương pháp thử nghiệm và phương
pháp lý thuyết.
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 4 / 19
Có 2 cách tiếp cận để đánh giá thời gian thực hiện của
một thuật toán: phương pháp thử nghiệm và phương
pháp lý thuyết.
Trong phương pháp thử nghiệm, ta viết chương trình và
cho chạy chương trình với các dữ liệu vào khác nhau trên
một máy tính nào đó. Thời gian chạy chương trình phụ
thuộc vào các nhân tố sau:
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 4 / 19
Có 2 cách tiếp cận để đánh giá thời gian thực hiện của
một thuật toán: phương pháp thử nghiệm và phương
pháp lý thuyết.
Trong phương pháp thử nghiệm, ta viết chương trình và
cho chạy chương trình với các dữ liệu vào khác nhau trên
một máy tính nào đó. Thời gian chạy chương trình phụ
thuộc vào các nhân tố sau:
1 Các dữ liệu vào
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 4 / 19
Có 2 cách tiếp cận để đánh giá thời gian thực hiện của
một thuật toán: phương pháp thử nghiệm và phương
pháp lý thuyết.
Trong phương pháp thử nghiệm, ta viết chương trình và
cho chạy chương trình với các dữ liệu vào khác nhau trên
một máy tính nào đó. Thời gian chạy chương trình phụ
thuộc vào các nhân tố sau:
1 Các dữ liệu vào
2 Chương trình dịch để chuyển chương trình thành mã
máy.
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 4 / 19
Có 2 cách tiếp cận để đánh giá thời gian thực hiện của
một thuật toán: phương pháp thử nghiệm và phương
pháp lý thuyết.
Trong phương pháp thử nghiệm, ta viết chương trình và
cho chạy chương trình với các dữ liệu vào khác nhau trên
một máy tính nào đó. Thời gian chạy chương trình phụ
thuộc vào các nhân tố sau:
1 Các dữ liệu vào
2 Chương trình dịch để chuyển chương trình thành mã
máy.
3 Tốc độ thực hiện các phép toán của máy tính được sử
dụng để chạy chương trình.
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 4 / 19
Vì thời gian chạy chương trình phụ thuộc vào nhiều nhân
tố nên ta không thể biểu diễn chính xác thời gian chạy là
bao nhiêu đơn vị thời gian chuẩn.
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 5 / 19
Vì thời gian chạy chương trình phụ thuộc vào nhiều nhân
tố nên ta không thể biểu diễn chính xác thời gian chạy là
bao nhiêu đơn vị thời gian chuẩn.
Trong phương pháp lý thuyết, ta sẽ coi thời gian thực
hiện thuật toán như là hàm số của cỡ dữ liệu vào. Cỡ của
dữ liệu vào là một tham số đặc trưng cho dữ liệu vào, có
ảnh hưởng quyết định đến thời gian thực hiện chương
trình. Thông thường cỡ của dữ liệu vào là một số nguyên
dương n. Ta sẽ sử dụng hàm số T (n), trong đó n là cỡ dữ
liệu vào, để biểu diễn thời gian thực hiện một thuật toán.
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 5 / 19
Chúng ta có thể xác định thời gian thực hiện T (n) là số phép toán sơ cấp
cần phải tiến hành khi thực hiện thuật toán. Ví dụ các phép toán số học
+,-,*,/, và các phép toán so sánh =,<,>,6, > là các phép toán sơ cấp.
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 6 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
Định nghĩa
Giả sử n là số nguyên không âm. T (n) và f (n) là các hàm
thực không âm. Ta viết T (n) = O(f (n)) nếu và chỉ nếu
tồn tại các hằng số dương c, n0 sao cho
T (n) 6 c.f (n), ∀n > n0 .
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 7 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
Định nghĩa
Giả sử n là số nguyên không âm. T (n) và f (n) là các hàm
thực không âm. Ta viết T (n) = O(f (n)) nếu và chỉ nếu
tồn tại các hằng số dương c, n0 sao cho
T (n) 6 c.f (n), ∀n > n0 .
Ví dụ
Giả sử T (n) = 3n2 + 4n + 5. Ta có
3n2 + 4n + 5 6 3n2 + 4n2 + 5n2 = 12n2 , ∀n > 1. Vậy
T (n) = O(n2 ).
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 7 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 8 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 8 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 8 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 8 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 8 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 8 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 8 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 8 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 8 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 8 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 8 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
Danh sách này sắp xếp theo thứ tự tăng dần của hàm thời gian thực hiện.
Ví dụ, giả sử thuật toán A có thời gian thực hiện là TA (n) = O(n2 ), thuật
toán B có thời gian thực hiện là TB (n) = O(n log2 n) thì với n = 1024
thuật toán A cần 1048576 phép toán sơ cấp, còn thuật toán B đòi hỏi
10240 phép toán sơ cấp. Với n càng lớn thì thuật toán A càng đòi hỏi thời
gian thực hiện nhiều hơn rất nhiều lần so với thuật toán B.
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 9 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
Các quy tắc để đánh giá thời gian thực hiện thuật toán
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 10 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
Các quy tắc để đánh giá thời gian thực hiện thuật toán
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 10 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
Các quy tắc để đánh giá thời gian thực hiện thuật toán
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 10 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
Các quy tắc để đánh giá thời gian thực hiện thuật toán
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 10 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
Các quy tắc cơ bản tính thời gian thực hiện thuật
toán
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 11 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
Các quy tắc cơ bản tính thời gian thực hiện thuật
toán
Các phép gán, đọc, viết, goto là câu lệnh. Các lệnh
này là lệnh đơn và thời gian thực hiện là O(1).
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 11 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
Các quy tắc cơ bản tính thời gian thực hiện thuật
toán
Các phép gán, đọc, viết, goto là câu lệnh. Các lệnh
này là lệnh đơn và thời gian thực hiện là O(1).
Nếu S1 , S2 , . . . , Sn là các câu lệnh thì Begin
S1 , S2 , . . . , Sn End là câu lệnh. Thời gian thực hiện
lệnh này được xác định bởi quy tắc tổng.
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 11 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
Các quy tắc cơ bản tính thời gian thực hiện thuật
toán
Các phép gán, đọc, viết, goto là câu lệnh. Các lệnh
này là lệnh đơn và thời gian thực hiện là O(1).
Nếu S1 , S2 , . . . , Sn là các câu lệnh thì Begin
S1 , S2 , . . . , Sn End là câu lệnh. Thời gian thực hiện
lệnh này được xác định bởi quy tắc tổng.
Nếu S1 , S2 là các câu lệnh và E là biểu thức logic thì
If E then S1 và If E then S1 else S2 là câu lệnh. Giả sử
thời gian thực hiện lệnh S1 , S2 là O(f1 (n)) và O(f2 (n))
thì khi đó thời gian thực hiện lệnh If là
O(max(f1 (n), f2 (n))).
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 11 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 12 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 12 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 13 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
Ví dụ. Đánh giá thời gian thực hiện của hàm đệ quy sau:
Function fact(n: integer): integer;
Begin
If n 6 1 then fact:=1 else fact:=n*fact(n-1); End;
Với n = 1 chỉ cần thực hiện lệnh gán fact:=1, do đó
T (1) = O(1). Với n > 1 cần thực hiện lệnh gán
fact:=n*fact(n-1). Do đó thời gian T (n) sẽ là O(1) để
thực hiện phép nhân và phép gán cộng với thời gian
T (n − 1) để thực hiện lời gọi đệ quy fact(n-1). Như vậy,
T(1)=O(1), T(n)=O(1)+T(n-1)=(n-1)O(1)+T(1) hay
T(n)=O(n).
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 14 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
Ví dụ
Xác định độ phức tạp của thuật toán của hàm tính dãy số
Fibonacci:
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 15 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
Ví dụ
Xác định độ phức tạp của thuật toán của hàm tính dãy số
Fibonacci:
Function Fibo(n: integer): integer;
var i,j,k: integer;
Begin
i:=1;j:=0;
For k:=1 to n do Begin j:=i+j; i:=j-i; End;
Fibo:=j; End;
Thời gian thực hiện của thuật toán trên là O(n).
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 15 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
Một bài toán thường có nhiều thuật toán để giải, mỗi thuật toán khác
nhau có thể có độ phức tạp khác nhau. Đánh giá độ phức tạp thuật toán
là một trong những cách phân tích, so sánh và tìm ra trong những thuật
toán đó một thuật toán tối ưu.
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 16 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
Một bài toán thường có nhiều thuật toán để giải, mỗi thuật toán khác
nhau có thể có độ phức tạp khác nhau. Đánh giá độ phức tạp thuật toán
là một trong những cách phân tích, so sánh và tìm ra trong những thuật
toán đó một thuật toán tối ưu.
Ví dụ
Xét bài toán tính giá trị đa thức
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 16 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 17 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 17 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 17 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 17 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
Ví dụ
Phân tích thuật toán Euclide tìm ước số chung lớn nhất
của 2 số nguyên dương a,b.
Input: a,b là 2 số nguyên dương
Output: ước số chung lớn nhất của hai số a,b.
Function USCLN(a,b)
Begin
x:=a; y:=b;
While y 6= 0 Begin r:=x mod y; x:=y; y:=r; End;
USCLN:=x; End;
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 18 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
Ví dụ
Phân tích thuật toán Euclide tìm ước số chung lớn nhất
của 2 số nguyên dương a,b.
Input: a,b là 2 số nguyên dương
Output: ước số chung lớn nhất của hai số a,b.
Function USCLN(a,b)
Begin
x:=a; y:=b;
While y 6= 0 Begin r:=x mod y; x:=y; y:=r; End;
USCLN:=x; End;
Để đánh giá độ phức tạp của thuật toán trên, ta đếm số
phép chia thực hiện theo thuật toán.
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 18 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
Mệnh đề
Giả sử cặp số a, b(a > b) đòi hỏi n > 1 phép chia trong thuật toán
Euclide. Khi đó a > fn+1 , b > fn , trong đó {fn } là dãy Fibonacci, được xác
định bởi công thức truy hồifn+2 = fn + fn+1 , n > 2, f0 = f1 = 1 và có công
√ !n+1 √ !n+1
1 1+ 5 1− 5
thức tường minh fn = √ −
5 2 2
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 19 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
Mệnh đề
Đặt m = max{a, b}, khi đó thuật toán đòi hỏi không quá log3/2 (2m/3)
phép chia.
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 20 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
Bài tập
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 21 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
Bài tập
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 21 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
Bài tập
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 21 / 19
Dùng O(f (x)) để đánh giá thời gian thực hiện thuật toán
Bài tập
TS. Huỳnh Thị Hồng Diễm (BK TPHCM) THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA NÓ TP. HCM tháng 2 năm 2021. 21 / 19