算法的增长函数?

时间:2012-05-07 18:44:34

标签: algorithm math complexity-theory big-o

我在这里有两个问题: -

  1. 如果f(n)是要求其增长率的函数,那么对于所有三种符号,g(n)都是相同的,就像f(n)= O(g(n))和类似于欧米茄和theta?

  2. Theta符号是“omega和Oh”如果在某些情况下如果哦和omega函数不同那么,我们如何在那里找到theta函数? 谢谢:)

2 个答案:

答案 0 :(得分:4)

O,Θ和Ω符号表示相关但非常不同的概念。 O符号表示函数增长率的渐近上界;它说该函数最终被一些其他函数的某个常数倍所限制。 Ω表示法类似,但给出下限。 Θ表示法给出渐近紧束缚 - 对于足够大的输入,算法以上下两个函数的常数倍的速率增长。

如果f(n)= O(g(n)),则必然为f(n)=Ω(g(n))或f(n)=Θ (G(N))。例如,1 = O(n),但是1≠Ω(n),因为n的增长严格地快于1。

如果发现f(n)= O(g(n))和Ω(h(n)),其中g(n)≠h(n),则可能需要进行更精确的分析才能确定函数j(n)使得f(n)=Θ(j(n))。如果g(n)=Θ(h(n)),则可以得出结论f(n)=Θ(g(n)),但如果上限和下限不同,则没有机械方法来确定Θ功能的增长率。

希望这有帮助!

答案 1 :(得分:1)

f(n)= O(g(n))表示n> N => | F(N)|≤C| G(N)|对于一些常数N和C.

f(n)=Ω(g(n))表示n> N => | F(N)|≥C| G(N)|对于一些常数N和C.

f(n)=Θ(g(n))表示f(n)= O(g(n)),f(n)=Ω(g(n))。

如果我们想要g为“好”函数(例如n ^ r * Log(n)),所有f都不可能找到ag,使得f(n)=Θ(g(n)) ^ S)。例如,如果f(n)= cos(n)²* n + sin(n)²*n²,我们有f(n)= O(n²)和f(n)=Ω(n)但我们可以'找到“好”g使得f(n)=Θ(g(n))。