NP完全问题(上课)选读

合集下载

NP完全问题详解PPT课件

NP完全问题详解PPT课件
' p ,就说判定问题是一个 NP 难题。 2、 NP 完全问题
定义 12.7 令是一个判定问题,如果: (1) NP,并且: (2) 对 NP 中的所有问题' NP,都有' p ; 则称判定问题是 NP 完全的。
3、 NP 难题和 NP 完全问题的差别 是 NP 完全问题,'是 NP 难题, 则必定在 NP 类中,而'不一定在 NP 类中。
第16页/共53页
例 已知哈密尔顿回路问题 HAMILTONIAN CYCLE 是一个 NP 完全问题,证明货郎担
问题 TRAVELING SALESMAN 也是一个 NP 完全问题。
哈密尔顿回路问题:给定无向图G (V , E ),是否存在一条回路,使得图中每个顶点在
回路中出现一次且仅一次。
货郎担问题:给定n个城市和最短距离l ,是否存在从某个城市出发、经过每个城市一
第9页/共53页
12.1.2 NP类问题
二、 NP 类判定问题 1、定义: 定义 12.5 如果对某个判定问题,存在着一个非负整数k ,对输入规模 为n的实例,能够以O ( nk )的时间运行一个非确定性的算法,得到 yes 或no的答案,则该判定问题是一个 NP 类判定问题。 2、特性: 存在确定性的算法,能够以多项式时间,来检查和验证在推测阶段产 生的答案。
第12页/共53页
12.1.2 NP类问题
3、P类问题和 NP 类问题的差别: P 类问题可以用多项式时间的确定性算法来进行判定或求解; NP 类问题可以用多项式时间的确定性算法来检查和验证它的解。 P,必然有 NP ,所以,P NP。 猜测 NP P。该不等式是否成立、至今还没有得到证明。
第13页/共53页
12.2 NP完全问题

什么是NP完全问题

什么是NP完全问题

什么是NP完全问题在学习决策树的时候,我们知道,其⼀⼤特点是:寻找最佳的决策树是NP完成问题。

什么是NP完全问题,决策树的这⼀特点⼜是什么意思?什么是NP完全问题这⾥的NP其实是Non-deterministic Polynomial的缩写,即多项式复杂程度的⾮确定性问题,NP完全问题有时也会简称为NP-C问题。

与此概念相关的还有P类问题、NP类问题等。

要理解什么是NP完全问题,⾸先得从P类问题开始理解。

所有可以在多项式时间内求解的判定问题构成P类问题在设计程序时,我们经常需要评估这个程序的时间复杂度,即衡量当问题规模变⼤后,程序执⾏所需的时间增长会有多快。

如O(1)表⽰常数级别,即不管问题的规模变⼤多少倍,所耗的时间不会改变;O(N2)表⽰平⽅级别,即当问题规模增⼤⾄2倍时,所花费的时间则放⼤⾄4倍;O(2N)表⽰指数级别,即当问题规模倍数扩⼤时,所⽤时间会呈指数放⼤。

多项式时间则是指O(1)、O(logN)、O(N2)等这类可⽤多项式表⽰的时间复杂度,通常我们认为计算机可解决的问题只限于多项式时间内。

⽽O(2N)、O(N!)这类⾮多项式级别的问题,其复杂度往往已经到了计算机都接受不了的程度。

所有⾮确定性多项式时间内可解的判定问题构成NP类问题NP类问题将问题分为求解和验证两个阶段,问题的求解是⾮确定性的,⽆法在多项式时间内得到答案,⽽问题的验证却是确定的,能够在多项式时间⾥确定结果。

⽐如:是否存在⼀个公式可以计算下⼀个质数是多少?这个问题的答案⽬前是⽆法直接计算出来的,但是如果某⼈给出了⼀个公式,我们却可以在多项式时间⾥对这个公式进⾏验证。

NP中的⼀类⽐较特殊的问题,这类问题中每个问题的复杂度与整个类的复杂度有关联性,假如其中任意⼀个问题在多项式时间内可解的,则这⼀类问题都是多项式时间可解。

这些问题被称为NP完全问题。

可以说NP完全问题是NP类问题的⼀种特殊情况,总结这⼏类问题的特点,可参考如下这个表格:问题类型是否能在多项式时间内求解是否能在多项式时间内验证P是是NP是 or 否是NP-C未知是注:表格中的问题类型的困难程度依次递增由表可知,NP类问题是否能在多项式时间内求解,其答案并不明确,如果回答为「是」,岂不是跟P类问题⼀样了?值得⼀题的是,P=NP?是千禧七⼤难题的⾸个难题,是⼀个价值百万美元的问题,这个问题本质是求证:能⽤多项式时间验证解的问题是否内在多项式时间内找出解。

