Big -oh 的定义中的 No 是不是应该是两条曲线的交点?
Posted
技术标签:
【中文标题】Big -oh 的定义中的 No 是不是应该是两条曲线的交点?【英文标题】:Should No in the definition of Big -oh have to be the intersection of the two curves?Big -oh 的定义中的 No 是否应该是两条曲线的交点? 【发布时间】:2020-04-17 11:48:33 【问题描述】:在上图中,很明显n0是正数。让我们假设
f(n)=3n+2
和 g(n)=n
。
根据 Big-omega f(n)>=cg(n) => 3n+2>=cn
的定义。
以上两条线f(n)=3n+2
和g(n)=n
在坐标轴第三象限的n=-1
相交。
如果我能发现上述不等式适用于 c=1
和 n0 = 1,我为什么还要考虑交集。
在上述情况下,n0 不是正象限的交点。 我可以为 n0 选择任何正值以便满足不等式还是应该 n0 始终是路口?
【问题讨论】:
目前还不清楚这是一个编程问题。这看起来应该属于Mathematics。 交集不相关。事实上,它只是为常量c
的特定 值定义的。您所指的 Big-O 的定义允许您为 c
和 n0
选择任何大于 0 的值。将 n0 视为“非常大”会有所帮助
【参考方案1】:
将 n0 视为 分离点,这样对于所有 n > n0,保证 Ω(f) > Ω(cg)。这对于理解某些算法中的失败案例很重要。在上图中,我可以看到有一些数据量小于 n0,其中函数 g() 提供了卓越的性能。
让我们用一个尖锐的例子来考虑它。假设 g()
是 BubbleSort 并且 f()
是 RadixSort (我们将假设 K 位整数对于这个例子)。在这种情况下,n0=K:对于所有长度为 nK 的集合em>,在最佳情况下,BubbleSort 实际上比 RadixSort 表现得更好!
现在,假设我确实以某种方式搞砸了 BubbleSort 的实现(或者我正在并行运行它的多个实例)。那么,只要cn K,那么Ω(cg) f)。
【讨论】:
以上是关于Big -oh 的定义中的 No 是不是应该是两条曲线的交点?的主要内容,如果未能解决你的问题,请参考以下文章