NP完全问题的证明

一、限制法

最小覆盖问题(VC)

  • 问题实例 集合\(S\)的子集的集合\(C\),正整数\(k\)。问\(C\)是否有\(S\)的大小不超过\(k\)的覆盖,即是否包含子集\(C' \subseteq C\)使得 \(|C'|=k\)且 \(\bigcup C'=S\)。
  • 证明方法:限制 \(\forall c \in C\),\(|c|=3\),\(|S|=sk\),则为X3C问题。

子图同构问题

  • 问题实例
    图\(G=(V_1,E_1)\),\(H=(V_2,E_2)\)。
    问\(G\)中是否有同构于\(H\)的子图,即是否有子集\(V \subseteq V_1\),\(E \subseteq E_1\),使得 \(|V|=|V_2|\),\(|E|=|E_2|\) ,且存在双射函数\(f:V_2 \to V\),使得 \((u,v) \in E \Longleftrightarrow (f(u),f(v)) \in E_2\) 。
  • 证明方法:限制\(H\)为完全图,且 \(|V_2|=k\) ,则该问题是团的问题。

0-1背包(Knapsack)

  • 问题实例
    有穷集\(U\),\(\forall u \in U\),大小\(s(u)\in Z^+\),价值\(v(u)\in Z^+\),大小的约束\(B \in Z^+\),价值目标\(K \in Z^+\)。
    问是否有子集\(U' \subseteq U\),使得
    \[\begin{equation}
    \sum_{\boldsymbol{u} \in U} \boldsymbol{s}(\boldsymbol{u}) \leq \boldsymbol{B}, \quad \sum_{\boldsymbol{u} \in \boldsymbol{U}^{\prime}} \boldsymbol{v}(\boldsymbol{u}) \geq \boldsymbol{K}
    \end{equation}\]
  • 证明方法:限制 \(\forall v \in U\),
    \[s(u)=v(u)\]
    \[
    B=\left\lfloor\frac{1}{2} \sum_{u \in U} s(u)\right\rfloor, \quad K=\left\lceil\frac{1}{2} \sum_{u \in U} v(u)\right\rceil
    \]
    则成为均分问题。

三元集合的恰当覆盖(X3C)

  • 问题实例
    有穷集\(S\) ,\(|S|=3q\) ,\(S\) 的三元子集\(C\)。
    问是否有\(C' \subseteq C\),使得\(S\)的每个元素恰好出现在\(C'\) 的一个成员中。
  • 证明方法:限制
    • \(S=W \cup X \cup Y\)
    • \(|W|=|X|=|Y|=q\)
    • \(C=\{(w,x,y)|(w,x,y) \in W \times X \times Y)\}\) 则 \(|C'| = q\) ,且\(C'\) 中任两个元素都不相交,成为3DM问题。

集中集

  • 集合\(S\)的子集的集合\(C\),正整数\(k\)。问\(S\)是否包含\(C\)的大小不超过\(k\)的集中集,即是否有\(S' \subseteq S\),\(|S'| \leq k\),使得\(S'\)至少包含\(C\)的每个子集的一个元素。
  • 证明方法:限制 \(\forall c \in C\) ,\(|c|=2\),令\(V=S\),\(E=C\),则构成图 \(G=(V,E)\) 的顶点覆盖问题。

有界度的生成树

  • 问题实例
    图\(G=(V,E)\)
    问\(G\)是否包含一棵顶点度数不超过\(k\)的生成树,即是否有子集\(E'\subseteq E\),\(|E'|=|V|-1\),图\(G'=(V,E')\) 是连通的,且\(V\)中每个顶点至多包含在\(E'\) 的\(k\) 条边中。

  • 证明方法:限制\(k=2\) ,该问题则为哈密顿通路问题。

多处理机调度

  • 问题实例 有穷任务集\(A\),\(\forall a \in A\),长度\(l(a) \in Z^+\),处理机台数\(m \in Z^+\),截止时间\(D \in Z^+\)。
    问是否存在不交的集合\(A_1,A_2,...,A_m\)使得
    \[
    A=A_{1} \cup A_{2} \cup \ldots \cup A_{m}
    \]
    \[
    \max \left\{\sum_{a \in A_{i}} l(a): 1 \leq i \leq m\right\} \leq D
    \]
  • 证明方法:限制\(m=2\),
    \[
    D=\left\lfloor\frac{1}{2} \sum_{a \in A} l(a)\right\rfloor
    \]
    则成为均分问题。

二、局部替换法

选择已知完全问题的实例中的某些元素作为基本单位,然后把每个基本单元替换成指定结构,从而得到目标问题的对应实例。

3SAT问题

两点间的哈密顿通路问题

区间排序

分量设计法

最小拖延排序

NP完全问题的证明的更多相关文章

  1. NP完全问题 NP-Completeness

    原创翻译加学习笔记,方便国人学习算法知识! 原文链接http://www.geeksforgeeks.org/np-completeness-set-1/ 我们已经找到很多很高效的算法来解决很难得问题 ...

  2. P、NP、NP完全问题

    如果一个算法的最差时间效率属于O(p(n)),则该算法可以在多项式的时间内对问题进行求解,其中p(n)是输入规模n的一个多项式函数. 可以在多项式时间内求解的问题是易解的.不能在多项式时间内求解的问题 ...

  3. 小小知识点(六)——算法中的P问题、NP问题、NP完全问题和NP难问题

    转自CSDN默一鸣 https://blog.csdn.net/yimingsilence/article/details/80004032 在讨论算法的时候,常常会说到这个问题的求解是个P类问题,或 ...

  4. NP问题/NP完全问题(NP-complete problem)如何判断是否是NP完全问题

    在算法复杂度分析的过程中,人们常常用特定的函数来描述目标算法,随着变量n的增长,时间或者空间消耗的增长曲线,近而进一步分析算法的可行性(有效性). 引入了Big-O,Big-Ω,来描述目标算法的上限. ...

  5. NP完全问题

    1.概念 好算法:Edmonds与1975年提出:具有多项式时间(O(nk)的算法为好算法. P类问题:存在多项式时间算法的问题.如:货郎问题.调度问题.最大团问题.最大独立集问题.Steiner树问 ...

  6. 分考场(np完全问题,回溯法)

    问题描述 n个人参加某项特殊考试. 为了公平,要求任何两个认识的人不能分在同一个考场. 求是少需要分几个考场才能满足条件. 输入格式 第一行,一个整数n(1<n<100),表示参加考试的人 ...

  7. NP

    一个决定性问题C 若是为NPC,则代表它对NP是完备的,这表示: 它是一个NP问题,且 其他属于NP的问题都可归约成它. 满足条件2(无论是否满足条件1)的问题集合被称为NP-hard.一个NP-ha ...

  8. lesson1-图的概念和图论模型

    说明: 图论专题开设的目的主要是作为本学期复习巩固和分享自己对于图论的理解,主要参考的是老师的PPT.应老师要求,不能共享文件,抱歉! 参考书目:[1] J.A. Bondy,  U.S.R. Mur ...

  9. 最新证明面临质疑:P/NP问题为什么这么难?

    转自:http://tech.sina.com.cn/d/2017-08-16/doc-ifyixias1432604.shtml 编译 | 张林峰(普林斯顿大学应用数学专业博士研究生) 责编 | 陈 ...

随机推荐

  1. ThinkPHP3.2.3:使用模块映射隐藏后台真实访问地址(如:替换url里的admin字眼)

    例如:项目应用目录/Application下模块如下,默认后台模块为Admin 现在需要修改后台模块的访问地址,以防被别有用心的人很容易就猜到,然后各种乱搞... (在公共配置文件/Applicati ...

  2. eclipse 工作空间配置UTF-8编码格式

    配置前端页面编码格式 1. Windows-->preferences 2. web-->jsp file-->Encoding 3. OK保存  配置java文件编码格式 1. W ...

  3. javascript之BOM对象(三其他对象)

    一.navigator对象 navigator使用来识别浏览器的,是所有支持javascript的浏览器所共有的.与BOM的其他对象不同,每个浏览器的navigator对象都有一套自己的属性. 常见的 ...

  4. 逆向破解之160个CrackMe —— 023-024

    CrackMe —— 023 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...

  5. 使用WIFI准备工作及配置内核——韦东山

    主要做的工作:让内核如何支持现有的无线网卡.知道这个流程就可以了,没必要深究. 使用WIFI功能时,涉及两个东西: 同样手机也可以用于WIFI AP模式,让别的设备来连接它.就是我们平时所说的用手机开 ...

  6. 20180610模拟赛T1——脱离地牢

    Description 在一个神秘的国度里,年轻的王子Paris与美丽的公主Helen在一起过着幸福的生活.他们都随身带有一块带磁性的阴阳魔法石,身居地狱的魔王Satan早就想着得到这两块石头了,只要 ...

  7. Candy Treasure Box

    This is an interesting puzzle game. In the game, you need to use your brain, think carefully, operat ...

  8. 07_LACP负载分担(数通华为)

    1. 网络拓扑 2. SW1配置:[SW1]vlan batch 10 20[SW1]interface GigabitEthernet 0/0/1[SW1-GigabitEthernet0/0/1] ...

  9. table开发中遇到的问题

    table元素是一个很常用的元素.但是在开发中,我也遇到了一些值得记录下来的问题及解决方案: 1.td内容溢出时,隐藏内容并且以省略号提示 .hide-content{ /* 不换行 */ white ...

  10. LOJ2687 BOI2013Vim 题解

    题目链接 这里只写个摘要,具体的可以看 神仙Itst的博客 大概是每相邻两个位置之间的线段要么被覆盖一次,要么被覆盖三次,然后DP,如下图: 代码: #include<bits/stdc++.h ...