NP-hard问题证明

NP-hard问题:比NPC更难,通常在多项式时间内无法验证一个解的正确性。几个复杂度的区别可以看NPC介绍

常见证明

我们要证明一个问题A是NP-hard问题一般可以分为两步:

1) 对问题A给定限制条件得到一个特例B问题	
2)证明问题B是NPC问题。

以下罗列四个较直观简单的例子:

  1. Dense Induced Subgraph

问题:给定图GG,正整数kkll,是否存在kk个点的生成子图包含最少ll条边。
证明:令l=Ck2l=C_k^2,那么该问题变成Clique问题(NPC问题)
解释:kk个点的完全子图最多的边包含Ck2C_k^2,所以当l=Ck2l=C_k^2,那么原问题变成寻找kk个点的子图且是完全图,那么就是Clique问题。

  1. Edge Packing

问题:给定图GG,正整数kkll,图GG是否存在ll条边与最多kk个点相邻。
证明:令l=Ck2l=C_k^2,那么该问题变成Clique问题(NPC问题)
解释:kk个点的完全子图最多的边包含Ck2C_k^2,那么当l=Ck2l=C_k^2,最少需要kk个点,此时原问题变成Clique问题。

  1. Hitting Rectangles

问题:平面上有一组长方形RR,一组点PP,和一个正整数kk,是否可以从PP中选择kk个点,使得任意一个长方形上都有点。
证明:特例是点覆盖。
解释:绘制一个图G,uuvvPP中的两个点,uuvv之间如果有边,则表示一个长方形。那么在这种情况下,需要覆盖所有的边,该问题就成了点覆盖问题。

  1. Eulerian Subgraph

问题:给定图GG,正整数kk,图GG中是否存在Eulerian子图恰好包含kk条边。
证明:对于Cubic Graphs(所有点的度都等于3),令k=nk=n,那么该问题就等价成哈密尔顿回路问题,是NPC复杂度。
解释:k=nk=n时,可以证明所有的点都只经过一次,因为每个点的度数都不超过3,如果经过两次,度数就为4。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章