在实践中可以反直觉解决的问题?


21

最近,我经历了一个痛苦的有趣经历,即向一个年轻的,有才华的自学成才的程序员非正式地解释了计算复杂性的概念,他以前从未参加过算法或复杂性方面的正式课程。毫不奇怪,许多概念起初看起来很奇怪,但是对于某些示例(PTIME,难处理性,不可计算性)是有意义的,而其他一些似乎更为自然(通过归约,以时间和空间为资源进行问题分类,渐进分析)。一切都很好,直到我意外地承认了SAT可以在实践中有效地解决*,就像那样,我丢了他们。我试图为理论辩护有多说服力都没关系,孩子坚信他不应该在乎那全是假话。好...

¯\ _(ツ)_ /¯

不,我没有伤心,也没有真正在乎他的想法,这不是这个问题的重点。我们的谈话让我想到了一个不同的问题,

对于理论上棘手的问题(超多项式时间复杂度)但实际上可以解决的问题(通过启发式,逼近,SAT求解器等),我真正了解多少?

我意识到,不多。我知道有一些非常有效的SAT解算器可以有效地解决大量实例,Simplex在实践中效果很好,也许还有其他一些问题或算法。您能帮我画出更完整的图画吗?此类别中哪些著名的问题甚至是几类问题?

TL; DR:在实践中可以解决哪些违反直觉的问题?是否有(更新的)资源来阅读更多内容?我们有他们的特征吗?最后,作为一般性讨论问题,不是吗?

编辑#1:在试图回答有关这种表征的最后一个讨论问题时,我被介绍给算法的平滑分析,这是丹尼尔·斯皮尔曼(Daniel Spielman)和滕尚华(Thang-Hua Teng)在[1]中引入的概念,该概念在最坏情况和最坏情况之间连续插值。算法的平均情况分析。它与上面讨论的特征不完全相同,但是它捕获了相同的概念,我发现它很有趣。

[1] Spielman,Daniel A.和Teng-Hua Teng。“平滑的算法分析:为什么单纯形算法通常需要多项式时间。” ACM杂志(JACM) 51,第 3(2004):385-463。


6
您说在实践中可以有效解决SAT是什么意思?您的朋友为什么要依靠Internet上的安全性?大概在实践中没有困难的问题吗?稳健性是多重时间/高效可溶性的主要优势之一。
Chandra Chekuri '18

6
图同构是自然的候选者。
DW

2
嘿,@ ChandraChekuri,我的意思是说实际上SAT求解器可以回答具有数百万个变量和子句的SAT实例。至少,我认为是这种情况。我不确定我是否理解您对“ Internet安全”的含义?我并不是反对形式主义,我对理论上棘手的问题感兴趣,但出于所有实际目的(可能是由于体面的近似,可能是由于现实世界实例的特殊结构等),我们认为“易处理”。
Konstantinos Koiliaris '18

1
@KonstantinosKoiliaris我想指出的是,各种加密协议的安全性都依赖于(通常甚至更高一些),因此,提供了很多例行实践中的问题示例,这些问题对于SAT解算器来说非常困难(还是我们非常希望如此)。PNP
EmilJeřábek

2
因此,最好检查泛型复杂性。实际上,事实证明,暂停问题在多项式时间内几乎总是可以解决的,例如SAT(实际上,SAT具有更强的保证)。“几乎总是”是指问题允许算法,使得随着多项式输入的长度增加,算法在多项式时间内停止(当然,并输出正确答案)的输入比例将变为1。
吉列尔莫·安吉里斯'18

Answers:


17
  • 在实践中通常可以解决高度结构化的SAT实例(甚至包含数百万个变量)。但是,即使是在实践中,接近可满足性阈值且有数百个变量的随机SAT实例仍处于打开状态(这意味着,即使在实践中,如果生成这样的事物,您在宇宙的生命周期中可能永远不会知道所生成的事物是否可满足使用当前的SAT求解器)。您可能对此相关问题及其答案感兴趣。

  • 派系发现者在实践中也非常出色

  • 整数编程和混合整数线性编程(带有一些有理数和一些整数变量)是整个运筹学部门的工作重点,可以在实践中(但并非总是)解决问题

  • PSPACEPSPACE

  • EXPSPACE

  • 正如DW的评论中已经指出的那样,图同构可以在实践中解决。很难将现代GI软件(例如,海贼,福乐,风骚等)塞住。


感谢Joshua,感谢您提出的最有趣/最广泛的问题。
Konstantinos Koiliaris

1
在实践中,派系发现者并不总是很好。它确实取决于图表。而且您的链接似乎只在谈论随机图。
彼得·索尔

关于GI的扩展:AFAIK大多数最新的GI解算器(例如提到的那些)都使用优化的个性化优化方法(其中优化是颜色优化,该方法已经可以用作几乎所有图形的准线性GI测试)。 ,但是Neuen和Schweitzer最近展示了此方法的指数下界,并构造了(实际上)硬实例。
Watercrystal '18

1
@JoshuaGrochow:是的,我对此表示同意。我只是想扩展问题的“反直觉”部分,因为OP特别提到即使已知指数下界并且我们在此情况相同,Simplex在实践中也表现出色。
水晶

1
我只是对Keller的猜想有经验,在那儿(非常大的图)充斥着许多集团寻找算法。
彼得·索尔

14

所述辛德米尔纳型系统在功能编程语言(Haskell中,SML,OCaml的)一起使用。实际上,类型推断算法几乎是线性的,并且效果惊人,但是众所周知,它是DEXPTIME完整的!

一般评论:最坏的时间复杂度不一定是衡量算法实际性能的很好指标,这不足为奇。但是,说理论与实践之间的差异会使复杂性理论失去作用,这就像在说自然数是一种浪费,因为我们仅使用了所有可用数字中的极小量。一位著名的哲学家曾经说过:“没有理论的经验是盲目的,但是没有经验的理论仅仅是智力的发挥。”


FPL

6

更多示例,主要来自编程语言:

  1. k-CFA(k控制流分析)已完成EXPTIME(Van Horn&Mairson 2008),但是像MLton这样的全程序优化编译器仍然可以执行。编译时间很长,但是很少造成灾难性的后果。
  2. 解决(动态)过载通常是NP完全的(Palsberg 2012)。但这在现实世界中很少出现问题。
  3. k
  4. SMT解决方案通常是NP完全的,但是商用SMT解决方案(例如Z3和CVC4)通常表现出色。我没有直接与SMT求解器一起使用,但是我间接使用了Liquid Haskell和Dafny的Z3,检查时间似乎还可以。
  5. Presburger算术的决策问题确实很复杂(Fischer&Rabin 1974),但是Bill Pugh的决策算法Omega检验(Pugh 1991)通常在低阶多项式时间内运行。

Onn


参考文献:

[1] David Van Horn和Harry G. Mairson。2008。确定EXPTIME的kCFA已完成。在第13届ACM SIGPLAN函数编程国际会议(ICFP '08)的会议记录中。美国纽约州ACM,电话:275-282。

[2] http://web.cs.ucla.edu/~palsberg/paper/dedicated-to-kozen12.pdf

[3] MJ Fischer和MO Rabin。1974年。PRESBURGER算法的超指数复杂性。技术报告。美国麻萨诸塞州麻省理工学院。

[4]威廉·普格。1991年。Omega测试:一种用于依赖关系分析的快速实用的整数编程算法。在1991年ACM / IEEE关于超级计算的会议论文集(超级计算'91)中。美国纽约州纽约市,ACM,4-13。


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.