2017-09-13 29 views
0

我对大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(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是一样的,除非明确表明他们与我们不同。换句话说,大O比较两个(为了简单起见,我使用两个)输入(N)的缩放值,并且为了比较,必须考虑相同的N。我的理解是否正确。

任何帮助将不胜感激或链接到一个重复的帖子,因为我确信这个问题之前已被问过。我无法在堆栈溢出中找到它。

回答

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一些指数。


总之,我建议读大O.你似乎没有理解渐近式增长的概念。

+1

感谢上帝您的回答。我正在阅读一家公司的在线博客,该公司为软件工程师提供技术教育服务,并阅读他们对大O的解释。我认为他们的解释毫无意义,因为他们写道,这个O(N^7)会增长得更快比O(2^N)。我没有接受过正规教育,我发现那里有很多不好的资源。我认为他们是正确的,因为他们提供cs教育服务,这是一个笑话公司。感谢您解决这个问题。 –