算法与计算复杂性理论复习提要

合集下载

复习提纲:算法与数据结构

复习提纲:算法与数据结构

1、算法的概念是为了解决某类问题而规定的一个有限长的操作序列。

特性:①有穷性②确定性③可行性④输入⑤输出评价标准:①正确性②可读性③健壮性④高效性2、算法的复杂度: 算法计算量所需资源的大小时间复杂度:T(n)=O(f(n)),他表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的时间复杂度空间复杂度:S(n)=O(f(n)),算法所需空间的度量。

3、数据结构中的逻辑结构分为:线性和非线性结构4、线性表的两种存储方式:顺序存储和链式存储的特点及比较。

顺序存储:指用一组地址连续的存储单元依次存储线性表的数据元素链式存储:用一组任意的存储单元存储线性表的数据元素。

5、线性表的特点①存在唯一的一个被称作“第一个”的数据元素②存在唯一的一个被称作“最后一个”的数据元素③除第一个之外,结构中的每一个数据元素均只有一个前驱④除最后一个之外,结构中的每一个数据元素均只有一个后继6、在长度为n的顺序表中的第i个位置处插入一个元素,需要移动多少个元素?n-i+17、理解算法:线性表La和Lb,将两个表合并成一个新的线性表并存于La中。

8、带头结点的单链表和不带头结点的单链表为空的条件分别是?带头结点的循环单链表为空的条件是?带头结点的单链表为空的条件:没有下一个节点L->next=NULL不带头结点的单链表为空的条件:L=NULL循环单链表为空的条件:head->next=head带头结点的循环单链表为空的条件是9、在单链表中插入结点的算法中,指针如何修改。

P3410、理解单链表中插入新结点的算法p3411、理解双向链表中插入新结点的算法p4012、理解栈和队列的操作特点:先进后出,先进先出。

已知进栈顺序,求可能的出栈顺序。

链栈相对于顺序栈的优点是什么?链栈在入栈前不需要判断栈是否为满,只需要为入栈元素动态分配一个节点空间13、理解算法:执行进栈操作,则先要判断栈S是否为满,若不满再将记录栈顶的下标变量top加1,再将进栈元素放进栈顶位置上。

最新计算机算法设计与分析期末复习资料

最新计算机算法设计与分析期末复习资料

一填空题(20x1=20分)1.当设定的问题有多种算法去解决时,其选择算法的主要原则是选择其中复杂性最低者。

2.用函数自身给出定义的函数是一种递归函数。

3.动态规划算法适用于解最优化问题。

4.贪心算法的两个基本要素是最优子结构性质、贪心选择性质。

5.回溯法在搜索解空间树的时候,为了避免无效搜索,通常使用深度优先手段来提高搜索效率。

6.依据求解目标的不同,分支界限法和回溯法分别用广度优先遍历或者最小耗费优先、深度优先的方式搜索解空间树。

7.分支界限法和回溯法主要区别在于求解目标和搜索方式不同。

8.在分支界限法实现的时候,通常采用方式来实现最大优先队列。

9.依据求解所花费的时间和所得到的结果不同,随机化算法大致分为数值随机化算法、蒙特卡罗算法、拉斯维加斯算法和舍伍德算法四类。

10.产生伪随机数最常用的方法是线性同余法。

11.线性规划算法中转轴变化的目的是将入基变量与离基变量互调位置。

12.最大网络流问题中可增广路是残留网络中一条容量大于0的路。

13.待解决问题适用于动态规划法的两个基本要素是。

14.算法必须满足的四个特征是输入、输出、确定性、有限性。

15.算法复杂性依赖于、、三个方面的复杂因素。

16.实现递归调用的关键是17.动态规划算法求解问题的重要线索是问题的性质。

18.最优子结构性质是贪心算法求解问题的关键特征。

19.分支界限法的求解目标是找出满足约束条件的一个解,或是在满足约束条件的解中找出在某种意义下的最优解。

20.问题的解空间树常见的有子集树、排列树两种类型。

