[英]Can I apply the properties of big-O on f(n) in the case of T(n)=O(n^f(n))?
假設我們有一個復雜度為 T(n)=O[n^f(n)] 的算法。 例如: T(n) = O[n^(n^2-n+1)]
。
我可以像在 T(n) 上一樣在 f(n) 上應用 big-O 的屬性嗎?
即,我可以寫: T(n) = O[n^(n^2)]
而不是T(n) = O[n^(n^2-n+1)]
嗎?
不,例如 O(1)=O(2),但 O(n^1) 是 O(n^2) 的真子集。 順便說一句,它甚至不適用於加法或乘法,因為 O 表示法不嚴格。
盡管您的情況有反例,但在以下條件下,您可以將f(n)
替換為g(n)
,即T(n) = O(n^f(n))
和f(n) = O(g(n))
:
g(n) - f(n) > 0 for all n > 0
您可以查看您的示例,例如這種情況。 因此,如果條件成立,我們可以說T(n) = O(n^g(n))
。
此外,當f(n) = Theta(g(n))
時,您的情況不正確,如@Mo B.示例。 順便說一句,基於上述條件,我們可以在T(n) = O(n^f(n))
中將f(n)
替換為g(n)
) 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.