Big o 大O和大Omega是一样的,但是相反?

Big o 大O和大Omega是一样的,但是相反?,big-o,big-theta,Big O,Big Theta,这是真的吗 f(n) = O(g(n)) === g(n) = Omega(f(n)) 它们基本上是可以互换的,因为它们是相反的吗 因此,如果F是G的大O,那么G是F的大ω?这有助于了解定义: f(n) is in O(g(n)) if and only if: There are positive constants c and k, such that 0 ≤ f(n) ≤ cg(n) for all n ≥ k. g(n) is in Omega(f(n)) if and only

这是真的吗

f(n) = O(g(n))  === g(n) = Omega(f(n))
它们基本上是可以互换的,因为它们是相反的吗


因此,如果F是G的大O,那么G是F的大ω?

这有助于了解定义:

f(n) is in O(g(n)) if and only if:
There are positive constants c and k, such that 0 ≤ f(n) ≤ cg(n) for all n ≥ k.


g(n) is in Omega(f(n)) if and only if: 
There are positive constants c and k, such that g(n)  ≥ cf(n)  ≥ 0 for all n ≥ k.  
如果你能找到使f(n)在O(g(n))中的c和k的值,那么同样的值也会显示g(n)是ω(f(n))(只要把不等式的两边除以c)。这就是为什么它们是可互换的

F(n)不是θ(g(n)),除非它同时在O(g(n)和ω(g(n))中


希望这会有所帮助!

查看以下定义会有所帮助:

f(n) is in O(g(n)) if and only if:
There are positive constants c and k, such that 0 ≤ f(n) ≤ cg(n) for all n ≥ k.


g(n) is in Omega(f(n)) if and only if: 
There are positive constants c and k, such that g(n)  ≥ cf(n)  ≥ 0 for all n ≥ k.  
如果你能找到使f(n)在O(g(n))中的c和k的值,那么相同的值也会显示g(n)是ω(f(n))(只要将不等式的两边除以c)。这就是为什么它们是可互换的

F(n)不是θ(g(n)),除非它同时在O(g(n)和ω(g(n))中


希望这能有所帮助!

我自己从来没有特别关心过这种符号。最简单的想法是,大O符号是“最坏的情况”,大欧米茄符号是“最好的情况”

当然,您可能还对其他事情感兴趣。例如,您可以声明以下(相当愚蠢的)线性搜索算法为O(n),但更精确的说法是,它始终与n成正比:

public bool Contains(列表,整数)
{
bool-contains=false;
foreach(列表中的int num)
{
//注意,我们总是循环浏览整个列表,即使我们找到了它
如果(num==number)
包含=真;
}
返回包含;
}
或者,我们可以声明这是O(n)和ω(n)。对于这种情况,我们引入θ(n)的符号

还有其他情况,例如平均情况。平均情况通常与最佳或最坏情况相同。例如,良好实施的线性搜索的最佳情况是O(1)(如果您要查找的项目是列表上的第一个项目),但最坏情况是O(n)(因为您可能必须搜索整个列表才能发现该项不存在)。如果列表包含该项,则平均而言,需要n/2个步骤才能找到它(因为我们平均而言,必须查看列表的一半才能找到该项)。按照惯例,我们删除“/2”部分,只说平均大小写为O(n)


但严格来说,它们并不一定是相同的。我看到过一些争论,关于二元搜索树搜索的“最佳”情况是否应该考虑为O(1)(因为您要查找的项目可能是树上的第一个项目)或者是否应该考虑为O(logn)(因为“最佳”二元搜索的情况是树是否完全平衡。(有关BST插入的讨论,请参阅)。但平均情况肯定是O(logn)。最坏的情况是O(n)(如果二元搜索树完全不平衡)。如果我们将最佳情况设为O(1),则平均情况为O(logn),最坏情况为O(n),那么平均值、最坏值和最佳值都会明显不同。

我自己从来没有特别关心过这种符号。最简单的想法是,大O符号是“最坏的情况”,大欧米茄符号是“最好的情况”

当然,您可能还对其他事情感兴趣。例如,您可以声明以下(相当愚蠢的)线性搜索算法为O(n),但更精确的说法是,它始终与n成正比:

public bool Contains(列表,整数)
{
bool-contains=false;
foreach(列表中的int num)
{
//注意,我们总是循环浏览整个列表,即使我们找到了它
如果(num==number)
包含=真;
}
返回包含;
}
或者,我们可以声明这是O(n)和ω(n)。对于这种情况,我们引入θ(n)的符号

还有其他情况,例如平均情况。平均情况通常与最佳或最坏情况相同。例如,良好实施的线性搜索的最佳情况是O(1)(如果您要查找的项目是列表上的第一个项目),但最坏情况是O(n)(因为您可能必须搜索整个列表才能发现该项不存在)。如果列表包含该项,则平均而言,需要n/2个步骤才能找到它(因为我们平均而言,必须查看列表的一半才能找到该项)。按照惯例,我们删除“/2”部分,只说平均大小写为O(n)

但严格来说,它们并不一定是相同的。我看到过一些争论,关于二元搜索树搜索的“最佳”情况是否应该考虑为O(1)(因为您要查找的项目可能是树上的第一个项目)或者是否应该考虑为O(logn)(因为“最佳”二元搜索的情况是树是否完全平衡。(有关BST插入的讨论,请参阅)。但平均情况肯定是O(logn)。最坏的情况是O(n)(如果二元搜索树完全不平衡)。如果我们将最佳情况设为O(1),则平均情况为O(logn),最坏情况为O(n),那么平均情况、最坏情况和最佳情况都会明显不同