21.分支界限算法依据其从和节点表中选择获得下一扩展节点的不同方式被分为22.对于任何约束标准型线性规划问题,只要将所用分基本变量都设置为0,就可以获得一个解。

二判断题(20x1=20分)1.算法的描述方式有自然语言、程序语言,或者两者相结合的形式。

()2.算法满足的特性有哪些,程序有什么特征,而这有什么关系。

3.算法复杂度越高或者越低与占用计算机资源的关系是什么。

算法设计与分析(原创精品)时间复杂度_复习资料(最全版)

算法设计与分析(原创精品)时间复杂度_复习资料(最全版)

O(1)Temp=i;i=j;j=temp;以上三条单个语句的频度均为1,该程序段的执行时间是一个与问题规模n无关的常数。

算法的时间复杂度为常数阶,记作T(n)=O(1)。

如果算法的执行时间不随着问题规模n的增加而增长,即使算法中有上千条语句,其执行时间也不过是一个较大的常数。

此类算法的时间复杂度是O(1)。

O(n^2)2.1. 交换i和j的内容sum=0;(一次)for(i=1;i<=n;i++) (n次)for(j=1;j<=n;j++) (n^2次)sum++;(n^2次)解:T(n)=2n^2+n+1 =O(n^2)2.2.for (i=1;i<n;i++){y=y+1; ①for (j=0;j<=(2*n);j++)x++; ②}解:语句1的频度是n-1语句2的频度是(n-1)*(2n+1)=2n^2-n-1f(n)=2n^2-n-1+(n-1)=2n^2-2该程序的时间复杂度T(n)=O(n^2). O(n)2.3.a=0;b=1; ①for (i=1;i<=n;i++) ②{s=a+b;③b=a;④a=s;⑤}解:语句1的频度:2,语句2的频度:n,语句3的频度:n-1,语句4的频度:n-1,语句5的频度:n-1,T(n)=2+n+3(n-1)=4n-1=O(n).O(log2n )2.4.i=1; ①while (i<=n)i=i*2; ②解:语句1的频度是1,设语句2的频度是f(n), 则:2^f(n)<=n;f(n)<=log2n取最大值f(n)= log2n,T(n)=O(log2n )O(n^3)2.5.for(i=0;i<n;i++){for(j=0;j<i;j++){for(k=0;k<j;k++)x=x+2;}}解:当i=m, j=k的时候,内层循环的次数为k当i=m时, j 可以取0,1,...,m-1 , 所以这里最内循环共进行了0+1+...+m-1=(m-1)m/2次所以,i从0取到n, 则循环共进行了: 0+(1-1)*1/2+...+(n-1)n/2=n(n+1)(n-1)/6所以时间复杂度为O(n^3).我们还应该区分算法的最坏情况的行为和期望行为。

第5章 算法与复杂性

第5章 算法与复杂性
对于一个算法的评价,通常要从正确性、可理解性、 健壮性、时间复杂度(Time Complexity)及空间复杂 度(Space Complexity)等多个方面加以衡量。 1.算法的时间复杂度 时间复杂度是度量时间的复杂性,即算法的时间效率 的指标。 2.算法的空间复杂度 算法的空间复杂度是度量空间的复杂性,即执行算法 的程序在计算机中运行时所占用空间的大小。
5.7 可计算性理论基础
研究计算的可行性和函数算法的理论,又称算法 理论,是算法设计与分析的基础,也是计算机科 学的理论基础。可计算性是函数的一个特性。
5.8 NP问题
NP(Non-deterministic Polynomial)问题是非确定性多 项式问题,是指算法无法直接计算出结果,只能通过进 行一些有选择的“猜算”来得到结果。 NP问题的研究结果有两种可能: 一种是找到了求解问题的算法; 另一种就是求解问题的算法是不存在的,那么就要从数
钥,通常有两个密钥,称为“公钥”和“私钥”,它 们两个必须配对使用,否则不能打开加密文件。
5.10 加密算法
常见加密算法有如下: (1)DES(Data Encryption Standard):数据加密标准,速 度较快,适用于加密大量数据的场合。 (2)3DES(Triple DES):是基于DES,对一块数据用3个不 同的密钥进行3次加密,强度更高; (3)RC2和RC4:用变长密钥对大量数据进行加密,比DES 快。 (4)IDEA(International Data Encryption Algorithm)国 际数据加密算法,使用128位密钥提供非常强的安全性。 (5)RSA:由RSA公司发明,是一个支持变长密钥的公共密 钥算法,需要加密的文件块的长度也是可变的。 (6)DSA(Digital Signature Algorithm):数字签名算法, 是一种标准的DSS(数字签名标准)。

