Như đã đề cập trong câu trả lời cho câu hỏi được liên kết, một cách phổ biến để một thuật toán có độ phức tạp thời gian O (log n) là để thuật toán đóhoạt động bằng cách cắt giảm nhiều lần kích thước của đầu vào. bởi một số yếu tố không đổi trên mỗi lần lặp.
Ý nghĩa của log n là gì?
O (log N) về cơ bản có nghĩa làthời gian tăng tuyến tính trong khi n tăng lên theo cấp số nhân. Vì vậy, nếu mất 1 giây để tính toán 10 phần tử, thì sẽ mất 2 giây để tính toán 100 phần tử, 3 giây để tính toán 1000 phần tử, v.v. Nó là O (log n) khi chúng ta chia và chinh phục loại thuật toán, ví dụ: tìm kiếm nhị phân.
O và log n là gì?
Đối với đầu vào có kích thước n, một thuật toáncủa O (n) sẽ thực hiện các bước tương ứng với n, trong khi một thuật toán khác của O (log (n)) sẽ thực hiện các bước khoảng log (n). Rõ ràng log (n) nhỏ hơn n do đó thuật toán độ phức tạp O (log (n)) tốt hơn.
Bạn tính log n như thế nào?
Ý tưởng là một thuật toán là O (log n) nếu thay vì cuộn qua cấu trúc 1 x 1, bạn chia đôi cấu trúc lặp đi lặp lại và thực hiện một số phép toán không đổi cho mỗi lần chia. Các thuật toán tìm kiếm trong đó không gian câu trả lời tiếp tục bị phân tách là O (log n).
Nhật ký n Hình vuông là gì?
Nhật ký ^2(
) có nghĩa là nó tỷ lệ với log củalogđối với vấn đề về kích thước
. Log(
) ^ 2 có nghĩa là nótỷ lệ với hình vuông củalog.