Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 算法A的运行时间至少是O(n²;)-为什么它没有意义?_Algorithm_Big O_Asymptotic Complexity - Fatal编程技术网

Algorithm 算法A的运行时间至少是O(n²;)-为什么它没有意义?

Algorithm 算法A的运行时间至少是O(n²;)-为什么它没有意义?,algorithm,big-o,asymptotic-complexity,Algorithm,Big O,Asymptotic Complexity,为什么这样说: 算法A的运行时间至少为O(n²) 没有意义吗 插入排序算法的运行时间最多为O(n²) 对吗 我试过上网,但找不到好的解释 我还有一个问题: 我知道任何线性函数⋅n+b是O(n),也是O(n²)。是否也是O(n³) 一个原因可能是没有上界的下界不是很有用。“至少”意味着在正常情况下它可以是指数型的。如果你不知道上限,你可能无法在实际应用中使用该算法,因为你不知道程序是否在宇宙之前完成 正确使用大O符号表示上限。因此,将下限表示为大O是滥用符号 说“无意义”是一个强有力的词。这当然是

为什么这样说:


算法A的运行时间至少为O(n²)

没有意义吗

插入排序算法的运行时间最多为O(n²)

对吗

我试过上网,但找不到好的解释

我还有一个问题:

我知道任何线性函数⋅n+b是O(n),也是O(n²)。是否也是O(n³)


一个原因可能是没有上界的下界不是很有用。“至少”意味着在正常情况下它可以是指数型的。如果你不知道上限,你可能无法在实际应用中使用该算法,因为你不知道程序是否在宇宙之前完成

正确使用大O符号表示上限。因此,将下限表示为大O是滥用符号


说“无意义”是一个强有力的词。这当然是有用的信息,即使它是不够的。如果你的问题有更多的上下文,你会得到更好的帮助。

算法a的运行时间至少是O(n2)”相当于“算法a的运行时间是大的ω(n2)”,因此它不是毫无意义的。

O-notation,换句话说意味着: f(x)属于集合O(g(x))如果 f(x)
i、 e.您的算法不会增长到一个二次函数,这不是毫无意义的,例如,如果您不知道确切的算法,可以使用它,但您肯定知道它将需要O(n^2)运算


例如,如果一个人不知道排序算法,但知道要对数组进行排序,我们至少需要查看每个元素,可以说“对数组进行排序至少是O(n)”。

因为没有人关心它在最佳情况下的工作速度,所以最坏情况很重要。通常人们想知道在最坏的情况下需要多少时间。

T(n)
:algoa的运行时间。我们只关心
T(n)
语句:
T(n)>=O(n^2)

上限:因为
T(n)>=O(n^2)
,所以没有关于
T(n)
下限:假设
f(n)=O(n^2)
,那么语句:
T(n)>=f(n)
,但是
f(n)
可以是比
n^2
小的任何东西,例如:
常数,n,
,所以关于
T(n)
的下限也没有结论

=>该语句没有意义

f(n)
作为算法的运行时间

=> f(n) >= O(n2)
=> f(n) >= 0 , because 0 is a member of set of functions that are O(n2)
对于
f(n)
,这总是正确的,因为运行时间总是非负的。因此,该语句是多余的。

O(n^2)是最坏的情况,这意味着a的运行时间将是n^2或更快。如果它的运行时间至少是O(n^2),那么这意味着A可以拥有的最快运行时间至少是O(n^2)。这意味着它也可以比O(n^2)慢。这些语句意味着A可以有任何可能的运行时

我知道任何线性函数an+b都是O(n),也是O(n^2)。它是 还有O(n^3)

是的。big-O符号表示整个函数集合。但是我们应该用它来尽可能接近地描述一个函数。虽然
f(n)=an+b
确实是
O(n^2)
甚至
O(n^3)
,但更准确的说法是
f(n)=O(n)
一个类比:


这句话有点像是说:“我家的屋顶至少有地面那么高。”,但是完全没有信息。

在什么情况下你会问这个问题?它没有意义,因为你没有提供任何算法A。让算法A是插入排序算法。
Big Oh
表示法提供了算法运行时间的上限(最坏情况)。这当然不是毫无意义的!此外,与算法的平均情况分析相比,在大多数情况下,最坏情况复杂性的分析更容易。我把O(n 2)至少解释为“运行时间不是一个更坏的情况,这不是一个适当的大O”。谢谢你的精确回答。如果我考虑一个插入排序算法,那么在这个上下文中说“算法A的运行时间至少是O(n2)”是有用的吗?另一个疑问:任何线性函数A+B是O(n),也是O。(n^2)。它也是O(n^3)吗?就像我说的,陈述执行时间的下限是正确的和有意义的,只是对它使用大O符号是不寻常的,它通常是为时间复杂度的上限保留的。说“它至少是n2”更正式地描述为(大)ω(n^2),意思是“以n^2渐近地限定在下面”。所以你不应该使用“O(..”,除非你的意思是“以上面渐近地限定在上面”。你说:“这当然是有用的信息,即使它是不充分的。”“。那么在哪种情况下它会有用呢?例如,它可以用来证明它是优化或替换的候选者;€这很好地理解了它的想法+1