Plain English explanation of Theta notation?
Theta符号的简单英语解释是什么? 尽可能少的正式定义和简单的数学。
theta符号与Big O符号有何不同? 谁能用简单的英语解释一下?
在算法分析中如何使用? 我很迷惑?
-
听起来很有趣,Big O解释Big O的答案实际上描述了big-Theta
-
这不是很大的o,这是theta符号......它可以夹在两个函数之间。
-
另外:你的第一个问题(大O和大Theta之间的区别)包含在主题中:Big-Theta和Big O符号在简单语言中的区别
-
请参阅如何知道使用哪种时间复杂度分析符号? 计算机科学
如果算法的运行时间是Big Theta(f(n)),则它在f(n)上方和下方渐近有界。 Big 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)。
-
简单的英语答案会被接受
-
伙计,如果你要做计算机科学,你必须学习计算机科学的文字和数学。没有其他办法了。
-
仅仅是为了清除一些语义问题:请注意,算法不是Big Theta,也不是任何东西。 O(f(n))和Theta(f(n))是一组函数。算法(作为函数)的复杂性(在某些特定分析下)可以是O(f(n))或Theta(f(n))。此外,排序不是Theta(nlogn)。 QuickSort平均情况(或合并排序最坏情况)是Theta(nlogn)。 (另一方面,冒泡排序具有Theta(n^2)的最坏情况复杂度,即使它是排序算法)。
-
@amit:我完全感到困惑,有时某位作家在最坏的情况下采取了大O,而且有些作者为不同的算法采取了最大的理论。
-
@krishnaChandra:Big O和Big Theta都可以应用于最坏情况,平均情况,最佳情况或您能想到的任何其他情况。它用于绑定函数,而不是算法。最糟糕的情况(例如)是产生一个函数(通常与平均情况不同),并且每个符号可以应用于任何情况。
-
@amit:如果任何符号可以应用于任何分析那么为什么有三个符号,为什么不是一个。
-
@krishnaChandra:每个符号都有其他的东西。您是否看过这个主题:Big-Theta和Big O符号在简单语言中的区别?这个主题也很有帮助。
-
@amit:你经历过这一点,但无法澄清我的观点
-
@ amit,所以Big O和Big Omega只有一套功能,对吧?
-
@JesusChrist我不确定我是否关注你。我试着在这个帖子中给出了一个广泛的解释,看看 - 我希望它会清除你的一些问题。如果事情仍不清楚,将很乐意回答。
我一直想用简单的话来说明这一点。这是我的尝试。
如果表示算法的时间或空间复杂度
-
大O:Ex O(n) - 表示n是上限。最终价值可能小于或等于n。
-
大欧分:ExΩ(n) - 表示n是下限。最终价值可能等于或大于n。
-
Theta:ExΘ(n) - 表示n是唯一可能的值。 (上限和下限)