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. APS中生产计划排程模块的基本原理

    高级计划系统(APS)作为ERP和MES的补充,用于协调物流.开发瓶颈资源和保证交货日期. APS包括需求和供应计划.运输和生产计划排程等各种供应链计划模块,本文主要介绍APS中生产计划排程模块的基本 ...

  2. SPring boot jpa 封装查询条件

    最近使用spring data jpa做了两个项目,对于动态查询的不友好做了个类似hibernate的封装,记录也分享下 首先定义一个所有条件的容器,继承Specification /** * 定义一 ...

  3. Oracle PLSQL游标、游标变量的使用

    参考文章:https://www.cnblogs.com/huyong/archive/2011/05/04/2036377.html 在 PL/SQL 程序中,对于处理多行记录的事务经常使用游标来实 ...

  4. elasticsearch 索引和mapping导入导出命令

    导mapping:elasticdump \ --input=http://192.168.102.13:9200/search_v1 \ --output=http://192.168.102.69 ...

  5. LaTeX公式手册(全网最全)

    参考维基百科的数学公式教程 参考Cmd Markdown 公式指导手册 本文为 MathJax 在 Markdown 环境下的语法指引. 如何插入公式 \(\LaTeX\) 的数学公式有两种:行中公式 ...

  6. Windows使用CMD命令查看进程和终止进程

    TaskList:        列出当前所有运行进程.        使用方法:在命令提示符中输入tasklist 然后回车,会看到类似下面的列表: 映像名称 PID 会话名 会话# 内存使用 == ...

  7. 去掉VSS控制

    1:删除.vssscc.vssver.scc .项目名.csproj.vspscc文件 2:.csproj文件删除以下内容   SccProjectName = "SAK"   S ...

  8. Leecode之双指针及二分查找

    题目 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数. 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2. 说明: 返回的 ...

  9. python基础之二:占位符、格式化输出、while else 、逻辑运算

    1.占位符和格式化输出 示例代码 #格式化输出 # % s d # name = input('请输入姓名') # age = input('请输入年龄') # height = input('请输入 ...

  10. ESA2GJK1DH1K升级篇: 升级STM32 预热: 单片机每隔一定时间 使用 http 获取天气

    前言: 实现功能概要: STM32使用AT指令控制Wi-Fi以TCP方式连接服务器(YY天气Web服务器),然后使用http的get协议获取今天的天气数据 单片机提取今天的温度和湿度数据,把温湿度数据 ...