NP完全问题详解

NP完全问题详解
2、特性: P 类判定问题是由具有多项式时间的确定性算法来解的判定问题
精品课件
12.1.1 P类问题
例: 最短路径判定问题 SHORTEST PATH:
给定有向赋权图G (V , E )(权为正整数)、正整数k 、及两个顶 点s,t V ,是否存在着一条由s到t 、长度至多为k 的路径。 可排序的判定问题 SORT: 给定n个元素的数组,是否可以按非降顺序排序。
精品课件
12.1.2 NP类问题
一、非确定性算法 1、问题的非确定性算法的两个阶段:推测阶段和验证阶段。 2、推测阶段:对规模为n的输入实例 x,以多项式时间O(ni )产生输出 y, 而不管 y的正确性 3、验证阶段:以多项式时间O( n j )的确定性算法验证两件事情: 1)检查上一阶段的输出 y是否具有正确的形式。 如果 y不具正确的形式,算法就以答案no结束; 2)如果 y具有正确的形式,则继续检查 y是否是问题的输入实例 x的解。 如果它确实是问题实例 x的解,则以答案 yes结束,否则,以答案no结束。
精品课件
12.1.2 NP类问题
例 解货郎担判定问题 TRAVELING SALESMAN 的算法 A是 NP类判定问题: A可在推测阶段用多项式时间推测出一条回路,并假定它是问题的解; 在验证阶段用多项式时间的确定性算法, 检查所推测的回路是否恰好每个城市经过一次, 如果是,再进一步判断这条回路的长度是否小于或等于l , 如果是,答案为 yes,否则,答案为no。 存在多项式时间的确定性算法,对推测阶段所作出的推测进行检查和验证。 因此,货郎担判定问题是 NP类判定问题。
精品课件
12.1.2 NP类问题
3、P类问题和 NP类问题的差别: P类问题可以用多项式时间的确定性算法来进行判定或求解; NP 类问题可以用多项式时间的确定性算法来检查和验证它的解。 P,必然有 NP,所以,P NP。 猜测 NP P。该不等式是否成立、至今还没有得到证明。

np完全问题

np完全问题


P类和NP类问题
确定性算法 :算法执行的每一个步骤,都有确定的选择. 重新用同一输入实例运行该算法,所得到的结果严格一致. P类判定问题 类判定问题是由具有多项式时间的确定性算法来解的判定 问题
最短路径判定问题 SHORTEST PATH: 给定有向赋权图 G = ( V , E ) (权为正整数),正整数 k ,及两个顶点 s, t ∈V ,是否 存在着一条由 s 到 t ,长度至多为 k 的路径. 可排序的判定问题 SORT: 给定 n 个元素的数组,是否可以按非降顺序排序.
P类判定问题的补 改变判定问题的提法,"是否可以","是否存在"改为 "是否不可以","是否不存在"的判定问题
可排序判定问题的补 NOT_SORT: 给定 n 个元素的数组,是否不可以按非降顺序排序. 最短路径判定问题的补 NOT SHORTEST PATH: 给定有向赋权图 G = ( V , E ) (权为正整数),正整数 k ,及两个顶点 s, t ∈V ,是否不存 在一条由 s 到 t ,长度至多为 k 的路径.
NP类问题
非确定性算法 1,问题 ∏ 的非确定性算法的两个阶段:推测阶段和验证阶段. 2,推测阶段:对规模为 n 的输入实例 x ,以多项式时间 O ( n i ) 产生输出 y ,而不管 y 的 正确性 3,验证阶段:以多项式时间 O ( n j ) 的确定性算法验证两件事情: 1)检查上一阶段的输出 y 是否具有正确的形式. 如果 y 不具正确的形式,算法就以答案 no 结束; 2)如果 y 具有正确的形式,则继续检查 y 是否是问题的输入实例 x 的解. 如果它确实是问题实例 x 的解,则以答案 yes 结束,否则,以答案 no 结束.

NP完全问题

