Math 在大O术语中,如果O(n-1)与O(n)相同,那么为什么在主定理中T(n-1)不等于T(n)? < P> >所以我对CS很陌生,最近在学习Big-O、θ和Omega以及主定理,在演讲中我发现这不是出于某种原因,并且奇怪为什么会这样? < P>尽管O(n)和t(n)都使用大写字母,而在中间使用小写字母n。它们代表着根本不同的概念

Math 在大O术语中,如果O(n-1)与O(n)相同,那么为什么在主定理中T(n-1)不等于T(n)? < P> >所以我对CS很陌生,最近在学习Big-O、θ和Omega以及主定理,在演讲中我发现这不是出于某种原因,并且奇怪为什么会这样? < P>尽管O(n)和t(n)都使用大写字母,而在中间使用小写字母n。它们代表着根本不同的概念,math,big-o,recurrence,master-theorem,Math,Big O,Recurrence,Master Theorem,如果使用递归关系分析算法,通常会让T(n)表示算法在大小为n的输入上完成所需的时间。因此,我们不希望t(n)与t(n-1)相同,因为在大多数情况下,当您给算法较大的输入时,算法运行时间较长 更一般地说,对于任何函数f,如果你想声明f(n)=f(n-1),你需要解释为什么你可以假设这一点,因为通常情况并非如此 这里比较棘手的一点是,当我们写O(n)时,看起来我们在写一个名为O的函数,并传入参数n,但符号的含义完全不同。符号O(n)是“当输入变得非常大时,从上方以n的倍数为界的某个函数”的占位符。类

如果使用递归关系分析算法,通常会让T(n)表示算法在大小为n的输入上完成所需的时间。因此,我们不希望t(n)与t(n-1)相同,因为在大多数情况下,当您给算法较大的输入时,算法运行时间较长

更一般地说,对于任何函数f,如果你想声明f(n)=f(n-1),你需要解释为什么你可以假设这一点,因为通常情况并非如此

这里比较棘手的一点是,当我们写O(n)时,看起来我们在写一个名为O的函数,并传入参数n,但符号的含义完全不同。符号O(n)是“当输入变得非常大时,从上方以n的倍数为界的某个函数”的占位符。类似地,O(n-1)表示“当输入变得非常大时,从上方以n-1的倍数为界的某个函数”这恰好是这样的情况,任何函数在上面以n的倍数为界,也从上面以n-1的倍数为界,这就是为什么O(n)和O(n-1)表示相同的东西


希望这有帮助

一个O(无论什么)计算可以指定性能界限保持的最小值n。因此,对于退化情况,不存在预测不可能的低时间的问题,例如当N为1(但lgN为零)时尝试执行NlgN排序。此外,当数接近无穷大时,大O大约是算法行为的极限。无穷=无穷-1=无穷/2所以O(n)=O(n-1)=O(n/2)但是主定理是关于如何为算法所做的工作量建立一个递推关系-它与接近无穷的极限无关,所以你不能使用无穷允许的简化。哦,这很有意义。谢谢