第一讲:计算复杂性理论

第一讲:计算复杂性理论

大多数研究者认可 的包容关系
L m
计算复杂度的影响因素
简化模型:模型2
计算复杂度的影响因素
简化模型:模型3。
计算复杂度的影响因素
建模假设 例:高空抛球的运动轨迹。 ----抛物线模型 假设1.没有空气阻力; 假设2.地面是平面。 ----椭圆模型
计算复杂度的影响因素
探索空间1 探索空间1---解的近似度、满意度
例:0—10之间的整数解:1-9共9个可行解(一维) 0—10之间的实数解:精确到小数点后6位 共有107个可行解(一维); 107n个可行解(n维)
n! 10141世紀 → 10120世紀 102551世紀 → 102530世紀
问题与算法
每个問題都可能有多个算法存在. 每个算法的计算量(速度)都不同。 例: 赝品金币問題: 问题:9個外观完全一样的金币.,有一个是假的 (重量轻). 提问:用天秤来鉴别真伪,天秤需要使用几次?
贋品金币問題算法 問題算法
优化技术与方法
計算量(1) 計算量
+,-,×,÷ 比較:≠,≤,≥,<,> 5种基本演算都是用1step 可以实现. 実際上,×比+多占用時間. 「四舍五入」不算基本演算.
計算量(2) 計算量
{a1, a2,..., an}:n個整数 Q1. 求和(1): a1+a2+・・・+an. 1 + +a n-1 steps → O(n)算法. Q2. 求和(2): (1) 2×a1+・・・+ 2×an , 2n-1 steps→ O(n)算法. (2) 2×(a1+・・・+an) , n steps→ O(n)算法.
尚未确信能否用多項式時間算法求解的问题的 集合称为NP (non-deterministic polynomial)问题 某一个问题不属于NP问题的証明 如能够找到一个多項式時間算法 (簡単) 某一个问题属于NP问题的証明 可以归结为某一类既知的NP类问题(现阶段7类))

计算理论复杂性理论基础知识

计算理论复杂性理论基础知识

计算理论复杂性理论基础知识计算理论复杂性是计算机科学中一项重要的研究领域,旨在研究计算问题的解决难度和算法的效率。

本文将介绍计算理论复杂性的基础知识,包括问题的分类、计算模型和基本概念。

一、问题的分类在计算理论复杂性中,问题可以分为两类:P类问题和NP类问题。

P类问题是可以在多项式时间内解决的问题,而NP类问题是可以在多项式时间内验证解的问题。

P类问题是计算理论中研究的主要对象,它代表了计算机科学界能够有效解决的问题。

例如,求两个数的和、排序问题等都属于P类问题。

NP类问题则代表了计算机科学界尚未找到高效解决方法的问题,它所包含的解的搜索空间非常大。

例如,旅行推销员问题、图着色问题等都属于NP类问题。

虽然目前还没有找到多项式时间内解决NP类问题的方法,但可以通过验证一个解是否正确来验证解的正确性。

二、计算模型计算理论复杂性研究中使用的计算模型主要有图灵机、非确定有限自动机和布尔电路模型。

图灵机是计算理论中最经典的计算模型之一,它由带有读写头的无限长纸带和一系列状态转移规则构成,可以模拟所有现代计算机的功能。

非确定有限自动机是另一种计算模型,它是图灵机的一种简化形式,特点是能够在某个状态下拥有多个可能的转移选项。

