比较不同输入的运行时间/减少大O值和不同功能的输入

时间:2017-09-13 18:03:16

标签: time-complexity big-o

我对大O符号的某些方面有点困惑。我为这个错综复杂的例子提前道歉

如果是函数ex。 O(2^N) + O(N^7); N输入值被认为是相同的,O(N^7)将支配O(2^N),或者大O值可以减少到O(N^7)O(2^N) * O(N^7)也是如此; O(N^7)将占主导地位,因为N(或输入)的值被认为是相同的,并且运行时O(N^7)O(2^N)更差。函数需要具有两个输入值,这两个输入值可以缩放以便将函数表示为O(2^N) + O(M^7),并且输入O(2 ^ N)的运行时将支配O(M ^ 7)。那是对的吗?

这里也是我混淆的地方。现在,如果我们比较两个函数,一个带有运行时O(N^7)的函数和一个带有运行时O(2^N)的函数。 N或输入被认为是相同的,并且函数2^N运行时会比N^7更差?除非明确说明它们与我们不同,否则我们应该假设N是相同的。换句话说,Big O正在比较两个(为简单起见我使用两个)输入(N)的缩放值,并且N必须被认为是相同的以进行比较。我理解正确吗?

任何帮助都将受到赞赏或链接到重复的帖子,因为我确信此问题之前已被问过。我只是在堆栈溢出时找不到它。

1 个答案:

答案 0 :(得分:0)

  

O(2^N) + O(N^7) ... O(N^7)将支配O(2^N)

没有。指数增长远远快于任何多项式。

  

“对O(2^N) * O(N^7)

也是如此

没有。您不能忽略非常量乘法因子。它将增长为O(N^7 * 2^N)

  

“......运行时O(N^7)O(2^N)

更差

再次,不。

  

“两个输入值...... O(2^N) + O(M^7) ... O(2^N)将支配O(M^7)

这是正确的,但前提是M不是N的指数。

总之,我建议阅读big-O。你似乎没有掌握渐近增长的概念