NP完全问题
NP完全问题
时间复杂度:时间复杂度并不是表示一个程
序解决问题需要花多少时间,而是当问题规模扩大 后,程序需要的时间长度增长得有多快。
• 也就是说,对于高速处理数据的计算机来说,处理某一个 特定数据的效率不能衡量一个程序的好坏,而应该看当这 个数据的规模变大到数百倍后,程序运行时间是否还是一 样,或者也跟着慢了数百倍,或者变慢了数万倍。 • 不管数据有多大,程序处理花的时间始终是那么多的,我 们就说这个程序很好,具有O(1)的时间复杂度,也称常数 级复杂度;数据规模变得有多大,花的时间也跟着变得有 多长,这个程序的时间复杂度就是O(n),比如找n个数中 的最大值;而像冒泡排序、插入排序等,数据扩大2倍, 时间变慢4倍的,属于O(n^2)的复杂度。还有一些穷举类 的算法,所需时间长度成几何阶数上涨,这就是O(a^n)的 指数级复杂度,甚至O(n!)的阶乘级复杂度。
如何证明一个问题是NP完全性问题
• 首先找出一个已知为NP完全性问题,通过 归约说明待证明的问题也是NP完全性问题, 其原因是如果可以再多项式时间解决这个 问题,就可以在多项式时间解决所有的已 知的全部NP完全问题。
例如:
• • • • 已知顶点覆盖问题为NP完全问题 顶点覆盖问题: 输入:图G和一个整数K。 输出:如果图G中不超过k个定点的一个子集s使得图G中 的每一条边至少有一个端点在S中,则输出YES,否则输 出NO。 证明团问题是NP完全问题 团问题: 输入:图G和一个整数K。 输出:如果图G中不少于k个定点的一个子集S是一个完全 图,则输出YES,否则输出NO。
• 非确定性是指在理论计算机科学中,针对 各种计算机器模型(自动机),在每一时 刻,根据当时的状态和输入,若机器有多 个动作可供选择时,则称机器为非确定性 的;相反,若机器的动作可唯一确定时。 • 且非确定性是相对于确定性来说,对于非 确定性的机器,在性能各方面要高于确定 性机器。

NP完全问题

NP完全问题
顶点度<=2时,Hamiltonian回路问题有多项 式算法
工程中有灵活性,以某种方式优化是NP-难 度问题;但以另一方式提出问题可能不是. 了解“难问题”的特点
13.3.3续
3-满足问题仍为NP-完全问题,但2-满足问 题有多项式算法 集团问题,当顶点度<=常数d时属于类P 平面图集团问题属于类P,因为平面图至 多有4-集团 实际有意义的做法是提出合理的限制条件 和求近似解, 研究启发式算法.
CNF-satisfiablity问题是NP-完全问题
定理13.5 CNF-satisfiablity问题是NP-完全 问题 这是著名的Cook定理 Cook 定理的推论:如果CNF-可满足问题有 多项式界的算法,则P=NP.
NP-完全问题证明
证明问题Q是NP-完全问题的步骤: (1)选择一已知的NP-完全问题P。
搜索算法有指数的复杂度:须试所有可能的 S的分划。
装箱问题:FFD算法(贪心法)
将物品按尺寸递减排序,箱子从左到右排列 并尽可能放在前面的箱子里。 算法的时间复杂度t(n)=θ(n2)
算法:装箱问题
输入: S=(s1,….,sn) ,0<si≤1 ,1≤i≤n. S 代表货物1,...,n 的尺寸,每个箱子的容量 都是1.0。 输出: bin[i]是放物品i的箱子号,1≤i≤n. 为 了使算法简单,在装箱前,货物已经按尺 寸从大到小排序。
问题4 背包问题
判定问题:是否存在效益值至少为k的可行 子集? 优化问题
问题5 子集和数问题s1,s2,┅,sn,C
判定问题:是否存在和数等于C的子集? 优化问题:求≤C的最大子集和数. 可归约为背包问题: pi=wi.
问题6 CNF(合取范式)-可满足问题

chapter-9np完全问题

chapter-9np完全问题

