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)。

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

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

算法分析与设计课件NP完全问题

算法分析与设计课件NP完全问题

17
近似算法的性能
若一个最优化问题的最优值为c*,求解该问题的一个 近似算法求得的近似最优解相应的目标函数值为c,则将 c * c max , 该近似算法的性能比定义为= c 。在通常情况 c* 下,该性能比是问题输入规模n的一个函数ρ(n),即 c * c max , ≤ρ(n)。 c c* 该近似算法的相对误差定义为= c * 。若对问题 cc* 的输入规模n,有一函数ε(n)使得 c * ≤ε(n),则称 ε(n)为该近似算法的相对误差界。近似算法的性能比 ρ(n)与相对误差界ε(n)之间显然有如下关系: ε(n)≤ρ(n)-1。
4
这种问题的答案,是无法直接计算得到的,只能通过间 接的“猜算”来得到结果。这也就是非确定性问题。而这些 问题的通常有个算法,它不能直接告诉你答案是什么,但可 以告诉你,某个可能的结果是正确的答案还是错误的。这个 可以告诉你“猜算”的答案正确与否的算法,假如可以在多 项式时间内算出来,就叫做多项式非确定性问题。而如果这 个问题的所有可能答案,都是可以在多项式时间内进行正确 与否的验算的话,就叫完全多项式非确定问题。
2
10
接受该语言CLIQUE的非确定性算法:用非确定性选择指令选 出包含k个顶点的候选顶点子集V,然后确定性地检查该子集是否 是团问题的一个解。算法分为3个阶段: 算法的第一阶段将输入串w#v分解,并计算出n= | w | ,以及 用v表示的整数k。若输入不具有形式w#v或|w|不是一个平方数就 2 拒绝该输入。显而易见,第一阶段可 O ( n ) 在时间内完成。 算法的第三阶段是确定性地检查V’的团性质。若V’是一个团 则接受输入,否则拒绝输入。这显然可以在 O ( n 4 ) 时间内完成。 4 因此,整个算法的时间复杂性为O ( n ) 。

NP完全问题详解(共53张PPT)

NP完全问题详解(共53张PPT)

几个典型的NP完全问题
可满足性问题(SATISFIABILITY) 三元可满足性问题(3_SATISFIABILITY) 图的着色问题(COLORING) 集团问题(CLIQUE)
顶点覆盖问题(VERTEX COVER)
可满足性问题(SATISFIABILITY)
一、可满足性问题 1、合取范式:由若干个析取子句的合取构成的布尔表达式 f 。 例: f ( x2 x3 x5 ) ( x1 x3 x4 x5 ) (x2 x3 x4 ) 2、合取范式的可满足性: 对合取范式 f 的相应布尔变量赋值,使 f 的真值为真,就说布尔表达式 f 是可满足的。 例:上式中,只要使 x1、x4和 x5为真,则表达式 f 为真。因此,这个式子是可满足的。 3、可满足性问题: 判定问题:SATISFIABILITY 输入:CNF 布尔表达式 f 问题:对布尔表达式 f 中的布尔变量赋值,是否可使 f 的真值为真
类问题
例 解货郎担判定问题 TRAVELING SALESMAN 的算法 A是 NP类判定问题: A可在推测阶段用多项式时间推测出一条回路,并假定它是问题的解; 在验证阶段用多项式时间的确定性算法, 检查所推测的回路是否恰好每个城市经过一次, 如果是,再进一步判断这条回路的长度是否小于或等于l , 如果是,答案为 yes,否则,答案为no。 存在多项式时间的确定性算法,对推测阶段所作出的推测进行检查和验证。 因此,货郎担判定问题是 NP类判定问题。
否不存在”的判定问题。 例:可排序判定问题的补 NOT_SORT: 给定 n 个元素的数组,是否不可以按非降顺序排序。 最短路径判定问题的补 NOT SHORTEST PATH: 给定有向赋权图G (V , E )(权为正整数)、正整数k 、及两个顶点s,t V , 是否不存在一条由s到t 、长度至多为k 的路径。 2、封闭的定义 定义 12.3 令C 是一类问题,如果对C 中的任何问题C,的补也在C 中,则

NP完全问题

NP完全问题

