Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Chủ đề 6. Kĩ thuật lập trình – Bài 24: Đánh giá độ phức tạp thời gian thuật toán – sách bài tập trang 75 lớp 11 Khoa học máy tính – Kết Nối Tri Thức, mời các em tham khảo cùng Bumbii.

Chủ đề 6. Kĩ thuật lập trình – Bài 24: Đánh giá độ phức tạp thời gian thuật toán

Câu 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

Trả lời:

Đáp án B. T2. Thời gian chạy chương trình T(n) để tính độ phức tạp thời gian của thuật toán là thời gian chạy thuật toán sau khi đã nhập xong dữ liệu và trước khi đưa dữ liệu ra thiết bị ngoài chuẩn.

Câu 24.2

Đánh giá thời gian chạy của chương trình sau:

Trả lời:

Thời gian chạy của chương trình: T(n) = n + 2

Câu 24.3

Đánh giá thời gian chạy của chương trình sau:

Trả lời:

Thời gian chạy của chương trình: T(n) = 2log2n + 2

Câu 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.

Trả lời:

Thời gian chạy của chương trình: T(n) = n2 + 2

Câu 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ử.

Trả lời:

Thời gian chạy của chương trình: T(n) = (3/2).n2 + (5/2).n + 1 trong trường hợp xấu nhất.

Câu 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.

Trả lời:

Thời gian chạy của chương trình thuật toán sắp xếp chèn: T(n) = 2n2 — 3n + 2 trong trường hợp xấu nhất.

Câu 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.

Trả lời:

Thời gian chạy của chương trình thuật toán sắp xếp nổi bọt: T(n) = 2n2 – 2n + 1 trong trường hợp xấu nhất.

Câu 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.log2(n) + 10.

b) 2n2 + 3n3log5(n) + n3/2.

c) 2n + 3n + 5n.

Trả lời:

a) O(nlogn)

b) O(n3.logn)

c) O(5n)

Câu 24.9

a) Chứng minh n = O(n2).

b) Chứng minh n2 ≠ O(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).

Câu 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)).

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à C0, sao cho với mọi n > n1, ta có: f(n) < C1.g(n) (2)

Từ (1)(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)).

Xem các bài giải khác: Giải Sách Bài Tập Lớp 11 Khoa Học Máy Tính Kết Nối Tri Thức Với Cuộc Sống

Thông tin liên hệ & mạng xã hội:
Website: https://bumbii.com/
Facebook: https://www.facebook.com/bumbiiapp
Pinterest: https://www.pinterest.com/bumbiitech

0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest

0 Bình luận
Phản hồi nội tuyến
Xem tất cả bình luận
0
Cùng chia sẻ bình luận của bạn nào!x