在任何实际输入中,低阶项主导运行时间的算法示例?


10

大O表示法隐藏了常数因子,因此存在一些算法,这些算法对于任何合理的输入大小都不可行,因为项的系数非常大。Øññ

是否存在任何已知的算法,其运行时间为但具有一些低阶项,其数量如此之大,以至于在合理的输入大小下,它完全主导了运行时间?我想在算法课程中使用像这样的算法作为示例,因为它提供了为什么不能使用big-O表示法的充分理由。ØFñØFñ

谢谢!


首先建立大型表格,然后在表格中为每个输入项目进行快速查找的算法?如果表足够大,则项数必须很大,以抵消创建表的成本。如果是查询数,则搜索引擎就是一个例子。ñ
2013年

我听说线​​性编程就是这样。在实践中,单纯形是指数式的,但比多项式算法快。
jmite 2013年

1
我不知道有什么算法可以满足您的需求,但我会寻找一种最多具有线性运行时间的算法,因为除此之外,我非常怀疑较小的术语是否可以主导大多数合理输入的主导术语。但是,当用于分类大数据时,也许k-way mergesort可以满足您的需求?这里的问题是要最小化辅助内存访问,因为这会花费大量时间-尽管我不确定这是否是您要演示的适当示例,但我真的不认为这足够简单是说明性的。
G. Bach

Answers:


2

如果是简并的,密码学就是一个例子。例如,打破AES加密是 -你所要做的就是找到其中有限数量的右键所有,2 1282 1922 256取决于密钥大小(假设明文足够众所周知,明确确定密钥)。但是,即使是2 128次操作,如今占用的所有计算机(大约十亿个左右,每个计算机每秒执行约十亿次操作)也要比整个宇宙的寿命(大约十亿亿秒)多。Ø1个2128219222562128


用来说明为什么big-O不是全部的一种稍微不同的方式是说明我们有时对小输入量使用不同的算法。例如,进行快速排序。选择正确的支点(这是一项艰巨的任务!),它就是。Quicksort通过分而治之:每个实例都涉及对小型数组的大量排序。对于小型数组,二次方法(例如插入排序)的效果更好。因此,为了获得最佳性能,大型数组的快速排序涉及许多小尺寸插入排序的运行。Øñlgñ


我认为在这里打破加密不是一个合理的例子。一件事是,要分析渐近找到正确密钥的问题,我们将不得不考虑具有非恒定密钥大小的Rijndael的理论上可用的版本,即为大小为的密钥破解密钥。否则,我们可能会说,对于固定大小的输入,任何终止算法都将在O1 )中执行。ñØ1个
G. Bach

@ G.Bach本示例的要点是,即使它是固定时间(就密文的大小而言),它也是不可行的(复杂性理论与高复杂度相关联)。
吉尔(Gilles)'所以

2
我认为您的第一个例子行不通。由于只有有限的多个选项需要检查,因此算法的运行时为,因此没有一个低阶o 1 项可以解释整个运行时。Ø1个Ø1个
templatetypedef

1
@templatetypedef 在消息长度方面,破坏AES加密消息的加密为Ø1个
吉尔(Gilles)'所以

1

参数化复杂度和FPT算法领域想到两个例子。这可能不完全是您要找的东西,但是可以了。

考虑一个图形问题,例如3-COLORING或HAM-CYCLE。这两个问题都可以用一元二阶逻辑表示,因此可以在具有受限树宽的图的线性时间中确定。这是Bruno Courcelle的结果,但所得算法远非实用。

另一个示例是Lenstra的深入研究结果,它说具有恒定数量变量的整数线性程序(ILP)可以在线性时间内求解。通过拉维·坎南(Ravi Kannan)的额外工作,我们可以使用算术运算来解决整数编程可行性问题,该算术运算的大小为O p 2 p L 位的整数,其中p是数字ILP变量的总和,L是输入中的位数。这又产生了FPT算法,该算法仅适用于非常小的实例。Øp9p/2大号Øp2p大号p大号


2
Courcelle定理是不切实际的,因为项上的常数很大,而不是因为某些o n 项在“小”输入项上占主导地位。(该常数随着高度的ØñØñ
二乘

0

与您的问题有些相关的是从理论上讲性能良好的算法,但由于在较小的实例上不切实际,因此并未用于实际问题。换句话说,就像您要求的那样,“播发的性能”仅在理论上适用于大量输入,而在实际应用中则看不到。有时候,这可能会反映在Big-Oh的估算值中,而有时却不完全正确。一些算法具有良好的理论“性能”,但是逻辑上非常复杂,而且任何人都没有实现过,因此,甚至不知道实际实例大小的“性能”,例如最大流量问题。


但是,由于低阶项占主导地位还是因为高阶项上的常数不好,这些做法不切实际吗?
David Richerby 2013年

无论是哪种方法,还是结合使用,都很难在每种情况下进行隔离。有效地/实际上是相同的效果。
vzn

-1

这是个玩笑,但它有严肃的一面...

Øñ日志ñØñ2


1
不,那不一样。快速排序在实践中很有用,因为无论大小有多大,典型输入都没有二次项。如果枢轴的选择对数据布局不利,那么即使对于较小的输入,quicksort也会表现出二次行为。
吉尔(Gilles)'所以
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.