布尔电路模型是计算理论复杂性研究中较为特殊的一种计算模型,它通过使用与门、或门和非门等基本逻辑门来构建复杂的逻辑电路,从而解决特定的计算问题。

三、基本概念在计算理论复杂性研究中,有一些基本概念是必须了解的,包括计算问题的规模、算法的时间复杂度和空间复杂度等。

计算问题的规模指的是问题输入的大小。

例如,排序问题的规模可以是待排序数组的长度。

算法的时间复杂度是衡量算法执行所需时间的度量,通常用大O符号表示。

时间复杂度越低,表示算法的效率越高。

算法的空间复杂度是衡量算法所需内存空间的度量,也用大O符号表示。

空间复杂度越低,表示算法的内存利用率越高。

此外,还有一些复杂性理论中的重要问题,如P=NP问题、NP完全问题等,这些问题都是该领域中的研究热点。

计算机科学中的计算复杂性理论

计算机科学中的计算复杂性理论

计算机科学中的计算复杂性理论计算复杂性理论是计算机科学中的一个重要分支,研究的是计算问题的算法复杂性和计算机问题的可解性。

它帮助我们理解计算问题是否有高效的解决方法,为设计和分析算法提供了基础。

一、引言计算复杂性理论涉及到算法的效率和计算问题的可解性,对计算机科学和信息技术具有重要意义。

本文将首先介绍计算复杂性理论的起源和发展,然后重点讨论几个计算复杂性理论中的重要概念和问题。

二、计算复杂性理论的起源和发展计算复杂性理论起源于20世纪60年代,由对计算问题的可解性进行研究逐渐演化而来。

该理论的研究者,如图灵奖得主阿隆佐·邱奇、史蒂芬·库克等,提出了多个理论模型和概念,奠定了计算复杂性理论的基础。

三、计算复杂性理论的重要概念1. P问题和NP问题在计算复杂性理论中,P问题指的是可以在多项式时间内解决的问题,而NP问题则是指可以在多项式时间内验证给定解是否正确的问题。

其中,P问题是NP问题的一个子集,即P⊆NP。

2. NP完全性NP完全性是计算复杂性理论中的一个重要概念。

一个问题是NP完全的,意味着它是NP问题中最难的一类。

如果我们能够找到一个多项式时间内解决NP完全问题的算法,那么可以得出P = NP的结论,这是计算机科学中的一个重大问题。

3. 计算复杂性度量计算复杂性理论通过引入时间复杂性和空间复杂性度量来衡量算法的效率。

其中,时间复杂性度量算法执行所需的时间步数,空间复杂性度量算法所需的存储空间。

这些度量帮助我们选择具有高效率的算法,提高计算问题的解决速度。

四、计算复杂性问题的研究方法计算复杂性理论研究问题的方法主要有两种:证明方法和求解方法。

证明方法通过证明某个问题是NP完全的来研究问题难度;而求解方法则是通过设计高效的算法来解决问题。

1. 证明方法证明方法是计算复杂性理论中常用的方法之一,它使用约简技术将一个已知的NP完全问题转化为待研究问题,从而证明待研究问题也是NP完全的。

算法分析与复杂性理论

算法分析与复杂性理论

算法分析与复杂性理论算法是计算机科学中的重要概念,它是解决问题的一系列步骤或指令。

但是,并不是所有的算法都一样效率高,因此我们需要进行算法分析来评估算法的性能。

同时,复杂性理论则是用来研究算法在不同规模下的复杂性和可解性。

本文将深入探讨算法分析与复杂性理论的相关概念和方法。

一、算法分析算法分析是评估算法性能的过程,我们通常关注算法的时间复杂度和空间复杂度。

1. 时间复杂度时间复杂度表示算法解决问题所需的时间资源。

在进行时间复杂度分析时,一般会考虑最坏情况下的所需时间。

常见的时间复杂度有常数时间O(1),线性时间O(n),对数时间O(log n),平方时间O(n^2)等。

2. 空间复杂度空间复杂度表示算法解决问题所需的空间资源。

与时间复杂度类似,我们通常考虑最坏情况下的所需空间。

