算法设计与分析_王红梅_第2章NP完全理论

合集下载

算法设计与分析PPT课件

算法设计与分析PPT课件
5
D. E. Knuth
The Art of Computer Programming, Vol.
1 and 3, Third Edition, Addison Wesley, 1997.
6
第1章 算法引论
1.1 算法与程序
一. 算法在计算机科学中的重要地位 程序=算法+数据结构
7
二. 算法的基本概念
2.1 递归的概念
直接或间接地调用自身的较小模式的算法称为 递归算法。
用函数自身的较小模式给出其定义的函数称为 递归函数。
由分治法产生的子问题往往是原问题的较小模 式,子问题的复杂度也原问题复杂度的较小模 式,这就为使用递归技术进行算法分析提供了 方便。
分治与递归像一对孪生兄弟,经常同时应用在 算法设计之中,并由此产生许多高效算法。
int型骨牌号tile初值为1int特殊方格在此棋盘中chessboardtrtcdrdc型骨牌覆盖右下角boardtr覆盖本子棋盘中的其余方格chessboardtrtctrs1tcs1特殊方格在此棋盘中chessboardtrtcsdrdc型骨牌覆盖左下角boardtr覆盖本子棋盘中的其余方格chessboardtrtcstrs1tcs特殊方格在此棋盘中chessboardtrstcdrdc型骨牌覆盖右上角boardtr覆盖本子棋盘中的其余方格chessboardtrstctrstcs1特殊方格在此棋盘中chessboardtrstcsdrdc型骨牌覆盖左上角boardtr覆盖本子棋盘中的其余方格chessboardtrstcstrstcs682727合并排序合并排序基本思想
P n ( x ) ( ( ( a n x ( a n 1 ) ( a n 2 ) x a n 3 ) ) x a 1 ) x a 0

清华大学算法分析与设计课件第10讲_NP完全性理论

清华大学算法分析与设计课件第10讲_NP完全性理论

Lecture 10. NP完全性理论清华大学软件学院清华大学 1内容提要•计算模型与计算复杂度关系•问题分类:【P】与【NP】类•NP-难【hard】问题,NP完全集•第一个NPC问题和NPC问题集•如何证明一个问题是NPC问题涉及到的算法理论基础•原则上是否存在一般数学问题的解题步骤的判决问题【希尔波特第十问题】•图灵机的停机问题:是否存在一个图灵机,他可以回答其它图灵机是否停机【既算法是有界的】•图灵公理:凡是可计算的函数都可以用一台图灵机来计算•P-NP-NPC问题定义及其猜想:NPC是一类不可以在多项式时间内计算的问题。

清华大学 3明代数学家程大位著《算法统宗》中关于珠算的插图机械式手动计算机清华大学 5机械计算机•法国数学家、哲学家帕斯卡在1642年发明了一种机械计算机,并与1649年取得专利。

帕斯卡的计算机采用一种齿轮系统,其中一小轮转十个数字,下一个小轮便转动一个数字,通过齿轮系的联动,可以进行加法和减法的运算.图灵•大半个世纪以来,数学家、计算机科学家提出了各种各样的计算模型都被证明是同图灵机器等价的。

这一理论已被当成公理,它不仅是计算机科学的基础,也是数学的基础之一。

为纪念英国数学家Turing(1912-1954) 而设立的图灵奖成为计算机界的诺贝尔奖.清华大学7图灵机模型图灵机定义•一个图灵机是一个7元组(Q,∑,Γ,δ,q0,q1,q2), 其中Q,∑,Γ都是有穷集合,并且•1) •2) •3) 集. •4) •5) •6) •7) Q 是状态集.∑是输入字母表,不包括特殊空白符号︺. Γ是带字母表,其中: ︺∈Γ,∑是Γ的子δ: Q×Γ→Q×Γ×{L,R}是转移函数. q0∈Q是起始状态.q1∈Q是接受状态.q2∈Q是拒绝状态,且q2≠q1图灵机模型•图灵机模型用一个无限长的带子作为无限存储, 它还有一个读写头,这个读写头能在带子上读, 写和移动: 开始时,带子上只有输入串,其它地方都是空的.当它需要保存信息时,读写头就把信息写在带子上.为了读某个输入或写下的信息,带子可能将读写头往回移动到这个信息所在的地方.这样读,写和移动,机器不停的计算, 直到产生输出为止.机器实现设置了两种状态: 接受或拒绝清华大学9多带图灵机,•和普通图灵机相似,只是有多个带子,每个带子都有自己的读写头,用于读和写.如图清华大学11非确定性的图灵机•非常容易理解,在计算的任何时刻,机器可以在多种可能性中选择一种继续进行.它的计算是一课树,不同的分枝对应着机器不同的可能性.如果某个计算分枝导致接受状态,则接受该输入.与多带图灵机相同的是,它的计算能力与普通图灵机也是一样的.当然他的计算能力就不一样了。

