大O表示法为函数提供了上限,而大Theta提供了严格的约束。但是,我发现Big O符号在真正意义上是Big Theta时通常被(非正式地)教授和使用。
例如,“ Quicksort是O(N ^ 2)”可以变成更强大的陈述“ Quicksort是Θ(N ^ 2)”
尽管从技术上讲Big O的使用是正确的,但是更普遍地使用Big Theta不会更具表达性,并且可以减少混乱吗?有什么历史原因可导致这种大O的使用更为普遍?
维基百科注释:
非正式地,尤其是在计算机科学中,通常允许在某些情况下使用Big O表示法来描述渐近紧边界,在这种情况下,使用Big ThetaΘ表示法实际上可能更合适。
3
我知道这与问题无关,但是quicksort不是theta(N ^ 2)。是O(N ^ 2)。
—
jsternberg 2011年
Big O是初学者/非CS人士需要知道的。Big Theta是算法介绍中涵盖的内容,并非每个专业都可以采用。那些拥有算法课程的人可以根据需要更深入地了解Big O表示法。我不确定维基百科的报价是指什么。使用学术出版物,如果您将Big O和big Theta弄混了,就会在会议上碰壁。有些人一生都在追逐Theta,而这些都是HARD HARD问题。
—
工作
@jsternberg从技术上您是正确的。这也是正确的,但没有意义:“在任何情况下(最差,最好,...)的Quicksort都是O(n ^ 100)。但是我同意OP应该更准确:QuickSort最坏的情况是Theta(N ^ 2),QuickSort的最佳情况是Theta(NlogN),因为在每种情况下,我们都会得到不同的功能
—
Eldar