模拟退火算法(Simulated Annealing)来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却,加 温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最 后在常温时达到基态,内能减为最小。根据Metropolis准则,粒子在温度T时趋于平衡的概率为e-ΔE/(kT), 其中E为温度T时的内能,ΔE为其改变量,k为Boltzmann常数。用固体退火模拟组合优化问题,将内能E模拟为目 标函数值f,温度T演化成控制参数t,即得到解组合优化问题的模拟退火算法:由初始解i和控制参数初值t开始, 对当前解重复“产生新解→计算目标函数差→接受或舍弃”的迭代,并逐步衰减t值,算法终止时的当前解即为所 得近似最优解。
遗传算法是仿真生物遗传学和自然选择机理,通过人工方式所构造的一类搜索算法,从某种程度上说遗传算 法是对生物进化过程进行的数学方式仿真。生物种群的生存过程普遍遵循达尔文进化准则,群体中的个体根据对 环境的适应能力而被大自然所选择或淘汰。进化过程的结果反映在个体的结构上,其染色体包含若干基因,相应 的表现型和基因型的体现了个体的外部特性与内部机理间逻辑关系。通过个体之间的交叉、变异来适应大自然环 境。生物染色体用数学方式或计算机方式来体现就是一串数码,仍叫染色体,有时也叫个体;适应能力是对应着 一个染色体的一个数值来衡量;染色体的选择或淘汰则按所面对的问题是求最大还是最小来进行。
如果这还不算太糟的话,1993年Razborov和Rudich证明的一个结果表明,给定一个特定的可信的假设,在 某种意义下“自然”的证明不能解决P = NP问题。这表明一些现在似乎最有希望的方法不太可能成功。随着更多 这类的定理得到证明,该定理的可能证明有越来越多的陷阱要规避。这实际上也是为什么NP完全问题有用的原因: 若有一个多项式时间算法,或者没有一个这样的算法,对于NP完全问题存在,这将用一种相信不被上述结果排除 在外的方法来解决P = NP问题。P=NP问题可以用逻辑命题的特定类的可表达性的术语来重新表述。所有P中的语 言可以用一阶逻辑加上最小不动点操作(实际上,这允许了递归函数的定义)来表达。类似地,NP是可以用存在 性二阶逻辑来表达—也就是,在关系、函数、和子集上排除了全域量词的二阶逻辑。多项式等级,PH中的语言对 应与所有的二阶逻辑。这样,“P是NP的真子集吗”这样的问题可以表述为“是否存在性二阶逻辑能够表达带最 小不动点操作的一阶逻辑的所不能表达的语言?”

第九讲 NP完全问题

第九讲 NP完全问题
例:求解为图G=(V,E)着色,使相邻两个顶 求解为图G=(V,E)着色, G=(V,E)着色 点不会有相同颜色时所需最少颜色数。 点不会有相同颜色时所需最少颜色数。
令图G的顶点个数为n 彩色数是num 令图G的顶点个数为n,彩色数是num,假定存在 num, 一个图着色判定问题的多项式时间算法 BOOL coloring(GRAPH G,int n,int num) 则可用下面的方法,利用算法coloring coloring来解图着 则可用下面的方法,利用算法coloring来解图着 色的优化问题。 色的优化问题。
NP类判定问题 NP类判定问题
定义: 如果对某个判定问题∏ 定义: 如果对某个判定问题∏,存在着一 个能够以多项式的时间运行一个非确定 性的算法,得到yes no的答案 yes或 的答案, 性的算法,得到yes或no的答案,则该判 定问题∏是一个NP类判定问题。 NP类判定问题 定问题∏是一个NP类判定问题。 特性:存在确定性的算法, 特性:存在确定性的算法,能够以多项 式时间, 式时间,来检查和验证在推测阶段产生 的答案。 的答案。
数学上著名的NP问题,完整的叫法是NP完 数学上著名的NP问题,完整的叫法是NP完 问题 全问题, NP=P?的问题。 全问题,简单的写法是 NP=P?的问题。 P代表Polynomial。 代表Polynomial。 NP里面的N,不是Non-Polynomial的N,是 NP里面的 里面的N 不是Non-Polynomial的 NonNon-Deterministic NP就是Non-deterministic Polynomial-time NP就是 就是NonPolynomial的问题,也即是非确定的多项式时间。 的问题,也即是非确定的多项式时间。
P类问题的归约性 定理: ∏和 是两个判定问题,如果∏∈ ∏∈P 定理: ∏和∏’是两个判定问题,如果∏∈P,并 且∏’ ∝p ∏ ,则∏’∈P 。

