我明白,一個算法的時間T(n)
可以通過O(g(n))
被定義爲界:我真搞不清楚時間compexity
T(n) is O(g(n)) iff there is a c > 0, n0 > 0, such that for all n >= n0:
至多c * g(n)
步驟大小n,
A拍攝的每個輸入。 T(n)
是大小爲n的所有輸入中最長的時間。
但是我不明白的是Ω(g(n))
的定義。定義是對於一些輸入的大小爲n,A至少需要c * g(n)
步驟。
但是,如果這是Ω
的定義,那麼我不能找到任何algorthm的下限是相同的上限?例如,如果在最糟糕的情況下排序需要O(nlogn)
,那麼我不能很容易地顯示Ω(nlogn)
以及如何必須至少有一個壞的輸入的任何大小n將採取nlogn
步驟?讓我們假設我們正在談論heapsort
。 我真的不知道我在這裏錯過了什麼,因爲每當我被教導一種新的算法時,某種方法的時間是Ɵ(g(n)) or O(g(n))
,但沒有解釋爲什麼它是Ɵ or O
。
我希望我說的話很清楚,如果不是的話就問一下你誤解了什麼。我真的需要清除這個混淆。謝謝。
該死的複雜! – FUD 2012-04-13 04:40:44
我一直在軟件行業工作了10年,唯一有過的是O符號... – Bill 2012-04-13 04:49:32
「對於大小爲n的某些輸入」的這一定義也適用於Big-O,如果我你說得對。這基本上意味着對於低數字n它可以高於/低於你的界限,通常假設一個點n_0,之後它總是正確的。然而,在學習的時候,你可能只需要其他的邊界,大O是最重要的一個,你會在整個人生中看到。 – jorey 2012-04-13 05:10:13