收藏 分享(赏)

第3章-问题复杂性.pptx

上传人:weiwoduzun 文档编号:5673413 上传时间:2019-03-11 格式:PPTX 页数:35 大小:380.17KB
下载 相关 举报
第3章-问题复杂性.pptx_第1页
第1页 / 共35页
第3章-问题复杂性.pptx_第2页
第2页 / 共35页
第3章-问题复杂性.pptx_第3页
第3页 / 共35页
第3章-问题复杂性.pptx_第4页
第4页 / 共35页
第3章-问题复杂性.pptx_第5页
第5页 / 共35页
点击查看更多>>
资源描述

1、第3章 问题复杂性,算法分析与复杂性理论,第1节 问题的计算复杂性,第3章 问题复杂性,第1节 问题的计算复杂性,问题的计算复杂性 求解一个问题的最少工作量是多少? 或者说,一个问题到底有多难? 问题的难度是由问题本身的内在性质决定的,与求解的具体算法无关。,第1节 问题的计算复杂性,如何确定问题的计算复杂性,高阶复杂性,低阶复杂性,问题的难度下界F(n),求解问题的算法的最坏时间复杂性W(n),第1节 问题的计算复杂性,难解问题的界定, , ,可接受的,难解问题,第2节 问题的难度下界,第3章 问题复杂性,第2节 问题的难度下界,问题的难度下界 目前已知求解一个问题的最少工作量是多少? 或者

2、说,目前已知一个问题到底有多难? 可以由最坏情况下对任何算法都至少要做的基本运算量F(n)来估算。 目前只有少数问题得到了有关难度下界的分析结果。,第2节 问题的难度下界,问题难度下界举例:排序问题 基于比较的排序,已证明至少要做(nlogn)次比较,因此问题的已知下界为(nlogn)。,第2节 问题的难度下界,问题难度下界举例:旅行商问题,W(n)=O(n!),F(n)=(n2),第2节 问题的难度下界,用平凡下界确认问题的难度下界 对输入或输出进行计数,得到平凡下界。 例1:求解n阶全排列问题的平凡下界为: (n!) 例2:求解n次实系数多项式f(x)(aixi)的平凡下界为: (n) 例

3、3:求解n*n矩阵乘法的平凡下界为: (n2),第2节 问题的难度下界,直接计数确认问题的难度下界 通过对最坏情况下确认问题所必须进行的计算进行计数来估算难度下界。 例1:求最大值问题,W(n)=n-1,第2节 问题的难度下界,例:已知n个正整数的序列1n,计算nn的矩阵1n, 1n:, , = 0 = ,设Ai=2i,则:,Ai=2i 2+22+23+2i-1=A1+Ai-1B1, i-1,当ij, kl, jl时,Bi, j和Bk, l有:,Bk, l Al B1, l-1 B1, j Bi, j,则当ik, jk, iBj, k,当ki, kj, ij时,Bk, iBk, j。,即的有效

4、数据区中,无相等元素,除对角线外,有n(n-1)/2个元素。,一次加法不可能得到个以上的元素,难度下界为:n(n-1)/2。,第2节 问题的难度下界,设两个数比较,较大的标记为W,较小的标记为L,则最大值最终状态为W,最小值最终状态为L,其他值的最终状态为WL,共2n-2个信息状态。,例:求最大值和最小值问题。,设法构造最坏输入,使状态以尽可能慢的速度迁移。,状态在迁移过程中,只可能增加新的状态,不会改变已有的状态。,第2节 问题的难度下界,例:求最大值和最小值问题。,最多只有 /2 次比较的初始状态都是N,产生2 /2 个状态迁移,然后每一次比较都最多产生一次状态迁移。因此,至少需要 3/2

5、 2次比较。,第2节 问题的难度下界,例:求最大值和最小值问题。,设某一求最大值最小值算法如下:1. 找出前n/2个元素中的最大值d1;2. 找出前n/2个元素中的最小值d2;3. 找出后n/2个元素中的最大值d3;4. 找出后n/2个元素中的最小值d4;5. 取d1和d3中较大的为最大值;6. 取d2和d4中较小的为最小值;,第2节 问题的难度下界,例:求最大值和最小值问题。,构造最坏输入序列(x1, x2, x3, x4, x5, x6)如下:,第2节 问题的难度下界,要确定次大值,必须先确定最大值,需要至少n-1次比较。,次大值在比较中一定是直接被最大值淘汰的。,在求解最大值的过程中,若

6、x与y比较,x较大,则标记x为y的父结点,构成比较树。,41:10 41:15 40:30 41:40,例4:求次大值问题。,第2节 问题的难度下界,为确定直接被最大值淘汰的元素个数的下界,按如下规则来构造最坏输入:,为输入元素定义权值(x),(x)=1表示x还未参加比较,(x)=0表示x在某次比较中已经被淘汰,(x)1表示以x为根的比较子树上的结点个数。,初始(x)=1,当x与y做必要比较时,有(x)0, (y)0。,若(x)(y),则构造输入令xy;若(x)(y),则构造输入令xy。,即令比较胜出者继续胜出,以使被最大值直接淘汰的元素个数达到最多。,例4:求次大值问题。,第2节 问题的难度