NP问题NP完全问题(NP-completeproblem)如何判断是否是NP完全问题

NP问题NP完全问题(NP-completeproblem)如何判断是否是NP完全问题

NP问题NP完全问题(NP-completeproblem)如何判断是否是NP完全问题在算法复杂度分析的过程中,⼈们常常⽤特定的函数来描述⽬标算法,随着变量n的增长,时间或者空间消耗的增长曲线,近⽽进⼀步分析算法的可⾏性(有效性)。

引⼊了Big-O,Big-Ω,来描述⽬标算法的上限、下限复杂度函数。

⽤Big-Θ描述和⽬标函数同序的复杂度函数,即由Big-Θ既是上限也是下限。

常常⽤到如下时间复杂度函数标度1, log n, n, n log n, n^2, 2^n, n!通常将具有n^x,x为正整数形式的时间复杂度函数称为多项式复杂度。

通常认为具有多项式时间复杂度的算法是容易求解的。

超过多项式时间复杂度,算法增长迅速,不易求解。

下图将展⽰NP和NP完全问题在所有问题中的位置。

通常问题分为可解决(Solvable)和不可解决(Unsolvable)。

可解决问题⼜可以分为易解决(Tractable)、不易解决(Intractable)和不确定是否容易解决(NP)可解决(Solvable)是指存在算法能够解决的问题不可解决(Unsolvable)是指不存在解决该问题的算法,如The Halting Problem。

易解决(Tractable),即P问题,是指具有最坏时间复杂度为多项式时间的算法能够解决的问题不易解决(Intractable)是指不存在最坏时间复杂度为多项式时间的算法能够解决的问题不确定是否容易解决(NP),还未被证明是否存在多项式算法能够解决这些问题,⽽其中NP完全问题⼜是最有可能不是P问题的问题类型。

判断是否是NP完全问题1.元素较少时算法的运⾏速度⾮常快,但随着元素数量的增加,速度会变的⾮常慢。

2.涉及所有组合问题通常是NP完全问题3.不能将问题分成⼩问题,必须考虑各种情况,这可能是NP问题4.如果问题涉及序列(如旅⾏商问题中的城市序列)且难以解决,它可能是NP问题5.如果问题涉及集合(如⼴播电台集合)且难以解决,它可能是NP完全问题6.如果问题可转化为集合覆盖问题或商旅问题,那它肯定是NP问题。

第九讲NP完全问题PPT教学课件

第九讲NP完全问题PPT教学课件

2020/12/11
14
非确定性算法的运行时间,是推测阶段 和验证阶段运行时间的和。
– 若推测阶段的运行时间为O(ni) – 验证阶段的运行时间为O(nj) – 则对某个非负整数k,非确定性算法的运行
时间为: O(ni) + O(nj) = O(nk) 。
2020/12/11
15
NP类判定问题
12
非确定性算法
问题∏的非确定性算法的两个阶段:推测阶 段和验证阶段。
– 推测阶段:对规模为n的输入实例x,以多项式时 间O(ni)产生输出y,而不管y的正确性
– 验证阶段:以多项式时间O(nj)的确定性算法验 证两件事情:
检查上一阶段的输出y是否具有正确的形式。
如果y不具正确的形式,算法就以答案no结束;
如果是,答案为yes,否则,答案为no。
存在多项式时间的确定性算法,对前面的推测进 行检查和验证。
因此,m团问题是NP类判定问题。
2020/12/11
28
难解问题的计算相关性
计算相关:某类问题可以归约为另一类问 题
计算相关的问题
– 若它们之一可用多项式时间求解,则其它同 类问题也可用多项式时间求解;
– 给定有向赋权图G=(V,E)(权为正整数)、正整数k、 及两个顶点s,t∈V,是否存在着一条由s到t、长度至多 为k的路径。
可排序的判定问题SORT:
– 给定个元素的数组,是否可以按非降顺序排序。
2020/12/11
11
归约
归约的定义:
– 令∏和∏’是两个判定问题
– 如果存在一个具有如下性能的确定性算法A
– 给定集合、由的子集构成的集类A、以及1和 |A|之间的整数k,在A中是否存在k个元素,它 们的并为S。

