Thời gian thực hiện giải thuật là gì? đơn vị của T(n) tính bằng gì? cách tính?

Một phần của tài liệu Bài giảng môn Cấu Trúc Dữ Liệu và Thuật toán doc (Trang 113 - 114)

- Hàng ưu tiên.

a) Thời gian thực hiện giải thuật là gì? đơn vị của T(n) tính bằng gì? cách tính?

- Thời gian thực hiện một chương trình là một hàm của kích thước dữ liệu vào, ký hiệu T(n) trong đó n là kích thước (độ lớn) của dữ liệu vào.

Ví dụ 1: Chương trình tính tổng của n số có thời gian thực hiện là T(n) = c*n trong đó c là một hằng số.

- T(n) không thể tính bằng đơn vị cụ thể mà tính bằng số lần thực hiện các lệnh của giải thuật.

 Một câu hỏi đặt ra là: Cách tính này có thể hiện được tính nhanh hay chậm của giải thuật hay không ?

Câu trả lời: rõ ràng là có, thí dụ :

o GT1 có thời gian thực hiện là tỉ lệ với n GT2 có thời gian thực hiện là tỉ lệ với n2

Với n khá lớn thì giải thuật 1 nhanh hơn giải thuật 2

Thời gian mà ta đánh giá như trên gọi là độ phức tạp tính toán của giải thuật: Ở giải thuật 1 ta nói GT có độ phức tạp tính toán cấp n và kí hiệu T(n) = O(n) Ở giải thuật 2 thì thời gian T() = O(n2) hay O(g(n)), g(n) còn được gọi là cấp độ phức tạp tính toán

Hàm g(n) thường chọn là: logn; n; n2; n3: ta gọi chung là hàm đa thức; g(n) = 2n ta gọi là hàm mũ; các giải thuật có độ phức tạp tính toán là cấp các hàm đa thức thì chấp nhận được. Ví dụ : T(n) = 60n2 + 9n + 9 = O(n)

* Một số ví dụ đánh giá độ phức tạp tính toán của GT

Ví dụ 1 : Tính trung bình cộng của một dãy gồm n số đọc vào từ bàn phím

1. Nhập vào số n 2. Cho T = 0; d = 1 3. Lặp While d <= n do Begin 4- Đọc vào số n 5- Cộng thêm vào T

Cấu trúc dữ liệu - Bộ môn CNPM – Khoa CNTT – ĐHTN 113

6- Tăng đếm lên 1 End;

7. Tính TBC = T/n; 8. Đưa ra TBC

* Đánh giá giải thuật:

Các lệnh Số lần thực hiện 1 1 2 1 3 n 4 n 5 n 6 n 7 1 8 1 T(n) = 4n + 4 T(n) = 4n + 4 =< 5n với mọi n >= 4 => T(n) = O(n)

* Một số qui tắc cơ bản xác định cấp độ phức tạp tính toán

a. Qui tắc loại bỏ hằng số

Nếu ta có T(n) = O(C1.g(n)) thì ta cũng có T(n) = O(g(n)) b. Qui tắc lấy max

Nếu ta có T(n) = O(f(n) + g(n)) thì ta cũng có

T(n) = O(max(f(n),g(n)))

Một phần của tài liệu Bài giảng môn Cấu Trúc Dữ Liệu và Thuật toán doc (Trang 113 - 114)

Tải bản đầy đủ (DOC)

(120 trang)
w