我已經決定嘗試做一個關於分析算法的最壞可能運行時間並獲得一些練習的問題。 由於我是初學者,我只需要幫助以正確的方式表達我的答案。 我在一本使用以下算法的書中提到了這個問題:算法的漸近運行時間
輸入:一組n個點(x1,y1),。 。 。 ,(xn,yn),其中n≥2. 輸出:最近點對的平方距離。 ClosePoints
1. if n = 2 then return (x1 − x2)^2 + (y1 − y2)^2
2. else
3. d ← 0
4. for i ← 1 to n − 1 do
5. for j ← i + 1 to n do
6. t ← (xi − xj)^2 + (yi − yj)^2
7. if t < d then
8. d ← t
9. return d
我的問題是如何能夠提供一個很好的證明了T(N)=爲O(n^2),T(N)=Ω(N^2)和T(N)=Θ (n^2)?,其中T(n)表示最差的運行時間。 我知道我們說f是O(g), 當且僅當在R中存在一個n0∈N且c> 0,這樣對於所有的 n≥n0我們有 f(n)≤cg(n )。 並且我們還假設如果在R中有一個 n0∈N且c> 0,那麼f是Ω(g),使得對於所有n≥n0,我們有 f(n)≥cg(n)。現在我知道該算法正在進行c * n(n-1)次迭代,產生T(n)= c * n^2 - c * n。 對於n - 1次迭代,前3行執行O(1)乘以4行循環,即O(n)。第5行循環用於n-i迭代,它也是O(n)。內循環內容 (第6-7行)的每一行需要(n-1)(ni)還是O(1)?爲什麼?唯一的變化是執行8.(d←t)多少次,但是它必須低於或等於O(n^2)。 (n)= O(n^2),T(n)=Ω(n^2),並且T(n)=Θ(n^2) )? 預先感謝
感謝您的回覆,但我對寫一個完整證明的建議感興趣? – Patrick88 2011-02-23 18:27:00
對不起,但我不同意你在這裏,我們只保證cf(n)的上界,例如對於一些常數c> 0。 – Patrick88 2011-02-23 19:21:43
@ Patrick88:實際上你在這裏都有界限。請仔細看看歐米茄的定義。 c1 * n^2 <= c * n^2-c * n => c1 <= c-c/n;顯然從你的c的一些n0開始,你可以得到c1。 QED – gorlum0 2011-02-23 19:55:36