我希望这是提出这个问题的正确位置。
我正在阅读Cormen课程的算法简介,有时公式有点压倒性。
例如:
这与限制有什么关系?他提到了关于小o的限制,但不是Θ
或Ω
。
如何证明函数在另一个函数的Omega或Theta中使用限制?
F(n) = 5n² + 3
中的G(n) = 35n + 7
和F
Ω(G)
是Θ(F)
中的{{1}}还是{{1}}中的G?
答案 0 :(得分:1)
定义说,f
位于Θ(g)
,如果您可以找到两个常量c₁
和c₂
以及输入大小n₀
,那么c₁⋅g(n) ≤ f(n) ≤ c₂⋅g(n)
{1}}适用于所有n ≥ n₀
。
您可以使用限制来显示存在此类常量,这就是您可以定义o
,O
,Θ
,Ω
和ω
的原因。限制,而不是上面的定义。
在你的例子中:
limn → ∞ | F(n) / G(n) | = limn → ∞ | (5n² + 3) / (35n + 7) | = ∞
这表明F
的增长速度比G
快,而且找不到常量c
和固定的n₀
,F(n) ≤ c⋅ G(n)
对所有n > n₀
都有效F
1}}。因此O(G)
不在Θ(G)
中,因此也不在F
中。事实上,这表明ω(G)
位于Ω(G)
中,因此它也位于G
中,或者(如果您喜欢它的方式更好)o(F)
位于n₀
}}
通过将带有常数的条件应用到限制中,可以看到这一点。
注意:有很多种方法可以选择常量和SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
。限制不会得到这个常数,但只显示它们是否存在。