南京理工大学
9.1.2 易解问题与难解问题的主要区别
在学术界已达成这样的共识:把多项式时间复杂性作为 易解问题与难解问题的分界线,主要原因有:
1) 多项式函数与指数函数的增长率有本质差别
问题规模
多项式函数
n logn n nlogn n2
1
0
1
0.0
1
10
3.3 10 33.2
100
20
4.3 20 86.4
n1000 51000
109
101000
1010
102000
1011
103000
指数函数
1.1n
20.01n
1.611
1.035
2.594
1.072
13780.6 2
2.47×1041 1024
观察结论:n≤100时,(不自然的)多项式函数值大于指数 函数值,但n充分大时,指数函数仍然超过多项式函数。
9.1 引言
9.1.1 易解问题与难解问题 • 如果对一个问题∏存在一个算法,时间复杂性为
O(nk),其中n是问题规模,k是一个非负整数,则称 问题∏存在多项式时间算法。这类算法在可以接受的 时间内实现问题求解, e.g., 排序、串匹配、矩阵相 乘。 • 现实世界里还存在很多问题至今没有找到多项式时间 算法,计算时间是指数和超指数函数(如2n和n!), 随着问题规模的增长而快速增长。 • 通常将前者看作是易解问题,后者看作难解问题。
南京理工大学
9.2 P类问题和NP类问题
这个划分标准是基于对所谓判定问题的求解方式。 先看看什么是判定问题。事实上,实际应用中的大部分问
题问题可以很容易转化为相应的判定问题,如: • 排序问题 给定一个实数数组,是否可以按非降序排列? • 图着色问题:给定无向连通图G=(V,E),求最小色数k,使

第八章 NP完全问题

第八章 NP完全问题

第八章 NP-完全问题§1 关于问题及算法的描述为了应用算法复杂性理论,首先要对问题、问题的一般描述、计算模型、算法、算法的复杂性给出严格的定义。

但在给出精确定义之前,我们先回顾一下有关概念的粗略解释。

所谓一个问题(problem)是指一个有待回答、通常含有几个取值还未确定的自由变量的一个一般性提问(question)。

它由两部分构成:一是对其关于参数的一般性描述;二是对该问题的答案所应满足的某些特性的说明。

而一个问题的某个实例则可通过指定问题中所有参数的具体取值来得到。

以下用∏表示某个问题,用I 表示其实例。

旅行商问题的参数是由所需访问城市的一个有限集合},,,{11m C C C C =和C 中每对城市j i C C ,之间的距离),(j i C C d 所组成。

它的一个解是对所给城市的一个排序(1)(2)(),,,m C C C πππ使得该排序极小化下面表达式(目标函数)的值),(),()1()()1(11)(ππππC C d C C d m i m i i ++-=∑旅行商问题的一个实例是通过指定城市的数目,并指定每两个城市之间的具体距离而得到的。

例如:{}4321,,,C C C C C =,3),(,9),(,6),(,9),(,5),(,10),(434232413121======C C d C C d C C d C C d C C d C C d就是旅行商问题的一个实例,这个实例的一个最优解是排序1342,,,C C C C ,因为四个城市的这个排序所对应旅行路线是所有可能环游路线中长度最小的,其长度为27。

目前广泛采用的描述问题的方法主要有两种:一是将任一问题转化为所谓的可行性检验问题(feasibility problem);二是把问题转化为判定问题(decision problem)。

实际中几乎所有问题都可直接或间接地转述为判定问题。

判定问题是答案只有“是”与“非”两种可能的问题。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

NP类问题
NP类: 由具有多项式时间的非确定性算法求解的判 定问题形成的一个计算复杂类,记为NP类。
NP—难解的问题 NP—Nondeterministic Polynomial
NP类问题举例—货郎担问题
例:货郎担的判定问题:给定n个城市、正常数k及城 市之间的费用矩阵C,判定是否存在一条经过所有 城市一次且仅一次,最后返回初始出发城市且费用 小于常数k的回路。
NP完全问题
1 什么是好算法?
算法的种类和数量积累到一定程度时,需要对 算法进行比较和分类。 什么是好算法?Edmonds,1975年提出了一个被 沿用至今的标准。
Edmonds算法标准
Edmonds算法标准指出具有多项式时间的算法为好 算法。 多项式时间算法:如果П 是任意一个问题,对П 存 在着一个算法,它的时间复杂性为O(nk),其中n为输 入规模,k为非负整数,就认为存在着一个解问题П 的多项式时间算法。
算法A用非确定算法在多项式时间内推测一条回路 A用确定算法在多项式时间内判定回路是否是哈密 尔顿回路,是否费用和小于k,返回yes或no。

NP类问题举例—求真因子问题
例:有一个国王向邻国公主求婚。公主出了一道题: 求出48 770 428 433 377 171的一个真因子。若 国王能在一天之内求出答案,公主便接受他的求 婚。 国王,顺序除,一天未算出。 223 092 827 宰相,给全国百姓编号,用自己的编号去除公主 给的数,除尽的报数,领赏。
T(n) 10n 20n 5nlogn 2n2 2n n 1000 500 250 70 13 n′ 10000 5000 1842 223 16
10
变化 n′=10n n′=10n 10 n<n′<10n n n′=n+log10≈n+3
n′/n 10 10 7.37 3.16 ≈1
3) 多项式时间复杂性忽略了系数,不影响易解问题与难 解问题的划分
问题转换
优化问题可转换为相应的判定问题求解。
例:给定图G=(V,E),假设边的费用为自然数。给 定k=1,2,..,问是否有长度不超过k的哈密尔 顿回路。
P类问题
P类: 具有多项式时间算法的判定问题形成一个 计算复杂类,记为P类。
P类—易解的问题 P-Polynomial 思考:已学知识中哪些问题属P类问题?
Hale Waihona Puke NP类问题一般而言,验证解比求解易。 对具有指数时间的问题,有些可用不确定性算法求 解。该算法包含两个阶段:
推测阶段 对规模为n的输入实例x,产生一个输出y。

