Mark Dominus收集了一些从多项NP难题到“正则表达式”匹配的多项式时间缩减示例。设想多项式时间验证并不是一个巨大的飞跃。
您如何向希望了解Deolalikar论文近期大惊小怪的本科生或其他领域的朋友说明NP-complete课程?
Mark Dominus收集了一些从多项NP难题到“正则表达式”匹配的多项式时间缩减示例。设想多项式时间验证并不是一个巨大的飞跃。
您如何向希望了解Deolalikar论文近期大惊小怪的本科生或其他领域的朋友说明NP-complete课程?
Answers:
我最喜欢与非CS朋友一起使用的示例是以下示例:
亚伯拉罕·A·布鲁姆·桑德霍尔姆。易货交易市场的结算算法:实现全国范围的肾脏交易。EC07。
肾脏交易市场实质上是周期保障的一种受限形式。我喜欢这个示例,因为a)很容易解释要点(如果您省略了一些技术上的细节),b)这是我所知道的为数不多的实例之一,更好的算法可以真正挽救生命!
我的第二个最喜欢的例子是医院和居民问题(又称大学录取问题)。每个医院对所有居民(应届医学生)进行排名,而居民对医院进行排名。每个医院都有一定数量的插槽。从那里开始,这是一个稳定的匹配问题,可以在多项式时间内解决。
但是实际上,夫妻可以一起进入该系统(是的,确实有一个系统),这样,该系统就不会拆分例如同时申请居住权的已婚夫妇。加上一对使问题成为NP完全的。除了易于解释之外,这很好地证明了引入远程连接如何诱导NP完整性。
显然,旅行推销员问题是可以解决的……至少在我所在的地方,这似乎是迄今为止非CS人员中最受欢迎的CS问题。正如我的算法讲师介绍的那样,我还发现以下有关Vertex Cover的插图非常吸引人:
您拥有一个道路网,并希望确保如果一辆汽车的燃料不足,那么在道路的至少一端会有一个加油站。
作为城市规划者,您希望通过建立尽可能少的加油站来最大程度地降低成本。从本质上讲,这是顶点覆盖问题,并且我已经指出,尽管您不希望在多项式时间内找到最佳的顶点覆盖,但可以发现,在多项式时间内只有两倍的距离,通过简单地选择一个最大匹配的两个端点即可(最后一个细节可能会根据您的听众的热情而被忽略-尤其是因为MM算法不完全是两类的)。
至于问题性质改变很小的“复杂性跳跃”的例子,我认为检查2色性和3色性之间的区别就是一个很好的例子。在围绕四色定理进行所有宣传的同时,一个人可能还会指出,很难检查地图是否只能用三色而不是四色正确着色,即使我们知道它总是可以用四色着色。相当多的人觉得这很惊人。
另一个相当自然的情况是操作系统中的死锁恢复问题。这是通过反馈顶点集的NP完全问题(最小数量的顶点使图成为非循环的)来建模的,并且我发现这也是一个了不起的示例(在该Wikipedia文章中进一步进行了解释)。
我认为平行停车很难。
实际上,在多边形环境中找到具有多边形边界从其初始位置到最终位置的带边界曲率的最短路径的更普遍的问题是NP-hard。可以在这里找到证明-http://portal.acm.org/citation.cfm?id=298976
背包非常容易掌握,特别是对于那些不得不处理一个小手提箱的人。如果他们知道动态编程,这是一个很好的例子。
另一个有趣的(实际上是相同的)是Subset-sum,因为它也有很好的物理解释:想象数字是理想(无质量)标尺上等点质量的距离,且支点位于原点。子总和表示:是否存在一个非空子集,使得标尺将保持平衡?(即重心是直尺的支撑点?)
在这两种情况下,幼稚的策略可能会强制诉诸检查所有子集,这似乎很直观。
如果他们有更多的背景知识,那么通过消除约束来解决问题就很好了。例如,从最大流量问题开始,将其转换为线性程序,然后使其成为整数程序。(当然,最好的选择是MAX-CUT,因为对于有更多背景的人,您还可以提出UGC;我在MO回答中触摸了其中的一些内容https://mathoverflow.net/questions/33036/is-quadratic-programming如果您有界线并有一个可行的点,请稍加调压/ 33048#33048。)此外,还有一些看起来很类似的问题,它们的复杂性千差万别(Euler(边缘)路径是线性的)时间,汉密尔顿(顶点)路径是NP完全)。
我的一个朋友度过了一个放假的一年,在北美的每个大联盟体育场观看一场棒球比赛。没有飞。(他没有完全成功;那年有三个体育馆正在建设中。)
由于Uber和Lyft等公司的成功,许多人在解决NP完全问题方面拥有非常容易获得的直接经验。
给定驾驶员集合和要在不同时间接载的人员清单,最有效地将乘客分配给驾驶员是什么?
这个问题(适当地改写)是NPC,我想人们在某个时候想知道Uber如何决定将驾驶员和乘客配对。
我通常以SAT为例。我说的是这样的话:“一直出现的各种问题都可以重写为寻找一个大逻辑公式的真正赋值。Pvs NP问题是,从根本上来说,有没有一种简单的方法可以解决这个逻辑公式?尽一切可能。到目前为止,没有人能够找到一种方法或证明没有简单的出路”。
诸如Sudoku(在nxn平方尺上)之类的Np完全问题就像一个通用工具,使我们能够有效地解决所有具有有效可验证解决方案的问题。唯一的要求是要有一种有效的方法来解决数独问题。