对于实际大小,指数算法比多项式算法运行得更快的问题示例?


13

您是否知道任何问题(最好至少在某种程度上是众所周知的),对于实际的问题大小,指数算法的运行速度比最著名的多项式时间对应物快得多。

例如,假设一个问题具有的实际尺寸* 并且有两个已知的算法:一种是2 Ñ,另一个是Ñ Ç对于某一常数Ç。显然对于任何c > 15n=1002nnccc>15,指数算法都是首选。

*我想实际尺寸将意味着在现实世界中常有的东西。就像网络上的火车数量一样。


1
我认为您可能会在参数化复杂性文献中找到所需的内容。
卡夫2014年

对于线性算法,通常会有一个常数乘数,该乘数通常并不重要,并且经常从复杂度中忽略,但是我记得看起来非常高的是就地合并,它是线性的,但最坏的情况是5000N。在这些情况下,存在一个较大的可用区域,其中N ^ 2小于5000 N,大小小于sqrt(5000),较小的域,其中2 ^ n仍将更快,其中n小于log 5000
Grady Player

Answers:


13

如何处理单纯形算法进行线性规划?在很多情况下,它是在实践中使用的。

编辑添加:我认为它更多地是一种“更坏情况的指数算法”,它可以在实际实例/分布上高效运行,而不是在实际规模的对抗实例上运行更快。


4
@diesalbla-这取决于确切的论坛。引用维基百科,“ 1972年,Klee和Minty [32]举例说明了Dantzig提出的最简单情况下的单纯形法复杂度是指数时间”。
RB

12

对于识别图形是否具有无结嵌入的问题,已知最快算法是由于Miller和Naimi造成的,并且是指数时间。Robertson-Seymour理论说,有一个算法可以解决这个问题。但是,要写下来,我们需要了解无节嵌入的禁止未成年人清单。但是,即使我们知道此列表,对于合理大小的图形,指数时间算法仍然会快得多,因为有250多个禁止的未成年人,其中一些未成年人非常大。O(n3)


5
2222|H|O(n3)H

1
O(n2)|H|

1
HG|H|

-3

有一些例子(非概率/精确)进行素性检测/测试。该AKS算法是为素性第一算法的测试显示出在P.它不与用于“小”的输入的某些指数时间算法有利地竞争。详细信息有些棘手,因为要显示此信息通常需要实际实现算法,这是一项艰巨的任务,并且可能取决于实现特定方面。

有关此cs.se问题的更多信息/详细信息/参考:


6
据我所知,AKS在实践中与之竞争的算法是随机多项式(Miller–Rabin,ECPP)或确定性拟多项式(Adleman–Pomerance–Rumeley)。没有比指数时间快的地方了。
EmilJeřábek3.0'8

6
在实践中使用的米勒–拉宾的随机版本不依赖于相对湿度。
EmilJeřábek3.0 '08

5
这都是非常正确的,但是与原始问题无关。
EmilJeřábek3.0'8

2
是的,我知道所有这些。第三,这无关紧要。这个问题要求指数时间算法在实践中与已知的多项式时间算法(在这里是AKS)具有竞争力。实践中唯一使用的指数时间素数测试算法是试验划分,它对任何非平凡大小的数字都没有竞争力。尽管它们不是多项式(或确定性或无条件的),但实践中使用的竞争算法比指数算法有效得多。
EmilJeřábek3.0 '08

3
苹果和橙子是将AKS(素数测试算法)与GNFS(分解算法)进行比较。
埃米尔·耶拉贝克(EmilJeřábek)3.0,2014年
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.