验证阶段 检验y是否满足解形式,是否是解。

NP类问题
推测阶段是具有多项式时间的非确定性(nondeterminism)算法,对输入实例x,下次产生的输出 可能不是y。 验证阶段是具有多项式时间的确定性算法。
多项式函数 问题规模 2 nlog logn n n n n
1
10 20 50
n3
1
1000 8000 125000
指数函数 2n n!
2
1024 1048376 1.0E15
0
3.3 4.3 5.6
1
10 20 50
0.0
33.2 86.4 282.2
1
100 400 2500
1
3628800 2.4E18 3.0E64

NP类问题举例—求真因子问题
国王: 顺序算法 宰相: 并行算法
3 NP类问题—难解的问题
具有指数时间算法的问题。
例:货郎担问题(TSP问题)。
n!排列方式。 n=6: 6! = 720 n=19: 19! ≈ 1.21*1017 每秒排一次,排3.84*109年 每秒排百万次,排3000年
有算法但实现性差。
TSP问题
1998年,解决了美国13509个城市之间的TSP问题 2001年,解决了德国15112个城市之间的TSP问题 解决15112个城市之间的TSP问题,共使用了美国 Rice大学和普林斯顿大学之间网络互连的,由速度为 500MHz 的Compaq EV6 Alpha 处理器组成的110 台计算机,所有计算机花费的时间之和为22.6年。
问题规模n
5 10 100 1000 多项式函数 n8 390625 108 1016 1024 108n 5×108 109 1010 1011 n1000 51000 101000 102000 103000 1.1n 1.611 2.594 13780.6 指数函数 20.01n 1.035 1.072 2
100
6.6
100
664.4
10000
1000000
1.3E30
9.3E157
2) 计算机性能的提高对易解问题与难解问题算法 的影响
假设求解同一个问题有5个算法A1~A5,时间复杂 度T(n)如下表,假定计算机C2的速度是计算机C1 的10倍。下表给出了在相同时间内不同算法能处理 的问题规模情况:
2 P类问题—易解的问题
是否每个问题都有多项式时间算法?
在考虑问题的计算复杂性时,常把它化为相应的判定 问题考虑。 首先看问题分类及其转换。
问题分类

一类是判定问题
解只有两种,yes或no。 例:给定图G=(V,E), 问该图是否有哈密尔顿圈。

一类是优化问题 例:给定图G=(V,E),假设边的费用为自然数。求该 图的最短哈密尔顿回路。
2.47×1041 1024
观察结论:n≤100时,(不自然的)多项式函数值大于指数 函数值,但n充分大时,指数函数仍然超过多项式函数。
以多项式作为分界函数?
二、多项式时间算法与计算模型无关 算法的研究依赖于计算模型。在不同类型计算模型 上实现算法,计算时间不同。
广义Church—Turing命题:不同计算模型上的计算 时间有多项式关系。 多项式与多项式的复合函数是多项式,因此,多项 式时间算法与计算模型无关。
以多项式作为分界函数?
原因有两个: 一、常见算法大致分为两类: 一类是多项式时间内可实现的 另一类需要指数时间(O(cn))
多项式时间算法的可实现性远大于指数时间算法。 (参见 下表 )
易解问题与难解问题的主要区别
在学术界已达成这样的共识:把多项式时间复杂性作 为易解问题与难解问题的分界线,主要原因有: 1) 多项式函数与指数函数的增长率有本质差别
相关文档
最新文档