每天遇到NP完全问题


Answers:


24

我最喜欢与非CS朋友一起使用的示例是以下示例:

亚伯拉罕·A·布鲁姆·桑德霍尔姆。易货交易市场的结算算法:实现全国范围的肾脏交易。EC07。

肾脏交易市场实质上是周期保障的一种受限形式。我喜欢这个示例,因为a)很容易解释要点(如果您省略了一些技术上的细节),b)这是我所知道的为数不多的实例之一,更好的算法可以真正挽救生命!

我的第二个最喜欢的例子是医院和居民问题(又称大学录取问题)。每个医院对所有居民(应届医学生)进行排名,而居民对医院进行排名。每个医院都有一定数量的插槽。从那里开始,这是一个稳定的匹配问题,可以在多项式时间内解决。

但是实际上,夫妻可以一起进入该系统(是的,确实有一个系统),这样,该系统就不会拆分例如同时申请居住权的已婚夫妇。加上一对使问题成为NP完全的。除了易于解释之外,这很好地证明了引入远程连接如何诱导NP完整性。


1
很好的例子!戴维·曼洛夫(David Manlove)在这类问题(交换和匹配)上进行了广泛的研究。该系统已在英国和匈牙利使用。 dcs.gla.ac.uk/~davidm/publications.html 据我所知,这些方法优于NRMP算法,而Eric McDermid的3/2逼近算法是最著名的。 dx.doi.org/10.1007/978-3-642-02927-1_57
安德拉斯·萨拉蒙(

13

NP很难解决的一些“日常”问题,可以通过适当的方式解决:

  • 将大学课程分配给时隙以最大程度地减少计划冲突。

  • 将婚礼客人分配到座位上,以便朋友坐在同一张桌子上,但敌人却不在同一桌子上。

  • 计划进行公路旅行以访问清单上的所有旅游景点,从而最大程度地减少驾驶。


12

显然,旅行推销员问题是可以解决的……至少在我所在的地方,这似乎是迄今为止非CS人员中最受欢迎的CS问题。正如我的算法讲师介绍的那样,我还发现以下有关Vertex Cover的插图非常吸引人:

您拥有一个道路网,并希望确保如果一辆汽车的燃料不足,那么在道路的至少一端会有一个加油站。

作为城市规划者,您希望通过建立尽可能少的加油站来最大程度地降低成本。从本质上讲,这是顶点覆盖问题,并且我已经指出,尽管您不希望在多项式时间内找到最佳的顶点覆盖,但可以发现,在多项式时间内只有两倍的距离,通过简单地选择一个最大匹配的两个端点即可(最后一个细节可能会根据您的听众的热情而被忽略-尤其是因为MM算法不完全是两类的)。

至于问题性质改变很小的“复杂性跳跃”的例子,我认为检查2色性和3色性之间的区别就是一个很好的例子。在围绕四色定理进行所有宣传的同时,一个人可能还会指出,很难检查地图是否只能用三色而不是四色正确着色,即使我们知道它总是可以用四色着色。相当多的人觉得这很惊人。

另一个相当自然的情况是操作系统中的死锁恢复问题。这是通过反馈顶点集的NP完全问题(最小数量的顶点使图成为非循环的)来建模的,并且我发现这也是一个了不起的示例(在该Wikipedia文章中进一步进行了解释)。


3
一个最大的匹配是足够的两近似,这是很容易计算和解释。
沃伦·舒迪

1
@沃伦:谢谢你指出这一点,你当然是对的!
Neeldhara


7

背包非常容易掌握,特别是对于那些不得不处理一个小手提箱的人。如果他们知道动态编程,这是一个很好的例子。

另一个有趣的(实际上是相同的)是Subset-sum,因为它也有很好的物理解释:想象数字是理想(无质量)标尺上等点质量的距离,且支点位于原点。子总和表示:是否存在一个非空子集,使得标尺将保持平衡?(即重心是直尺的支撑点?)

在这两种情况下,幼稚的策略可能会强制诉诸检查所有子集,这似乎很直观。

如果他们有更多的背景知识,那么通过消除约束来解决问题就很好了。例如,从最大流量问题开始,将其转换为线性程序,然后使其成为整数程序。(当然,最好的选择是MAX-CUT,因为对于有更多背景的人,您还可以提出UGC;我在MO回答中触摸了其中的一些内容https://mathoverflow.net/questions/33036/is-quadratic-programming如果您有界线并有一个可行的点,请稍加调压/ 33048#33048。)此外,还有一些看起来很类似的问题,它们的复杂性千差万别(Euler(边缘)路径是线性的)时间,汉密尔顿(顶点)路径是NP完全)。


7
我喜欢以下子集总和的版本:可以给您10英镑从商店购买小吃。您能找到完全正确的购买组合,从而不剩钱吗?
安德拉斯·萨拉蒙(AndrásSalamon)2010年

6

填字游戏的构造是NP完整的:给定一组答案,请尝试将它们放入网格中。


5

我创建了一个网站Tagxedo,http: //www.tagxedo.com,它是一个词云生成器,可以将单词(按其频率大小)调整为形状。结果非常漂亮,但问题很容易证明是NP困难的(包装问题)。

有趣的是,许多NP难题都具有“简单”的近似值。Tagxedo在许多情况下似乎都做得差不多。这引起了有关P vs NP的实际含义以及近似主题的有趣讨论。


4

我的一个朋友度过了一个放假的一年,在北美的每个大联盟体育场观看一场棒球比赛。没有飞。(他没有完全成功;那年有三个体育馆正在建设中。)


是的,但是他是否在努力减少汽油使用量?:)
Suresh Venkat 2010年

即使找到可行的时间表也很难,因为体育场不是每天都开放(带有时间窗的哈密顿周期)。
杰夫斯

4

由于Uber和Lyft等公司的成功,许多人在解决NP完全问题方面拥有非常容易获得的直接经验。

给定驾驶员集合和要在不同时间接载的人员清单,最有效地将乘客分配给驾驶员是什么?

这个问题(适当地改写)是NPC,我想人们在某个时候想知道Uber如何决定将驾驶员和乘客配对。


3

我通常以SAT为例。我说的是这样的话:“一直出现的各种问题都可以重写为寻找一个大逻辑公式的真正赋值。Pvs NP问题是,从根本上来说,有没有一种简单的方法可以解决这个逻辑公式?尽一切可能。到目前为止,没有人能够找到一种方法或证明没有简单的出路”。


2
我不确定每天有多少人遇到这种情况。
戴夫·克拉克

3

诸如Sudoku(在nxn平方尺上)之类的Np完全问题就像一个通用工具,使我们能够有效地解决所有具有有效可验证解决方案的问题。唯一的要求是要有一种有效的方法来解决数独问题。


2

ñP

ñpĴñPpĴķñP-在这种情况下完成。请注意,如果我们假设它们不能翻倒,则不必是块。可能是一叠纸,板条箱或盘子。

希望这可以帮助!


2

一个可想而知的示例是Mark Dominus 的简短介绍(请参阅相关博客文章),称为“我最喜欢的NP-完全问题”,其中下图是精确按三组覆盖的概述。

视频系列中的标题包括

  • 舞蹈,音乐和书籍
  • 手,耳朵和脚
  • 与Elmo一起醒来(关于睡觉,穿衣服和刷牙)
  • 您附近的人(关于消防员,救生员和护士)

明确的意图是,每个视频都包含三个情节,所有情节均取材于一组幼儿感兴趣的主题。

该系列中奇特的鸭子是关于“花朵,香蕉和……头发”的视频。

花,香蕉和……头发。


0

尤其是稍后查看背包问题时,此NP完全问题可能是一个很好的选择:

数字猜测,您只能猜测单个数字,直到正确为止。

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.