第08章 NP完全问题

第08章 NP完全问题

问题列表 哈密尔顿回路 旅行商问题 背包问题 划分问题 装箱问题 图的着色问题 整数线性划分问题



判定问题:可以回答是与否的问题。 不可判定问题:不能用任何算法求解的 判定问题,如停机问题。 目前,对于左侧问题没有找到多项式时 间的算法,也无法证明此类算法不存在。 共同点:
◦ 存在指数增长的候选项,且为输入规模的函 数 ◦ 在计算求解上比较困难,但是对于待定解的 验证比较简单(多项式时间)
11
2015-1-5

不确定算法:是一个两阶段的过程,它把一个判 定问题的实例l作为他的输入,并进行以下操作:
◦ 非确定(猜测)阶段:生成一个任意串S,把它当作给 定实例l的一个候选解 ◦ 确定(验证)阶段:确定算法把l和S都作为它的输入, 如果S的确是l的一个解的话,就输出“是”


当且仅当对于问题的每一个真实例,不确定算法 都会在某次执行中返回“是”的时候,则它可以 求解这个判定问题 如果不确定算法在验证阶段的时间效率是多项式 级的,则称它为不确定多项式类型的。
5
2015-1-5

线性规划:存在多项式时间算法 整数线性规划:保持线性目标函数和约束条件不变 的情况下,求解的数值都必须是整数。

A hypergraph G is a pair (V,E), where V is a set E is a subset of P(V)\{} . The elements in V are called vertices. The elements in E are called hyperedges or links.
说明:TSP的优化问题和搜索问题时归约关系
给定一个图,寻找一条恰 好包含每条边一次的路径 复杂度:多项式时间

NP完全问题

NP完全问题

NP完全问题概述NP完全问题是不确定性图灵机在P时间内能解决的问题,是世界七大数学难题之一。

NP完全问题排在百万美元大奖的首位,足见他的显赫地位和无穷魅力。

数学上著名的NP问题,完整的叫法是NP完全问题,也即“NP COMPLETE”问题,简单的写法,是NP=P?的问题。

问题就在这个问号上,到底是NP等于P,还是NP不等于P。

证明其中之一,便可以拿百万美元大奖。

这个奖还没有人拿到,也就是说,NP问题到底是Polynomial(意思是多项式的),还是Non-Polynomial,尚无定论。

NP里面的N,不是Non-Polynomial的N,是Non-Deterministic(意思是非确定性的),P代表Polynomial倒是对的。

NP就是Non-deterministic Polynomial的问题,也即是多项式复杂程度的非确定性问题。

非确定性问题详解什么是非确定性问题呢?有些计算问题是确定性的,比如加减乘除之类,你只要按照公式推导,按部就班一步步来,就可以得到结果。

但是,有些问题是无法按部就班直接地计算出来。

比如,找大质数的问题。

有没有一个公式,你一套公式,就可以一步步推算出来,下一个质数应该是多少呢?这样的公式是没有的。

再比如,大的合数分解质因数的问题,有没有一个公式,把合数代进去,就直接可以算出,它的因子各自是多少?也没有这样的公式。

这种问题的答案,是无法直接计算得到的,只能通过间接的“猜算”来得到结果。

这也就是非确定性问题。

而这些问题的通常有个算法,它不能直接告诉你答案是什么,但可以告诉你,某个可能的结果是正确的答案还是错误的。

这个可以告诉你“猜算”的答案正确与否的算法,假如可以在多项式时间内算出来,就叫做多项式非确定性问题。

而如果这个问题的所有可能答案,都是可以在多项式时间内进行正确与否的验算的话,就叫完全多项式非确定问题。

完全多项式非确定性问题可以用穷举法得到答案,一个个检验下去,最终便能得到结果。

  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) 多项式函数与指数函数的增长率有本质差别
相关文档
最新文档