Theta符号的简单英语解释?
Posted
技术标签:
【中文标题】Theta符号的简单英语解释?【英文标题】:Plain English explanation of Theta notation? 【发布时间】:2012-09-02 04:58:12 【问题描述】:Theta 符号的简单英文解释是什么?尽可能少的正式定义和简单的数学。
theta 表示法与 Big O 表示法有何不同?谁能用简单的英语解释一下?
在算法分析中有怎么用?我很困惑?
【问题讨论】:
听起来很有趣,Plain English explanation of Big O 的答案实际上描述了 big-Theta 这不是大 o ,这是 theta 符号 ... 可以夹在两个函数之间。 另外:您的第一个问题(大 O 和大 Theta 之间的区别)已包含在线程中:Difference between Big-Theta and Big O notation in simple language 见How does one know which notation of time complexity analysis to use?Computer Science 【参考方案1】:如果一个算法的运行时间是 Big Theta(f(n)),它的上下边界是 f(n)。大 O 是相同的,只是界限只在上面。
直观地说,Big O(f(n)) 表示“我们可以肯定,忽略常数因素和项,运行时间永远不会超过 f(n)。”粗略地说,如果您认为运行时间“很糟糕”,那么 Big O 就是最坏的情况。 Big Theta(f(n)) 说“我们可以肯定,忽略常数因素和项,运行时间总是随着 f(n) 而变化。”换句话说,Big Theta 是一个已知的紧界:它既是最坏的情况,也是最好的情况。
对直觉的最后一次尝试:大 O 是“片面的”。 O(n) 运行时间也是 O(n^2) 和 O(2^n)。 Big Theta 并非如此。如果您的算法运行时间为 O(n),那么您已经有证据证明它不是 Big Theta(n^2)。它可能是也可能不是 Big Theta(n)
一个例子是比较排序。信息论告诉我们排序至少需要上限(n log n) 比较,而我们实际上发明了 O(n log n) 算法(其中 n 是比较次数),所以排序比较是 Big Theta(n log n)。
【讨论】:
伙计,如果你要学习计算机科学,你必须学习计算机科学的词汇和数学。没有办法解决它。 只是为了解决一些语义问题:请注意,算法不是大 Theta 也不是大 O。O(f(n))
和 Theta(f(n))
是一组 函数。算法(它是一个函数)的复杂度(在某些特定分析下)可能是O(f(n))
或Theta(f(n))
。此外,排序不是Theta(nlogn)
。 QuickSort 平均情况(或合并排序最坏情况)是Theta(nlogn)
。 (另一方面,冒泡排序的最坏情况复杂度为Theta(n^2)
,尽管它是一种排序算法)。
@amit:我完全糊涂了,有时某些作者将大 O 用于最坏情况,而一些作者将大 theta 用于不同算法的最坏情况。
@krishnaChandra:Big O 和 Big Theta 都可以应用于最坏情况、平均情况、最佳情况 ,或您能想到的任何其他情况。它用于绑定函数,而不是算法。最坏的情况(例如)是产生一个函数(这通常不同于一般情况),并且每个符号都可以应用于任何情况。
@amit:如果任何一个符号都可以应用于任何分析,那么为什么会有三个符号,为什么不是一个。【参考方案2】:
我一直想用简单的话把它写下来。这是我的尝试。
如果一个算法的时间或空间复杂度表示为
Big O : Ex O(n) - 表示 n 是上限。最终值可能小于或等于 n。
Big Omega:Ex Ω(n) - 表示 n 是下限。最终值可以等于或大于 n。
Theta : Ex Θ(n) - 表示 n 是唯一可能的值。 (上限和下限)
【讨论】:
请注意这个答案是错误的。2n
在 Θ(n)
中。以上是关于Theta符号的简单英语解释?的主要内容,如果未能解决你的问题,请参考以下文章