24.1 Giả sử một chương trình P mô tả một thuật toán nào đó. Người ta đo được các thông tin thời gian sau:
T1 = thời gian chương trình nhập dữ liệu input và đưa vào bộ nhớ
T2 = thời gian chạy chương trình từ khi nhập xong dữ liệu input và tính xong dữ liệu output
T3 = thời gian đưa dữ liệu output ra thiết bị ngoài chuẩn.
Khi đó thời gian chạy chương trình T(n) dùng để tính độ phức tạp thời gian của thuật toán là phương án nào trong các phương án sau?
A. T1 + T2
B. T2
C. T2 + T3
D. T1 + T2 +T3
Hướng dẫn trả lời:
Đáp án đúng:
B. T2
24.2. Đánh giá thời gian chạy của chương trình sau:
Hướng dẫn trả lời:
T(n) = n + 2
24.3. Đánh giá thời gian chạy của chương trình sau:
Hướng dẫn trả lời:
T(n) = n +2
24.4. Đánh giá thời gian chạy của chương trình sau, trong đó A là ma trận vuông bậc n.
Hướng dẫn trả lời:
T(n) = n2 + 2
24.5. Đánh giá thời gian chạy của chương trình sau tính theo đơn vị thời gian, A là một dãy số cho trước có n phần tử.
Hướng dẫn trả lời:
T(n) = 32n2+ 52n+1 trong trường hợp xấu nhất
24.6 Đánh giá thời gian chạy của thuật toán sắp xếp chèn đã học trong sách giáo khoa.
Hướng dẫn trả lời:
T(n) = 2n2- 3n+2 trong trường hợp xấu nhất
24.7. Đánh giá thời gian chạy của thuật toán sắp xếp nổi bọt đã học trong sách giáo khoa.
Hướng dẫn trả lời:
T(n) =2n2-2n+1 trong trường hợp xấu nhất
24.8. Tính độ phức tạp của các hàm sau theo kí hiệu O-lớn.
a) n+2n.n+10.
b) 2n2+ 3n3n+n3/2
c) 2n+ 3n+ 5n
Hướng dẫn trả lời:
a) n)
b) n)
c)O(5n)
24.9. a) Chứng minh n = O(n2)
b) Chứng minh n2 O(n)
Hướng dẫn trả lời:
a) Vì hiển nhiên n < n2 với n > 1 nên suy ra n = O(n2)
b) Nếu như n2 = O(n) thì ta phải có n2 < C.n với n đủ lớn, nhưng từ bất đẳng thức này suy ra n < C. Mâu thuẫn. Vậy suy ra n2 O(n)
24.10*. Chứng minh rằng nếu f(n) = O(g(n)) và g(n) = O(h(n)) thì ta có: f(n) = O(h(n))
Hướng dẫn trả lời:
Theo giả thiết f(n) = O(g(n)), vậy tồn tại n0 và C0 sao cho với mọi n > n0 ta có: f(n) < C0.g(n) (1)
Theo giả thiết g(n) = O(h(n)), vậy tồn tại n1 và C1 sao cho với mọi n > n1 ta có: f(n) < C1.g(n) (2)
Từ (1) và (2) suy ra với mọi n > max(n0, n1) và đặt C = C0.C1 ta sẽ có:
f(n) < C0.g(n) < C0.C1.h(n) = C.h(n)
Từ đó theo định nghĩa ta có: f(n) = O(h(n))