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符号的简单英语解释?的主要内容,如果未能解决你的问题,请参考以下文章

在英语语法中SVOO和SVOC的区别是啥?高手解释下~

React.js 和解算法用简单的英语解释

Ukkonen的简明英语后缀树算法

英语破折号是一杠还是两杠?用中文(中国)输入法怎么输入?求最规范的英语破折号打法。

编码问题完全解释

shell简单总结--符号