Để đáp các thắc mắc như phỏng đoán của bạn, sử dụng định nghĩa của . Diễn giải từ wikipedia tại thời điểm viết:O
f∈O(g) iff với mọi , đối với một số hằng số và .f(x)≤M×g(x)x>x0Mx0
Vì vậy, nếu , thì cho một số hằng số và (tôi gọi nó là thay vì để tránh nhầm lẫn sau). Bạn sẽ nhận thấy chúng ta có thể kết hợp thành một hằng số, cho bạn biết .f(n)∈O(2n2)f(n)≤C×2n2 ∀n>n0Cn0CM2CO(2n2)=O(n2)
Chúng ta có thể nói gì về ? Bây giờ chúng ta có thể sử dụng đại số bình thường cho bất đẳng thức, chẳng hạn như chia cả hai bên cho 2 để có được:f(n)/2
f(n)/2≤Cn2 ∀n>n0
Đây có còn là không? Để kiểm tra điều này, chúng ta cần tìm các hằng số và sao cho định nghĩa trên được giữ. Trong trường hợp này, và hoạt động. Lưu ý rằng cũng hợp lệ; bạn có thể sử dụng bất kỳ phương pháp nào bạn muốn để tìm các hằng số này, miễn là bạn biết chúng là hằng số.O(n2)Mx0M=Cx0=n0M=327.6C
Trong thế giới thực, bạn sẽ có thể "tắt" hầu hết điều này khi thực hiện phân tích của mình, như NP-hard thực hiện trong câu trả lời của anh ấy, nhưng đó chỉ là những phím tắt để viết nó ra một cách nghiêm ngặt như thế này (đó là những gì tôi mong đợi bài tập về nhà cụ thể về ). Nếu bạn không chắc chắn liệu nó có hợp lệ hay không, hãy loại bỏ các bằng cách sử dụng định nghĩa, thực hiện đại số về bất đẳng thức, sau đó đưa nó trở lại bằng cách tìm các hằng số thích hợp (hoặc đơn giản chỉ ra rằng chúng tồn tại).OOO