Các cụm từ thời gian tối thiểu và thời gian tối đa là một chút sai lệch ở đây. Khi chúng ta nói về các ký hiệu O lớn, đó không phải là thời gian thực sự chúng ta quan tâm, đó là cách thời gian tăng lên khi kích thước đầu vào của chúng ta lớn hơn. Và đó thường là thời gian trung bình hoặc tồi tệ nhất mà chúng ta đang nói đến, không phải là trường hợp tốt nhất , thường không có ý nghĩa trong việc giải quyết các vấn đề của chúng ta.
Sử dụng tìm kiếm mảng trong câu trả lời được chấp nhận cho câu hỏi khác làm ví dụ. Thời gian cần thiết để tìm một số cụ thể trong danh sách kích thước n là n / 2 * some_constant trung bình. Nếu bạn coi nó như một chức năng f(n) = n/2*some_constant
, nó sẽ tăng không nhanh hơn g(n) = n
, theo nghĩa được đưa ra bởi Charlie. Ngoài ra, nó tăng không chậm hơn g(n)
một trong hai. Do đó, g(n)
thực sự là cả giới hạn trên và giới hạn dưới của f(n)
ký hiệu Big-O, vì vậy độ phức tạp của tìm kiếm tuyến tính chính xác là n , có nghĩa là nó là Theta (n).
Về vấn đề này, lời giải thích trong câu trả lời được chấp nhận cho câu hỏi khác không hoàn toàn chính xác, điều này cho rằng O (n) bị ràng buộc bởi vì thuật toán có thể chạy trong thời gian không đổi đối với một số đầu vào (đây là trường hợp tốt nhất tôi đã đề cập ở trên, đó không thực sự là những gì chúng ta muốn biết về thời gian chạy).
Oh .. Bây giờ thuật ngữ "ràng buộc chặt chẽ" xuất hiện khá tự giải thích với tôi. Cảm ơn Chris. Ngu ngốc, có lẽ tôi đã mong đợi một ý tưởng phức tạp. :)
– Hoàng Tuyết Xuân 04:35:51 21/01/2009Phải, có rất nhiều ký hiệu lạ mắt được ném xung quanh nhưng nó không quá phức tạp một khi bạn đặt nó dưới thắt lưng của mình.
– Hồ Hương Giang 04:37:48 21/01/2009Tài liệu có sẵn miễn phí này từ Virginia Tech giải thích với các ví dụ về sự khác biệt về hiệu suất giữa các thuật toán có độ phức tạp khác nhau và giải thích ngắn gọn Phân tích tiệm cận: people.cs.vt.edu/shaffer/Book/C++3e20120102.pdf
– Hồ Vĩnh Ân 09:14:31 26/02/2016Ý bạn là gì khi "Thuật toán lấy Theta (n log n) được ưu tiên hơn nhiều vì phải mất ít nhất n log n (Omega n log n) và không nhiều hơn n log n (Big O n log n).", Như trong, đó có phải là độ phức tạp chính xác của một thuật toán như bạn đã nói ít nhất là Omega (nlogn) và tối đa BigO (nlogn) không?
– Tạ Nhân Văn 21:26:39 07/07/2016@NikhilVerma Không phải câu trả lời của hóa đơn dưới đây bao gồm bạn?
– Trịnh Băng Tâm 21:12:41 30/07/2016