渐进复杂度,算法

时间:2018-09-27 09:49:02

标签: algorithm complexity-theory

f(n) != O(g(n))g(n) != O(f(n))在哪种情况下是正确的?

对此我有以下无法理解的答案:

有时为true:对于f(n) = 1g(n) = ||n ∗ sin(n)||,为true,而对于 用于任何f(n) = O(g(n)),例如f(n) = g(n) = 1,这是不正确的。

请有人帮助您了解:

  1. 在哪种情况下有时是正确的?举个例子的解释将不胜感激。
  2. “ ||”是什么意思在这吗?

1 个答案:

答案 0 :(得分:2)

f(n)!= O(g(n))为真,如果对于任何给定的 k 和任何给定的 N n> = N ,这样 f(n)> k * g(n)

同时 f(n)!= O(g(n)) g(n)!= O(f(n))的示例同时是以下内容:让我们为偶数 n f(n)= n 定义 f(n)= 0 n 。类似地,让偶数 n 定义 g(n)= n ,奇数 n 定义 g(n)= 0 。现在显然,无论我们选择 k多大, f(n)> k g(n) 对于所有奇数 n ,无论大小 n g(n)> k f(n) strong> k 是。

您的 f(n)= 1 g(n)= || n ∗ sin(n)|| 的示例同样适用,因为 g(n)振荡并获得任意大 n 的值 0 ,但也获得任意大的值,这足以满足我们对的定义f(n)!= O(g(n)) g(n)!= O(f(n)),因为 f 保持不变功能 1