大O表示法-自然数M和常数C是什么意思?

时间:2019-02-22 16:58:23

标签: algorithm math time-complexity big-o complexity-theory

我理解基于代码摘录识别复杂性或最坏情况时使用的“大O符号”。

在课堂上,我被告知,关于复杂性和大O表示法,我们忽略了n以下的小参数M和常数C

这是在课堂上给我的:

  

采用Big-Oh表示法。令f为从N到正实数的函数。   (将f(n)视为大小为n的参数的运行时间。   是最坏的情况,或者可能是一般情况。)让g是另一个这样的情况   功能。我们说当存在一些自然数M时f∈O(g)   常数C,使得对于所有n> M,我们有f(n)<= C×g(n)。   在逻辑符号中:∃M。 ∃C。 ∀n>M。f(n)<= C×g(n)

请问我知道这句话是什么意思,

  1. 我们为什么说:
  

让f是从N到正实数的函数。

  1. 这是为什么意思:
  

让我们成为另一个这样的功能。

  1. 这是什么意思:
  

我们说当存在一些自然数M时f∈O(g)   常数C,使得对于所有n> M,我们有f(n)<= C×g(n)。   在逻辑符号中:∃M。 ∃C。 ∀n>M。f(n)<= C×g(n)

  1. 以上摘录与忽略小参数和常数C有什么关系?

2 个答案:

答案 0 :(得分:2)

总结:C乘以g 最终占主导地位 f。

1&2。

  

让f是从N到正实数的函数。 (将f(n)视为大小为n的参数的运行时间。这可能是最坏的情况,也可能是平均的情况。)令g为另一个这样的函数。

确定:f和g是从自然数(N)到正实数的函数。为什么从自然数开始?我们假设参数的大小可以精确指定。我们可以精确地指定一个自然数。实数不是。为什么要正面实在?我们假设运行时间不一定是我们可以精确指定的时间。

但是这里重要的实际上不是说什么,而是说不是。没有人说f是单调递增,或者g是多项式,等等。我们所知道的是f和g是函数。几乎就是全部。是的,它们从自然到实数映射,但是就限制而言,这是一个很小的限制。所以这里的重点是:有很多功能f和g可供选择。唯一有些重要的限制是实物比自然数更多。

3。

  

我们说当存在一些自然数M和常数C时f∈O(g),因此对于所有n> M,我们都有f(n)<= C×g(n)。在逻辑符号中:∃M。 ∃C。 ∀n>M。f(n)<= C×g(n)

M和C是常数。我们选择M和C,我们完成了。这里的重点是至少有一个 M和至少一个C 满足句子。不是:任何 M也不是任何C。声明是至少有一个 这样的M和C。

另一方面,

n不是常数。只要n大于M,我们就可以选择n为任意数字。该语句说,对于n的任何选择(大于M),至少可以找到C的一个值,因此如果将g(n)乘以C,则此乘积将大于f(n)。 什么无关紧要,只要它大于M。

当我们假设限制之一被解除时,我们认为常数M和C的原因就很清楚了。假设该语句对M没有任何说明:

  

我们说当存在某些常数C时f∈O'(g),这样对于所有n,我们都有f(n)<= C×g(n)。在逻辑符号中:∃C。 ∀nf(n)<= C×g(n)

现在这说:考虑f的所有可能输出和g的所有可能输出的空间。如果我们将g的输出空间“扩大”一个常数C,则它们中的每一个都将大于f中的任何点。现在,这比我们指定M时的语句更强。如果f(0)= 10且g(0)= 0怎么办?现在,可以有 no C构成Cg(0) > Cf(0)。因此,M“切除”了这些不良边缘。

此页面也具有出色的说明和视觉效果:https://xlinux.nist.gov/dads/HTML/bigOnotation.html

答案 1 :(得分:1)

对于(1)和(2):通常,在证明或定义内,文本Let x be a Y all x满足条件Y的演示的一部分。具有一个附加属性Z。 证明将证明结论X对X成立。因为除Y之外未在X上指定任何条件,所以得出结论,对于所有具有条件Y的X,条件Z也成立

您必须自己完成(3)。除了将陈述分成较小的部分,了解每个部分,然后将它们放在一起以了解整个语句之外,没有其他替代方法。

对于(4):常量C出现在语句本身中,并且特别重要的是C出现时带有一个存在性限定符:

∃C. ∀n > M. f(n) <= C × g(n)

这在语句中赋予了C含义。为了表达含义,我们最好查看整个语句:

∃M. ∃C. ∀n > M. f(n) <= C × g(n)

在此陈述的中心,我们想表达g比f“大”的想法。除此之外,我们关心的是f和g的最终行为,而不是它们对于小值的行为。因此,在语句中添加了∃M。也就是说,最终 g大于f。而且,我们对f和g的“形状”更感兴趣,这给了我们常数C。

一个有启发性的练习是用双重否定词重写语句:

~ ~ ∃M. ∃C. ∀n > M. f(n) <= C × g(n)

然后通过语句推动第二个否定:

~ ∀M. ∀C. ∃n > M. f(n) > C × g(n)

然后考虑第一个否定语句中的语句是什么意思。