7、下界,例如,设输入为x1, x2, x3, x4, x5,算法求最大值所做的比较依次为:x1:x2, x1:x3, x4:x5, x1:x4,则可令:x1=50, x2=20, x3=10, x4=40, x5=30,例4:求次大值问题。,按照上述方法构造出的输入,在找最大值过程中,被最大值直接淘汰的元素个数不会少于 log 。,证明:设k表示最大元素在第k次比较后形成的比较子树的结点个数。 假设第k次比较被最大元素淘汰的是x,比较前最大元素为根的比较子树的结点数为k-1,以x为根的比较子树的结点数为x,则: k-1 x k k-1 + x 2k-1,设K为直接被最大值淘汰的元素个数,则n=K

8、 又由上述可得:K 2K-1 22K-2 23K-3 2K0 = 2K 2K n K log , 要找到次大值,至少要从这K个元素中淘汰掉K1个元素,至少还需要 log 1次比较。,第2节 问题的难度下界,例5:求中位数问题。,把能够确定状态信息的比较称为决定性比较。 把不能够确定状态信息的比较称为非决定性比较。,决定性比较有n-1次,算法的总工作量为决定性比较次数+非决定性比较的次数。,第2节 问题的难度下界,例5:求中位数问题。,对任意求中位数算法,可用如下规则构造最坏输入:,(1) 任意确定一个中位数mid;,(2) 若算法比较x和y,且x和y都没有确定值,则置xmid;,(3) 若算法

9、比较x和y,且xmid;,(4) 若算法比较x和y,且xmid,y没有确定值,则置ymid;,(5) 若已有(n-1)/2个元素被置小于mid,则剩余未确定元素均置为大于mid;,(6) 若已有(n-1)/2个元素被置大于mid,则剩余未确定元素均置为小于mid;,由上述构造规则,在确定所有的输入之前,所有导致对输入进行置值的比较都是非决定性的,且这样的比较共有(n-1)/2次。,结论:任意求中位数的算法,非决定性比较的次数不会少于(n-1)/2次, 因此,问题的难度下界为: (1) 2 + 1 = 3 1 2,第2节 问题的难度下界,用决策树确认问题的难度下界 决策树是一棵二叉树,每个非叶结

10、点代表一次运算(如一次比较),叶结点代表一个输出。 任何算法要得到输出就必须完成从根到叶的路径上的所有的运算。 如果叶结点为所有的输出,则问题的难度下界不低于决策树的深度。,第2节 问题的难度下界,用决策树确认问题的难度下界 二叉树的第k层最多有2k个结点。 2 1,空树的深度h等于0。 h log(+1) 当n1=0时, 0 2 1 ,即, log 0 +1,第2节 问题的难度下界,将第一步比较的元素Li做为决策树的根结点; 当比较xLi时,下一步比较的结点Lj做为Li结点的右子; 当比较x=Li时,算法结束。,例1:顺序有序表查找问题。,第2节 问题的难度下界,顺序查找算法的决策树,例1:

11、顺序有序表查找问题。,第2节 问题的难度下界,折半查找算法的决策树,例1:顺序有序表查找问题。,第2节 问题的难度下界,因此顺序有序表查找问题在以比较为基本运算的算法类中, 问题的计算复杂性为(logn)。,根据二叉树的性质,顺序有序表查找问题的决策树的深度h log +1 。,因此该问题的难度下界F n = log(+1) 。,折半查找算法的最坏时间复杂性为W n = log +1,W(n)=(F(n)。,例1:顺序有序表查找问题。,第2节 问题的难度下界,例:内排序问题。,第一次比较的元素对(xi, xj)标记为根结点(i, j); 当xixj时,若排序完毕,标记(i, j)结点的右子为叶

12、结点(输出); 当xixj时,若下一步要比较的元素为(xp, xq),标记(p, q)为(i, j)的右子;,第2节 问题的难度下界,例:内排序问题。,设二叉树深度为h(空树深度为0),则由二叉树性质,二叉树的结点数不超过 2 1。,又由二叉树性质n2=n0-1,因此当二叉树有n!片叶子时,总结点数:n2+n1+n0 = 2n0-1 = 2n!-1。因此:,在排序算法的比较决策树上,度为1的结点是不必要的,可以删去。,2!1 2 1,排序算法的比较决策树的叶结点数为n!,基于比较的排序问题的决策树就是n!个叶结点的一棵二叉树,问题的难度下界就是树的深度下界。 求解n!个叶结点的二叉树的深度下界

13、:,2! 2 , log 2! = log ! +1= log ,= log ,第2节 问题的难度下界,归约方法确认问题的难度下界 目标:确定问题P的难度下界。 已知:问题Q的难度下界为T(n)。 若能证明求解问题P的任何算法的工作量都不小于求解Q的算法的工作量,则问题P的难度下界至少是T(n)。,第2节 问题的难度下界,归约方法确认问题的难度下界 基本证明思路:,问题Q的输入IQ,求解问题Q的算法,难度下界为T(n),问题Q的解SQ(IQ),将IQ转换为IP,将SP(IP)转换为SQ(IQ),转换f,转换g,T1(n),T2(n),T3(n),第2节 问题的难度下界,归约方法确认问题的难度下界 问题P:求解正整数n的质因子分解式。 问题Q:判断正整数n是否是质数。,bool Q(n) return P(n) = 1; ,第2节 问题的难度下界,归约方法确认问题的难度下界 问题P:求平面上n个点中的最近点对。 问题Q:判断n个数的集合S中是否存在相同的元素。,Uniqueness(S) Points = (S1, 0), (S2, 0).;d = Nearest(Points);return d != 0; ,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报