[英]What is a loose bound in asymptotic notation?
在描述一個松散的邊界時,我可以為適當的符號選擇任何與漸近符號的實際值完全不接近的值嗎? 如果我的 function 是 n^2 + n,我可以說寬松的上限是 O(n^3),我可以說寬松的下限是 Ω(1) 嗎? 這樣的陳述有效嗎? 我什么時候知道我的寬松界限是否有效?
從這里Difference between Big-O and Little-O Notation talking about Big-O vs little-o,可以說你的n^2+n
是O(n^3)
並且這是一個寬松的上限。 然而大多數人會將其描述為O(n^2)
因為這更准確並且告訴您該算法實際上比O(n^3)
更快
我認為當某些事情不完全為人所知時,“松散的界限”可能會出現得更多。 例如朴素的遞歸斐波那契 function:
def fibo(n):
if n == 1 or n == 2:
return 1
return fibo(n-1) + fibo(n-2)
您可以說這是O(2^n)
,因為 function 進行了 2 次遞歸調用,所以它在每一步都加倍。 但是,這棵“樹”的一側(如果您要展開 function 調用,它看起來有點像一棵樹)將比另一側更快地觸底到基本情況,因為它是n-1
與n-2
。 這意味着“樹”是不平衡的,因此它實際上比O(2^n)
快。 因此O(2^n)
是一個“寬松的上限”。
尋找更緊密的界限留給讀者作為練習;)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.