Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 14 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
14
Dung lượng
120,25 KB
Nội dung
ðộ phức tạpthuậttoán Lê Sỹ Vinh Bộ môn Khoa Học Máy Tính – Khoa CNTT ðại Học Công Nghệ - ðHQGHN Email: vinhioi@yahoo.com Các vấn ñề liên quan ñến thuậttoán 1. Một vấn ñề ñược giải quyết bởi nhiều thuậttoán khác nhau 2. ðối với một thuật toán: – ðộ phứctạp về không gian (dung lượng bộ nhớ sử dụng) – ðộ phứctạp về thời gian chạy 3. ðộ phứctạp về thời gian chạy – Kĩ năng lập trình – Chương trình dịch – Tốc ñộ thực hiện các phép toán trên máy tính – Dữ liệu vào “Thời gian chạy chương trình : 10s” ??? ðộ phức tạpthuậttoán 1. Thời gian chạy 1 thuậttoán phụ thuộc vào cỡ (size) của dữ liệu vào – Tìm xem 1 ñối tượng có trong danh sách N phần tử hay không? – Sắp xếp tăng dần dãy số gồm N số – Bài toán người bán hàng cần thăm N ñịa ñiểm 2. Trong các dữ liệu vào cùng một cỡ (N), thời gian chạy của thuậttoán cũng 2. Trong các dữ liệu vào cùng một cỡ (N), thời gian chạy của thuậttoán cũng thay ñổi Ví dụ: Tìm xem 1 ñối tượng có trong danh sách N phần tử hay không? – ðối tượng nằm ở ñầu danh sach – ðối tượng nằm ở giữa danh sach – ðối tượng nằm ở cuối danh sách ðộ phức tạpthuậttoán 1. Thời gian chạy trong trường hợp xấu nhất (worse-case running time) Thời gian chạy lớn nhất của thuậttoán ñó trên tất cả các dữ liệu cùng cỡ 2. Thời gian chạy trung bình Là trung bình cộng thời gian chạy trên tất cả các bộ dữ liệu cùng cỡ. 3. Thời gian chạy trong trường hợp tốt nhất (best-case running time) Thời gian chạy ít nhất của thuậttoán ñó trên tất cả các dữ liệu cùng cỡ ðộ phức tạpthuậttoán ðánh giá thời gian chạy thuật toán: – T(n) = số lượng phép toán sơ cấp cần phải thực hiện (phép toán số học, phép toán logic, phép toán so sánh). Mỗi phép toán sơ cấp ñược thực hiện trong một khoảng thời gian cố ñịnh. – Quan tâm ñến tốc ñộ tăng của hàm T(n) . – Ví dụ: T(n) = 2n 2 + 3n + 10 Biểu diễn thời gian chạy bởi kí hiệu O ðịnh nghĩa. Giả sử f(n) và g(n) là các hàm thực không âm của ñối số nguyên không âm n. Ta nói “f(n) là ô lớn của g(n)” và viết là f(n) = O( g(n) ) nếu tồn tại các hằng số dương c* và n 0 sao cho f(n) <= c*g(n) với mọi n >= n 0 . Biểu diễn thời gian chạy bởi kí hiệu O Ví dụ. Giả sử f(n) = 5n 3 + 2n 2 + 13n + 6 , ta có: f(n) = 5n 3 + 2n 2 + 13n + 6 <= 5n 3 + 2n 3 + 13n 3 + 6n 3 = 26n 3 f(n) = O(n 3 ) Tổng quát nếu f(n) là một ña thức bậc k của n:Tổng quát nếu f(n) là một ña thức bậc k của n: f(n) = a k n k + a k-1 n k-1 + . + a 1 n + a 0 thì f(n) = O(n k ) Ký hiệu ô lớn Tên gọi O(1) O(logn) hằng logarit Biểu diễn thời gian chạy bởi kí hiệu O O(n) O(nlogn) O(n 2 ) O(n 3 ) O(2 n ) tuyến tính nlogn bình phương lập phương mũ Thời gian chạy của các lệnh 1. Lệnh gán X = <biểu thức> Thời gian chạy của lệnh gán bằng thời gian thực hiện biểu thức 2. Lệnh lựa chon if (ñiều kiện) → T 0 (n) lệnh 1 → T 1 (n) else lệnh 2 → T 2 (n) Thời gian: T 0 (n) + max (T 1 (n), T 2 (n)) Thời gian chạy của các lệnh 3. Lệnh lặp: for, while, do-while Ví dụ: ( ) ( )( ) ∑ + )( 0 nX i nTnT ∑ =1 0 i i X(n): Số vòng lặp T 0 (n): ðiều kiện lặp T i (n): Thời gian thực hiện vòng lặp thứ i [...]... 2 Thu t toán t o ra ma tr n ñơn v A c p n (1) for (i = 0 ; i < n ; i++) (2) for (j = 0 ; j < n ; j++) (3) A[i][j] = 0; (4) for (i = 0 ; i < n ; i++) (5) A[i][i] = 1; ð ph c t p: Ví d 3 1) sum = 0; 2) for ( i = 0; i < n; i + +) 3) for ( j = i + 1; i < = n; j + +) 4) for ( k = 1; k < 10; k + +) 5) { sum = sum + i * j * k }; ð ph c t p: Ví d 4 Phân tích ñ ph c t p thu t toán c a t t c các phép toán trên . ít nhất của thuật toán ñó trên tất cả các dữ liệu cùng cỡ ðộ phức tạp thuật toán ðánh giá thời gian chạy thuật toán: – T(n) = số lượng phép toán sơ cấp. vấn ñề liên quan ñến thuật toán 1. Một vấn ñề ñược giải quyết bởi nhiều thuật toán khác nhau 2. ðối với một thuật toán: – ðộ phức tạp về không gian (dung