算法与计算复杂性课程(10)NP完全理论应用

算法与计算复杂性课程(10)NP完全理论应用

NP完全性理论的应用用NP完全性理论进行子问题分析子问题的定义子问题的计算复杂性子问题的NP完全性证明NP难度搜索问题Turing归约NP-hard, NP-easy1子问题的定义及其实例定义设判定问题π=(Dπ,Yπ), 若Dπ’⊆Dπ, Yπ’⊆Yπ∩Dπ’,则称π’=(Dπ’,Yπ’) 是π的子问题.子问题的问题与原问题一样,定义域缩小.通过对实例的参数加以限制得到子问题.子问题实例限制子句中文字的个数得到SAT的子问题3SAT,2SAT 限制顶点度数、平面图、二部图、无圈图等得到图论问题的子问题限制常数K 的大小,如K=2, K=3 等得到子问题23努力扩大已知区域,缩小未知区域当P ≠NP 时,存在不属于NPC 也不属于P 的问题子问题的计算复杂性有先行约束的多处理机调度问题优化问题:给定任务集T, m 台机器,∀t∈T, l(t)∈Z+, T上的偏序≺.若σ:T→{ 0, 1, …, D }满足下述条件,则称T 为可行调度.∀t∈T, σ(t)+l(t)≤D∀i, 0 ≤i≤D, | { t∈T: σ(t) ≤i < σ(t)+l(t) }| ≤m∀t, t’∈T, t ≺t’⇔σ(t)+l(t) ≤σ(t’)求使得D 最小的可行调度.条件说明:任务在截止时间前完成同时工作的台数不超过m有偏序约束的任务必须按照约束先行4任务集如图所示,m=2,求使得D 最小的可行调度.实例5调度问题的子问题结构从上到下:偏序任意、树形偏序、无偏序约束从左到右:处理器台数限制逐步放大从前到后:各任务等长工作时间、任意工作时间78m =1, l 任意, 偏序任意(绿色面积)算法:1. 计算所有任务的工作时间之和Time2. if Time ≤D ,存在可行调度.3. 按照偏序从高层依次取任务,进行安排即可.m 任意, l 为常数, 偏序为空(浅兰色箭头)算法:1. Time ←⎡|T |/m ⎤l2.if Time ≤D ,存在可行调度.3. 将任务按顺序依次分配到m 台机器上.某些子问题属于P的说明9m 任意,l 为常数,偏序为树(深兰色箭头)关键路径算法:1.按照偏序关系,从树叶依次拿任务,每次至多下移m 个结点.2.将分配次数与D 比较,如果不超过D , 回答Yes. 分配次数至少为树高,可以证明时间为多项式时间.m =2, 偏序任意, l 为常数(紫色箭头)算法:H.N.Gabow,An almost linear algorithm for two processors scheduling, J.Assoc.Comput.Math,29, 1982, 766-780.某些子问题属于P的说明(续)10极大多项式可解的子问题π:(绿色)π是多项式时间可解的,并且不存在其他多项式可解的子问题π’,使得π是π’的子问题.极小NP 完全的子问题π(红色)π是NP 完全的,并且不存在其他NP 完全的子问题π’使得π’是π的子问题.极小未解决的子问题π:(黄色)π的子问题都属于P, 但不知π是否属于P ,也不知P 是否属于NPC.极大未解决的子问题π: (棕色)π的父问题都是NP 完全的,但不知π是否属于P ,也不知P 是否属于NPC.术语简介12对于由于顶点度数D 限制得到子问题的NPC 证明,通常采用局部替换法,设计新的保持性质不变,又能降低顶点度数的顶点替换.例2 顶点3 着色问题原问题:任意无向图的顶点3 着色问题子问题:最大度数D 不超过4 的顶点3 着色问题基本单元:度数k 大于等于5 的顶点替换成:子结构H k (内部顶点度数不超过4 的连续k −2个三角形)局部替换法的实例13对于G 中的k 度顶点,k ≥5, 替换成k -2个连续的三角形H k ,H k 具有k 个外顶点(和外部顶点邻接)H k 的顶点度数不超过4H k 的出口(外顶点)度数为2H k 可着3色,且每个外顶点着同色H k 的结构14下图的v 1 和v 2 是5度顶点,被H 5替换得到新的图,其中灰色区域表示替换后的两个H 5.替换实例NP难度搜索问题定义判定问题与搜索问题的关系搜索问题的形式定义Turing归约定义性质NP难,NP易与NP等价Turing归约的应用15搜索问题定义:一个搜索问题π有实例集Dπ, 对于π中的任何实例I,有一个有穷的解集合Sπ[I].如果存在算法A,对于任何实例I∈Dπ, A 都停机,并且如果Sπ[I]=∅,则回答无解,否则给出Sπ[I]中的一个解,那么称A解搜索问题π.例如,巡回售货员的优化问题,STS[I]就是实例I 中所有最短巡回路线的集合. Hamilton 回路的构造性问题,当G 中不存在Hamilton回路时回答无解,否则给出一条Hamilton回路.SHC [I]中是所有的HC的集合.搜索问题的定义及实例16判定问题与搜索问题之间的关系判定问题是搜索问题的特例.对于判定问题π,若I 属于Yπ, 则Sπ[I]={ Yes },若I 属于Dπ-Yπ, 则Sπ[I]={ No }.17搜索问题的形式说法设Σ是有穷字符表,R ⊆Σ+×Σ+ 称为Σ上的符号串关系,Σ+=Σ*−{ε},长度至少为1 的有穷串的集合.搜索问题π,I 为π的任意实例,I 在合理编码系统e 下的编码为x, 其编码系统的字符集为Σ. 令R[π,e]={ (x,y): x∈Σ+是实例I∈Dπ在e下的编码,y∈Σ+是解s∈Sπ[I]在e下的编码}则R 中的有序对由有解的实例的编码及其对应的一个解的编码构成18搜索问题的形式说法(续)定义函数f : Σ+→Σ*, x∈Σ+, 如果存在y∈Σ+使得(x,y)∈R, 则令f(x)=y, 否则f(x)=ε,那么称函数f 实现符号串关系R.实现符号串如果存在DTM 程序M计算的函数fM关系R,则称M解符号串关系R.如果存在多项式时间的DTM 程序M解R[π,e],则称搜索问题π在编码系统e下是多项式可解的.1920设π1, π2是搜索问题,A 是利用解π2的假想子程序s 解π1的算法,且只要s 是多项式时间的,A 也是多项式时间的,则称算法A 是从π1到π2 的多项式时间的Turing 归约. 这是也称π1 Turing 归约到π2,记作π1∝T π2.Turing归约Turing Reduction 非形式定义Turing归约(续)形式定义:带外部信息源的Turing 机OTM (Oracle Turing Machine)21OTM有穷带字符集Γ输入字符集Σ⊂Γ,空白字符b∈Γ−Σ., q h, q c, q r分别表示初始状有穷状态集Q, 其中含有q态、停机状态、访问外部信息源状态和恢复计算状态., q c})×Γ×(Σ∪{ b})转移函数δ:( Q−{ qh→Q×Γ×(Σ∪{b})×{-1,1}×{-1,1}×{-1,1}基本只写基本只写只读22输入x∈Σ+初始:x 写在基本带上方格1 到|x|,其余方格为b. Oracle的输入带(只写带)为b.每个带的带头置方格1.初始状态为q0.OTM的计算23OTM的计算(续)计算:,则计算结束,基本带方格1 到最右边非空若q=qh白方格的符号串是输出串.若q∈Q−{q, q c}, s1, s2分别为基本带和只读带扫描的h字符,且δ(q,s1,s2) = (q’,s1’,s2’, Δ1, Δ2, Δ3)那么状态变成q’,基本带字符改写为s’, 只写带字符改1’, 基本带、只写带、只读带带头分别移动Δ1,写为s2Δ2, Δ3.2425若q = q c ,y 为Oracle 输入带的字符串,z = g (y )为外部信息源函数,在一步之内将外部信息源Oracle 的输出带(只读)的1到|z | 方格写上z ,其余为b ;将输入带清为空白;将只读头,只写头置1;q c 变成q r . 基本带的内容、读写头不变.OTM的计算(续)26相对化的OTM 程序:设Mg 是M 与外部信息源g 相结合的相对化OTM 程序. 其带字符表为Γ,输入字符表为Σ.多项式时间的OTM 程序:如果存在多项式P 使得对于一切x ∈Σ+,Mg 在P (|x |) 步内停机,则称Mg 是多项式时间的OTM 程序.OTM 程序计算函数f :设Mg 对一切x ∈Σ+停机, 且停机时方格1到最右边非空白方格的字符串是f Mg (x ),那么它计算函数f Mg : Σ+→Σ*相对化的OTM程序27多项式时间的Turing归约:设R 1,R 2是Σ上的两个符号串关系,M 是输入字符集为Σ的OTM 程序,如果对于每个实现R 2 的函数g :Σ+→Σ*,相对化的OTM 程序Mg 都是多项式时间的OTM 程序,且Mg 计算的函数实现R 1,那么称M 是从R 1到R 2的多项式时间的Turing 归约,记作R 1∝T R 2Turing归约的形式定义29传递性π1∝T π2,π2∝T π3⇒π1∝T π3多项式变换是Turing 归约的特例.设π1多项式变换到π2, 如下设计解π1 的算法A :1. 对于π1的任何实例I ,先将I 变换成π2实例I ’,2. 利用解π2 的假想子程序s 对I ’识别.3. 如果I ’是肯定实例,则I 也是肯定实例;4. 如果I ’是否定实例,则I 也是否定实例.易见只要s 是多项式时间的,则A 也是多项式时间的. 因此π1∝T π2.Turing归约的性质NP难度定义设π是搜索问题,如果存在NP 完全问题π’使得π’π,则称π是NP-hard. 这意味着在多项式可计算的∝T角度看,π至少像NPC 问题一样难.π’, 设π是搜索问题,如果存在NP 问题π’使得π∝T则称π是NP-easy.设π是搜索问题,如果π是NP-hard, 同时也是NP-easy, 则称π是NP等价的.NP-easy ≼NP等价(包含NPC问题) ≼NP-hard30相关结果所有的NPC 问题都是NP-hard.因为多项式变换是Turing归约的特例.若π∈NPC, 则π多项式可解⇔P = NP若π是NP-hard, 则π多项式可解⇒P = NP若π是NP-easy, 则π多项式可解⇐P = NP若π是NP等价, 则π多项式可解⇔P = NP31相关结果(续)设π是判定问题,π为NPC ⇏πc为NPCπ为NP-hard ⇒πc为NP-hard证明:设π为NP-hard,任取实例I∈Dπ, I 也是πc的实例,且I∈Yπ⇔I∈Dπc−Yπc设s 是解πc的算法,如下得到解π的算法:先调用s对于实例I求解. 如果回答”Yes”, 则回答”No”,否则回答”Yes”. 从而证明了πTuring归约到πc. 据Turing归约的性质,πc 为NP-hard.32Turing归约的应用1.证明许多NPC 问题所对应的优化或构造问题为NP-hard.2.证明某些非NP 类的判定问题是NP-hard说明:1. 将解对应优化问题或构造问题的算法作为解判定问题算法的子程序,得到解判定问题的算法,从而构造了从判定问题到对应优化问题或构造问题的Turing归约.33实例—证明NP等价例1巡回售货员问题(TSO)是NP等价的.证:易证TSO是NP-hard. 下面证明TSO 是NP-easy.引入中间问题:巡回售货员的延伸问题(TSE)TSE实例:有穷城市的集合C= { c, c2, …, c m}1, c j∈C, d(c i, c j)∈Z+,距离∀ci长度限制B∈Z+,, …,cπ(k) >部分旅行路线ϑ= < cπ(1)问:ϑ是否可以延伸成全长不超过B的全程旅行< cπ(1), …, cπ(k), cπ(k+1), …, cπ(m)>?易证TSE属于NP.3435设s (C ,d ,ϑ,B )是解TSE 的子程序,其中C 为城市集,d 为距离函数,ϑ为部分旅行,B 为长度限制.下面构造解TSO 的算法.思路:用二分法确定最短路旅行长度B *旅行长度界于m →m ×d , d = max{ d (c i , c j )}每次取中点值验证是否存在能延伸到此长度的旅行根据最小长度值B *确定旅行路线从c 1开始,依次检查<c 1,c 2>,<c 1,c 3>…是否能延伸到B *长度的旅行,选择第一个可延伸的顶点c i . 按照上面方法确定后面的其他顶点.TSO 到TSE 的Turing归约40例2 第k 个最大子集实例:有穷集A , ∀a ∈A , S (a )∈Z +, 正整数B ≤S (A ),K ≤2|A |, 其中问:是否至少存在K 个不同的子集A ’,满足S (A ’)≤B ?这个问题不是NP 问题. 要猜想A 的K 个子集,K 不是|A | 的多项式, 输入规模为|A | ⎡log K ⎤⎡log S (A )⎤没办法用它的多项式个符号写下猜想.可以证明这个问题是NP-hard.∑=∈Aa a S A S )()(实例--分析非NP类问题的难度Turing归约命题:第k 个最大子集问题是NP-hard.下面构造从均分问题到这个问题的Turing归约.设s[A,S,B,K]是解第K个最大子集的子程序,其中A = { a1, a2, …, a n}S: A→Z+B≤S(A)K≤2n设A= { a,a2, …,a n },S:A→Z+是均分的实例,如1下构造解均分问题的算法.41算法说明步1到步7 二分法找L*.L* 的含义:至少Lmin个子集其和不超过S(A)/2.至多Lmax−1 个子集其和不超过S(A)/2.恰好有L*个子集其和不超过S(A)/2.步8 检查是否有一个子集其和等于S(A)/2.如果至少有L* 个子集其和≤b−1<b,那么没有一个子集其和恰好等于S(A)/2.44复杂性估计步1到步7二分法查找L*调用s[A, S, b, L]子程序log2n= O(n)次步8调用s[A, S, b, L]子程序 1 次如果s 是多项式时间的算法,则算法也是多项式时间的.45复杂性类的谱系NP之外Co-NPPSPACEP之内NCP完全46NP与Co-NP的结构前提:NP ≠Co-NP⇒P ≠NP49并行计算的PRAM模型PRAM(Parallel Random Access Machine)特征:1. 无限大共享存储器(用于处理器之间交换数据)2. 有限或无限个(n的多项式个)功能相同的处理器3. 指令集相同:逻辑运算、算术运算、访问内存、输入输出、转移4. 执行每条指令的时间相同,且与处理器个数无关50。

算法设计与分析-总结0

算法设计与分析-总结0

这本书是《算法设计与分析》王红梅编著一共有以下12章,我们学了1、3、4、5、6、7、8、9分别是“绪论、蛮力法、分治法、减治法、动态规划法、贪心法、回溯法、分治限界法第1章绪论考点:1、算法的5个重要特性。

(P3)答:输入、输出、有穷性、确定性、可行性2、描述算法的四种方法分别是什么,有什么优缺点。

(P4)答:1. 自然语言优点:容易理解;缺点:容易出现二义性,并且算法都很冗长。

2. 流程图优点:直观易懂;缺点:严密性不如程序语言,灵活性不如自然语言。

3. 程序设计语言优点:用程序语言描述的算法能由计算机直接执行;缺点:抽象性差,是算法设计者拘泥于描述算法的具体细节,忽略了“好”算法和正确逻辑的重要性,此外,还要求算法设计者掌握程序设计语言及其编程技巧。

伪代码优点:表达能力强,抽象性强,容易理解3、了解非递归算法的时间复杂性分析。

(P13)要点:对非递归算法时间复杂性的分析,关键是建立一个代表算法运行时间的求和表达式,然后用渐进符号表示这个求和表达式。

非递归算法分析的一般步骤是:(1)决定用哪个(或哪些)参数作为算法问题规模的度量。

(2)找出算法的基本语句。

(3)检查基本语句的执行次数是否只依赖问题规模。

(4)建立基本语句执行次数的求和表达式。

(5)用渐进符号表示这个求和表达式。

[例1.4]:求数组最小值算法int ArrayMin(int a[ ], int n){min=a[0];for (i=1; i<n; i++)if (a[i]<min) min=a[i];return min;}问题规模:n基本语句:a[i]<minT(n)= n-1=O(n)4、掌握扩展递归技术和通用分治递推式的使用。

(P15)扩展递归技术:通用分支递归式:5、习题1-4,习题1-7设计算法求数组中相差最小的两个元素(称为最接近数)的差。

要求给出伪代码描述,并用一组例子进行跟踪验证,写出验证过程。

四川理工 算法设计与分析 作者-王红梅期末考试试题

四川理工 算法设计与分析 作者-王红梅期末考试试题

一章 7、10 7 . 使用扩展递归技术求解下列递推关系式 :

二章 1、3、5 1 . 求下列问题的平凡下界, 并指出其下界是否紧密。 ( 1) 求数组中的最大元素; (2 ) 判断邻接矩阵表示的无向图是不是完全 图; ( 3 ) 确定数组中的元素是否都是惟一的; (4 ) 生成一个具有 n 个元素集合的所有子集 。 3 . 画出在 3 个数 a , b, c 中求中值 问题的决策树 。 5 . 假设某算法的时间复杂性为 T( n) = 2n , 在计算机 C1 和 C2 上运行这个算法 , C2 的速度是 C1 的 100 倍 。若该算法在 C1 上运行的时间为 t , 可处理的问题规模为 n , 在 C2上运行同样的时间可处理的问题规模是多少 如果 T ( n) = n^2, 在 C2 上运行 同样的时间可处理的问题规模是多少 3: 6、7、8

6 . 为 3 .4 .1 节中生成排列对象算法设计程序上机实现 , 能对这个算法进行改进吗 7 . 最近对问题也可以以 k 维空间的形式出现 , k 维空间中的两个点 维空间的最近对 问题设计蛮力算法 , 并分析其时间性能。 8 . 对于一个平面上 n 个点的集合 S , 设计蛮力算法求集合 S 的凸包的一个极点。

四章 1、3、棋盘覆盖、最大子段和

1 . 设计分治算法求一个数组中最大元素的位置 , 建立该算法的递推式并求解 。 3 . 设计递归算法生成 n 个元素的所有排列对象。

五章 3、6、8

3 . 拿子游戏 。考虑下面这个游戏 : 桌子上有一堆火柴 , 游戏 开始时共有 n 根火柴 , 两个玩家轮流拿走 1、2 、3 或 4 根火柴 , 拿走 最后一根火柴的玩家为获胜方。请为先走的玩家设计一个制胜的策略( 如果该策略存在) 。 6 . 在 120 枚外观相 同的硬 币中, 有一枚是假 币, 并且 已知假 币与真 币的重量不 同, 但不知道假 币与真 币相 比较轻还是较重。可 以通过一架天平来任意比较两组硬 币, 最坏情 况下, 能不能只比较 5 次就检测出这枚假 币

算法设计技巧与分析:第九讲 NP完全问题

算法设计技巧与分析:第九讲 NP完全问题

• 最优化问题: MAX-CLIQUE.
输入:一个无向图G=(V,E). 输出:一个正整数k,它是G中最大团集的大小
Algorithms Design Techniques and Analysis
• 如果我们有一个求解判定问题的有效算法,那么很容易把 它变成求解与它相对应的最优化问题的算法。 • 例如,我们有一个求解图着色判定问题的算法A,则可以 用二分搜索并且把算法A作为子程序来找出图G的色数。 很清楚,1<=x (G)<=n,这里n是G中顶点数,因此仅用 O(1og n)次调用算法A就可以找到G的色数。由于我们正处 理多项式时间的算法, log n因子是不重要的。
• 定理 10.1
• P类问题在补运算下是封闭的。
Algorithms Design Techniques and Analysis
Algorithms Design Techniques and Analysis
例子 10.3
给出一个无向图G=(V,E),对于某个正整数k, G中大 小为k的团集,是指G中有k个顶点的一个完全子图。 团集问题是问一个无向图是否包含一个预定大小的 团集。 • 判定问题: CLIQUE.
输入:一个无向图G=(V,E)和一个正整数k。 问题: G有大小为k的团集吗?
Algorithms Design Techniques and Analysis
P类的问题
• 2着色问题: • 给出一个无向图G ,它是否是2可着色的?即它的顶点是否可仅用 两种颜色着色,使两个邻接顶点不会分配相同的颜色?注意,当且 仅当G是二分图,即当且仅当它不包含奇数长的回路时,它是2可 着色的。
2.47×1041 1024
观察结论:n≤100时,(不自然的)多项式函数值大于指数 函数值,但n充分大时,指数函数仍然超过多项式函数。

计算机算法设计与分析-Chapter9计算机难解问题与NP-完全性


9.1.5 作业调度(Job Scheduling)问题
已知:n项作业J1,...,Jn将按照某种次序依次完成,它们所需的 执行时间为t1,...,tn,要求最迟完成的时间(deadlines)为 d1,...,dn(从第一项作业开始执行的时间开始计算),以及逾 期未能完成该项作业的罚款数为P1,...,Pn。
已知n点图G=<V,E>,求对G的n个顶点进行着色的一种方法( 相邻顶点颜色不同),使得所用颜色的总数最小。
问题的答案是一种着色方案,为每个顶点赋一种颜色,当然 ,最优着色方案找到时,其(最小)色数也就找到了。
2、 求值形式: 已知n点图G=<V,E>,求图G的色数k。(指为图G着色,使相 邻顶点颜色不同的最小色数)。 问题的答案是一个值,一般情形下,在色数k的计算过程中也 可以得到用k种颜色进行着色的方法。 Graph Coloring问题的求解形式与求值形式称为优化问题( Optimization Problem),一般也称为组合优化(Combinatorial Optimization)问题。二者之间只需要经过简单的计算或处理 就可相互转化,更多的情形是着色算法可以同时满足求解和 求值的要求。
9.2.2 问题求解与判定问题
判定问题实际上是要判定一个元素或对象是否属于某一特定 集合。
例如在SAT问题中,所有的CNF逻辑公式(或称布尔表达式) 的集合为全集U,满足SAT条件的CNF,即存在一组逻辑赋值 使其取真值的所有CNF的集合 称为可满足集。判定问题 SAT就是要对任一输入x∈U,判定x是否属于S,因此其回答 是“yes”或“no”。
n 10 100 1000 10000
T1(n)
T2(n)
0.00033Sec 0.0015Sec

算法设计与分析_05NP完全问题-一些重要的概念..

算法设计与分析
——NP完全问题
2018/10/6
算法设计与分析演示稿 纪玉波制 作(C)
1
一、一些重要的概念
1、多项式时间算法和难解问题
• 不同的算法具有很不相同的时间复杂性函数,什么样的算法算作 “效率高”,什么样的算法算作“效率低”,计算机科学家们公 认一种简单的区别,这就是多顶式时间算法(polynomial time algorithm)和指数时间算法(exponential time algorithm)之间的区别。Cobham[1964]和Edmonds[1965]首先 讨论了这种区别的基本性质。特别是Edmonds把多项式时间算法与 “好的”算法等同看待,并且猜想某些整数规划问题可能不能用 这种“好的”算法求解。这反映了一种观点,认为指数时间算法 不应该算作“好的”算法。通常也的确是这样的。大多数指数时 间算法只是穷举搜索法的变种,而多项式时间算法通常只有在对 问题的结构有了某些比较深入的了解之后才有可能给出。艰多人 都认为只有知道了问题的多项式时间算法才能认为“很好地解决 了”这个问题。因此,如果一个问题困难到不可能用多项式时间 算法求解,那末我们就认为这个问题是“难解的”。
算法设计与分析演示稿 纪玉波制 作(C)
19
2018/10/6 算法设计与分析演示稿 纪玉波制 作(C) 15
现在认为NP完全问题是否是难解的这一向题是当代 数学和计算机科学中尚未解决的最重要问题之一。尽管 大多数研究工作者猜想NP完全问题是难解的,然而在证 明或否定这个广泛的猜想方面几乎没有取得什么进展。 但是,即使没有证明NP完全性蕴涵难解性,知道一个问 题是NP完全的至少暗示着要想用多项式时间算法解这个 问题必须有重大的突破。
2018/10/6
算法设计与分析演示稿 纪玉波制 作(C)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档