Câu hỏi:

15/07/2024 34

Xác định độ phức tạp thời gian tính toán cho chương trình sau:

n = 1000

sum = 0 

i = 1

while i <n;

               i = i*2

               sum = sum + 1

print (sum)

Trả lời:

verified Giải bởi Vietjack

Chương trình trên tính số lần lặp cần thiết để i lớn hơn n bằng cách nhân i với 2 trong mỗi lần lặp, sau đó tăng biến sum lên 1. Để xác định độ phức tạp thời gian của chương trình này, ta cần xem xét số lần lặp của vòng while và các phép toán trong vòng lặp.

Vòng while: Vòng lặp này chạy cho đến khi i >= n, và giá trị ban đầu của i là 1. Trong mỗi lần lặp, i được nhân với 2, vậy số lần lặp là log2(n) (vì sau mỗi lần nhân i với 2, giá trị của i sẽ gấp đôi). Ví dụ, nếu n = 1000 thì số lần lặp là log2(1000) ≈ 10.

Các phép toán trong vòng lặp:

Phép gán i = i * 2: Đây là phép nhân, có độ phức tạp là O(1).

Phép gán sum = sum + 1: Đây là phép gán giá trị vào biến sum, có độ phức tạp là O(1).

Vậy tổng độ phức tạp thời gian của chương trình là O(log n), hay O(log2(1000)) ≈ O(10)

CÂU HỎI HOT CÙNG CHỦ ĐỀ

Câu 1:

Xác định độ phức tạp thời gian của thuật toán sắp xếp chọn đã được học trong bài 21.

Xem đáp án » 29/08/2023 54

Câu 2:

Cùng trao đổi và tìm hiểu cách phân loại thuật toán dựa trên độ phức tạp thời gian thuật toán.

Xem đáp án » 29/08/2023 51

Câu 3:

Khẳng định "Trong mọi chương trình chỉ có đúng một phép toán tích cực" là đúng hay sai?

Xem đáp án » 29/08/2023 50

Câu 4:

Cùng trao đổi và tìm hiểu cách phân loại thuật toán dựa trên độ phức tạp thời gian thuật toán.

Xem đáp án » 29/08/2023 48

Câu 5:

Đọc, quan sát, thảo luận để biết một số quy tắc đơn giản tính độ phức tạp thời gian thuật toán.

Xem đáp án » 29/08/2023 47

Câu 6:

Em hãy thiết lập chương trình và tính thời gian chạy thực tế trên máy tính của các chương trình 1 và 2 ở Hình 24.2 với các giá trị n khác nhau từ đó thấy được ý nghĩa sự khác biệt độ phức tạp thời gian của hai chương trình này.

Xem đáp án » 29/08/2023 45

Câu 7:

Áp dụng các quy tác trên để tính độ phức tạp của các hàm thời gian sau:

a) T(n) = n3 + nlogn + 2n + 1.

b) T(n) = 3n4 + 2n2logn + 10.

Xem đáp án » 29/08/2023 45

Câu 8:

Áp dụng các quy tác trên để tính độ phức tạp của các hàm thời gian sau:

a) T(n) = n3 + nlogn + 2n + 1.

b) T(n) = 3n4 + 2n2logn + 10.

Xem đáp án » 29/08/2023 43

Câu 9:

Em hãy thiết lập chương trình và tính thời gian chạy thực tế trên máy tính của các chương trình 1 và 2 ở Hình 24.2 với các giá trị n khác nhau từ đó thấy được ý nghĩa sự khác biệt độ phức tạp thời gian của hai chương trình này.

Xem đáp án » 29/08/2023 41

Câu 10:

Quan sát và ước lượng thời gian thực hiện các đoạn chương trình 1 và 2 trong Hình 24.2. Chương trình nào chạy nhanh hơn? Vì sao?

Quan sát và ước lượng thời gian thực hiện các đoạn chương trình 1 và 2 trong Hình 24.2 (ảnh 1)

Xem đáp án » 29/08/2023 40

Câu 11:

Quan sát và ước lượng thời gian thực hiện các đoạn chương trình 1 và 2 trong Hình 24.2. Chương trình nào chạy nhanh hơn? Vì sao?

Quan sát và ước lượng thời gian thực hiện các đoạn chương trình 1 và 2 trong Hình 24.2 (ảnh 1)

Xem đáp án » 29/08/2023 40

Câu 12:

Các lệnh và đoạn chương tình sau cần chạy trong bao nhiêu đơn vị thời gian?

Các lệnh và đoạn chương tình sau cần chạy trong bao nhiêu đơn vị thời gian? (ảnh 1)

Xem đáp án » 29/08/2023 40

Câu 13:

Xác định độ phức tạp thời gian của thuật toán sắp xếp chọn đã được học trong bài 21.

Xem đáp án » 29/08/2023 40

Câu 14:

Xác định độ phức tạp thời gian cho chương trình sau:

n = 1000

s = 0

for i in range (n);

                                s = s + i*(i+1)

print (s)

Xem đáp án » 29/08/2023 38

Câu 15:

Xác định độ phức tạp thời gian cho chương trình sau:

n = 1000

s = 0

for i in range (n);

                                s = s + i*(i+1)

print (s)

Xem đáp án » 29/08/2023 38

Câu hỏi mới nhất

Xem thêm »
Xem thêm »