Algorithm 函数增长中的大O

Algorithm 函数增长中的大O,algorithm,Algorithm,假设我们有两种算法,A和B,用于解决某个问题(例如,将两个n×n矩阵相乘,或对一个整数数组n进行排序)。让n表示问题的输入大小,让TA(n)和TB(n)表示步骤数 分别由算法A和B在大小为n的输入上获取。 已知TA(n)=O(n3)和TB(n)=O(n5)。对于足够大的n,算法A执行的步数是否比算法B少?为什么?首先,我想你的意思是边界是O(n3)和O(n5)(即分别是3和5的幂) 因为,你真的不能说任何关于比较的事情。例如: n2=O(n3)和n1.5=O(n5),但即使对于大n,前者的函数

假设我们有两种算法,A和B,用于解决某个问题(例如,将两个n×n矩阵相乘,或对一个整数数组n进行排序)。让n表示问题的输入大小,让TA(n)和TB(n)表示步骤数 分别由算法A和B在大小为n的输入上获取。
已知TA(n)=O(n3)和TB(n)=O(n5)。对于足够大的n,算法A执行的步数是否比算法B少?为什么?首先,我想你的意思是边界是O(n3)和O(n5)(即分别是3和5的幂)

因为,你真的不能说任何关于比较的事情。例如:

  • n2=O(n3)和n1.5=O(n5),但即使对于大n,前者的函数也比后者大

  • 相反,n1.5=O(n3),n2=O(n5),这里,对于大n,前者的函数确实比后者大


如果问题是关于Θ,而不是O,那么答案就不同了——在这种情况下,你可以说,对于足够大的n,前者执行的步骤比后者少。

首先,我想你的意思是边界是O(n3)和O(n5)(即,分别是3和5的幂)

因为,你真的不能说任何关于比较的事情。例如:

  • n2=O(n3)和n1.5=O(n5),但即使对于大n,前者的函数也比后者大

  • 相反,n1.5=O(n3),n2=O(n5),这里,对于大n,前者的函数确实比后者大


如果问题是关于Θ,而不是O,答案就会不同——在这种情况下,你可以说,对于足够大的n,前者执行的步骤比后者少。

为什么不简单地
n^3
?当n为正时?@LasseV.Karlsen就是这样-它不是Θ,但问题是,为什么在n^3上有界的东西不比在n^5上有界的东西小,这有反例。我试图明确地向Θ在答案中,顺便说一句。为什么它不简单地
n^3
?当n为正时?@LasseV.Karlsen就是这样-它不是Θ,但问题是,为什么在n^3上有界的东西不比在n^5上有界的东西小,这有反例。我试图明确地向Θ在回答中,顺便说一句。