btvn.vn
Tìm kiếm Đăng nhập

Hiểu kí hiệu O lớn qua tốc độ tăng

Lưu trên thiết bị này
Kĩ thuật lập trình — CS · Chọn bài khác

Giữ bậc tăng, bỏ chi tiết cố định

Nếu số thao tác có dạng `T(n) = n + 3`, khi `n` lớn, phần `n` quyết định tốc độ tăng; ta viết `T(n) = O(n)`. Với `T(n) = n² + 3`, ta viết `O(n²)`. Kí hiệu **O lớn** nói rằng sau một ngưỡng nào đó, `T(n)` không vượt quá một hằng số nhân với hàm được nêu. Đây là **chặn trên theo bậc**, không phải phương trình cho số giây hay lời hứa hai thuật toán có thời gian chạy bằng nhau. Cụ thể, `n + 3 ≤ 2n` khi `n ≥ 3`. Vì vậy `c = 2` và ngưỡng `n₀ = 3` là một chứng cứ cho `n + 3 = O(n)`. Tương tự, `n² + 3 ≤ 2n²` khi `n ≥ 2`.

Ba dạng cơ bản

Một thao tác độc lập với độ dài dãy là `O(1)`. Duyệt một dãy `n` phần tử một lượt là `O(n)`. Hai vòng, mỗi vòng `n` lượt và lồng nhau, là `O(n²)` theo mô hình thao tác đơn giản. Khi `n` tăng từ 10 lên 100, số lượt một vòng tăng từ 10 lên 100, còn số lượt hai vòng tăng từ 100 lên 10 000. Đây là cách so tốc độ tăng; không suy ra hai chương trình có cùng kết quả hay số giây cụ thể.

Bài luyện

Với `T(n) = n² + 3`, chặn trên nào thể hiện bậc chính theo ví dụ của bài?
Chọn một đáp án

Bài luyện

Phát biểu nào đúng về `T(n) = O(n)`?
Chọn một đáp án

Bài luyện

Khi `n` tăng từ 10 lên 100, `n²` tăng từ bao nhiêu lên bao nhiêu?
Chọn một đáp án

Đang học