常见的空间复杂度有常数空间O(1),线性空间O(n),对数空间O(log n),平方空间O(n^2)等。

二、复杂性理论复杂性理论是研究算法在不同规模下的复杂性和可解性的学科领域。

1. NP问题NP(Nondeterministic Polynomial)问题是指可以在多项式时间内验证解答是否正确的问题。

这意味着如果我们能够在多项式时间内找到一个解答,那么我们也可以在多项式时间内验证该解答是否正确。

然而,尚未找到高效的算法来解决NP问题。

2. P问题P(Polynomial)问题是指可以在多项式时间内解决的问题。

也就是说,存在一个算法可以在多项式时间内找到问题的解答。

3. NP完全问题NP完全问题是指既属于NP问题,又属于最难的NP问题。

如果我们能够在多项式时间内找到一个解答,那么我们可以在多项式时间内解决所有的NP问题。

目前,还没有找到高效的算法来解决NP完全问题。

三、算法优化为了提高算法的效率,我们可以进行算法优化。

常用的算法优化方法包括贪心算法、动态规划、分治法等。

1. 贪心算法贪心算法是一种每次都选择当前最优解的策略。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
算法与计算复杂性理论复习提要
2013-12-21
一、基本概念
1、说明语言类P、NP、NP-hard、NP-complete 的含义。假定P≠NP,画图表示其包含关 系。 P:指的是多项式时间可解的算法问题集合。即,P类中的每一个问题都有最坏不超过多项式 运行时间的算法。 NP: 指的是多项式时间可验证的问题类。 等价于非确定型图灵机上具有多项式运行时间的算 法问题集合。 NP-hard:指的是这样一个计算问题集合,其中的每一个问题的计算难度至少要与NP中最难 问题一样难。NP-hard问题类中的问题可以不属于NP类。 NP-complete:指的是即属于NP问题类别又是NP-hard的那些问题集合。换句话说,即是NP 中最难得那些问题组成的问题集合。 依照P=?NP,其关系图大致如下:
难的。是否由此得出任务安排问题是NP 难的? 解答: 不能得出此任务安排问题是NP难的。 此问题可多项式时间规约到图的着色问题只能证明 此问题的难度小于等于图的着色问题。除非能证明此任务安排问题不是P问题,否则不能得 出此任务安排问题是NP难的结论。
3、下面证明中所用的归约是图灵归约还是多项式归约?
2)算法中调用解决问题B算法的次数限定为多项式q(n); 3)每一次调用解决问题B算法时,调用时的输入长度都限定为多项式r(n)。 多项式规约: 假设有两个判定问题A和B, A可多项式规约到B, 指的是存在着一个多项式计算时间的可计算 函数f,这个函数f可把问题A中的每一个实例x都转换成问题B的实例f(x),并且满足对于任 意x, 如果x可被判定问题A对应的语言LA接受当前仅当f(x)可被判定问题B对应的语言LB接受。 联系和区别: 多项式规约是图灵规约的特殊形式。 如果将图灵规约中的两个问题限定为判定问题, 并规定 原问题算法必须调用目标问题算法一次且只调用一次,而且回答一致,即为多项式规约。他 们的一个区别是, 判定问题A可图灵规约到A的语言补, 但判定问题A不一定可多项式规约到A 的语言补。
co-RP:判定问题集合类,此判定问题存在最坏多项式运行时间的随机算法,且此随机算法 对每一个输入该接受时见上题) 关系图:(参考书上p40) BPP
NP
RP
co-RP
EP=ZPP P
3、说明语言类C-hard, C-complete, C-equivalence 的含义,并说明其关系。 C-hard,指的是至少要与C中最难问题一样难的问题类。C-hard中的问题可以不属于C。 C-complete,指的是即属于C问题类别又是C -hard的那些问题集合。换句话说,即是C中最 难得那些问题组成的问题集合。 C-equivalence,指的是与C中所有问题难度都相当的问题集合。可以属于C也可以不属于C。 4、说明问题类APX, PTAS, FPTAS 的含义,并画图表示其关系。 APX:包含所有具有常数近似比的多项式时间算法的近似问题。 PTAS: 包含所有具有多项式时间近似方案的优化问题。 这里的多项式时间近似方案指的是近 似问题的算法,它的输入是该问题的一个实例I和任意常数ε>0,使得对任意固定的ε,算 法在多项式时间(关于I的大小)内产生实例I的近似解,且最坏近似度不超过1+ε。 FPTAS:包含所有具有完全多项式时间近似方案的优化问题。 P⊆FPTAS ⊆PTAS ⊆APX APX PTAS FPTAS 5、说明非确定性图灵机与随机算法的关系。 非确定性图灵机是一种数学概念,随机化算法是可实际应用。它们计算树相同。 6、什么是图灵归约?什么是多项式归约? 它们有何联系和区别? 图灵规约: 问题A可多项式时间图灵规约到问题B, 指的是存在着一个算法, 这个算法可以利用解决问题 B的算法来解决问题A。并且这个算法具有如下属性: 假设解决问题A算法的输入规模为n, 1)不计调用解决问题B算法的次数,整个算法限定为多项式的运行时间p(n);
二、概念理解和辨析
1、指出下面关于P≠NP 错误证明的错处,并说明你认为它是错误的理由。 证明:考虑SAT 的一个算法:“在输入 上,尝试变量的所有可能的赋值,若有满足 的就接受”。该算法显然需要指数时间。所以SAT 有指数时间复杂度,因此SAT 不属于P。 因为SAT 属于NP,所以,P 不等于NP。 解答: “该算法显然需要指数时间。所以SAT 有指数时间复杂度,因此SAT 不属于P。”这里 证明出错。 该证明混淆了算法复杂度和问题复杂度的概念。 一个问题的某一个算法复杂度不 一定就是这个问题的复杂度。 问题的复杂度是由其最好的算法时间复杂度决定的, 而不是随 意一个算法决定。 2、[任务安排问题] n 件任务都需要在机器上被处理,每件任务有一个处理时间段,如何安 排使得用最少的机器能处理所有的任务。 (注: 一旦机器上处理某个任务则不允许间断,必 需连续处理直到该任务被处理结束)。 容易看出,任务安排问题可多项式时间归约到图的着色问题。然而,图着色问题是NP
HC:给定无向图G,判断图G 中是否存在哈密尔顿回路。 HP:给定无向图G,判断图G 中是否存在哈密尔顿路径。 HP s,t:给定无向图G,判断图G 中是否存在从s 到t 的哈密尔顿路径(s≠t)。 (1) HP≤T HP s,t : 考虑所有可能的s,t 点对的哈密尔顿路径来回答图G是否有哈密尔顿路径。 (2)HC≤T HP s,t : 考虑所有可能的s=1,t 点对执行如下操作: 将HC 的图G 中如果有s=1,t 间有边,则去掉边(s,t)得到新图G*,否则新图G*=G。对新 图判断是否在s,t 间存在哈密尔顿路径。 一旦得到一次肯定回答则返回yes;否则返回no。 (3)HP s,t≤T HP : 将HP s,t 的图G 中删除s 的某些边和t 的某些边使得s 和t 的度均为1, 得 到图G*。对图G*判断是否有哈密尔顿路——如果有则一定是从s 到t 的哈密尔顿路经。 对所有可能的G*进行上述操作。一旦得到一次肯定回答则返回yes;否则返回no。 (4)HP s,t≤T HC : 将HP s,t 的图G 中如果没有边(s,t),__________则加上边(s,t)得到新图 G*,否则新图 G*=G。G*中删除s 的边和t 的边(边(s,t)不可删除)使得s 和t 的度均为2,得到图G**。 对图G**判断是否有哈密尔圈——如果有则G 中一定是从s 到t 的哈密尔顿路。 对所有可能的G**进行上述操作。一旦得到一次肯定回答则返回yes;否则返回no。 解答: 以上规约全部是图灵规约。 显然, 以上每一个从原问题到目标问题的规约中都调用了目 标问题的算法好多次。
可将此问题规约到2-DM问题,而已知2-DM问题是P问题,故此问题属于P。 证明过程如下: 假设此带权有向图有n个顶点(u1,u2,...,un), 现建立新图,新图中有2n个顶点, 将此2n个顶点左边n个顶点排一列(u1,u2,...,un),右边n个顶点排一列(v1,v2,..., vn),并且如果原图有从ui到uj的带权边,则在新图中添加ui到vj的带权边,依此最终得到 一个二部图。在二部图中寻找权最小的n匹配即可。 证明问题属于NP-hard 的方法——将一个NP-hard 问题归约当前问题即可。 [例] 已知无向图哈密尔顿路径问题是NP 难的。利用这一结论用归约法证明LPATH 问题是 NP 难的。 [LPATH 问题] 给定无向图G,G 中任意两顶点a, b 及一个正整数k,问G 中是否存在 有从a 到b、长度至少为k 的基本路径。 [无向图哈密尔顿路径问题] 给定无向图G,G 中任意两顶点a, b,问G 中是否存在有 从a 到b 的哈密尔顿路径。 解答: 易知可将哈密尔顿路径问题规约到LPATH 问题。 规约过程: 构造一个哈密尔顿路径问题 新算法,新算法中调用LPATH 问题的算法一次且仅一次,并且令调用参数k=n-1,LPATH 问 题的算法的输出作为新算法的输出。 设计和分析近似算法的方法 [例] [多机调度问题] 设有n 个独立的任务J1,J2,…,Jn,需要尽快加工完成。现只有p 台完全相同的机器可以同时使用,当然,任何一个任务可在任一台机器上加工。问如何调度 才能使得整个加工工作及早结束?设任务Ji 需要ti 个机时 (i=1,2,…,n) 。 该问题是NP 难 的,请通过设计该问题的一个多项式近似方案来证明它属于PTAS。 解答: 参考书上105页 或者 课件第八章P25-26 [例] 考虑下求解0/1 背包问题的贪心算法: 先按物品的单位价值由大到小排序, 然后依次 确定每件物品是否放入背包 (如果放得下则放入背包, 否则不放入背包, 继续考虑下一物品) , 直到所有物品都处理完为止。 设自然数k 满足在上述贪心法中前k-1个物品可全装入了背包,而再放第k 件物品时则背包 装不下。由此可得如下算法:将上述贪心算法的结果与vk(第k 物品的价值)比较,最 终谁大就输出谁。 证明:所得算法是2-近似算法。 解答: 假设O(I)为最优值, A(I)为此算法近似值,Vi为第i件物品的价值。 因为此算法是按照单 位价值来由大到小来排列。 显然O(I)<=V1+V2+…+Vk-1+Vk, 且A(I)=max{ V1+V2+…+Vk-1, Vk}。 因此O(I)<=2A(I),即近似比O(I)/A(I)<=2。 [例] [最大割问题] 考虑下求解最大割问题的贪心算法: Step 1. 初始化:点集V 的两部V1=V,V2=Ф,及当前割Cut=Ф。 Step 2. 重复下列操作直到Cut 不能改进为止:将某点从一部移动到另一部来改进Cut。 试证该算法是2-近似算法。 解答:
7、什么是NP 难度的问题?证明一个问题是NP 难度有哪些方法? 若某一个算问题,其难度不低于任何一个NP问题,则这个问题是NP难度的问题。 证明方法:将已知的一个NP-hard问题规约到这个新问题。 8、如何对付NP 难度的问题? 对于NP难度问题,有时无需求最优解而只求近似最优解,或者集中研究某些NP-hard问 题的好算法,或者可借鉴人类社会的丰富经验和大自然中的一些现象。 典型求解技术: 1) 精确求解技术,使用分治法、动态规划、分支限界、回溯法等各种搜索算法。 2) 近似求解技术,采用组合方法、随机方法、松弛方法等。 3) 启发式求解技术,采用贪心、拟人拟物等面向问题的启发式算法或者演化、遗模拟 退火、禁忌搜索等通用启发式算法。
相关文档
最新文档