Phải có công thức số thao tác
Giả sử **trong một mô hình học tập**, mỗi thao tác mất đúng 1 micro giây, tức `10⁻⁶` giây. Một giây cho tối đa 1 000 000 thao tác. Nếu một chương trình được **quy ước cụ thể** là cần `T(n) = n²` thao tác, điều kiện chạy trong một giây là `n² ≤ 1 000 000`, nên số nguyên `n` lớn nhất là 1000.
Chỉ biết thuật toán thuộc `O(n²)` thì **chưa đủ** tính ra `n = 1000`, vì bậc O lớn bỏ qua hệ số, các hạng thấp hơn và chi phí thực của thao tác. Quy ước 1 micro giây cũng không phải tốc độ thật cố định của mọi máy.
Một phút vẫn phải lấy phần nguyên phù hợp
Một phút bằng 60 000 000 micro giây. Với đúng mô hình `T(n) = n²`, cần `n² ≤ 60 000 000`. Vì `7745² = 59 985 025` còn `7746² = 60 000 516`, số nguyên lớn nhất là **7745**. Việc làm tròn lên 7746 sẽ vượt ngân sách 516 thao tác. Nếu công thức là `T(n) = n`, một phút cho tối đa 60 000 000 phần tử theo mô hình ấy.
Bài luyện
Nếu `T(n) = n²` thao tác và mỗi thao tác đúng 1 micro giây, `n` nguyên lớn nhất trong 1 giây là bao nhiêu?
100² chỉ là 10 000.
1000² = 1 000 000 thao tác.
10 000² vượt ngân sách.
Đây là số thao tác, không phải n.
Lời giải
Một giây chứa 1 000 000 micro giây; giải n² ≤ 1 000 000 được n ≤ 1000.
Bài luyện
Với cùng mô hình `T(n) = n²`, số nguyên `n` lớn nhất trong 1 phút là gì?
7745² vẫn dưới 60 000 000; 7746² đã vượt.
7746² = 60 000 516, vượt 516.
60 000² lớn hơn nhiều.
Đây là số micro giây của một phút.
Lời giải
Giải n² ≤ 60 000 000: 7745²=59 985 025 còn 7746²=60 000 516; n lớn nhất là 7745.
Bài luyện
Nếu chỉ biết một thuật toán có bậc `O(n²)`, có thể suy chính xác `n` tối đa trong một giây không?
1000 cần giả định T(n)=n² và 1 micro giây.
7745 là kết quả của mô hình một phút.
O lớn chỉ mô tả chặn trên theo bậc.
O lớn không cho số giây chính xác.
Lời giải
Bậc O(n²) không nêu hệ số, chi phí thao tác hay môi trường chạy; phải có thêm giả định cụ thể.
Đang học