Algorithm 下列函数的渐近时间复杂度是多少?

Algorithm 下列函数的渐近时间复杂度是多少?,algorithm,time-complexity,Algorithm,Time Complexity,我遇到了一个关于函数渐近复杂性的问题: 3个功能的复杂性如下: f(n)=O(n) g(n)=大ω(n) h(n)=θ(n) 那么合成函数的渐近复杂性是什么呢 我可以通过简单的点击和试验找出答案是大ω(n)。例如,如果我说f(n)=n和g(n)=n和h(n)=n。所以我们可以说f(n)是O(n),g(n)是大ω(n),h(n)是θ(n)。现在f(n).g(n)是n2,这将是大ω(n),而不是O(n)。现在把它加到h(n)中是n2+n。它也是大ω(n),但不是θ(n) 但我无法找到一个合适的逻辑或

我遇到了一个关于函数渐近复杂性的问题:

3个功能的复杂性如下:

f(n)=O(n)

g(n)=大ω(n)

h(n)=θ(n)

那么合成函数的渐近复杂性是什么呢

我可以通过简单的点击和试验找出答案是大ω(n)。例如,如果我说f(n)=ng(n)=nh(n)=n。所以我们可以说f(n)是O(n)g(n)是大ω(n)h(n)是θ(n)。现在f(n).g(n)n2,这将是大ω(n),而不是O(n)。现在把它加到h(n)中是n2+n。它也是大ω(n),但不是θ(n)


但我无法找到一个合适的逻辑或数学证明。有人能帮我解决这个问题吗?

这里有一个合乎逻辑的解释:

  • f(n)=O(n)
    表示
    f
    的运行时间最多是线性的(可以是恒定时间)
  • h(n)=θ(n)
    意味着
    h
    的运行时间是线性的
  • g(n)=大ω(n)
    意味着
    g
    的运行时间至少是线性的(可能是多项式的,指数的…我们不知道)
现在让我们分析一下最佳情况:
f(n)
是常数时间,
g(n)
是线性的,
h(n)
是线性的。关于函数
f(n)*g(n)+h(n)
,我们能说些什么?它也是线性的

对于最坏的情况我们能说些什么,因为我们对最坏情况下
g(n)
的行为一无所知


因此我们可以得出这样的结论:
f(n)*g(n)+h(n)=大ω(n)
,因为这个函数在最好的情况下是线性的。

下面是一个逻辑解释的尝试:

  • f(n)=O(n)
    表示
    f
    的运行时间最多是线性的(可以是恒定时间)
  • h(n)=θ(n)
    意味着
    h
    的运行时间是线性的
  • g(n)=大ω(n)
    意味着
    g
    的运行时间至少是线性的(可能是多项式的,指数的…我们不知道)
现在让我们分析一下最佳情况:
f(n)
是常数时间,
g(n)
是线性的,
h(n)
是线性的。关于函数
f(n)*g(n)+h(n)
,我们能说些什么?它也是线性的

对于最坏的情况我们能说些什么,因为我们对最坏情况下
g(n)
的行为一无所知


所以我们可以得出这样的结论:
f(n)*g(n)+h(n)=大ω(n)
,因为这个函数在最好的情况下是线性的。

Hmm。,这是有意义的。但是如果它在最好的情况下是线性的,那么它在最好的情况下不可能是O(n)(假设它是最好的情况也是最坏的情况,因为我们不能确定它的最坏情况会是什么)?有可能
g
是线性的,但不一定。你没有任何关于
g
的最坏情况的信息,因此你没有关于
f*g
最坏情况的信息(因此不能对这个函数使用任何big-O注释)。嗯……这是有道理的。但是如果它在最好的情况下是线性的,那么它在最好的情况下不可能是O(n)(假设它是最好的情况也是最坏的情况,因为我们不能确定它的最坏情况会是什么)?有可能
g
是线性的,但不一定。你没有任何关于
g
的最坏情况的信息,因此你没有关于
f*g
最坏情况的信息(因此不能对此函数使用任何大O注释)。真是一个深思熟虑的问题真是一个深思熟虑的问题