算法设计与分析分布式部分习题解答
《计算机算法设计和分析》习题及答案解析

《计算机算法设计与分析》习题及答案一.选择题1、二分搜索算法是利用( A )实现的算法。
A、分治策略B、动态规划法C、贪心法D、回溯法2、下列不是动态规划算法基本步骤的是( A )。
A、找出最优解的性质B、构造最优解C、算出最优解D、定义最优解3、最大效益优先是( A )的一搜索方式。
A、分支界限法B、动态规划法C、贪心法D、回溯法4. 回溯法解旅行售货员问题时的解空间树是( A )。
A、子集树B、排列树C、深度优先生成树D、广度优先生成树5.下列算法中通常以自底向上的方式求解最优解的是( B )。
A、备忘录法B、动态规划法C、贪心法D、回溯法6、衡量一个算法好坏的标准是( C )。
A 运行速度快B 占用空间少C 时间复杂度低D 代码短7、以下不可以使用分治法求解的是( D )。
A 棋盘覆盖问题B 选择问题C 归并排序D 0/1背包问题8. 实现循环赛日程表利用的算法是( A )。
A、分治策略B、动态规划法C、贪心法D、回溯法9.下面不是分支界限法搜索方式的是( D )。
A、广度优先B、最小耗费优先C、最大效益优先D、深度优先10.下列算法中通常以深度优先方式系统搜索问题解的是( D )。
A、备忘录法B、动态规划法C、贪心法D、回溯法11.备忘录方法是那种算法的变形。
( B )A、分治法B、动态规划法C、贪心法D、回溯法12.哈夫曼编码的贪心算法所需的计算时间为( B )。
A、O(n2n)B、O(nlogn)C、O(2n)D、O(n)13.分支限界法解最大团问题时,活结点表的组织形式是( B )。
A、最小堆B、最大堆C、栈D、数组14.最长公共子序列算法利用的算法是( B )。
A、分支界限法B、动态规划法C、贪心法D、回溯法15.实现棋盘覆盖算法利用的算法是( A )。
A、分治法B、动态规划法C、贪心法D、回溯法16.下面是贪心算法的基本要素的是( C )。
A、重叠子问题B、构造最优解C、贪心选择性质D、定义最优解17.回溯法的效率不依赖于下列哪些因素( D )A.满足显约束的值的个数B. 计算约束函数的时间C.计算限界函数的时间D. 确定解空间的时间18.下面哪种函数是回溯法中为避免无效搜索采取的策略( B )A.递归函数 B.剪枝函数 C。
华中师范大学网络教育学院《算法设计与分析》练习题库及答案

《算法设计与分析》练习题库及答案(加粗红色字体为2013下新增题目) 一、概念题:请解释下列术语。
1.数据类型2.队列3.多项式复杂度4.满二叉树5. NP-难度6.算法7. SIMD(并行算法)8.连通图9.抽象数据类型10.指数复杂度11.递归12.完全二叉树13.状态空间树14. NP-完全的15.算法与过程16.有向图与无向图17.树18. P类问题19. 确定的算法20. NP问题21. 最小生成树22. 动态规划23. 数据结构24. 排序二、填空题1. 简单递选分类过程中所需进行移动存储的操作次数较少,其最大值为___________。
2. 一组有序的n个数,采用逐个查找算法查找一给定的数是否出现在序列中,其算法复杂性为_____________。
3. 动态规划实际上是研究一类__________________的算法,其应用非常广泛。
4. BFS算法的中文名称是______________________算法。
5. 一棵树中定义为该树的高度或深度。
6. 二分检索树要求树中所有结点中的元素满足。
7. 比较树的结点由称为和的两种结点组成。
8. 外结点用一个结点表示,在二分检索算法中它表示不成功检索的一种情况。
9. 由根到所有内部结点的距离之和称为 ;由根到所有外部结点的距离之和称为 .10.max和min被看成是两个内部函数,它们分别求取两个元素的大者和小者,并认为每次调用其中的一个函数都只需作次元素比较。
11.如果用分治策略来设计分类算法,则可使最坏情况时间变为o(n logn)。
这样的算法称为。
12.贪心算法可行的第一个基本要素是。
13. 当一个问题的最优解包含着它的子问题的最优解时,称此问题具有性质。
14. 二路归并模式可以用树来表示。
15. kruskal算法对于每一个无向连通图g产生一棵。
16.因为如果有环,则可去掉这个环且不增加这条路径的长度(不含有负长度的环)。
如果k是这条最短路径上的一个中间结点,那么—由i到k和由k 到j的这两条子路径应分为别是由i到k和.由k到j的最短路径。
算法设计与分析习题答案1-6章

习题11.图论诞生于七桥问题。
出生于瑞士的伟大数学家欧拉(Leonhard Euler ,1707—1783)提出并解决了该问题。
七桥问题是这样描述的:一个人是否能在一次步行中穿越哥尼斯堡(现在叫加里宁格勒,在波罗的海南岸)城中全部的七座桥后回到起点,且每座桥只经过一次,图1.7是这条河以及河上的两个岛和七座桥的草图。
请将该问题的数据模型抽象出来,并判断此问题是否有解。
七桥问题属于一笔画问题。
输入:一个起点 输出:相同的点 1, 一次步行2, 经过七座桥,且每次只经历过一次 3, 回到起点该问题无解:能一笔画的图形只有两类:一类是所有的点都是偶点。
另一类是只有二个奇点的图形。
2.在欧几里德提出的欧几里德算法中(即最初的欧几里德算法)用的不是除法而是减法。
请用伪代码描述这个版本的欧几里德算法 1.r=m-n2.循环直到r=0 2.1 m=n 2.2 n=r 2.3 r=m-n 3 输出m3.设计算法求数组中相差最小的两个元素(称为最接近数)的差。
要求分别给出伪代码和C ++描述。
//采用分治法//对数组先进行快速排序 //在依次比较相邻的差 #include <iostream> using namespace std;int partions(int b[],int low,int high) {图1.7 七桥问题int prvotkey=b[low];b[0]=b[low];while (low<high){while (low<high&&b[high]>=prvotkey)--high;b[low]=b[high];while (low<high&&b[low]<=prvotkey)++low;b[high]=b[low];}b[low]=b[0];return low;}void qsort(int l[],int low,int high){int prvotloc;if(low<high){prvotloc=partions(l,low,high); //将第一次排序的结果作为枢轴 qsort(l,low,prvotloc-1); //递归调用排序由low 到prvotloc-1qsort(l,prvotloc+1,high); //递归调用排序由 prvotloc+1到 high}}void quicksort(int l[],int n){qsort(l,1,n); //第一个作为枢轴,从第一个排到第n个}int main(){int a[11]={0,2,32,43,23,45,36,57,14,27,39};int value=0;//将最小差的值赋值给valuefor (int b=1;b<11;b++)cout<<a[b]<<' ';cout<<endl;quicksort(a,11);for(int i=0;i!=9;++i){if( (a[i+1]-a[i])<=(a[i+2]-a[i+1]) )value=a[i+1]-a[i];elsevalue=a[i+2]-a[i+1];}cout<<value<<endl;return 0;}4.设数组a[n]中的元素均不相等,设计算法找出a[n]中一个既不是最大也不是最小的元素,并说明最坏情况下的比较次数。
1.算法设计与分析习题及答案

1.算法设计与分析习题及答案《计算机算法设计与分析》习题及答案2013 秋《计算机算法设计与分析》习题及答案一.选择题1、二分搜索算法是利用( A )实现的算法。
A、分治策略B、动态规划法C、贪心法D、回溯法2、下列不是动态规划算法基本步骤的是( A )。
A、找出最优解的性质B、构造最优解C、算出最优解D、定义最优解3、最大效益优先是( A )的一搜索方式。
A、分支界限法B、动态规划法C、贪心法D、回溯法4、在下列算法中有时找不到问题解的是( B )。
A、蒙特卡罗算法B、拉斯维加斯算法C、舍伍德算法D、数值概率算法5. 回溯法解旅行售货员问题时的解空间树是( A )。
A、子集树B、排列树C、深度优先生成树D、广度优先生成树6.下列算法中通常以自底向上的方式求解最优解的是( B )。
A、备忘录法B、动态规划法C、贪心法D、回溯法7、衡量一个算法好坏的标准是( C )。
A 运行速度快B 占用空间少C 时间复杂度低D 代码短8、以下不可以使用分治法求解的是( D )。
A 棋盘覆盖问题B 选择问题C 归并排序D 0/1背包问题9. 实现循环赛日程表利用的算法是( A )。
A、分治策略B、动态规划法C、贪心法D、回溯法10、下列随机算法中运行时有时候成功有时候失败的是( C )A 数值概率算法B 舍伍德算法C 拉斯维加斯算法D 蒙特卡罗算法11.下面不是分支界限法搜索方式的是( D )。
A、广度优先B、最小耗费优先C、最大效益优先D、深度优先12.下列算法中通常以深度优先方式系统搜索问题解的是( D )。
A、备忘录法B、动态规划法C、贪心法D、回溯法13.备忘录方法是那种算法的变形。
( B )A、分治法B、动态规划法C、贪心法D、回溯法14.哈夫曼编码的贪心算法所需的计算时间为( B )。
A、O(n2n)B、O(nlogn)C、O(2n)D、O(n)15.分支限界法解最大团问题时,活结点表的组织形式是(B )。
《计算机算法设计和分析》习题及答案解析

《计算机算法设计与分析》习题及答案一.选择题1、二分搜索算法是利用( A )实现的算法。
A、分治策略B、动态规划法C、贪心法D、回溯法2、下列不是动态规划算法基本步骤的是( A )。
A、找出最优解的性质B、构造最优解C、算出最优解D、定义最优解3、最大效益优先是(A )的一搜索方式。
A、分支界限法B、动态规划法C、贪心法D、回溯法4. 回溯法解旅行售货员问题时的解空间树是( A )。
A、子集树B、排列树C、深度优先生成树D、广度优先生成树5.下列算法中通常以自底向上的方式求解最优解的是(B )。
A、备忘录法B、动态规划法C、贪心法D、回溯法6、衡量一个算法好坏的标准是( C )。
A 运行速度快B 占用空间少C 时间复杂度低D 代码短7、以下不可以使用分治法求解的是( D )。
A 棋盘覆盖问题B 选择问题C 归并排序D 0/1背包问题8. 实现循环赛日程表利用的算法是(A )。
A、分治策略B、动态规划法C、贪心法D、回溯法9.下面不是分支界限法搜索方式的是(D )。
A、广度优先B、最小耗费优先C、最大效益优先D、深度优先10.下列算法中通常以深度优先方式系统搜索问题解的是(D )。
A、备忘录法B、动态规划法C、贪心法D、回溯法11.备忘录方法是那种算法的变形。
( B )A、分治法B、动态规划法C、贪心法D、回溯法12.哈夫曼编码的贪心算法所需的计算时间为(B )。
A、O(n2n)B、O(nlogn)C、O(2n)D、O(n)13.分支限界法解最大团问题时,活结点表的组织形式是(B )。
A、最小堆B、最大堆C、栈D、数组14.最长公共子序列算法利用的算法是(B)。
A、分支界限法B、动态规划法C、贪心法D、回溯法15.实现棋盘覆盖算法利用的算法是(A )。
A、分治法B、动态规划法C、贪心法D、回溯法16.下面是贪心算法的基本要素的是(C )。
A、重叠子问题B、构造最优解C、贪心选择性质D、定义最优解17.回溯法的效率不依赖于下列哪些因素( D )A.满足显约束的值的个数B. 计算约束函数的时间C.计算限界函数的时间D. 确定解空间的时间18.下面哪种函数是回溯法中为避免无效搜索采取的策略(B )A.递归函数 B.剪枝函数 C。
算法分析与设计作业(一)及参考答案

《算法分析与设计》作业(一)本课程作业由两部分组成。
第一部分为“客观题部分”,由15个选择题组成,每题1分,共15分。
第二部分为“主观题部分”,由简答题和论述题组成,共15分。
作业总分30分,将作为平时成绩记入课程总成绩。
客观题部分:一、选择题(每题1分,共15题)1、递归算法:(C )A、直接调用自身B、间接调用自身C、直接或间接调用自身D、不调用自身2、分治法的基本思想是将一个规模为n的问题分解为k个规模较小的字问题,这些子问题:(D )A、相互独立B、与原问题相同C、相互依赖D、相互独立且与原问题相同3、备忘录方法的递归方式是:(C )A、自顶向下B、自底向上C、和动态规划算法相同D、非递归的4、回溯法的求解目标是找出解空间中满足约束条件的:(A )A、所有解B、一些解C、极大解D、极小解5、贪心算法和动态规划算法共有特点是:(A )A、最优子结构B、重叠子问题C、贪心选择D、形函数6、哈夫曼编码是:(B)A、定长编码B、变长编码C、随机编码D、定长或变长编码7、多机调度的贪心策略是:(A)A、最长处理时间作业优先B、最短处理时间作业优先C、随机调度D、最优调度8、程序可以不满足如下性质:(D )A、零个或多个外部输入B、至少一个输出C、指令的确定性D、指令的有限性9、用分治法设计出的程序一般是:(A )A、递归算法B、动态规划算法C、贪心算法D、回溯法10、采用动态规划算法分解得到的子问题:( C )A、相互独立B、与原问题相同C、相互依赖D、相互独立且与原问题相同11、回溯法搜索解空间的方法是:(A )A、深度优先B、广度优先C、最小耗费优先D、随机搜索12、拉斯维加斯算法的一个显著特征是它所做的随机选性决策有可能导致算法:( C )A、所需时间变化B、一定找到解C、找不到所需的解D、性能变差13、贪心算法能得到:(C )A、全局最优解B、0-1背包问题的解C、背包问题的解D、无解14、能求解单源最短路径问题的算法是:(A )A、分支限界法B、动态规划C、线形规划D、蒙特卡罗算法15、快速排序算法和线性时间选择算法的随机化版本是:( A )A、舍伍德算法B、蒙特卡罗算法C、拉斯维加斯算法D、数值随机化算法主观题部分:二、写出下列程序的答案(每题2.5分,共2题)1、请写出批处理作业调度的回溯算法。
算法设计与分析第二版课后习题及解答(可编辑)

算法设计与分析第二版课后习题及解答算法设计与分析基础课后练习答案习题1.14.设计一个计算的算法,n是任意正整数。
除了赋值和比较运算,该算法只能用到基本的四则运算操作。
算法求 //输入:一个正整数n2//输出:。
step1:a1; step2:若a*an 转step 3,否则输出a; step3:aa+1转step 2;5. a.用欧几里德算法求gcd(31415,14142)。
b. 用欧几里德算法求gcd(31415,14142),比检查min{m,n}和gcd(m,n)间连续整数的算法快多少倍?请估算一下。
a. gcd31415, 14142 gcd14142, 3131 gcd3131, 1618 gcd1618, 1513 gcd1513, 105 gcd1513, 105 gcd105, 43 gcd43, 19 gcd19, 5 gcd5, 4 gcd4, 1 gcd1, 0 1.b.有a可知计算gcd(31415,14142)欧几里德算法做了11次除法。
连续整数检测算法在14142每次迭代过程中或者做了一次除法,或者两次除法,因此这个算法做除法的次数鉴于1?14142 和 2?14142之间,所以欧几里德算法比此算法快1?14142/11 ≈1300 与2?14142/11 ≈ 2600 倍之间。
6.证明等式gcdm,ngcdn,m mod n对每一对正整数m,n都成立.Hint:根据除法的定义不难证明:如果d整除u和v, 那么d一定能整除u±v;如果d整除u,那么d也能够整除u的任何整数倍ku.对于任意一对正整数m,n,若d能整除m和n,那么d一定能整除n和rm mod nm-qn;显然,若d能整除n和r,也一定能整除mr+qn和n。
数对m,n和n,r具有相同的公约数的有限非空集,其中也包括了最大公约数。
故gcdm,ngcdn,r7.对于第一个数小于第二个数的一对数字,欧几里得算法将会如何处理?该算法在处理这种输入的过程中,上述情况最多会发生几次?Hint:对于任何形如0mn的一对数字,Euclid算法在第一次叠代时交换m和n, 即gcdm,ngcdn,m并且这种交换处理只发生一次.8.a.对于所有1≤m,n≤10的输入, Euclid算法最少要做几次除法?1次b. 对于所有1≤m,n≤10的输入, Euclid算法最多要做几次除法?5次gcd5,8习题1.21.农夫过河P?农夫W?狼 G?山羊 C?白菜2.过桥问题1,2,5,10---分别代表4个人, f?手电筒4. 对于任意实系数a,b,c, 某个算法能求方程ax^2+bx+c0的实根,写出上述算法的伪代码可以假设sqrtx是求平方根的函数算法Quadratica,b,c//求方程ax^2+bx+c0的实根的算法//输入:实系数a,b,c//输出:实根或者无解信息If a≠0D←b*b-4*a*cIf D0temp←2*ax1←-b+sqrtD/tempx2←-b-sqrtD/tempreturn x1,x2else if D0 return ?b/2*ael se return “no real roots”else //a0if b≠0 return ?c/belse //ab0if c0 return “no real numbers”else return “no real roots”5. 描述将十进制整数表达为二进制整数的标准算法a.用文字描述b.用伪代码描述解答:a.将十进制整数转换为二进制整数的算法输入:一个正整数n输出:正整数n相应的二进制数第一步:用n除以2,余数赋给Kii0,1,2,商赋给n第二步:如果n0,则到第三步,否则重复第一步第三步:将Ki按照i从高到低的顺序输出b.伪代码算法 DectoBinn//将十进制整数n转换为二进制整数的算法//输入:正整数n//输出:该正整数相应的二进制数,该数存放于数组Bin[1n]中i1while n!0 doBin[i]n%2;nintn/2;i++;while i!0 doprint Bin[i];i--;9.考虑下面这个算法,它求的是数组中大小相差最小的两个元素的差.算法略对这个算法做尽可能多的改进.算法 MinDistanceA[0..n-1]//输入:数组A[0..n-1]//输出:the smallest distance d between two of its elements 习题1.3考虑这样一个排序算法,该算法对于待排序的数组中的每一个元素,计算比它小的元素个数,然后利用这个信息,将各个元素放到有序数组的相应位置上去.a.应用该算法对列表”60,35,81,98,14,47”排序b.该算法稳定吗?c.该算法在位吗?解:a. 该算法对列表”60,35,81,98,14,47”排序的过程如下所示:b.该算法不稳定.比如对列表”2,2*”排序c.该算法不在位.额外空间for S and Count[]4.古老的七桥问题第2章习题2.17.对下列断言进行证明:如果是错误的,请举例a. 如果tn∈Ogn,则gn∈Ωtnb.α0时,Θαgn Θgn解:a这个断言是正确的。
算法设计与分析习题解答

算法设计与分析习题解答第一章作业1.证明下列Ο、Ω和Θ的性质1)f=Ο(g)当且仅当g=Ω(f)证明:充分性。
若f=Ο(g),则必然存在常数c1>0和n0,使得?n≥n0,有f≤c1*g(n)。
由于c1≠0,故g(n) ≥ 1/ c1 *f(n),故g=Ω(f)。
必要性。
同理,若g=Ω(f),则必然存在c2>0和n0,使得?n≥n0,有g(n) ≥ c2 *f(n).由于c2≠0,故f(n) ≤ 1/ c2*f(n),故f=Ο(g)。
2)若f=Θ(g)则g=Θ(f)证明:若f=Θ(g),则必然存在常数c1>0,c2>0和n0,使得?n≥n0,有c1*g(n) ≤f(n) ≤ c2*g(n)。
由于c1≠0,c2≠0,f(n) ≥c1*g(n)可得g(n) ≤ 1/c1*f(n),同时,f(n) ≤c2*g(n),有g(n) ≥ 1/c2*f(n),即1/c2*f(n) ≤g(n) ≤ 1/c1*f(n),故g=Θ(f)。
3)Ο(f+g)= Ο(max(f,g)),对于Ω和Θ同样成立。
证明:设F(n)= Ο(f+g),则存在c1>0,和n1,使得?n≥n1,有F(n) ≤ c1 (f(n)+g(n))= c1 f(n) + c1g(n)≤ c1*max{f,g}+ c1*max{f,g}=2 c1*max{f,g}所以,F(n)=Ο(max(f,g)),即Ο(f+g)= Ο(max(f,g))对于Ω和Θ同理证明可以成立。
4)log(n!)= Θ(nlogn)证明:由于log(n!)=∑=ni i 1log ≤∑=ni n 1log =nlogn ,所以可得log(n!)= Ο(nlogn)。
由于对所有的偶数n 有,log(n!)= ∑=ni i 1log ≥∑=nn i i 2/log ≥∑=nn i n 2/2/log ≥(n/2)log(n/2)=(nlogn)/2-n/2。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2. 证明在引理2.6中,一个处理器在图G中是从Pr 证明在引理2.6中 一个处理器在图G中是从Pr 可达的,当且仅当它的parent变量曾被赋过值 变量曾被赋过值。 可达的,当且仅当它的parent变量曾被赋过值。
解: 引理2.6:在异步模型的每个容许执行中,算法2.2构造一棵 引理2.6:在异步模型的每个容许执行中,算法2.2构造一棵 以pr为根的生成树。 pr为根的生成树。 两个方向证明题目:依据是算法2.2和题目条件(异步模型的 两个方向证明题目:依据是算法2.2和题目条件(异步模型的 每个容许执行中),不是空口讨论。方法不一,原则是有理 有据,逻辑清楚。 <1> => pr可达,(因为图G是由parent与children确定的静 pr可达,(因为图G是由parent与children确定的静 止图)收到m才会加入图中,所以可达结点收到过m 止图)收到m才会加入图中,所以可达结点收到过m,执行 了alg2.2第5行。由于是容许执行,第7行,即parent:=j也 alg2.2第 行。由于是容许执行,第7行,即parent:=j也 会执行。也就是被赋值。 <2> <=当第7行执行过,由于是容许执行,第5行也执行过, <=当第7行执行过,由于是容许执行,第5 即收到过m,而m是由pr发出的,所以可达。 即收到过m,而m是由pr发出的,所以可达。
6.
证明同步环上不存在匿名的、 证明同步环上不存在匿名的、一致性的 Leader选举算法 Leader选举算法。 选举算法。
解:由Lemma3.1可得。 解:由Lemma3.1可得。 假设R是大小为n>1的环(非均匀),A 假设R是大小为n>1的环(非均匀),A是其上的一 个匿名算法,它选中某处理器为leader。因为环是 个匿名算法,它选中某处理器为leader。因为环是 同步的且只有一种初始配置,故在R 同步的且只有一种初始配置,故在R上A只有唯一的 合法执行。 Lemma3.1: 在环R上算法A Lemma3.1: 在环R上算法A的容许执行里,对于每 轮k,所有处理器的状态在第k轮结束时是相同的。 ,所有处理器的状态在第k Note:每个处理器同时宣布自己是Leader! Note:每个处理器复杂度为O(n)。 修改Alg2.3,使其时间复杂度为O(n)。 解:两种考虑方式: <1> 在每个处理器中维护一本地变量,同时添加一 消息类型,在处理器Pi转发M时,发送消息N 消息类型,在处理器Pi转发M时,发送消息N通知 其余的未访问过的邻居,这样其邻居在转发M 其余的未访问过的邻居,这样其邻居在转发M时 便不会向Pi转发。 便不会向Pi转发。 <2> 在消息M和<parent>中维护一发送数组,记录 在消息M <parent>中维护一发送数组,记录 已经转发过M 已经转发过M的处理器名称。 两种方式都是避免向已转发过M 两种方式都是避免向已转发过M的处理器发送消息 M,这样DFS树外的边不再耗时,时间复杂度也降 ,这样DFS树外的边不再耗时,时间复杂度也降 为O(n)。 O(n)。
解:考虑运行在环上的分布式算法的1 time时间复杂性和时 解:考虑运行在环上的分布式算法的1-time时间复杂性和时 间复杂性。 <1> 1-time时间复杂性: 1-time时间复杂性: 满足条件O2:发送和接收一个msg之间的时间恰好是一个时 满足条件O2:发送和接收一个msg之间的时间恰好是一个时 间单位,每个阶段节点转发消息都是同步进行,从而1 间单位,每个阶段节点转发消息都是同步进行,从而1-time 时间复杂度仅与环直径相关,为O(D)。 时间复杂度仅与环直径相关,为O(D)。 <2> 时间复杂度: 满足条件T2:一个msg的发送和接收之间的时间至多为一个 满足条件T2:一个msg的发送和接收之间的时间至多为一个 时间单位,即为O(1)。节点转发消息并非同步进行,消息转 时间单位,即为O(1)。节点转发消息并非同步进行,消息转 发轨迹可能呈链状结构,时间复杂性与环节点个数相关,为 O(n)。 O(n)。
3. 证明Alg2.3构造一颗以Pr为根的DFS树。 证明Alg2.3构造一颗以 为根的 构造一颗以Pr为根的DFS树
解:类似引理2.6的证明过程。先证连通,再证无环(反 解:类似引理2.6的证明过程。先证连通,再证无环(反 证),再证DFS树。依据是算法2.3与DFS的定义。 证),再证DFS树。依据是算法2.3与DFS的定义。 可以证明:在有子结点与兄弟结点未访问时,子结点总是先 加入树中。根据alg2.3 xxx步证明这一点。 加入树中。根据alg2.3 的xxx步证明这一点。
8.
若将环Rrev划分为长度为 若将环Rrev划分为长度为j(j为2的幂)的连 划分为长度为j 的幂) 续片段,则所有这些片段是次序等价的。 续片段,则所有这些片段是次序等价的。
解:。。。。
附1:“表面上,1-time复杂性至少等于时间复杂性, :“表面上,1 time复杂性至少等于时间复杂性, 因为T2假定下的最坏时间不会高于O2假定下的时间。 因为T2假定下的最坏时间不会高于O2假定下的时间。 但事实并非如此,而往往O1和O2假定之下的 但事实并非如此,而往往O1和O2假定之下的 1-time复杂性是前一种时间复杂性的一个下界。”为 time复杂性是前一种时间复杂性的一个下界。”为 什么one-time复杂性是时间复杂性的下界呢? 什么one-time复杂性是时间复杂性的下界呢?
4. 证明Alg2.3时间复杂度为O(m)。 证明Alg2.3时间复杂度为 时间复杂度为O(m)。
解: <1>同步模型:每一轮中,根据算法,有且只有一个消息( <1>同步模型:每一轮中,根据算法,有且只有一个消息(M or Parent or Reject)在传输,从算法的第6、14、16、20、 Reject)在传输,从算法的第6 14、16、20、 25行发送消息的语句中可以发现:消息只发往一个处理器 25行发送消息的语句中可以发现:消息只发往一个处理器 结点,除根结点外,所有的处理器都是收到消息后才被激 活,所以,不存在多个处理器在同一轮发送消息的情况, 所以时间复杂度与消息复杂度一致。 <2> 异步模型:在一个时刻内至多有一个消息在传输,因 此,时间复杂度也与消息复杂度一致。消息复杂度:对任 一边,可能传输的消息最多有4个,即2 一边,可能传输的消息最多有4个,即2个M,2个相应M 个相应M 的消息(Parent Reject),所以消息复杂度为O(m)。 的消息(Parent or Reject),所以消息复杂度为O(m)。 综上,该算法的时间复杂度为O(m)。 综上,该算法的时间复杂度为O(m)。
算法设计与分析 分布式部分习题解答
helibao@ 2012.1.4
1. 分析在同步和异步模型下汇集算法的复杂性。 分析在同步和异步模型下汇集算法的复杂性。
解:与广播算法分析时间复杂性的步骤一致,一两句的说明 与广播算法分析时间复杂性的步骤一致, 不是分析。 不是分析。 <1> 同步模型 引理:在汇集算法的每个容许执行里, 引理:在汇集算法的每个容许执行里,树中每个高为 t 轮里收到所有孩子的msg。 子树根结点在第 t 轮里收到所有孩子的msg。 归纳证明。。。 归纳证明。。。 定理:当生成树高为 d 时,存在一个时间复杂度为O(d)的 定理: 存在一个时间复杂度为O(d)的 同步汇集算法。 同步汇集算法。 <2> 异步模型 引理:在汇集算法的每个容许的执行里, 引理:在汇集算法的每个容许的执行里,树中每个高为 t 收到所有孩子的msg。 的子树根结点在时刻 t 收到所有孩子的msg。 归纳证明。。。 归纳证明。。。 定理: 存在一个时间复杂度为O(d)的 定理:当生成树高为 d 时,存在一个时间复杂度为O(d)的 异步汇集算法。 异步汇集算法。
例如:echo协议,即应答协议,主要用于调 例如:echo协议,即应答协议,主要用于调 试和检测中,是路由也是网络中最常用的数 据包,可以通过发送echo包知道当前的连接 据包,可以通过发送echo包知道当前的连接 节点有哪些些路径,并且通过往返时间能得 出路径长度。echo算法的实现,如果转发消 出路径长度。echo算法的实现,如果转发消 息同步进行,则对应1 time时间复杂性,为 息同步进行,则对应1-time时间复杂性,为 O(D);如果不同步转发消息,网络路径可 O(D);如果不同步转发消息,网络路径可 能呈链状结构,即对应时间复杂度O(N)。 能呈链状结构,即对应时间复杂度O(N)。
祝大家考试顺利
谢谢!
Note:考虑时间复杂度,任一节点可以在O(d)时间 Note:考虑时间复杂度,任一节点可以在O(d)时间 内将询问包发送到网络上的其它节点,但却可能需 要O(N)的时间接收其它节点发来的响应包。 O(N)的时间接收其它节点发来的响应包。
附2:算法3.2(同步Leader选举算法) :算法3.2(同步Leader选举算法) 为何非唤醒msg要延迟2^i 为何非唤醒msg要延迟2^i -1轮? 如何修改算法3.2来改善时间复杂性? 如何修改算法3.2来改善时间复杂性? 解: <1> 降低消息复杂度(Id最小的节点被选举为 降低消息复杂度(Id最小的节点被选举为 Leader,Leader节点消息的转发速度最快)。 Leader,Leader节点消息的转发速度最快)。 <2> 方案1:添加Relay变量,保证消息在转发节点 方案1:添加Relay变量,保证消息在转发节点 不延迟,时间复杂度由O(n*2^i)降为O(N*2^i+n-N), 不延迟,时间复杂度由O(n*2^i)降为O(N*2^i+n-N), N为自发唤醒的节点数。 方案2:原算法延迟函数为f(id)=2^id,时间复杂度 方案2:原算法延迟函数为f(id)=2^id,时间复杂度 为O(n*2^i)。通过重新定义延迟函数来降低时 n*2^i)。通过重新定义延迟函数来降低时 间复杂度,如f(id)=c*id等。消息复杂度提高? 间复杂度,如f(id)=c*id等。消息复杂度提高? Note:思考方案2 Note:思考方案2中消息复杂度和时间复杂度的关 系!!!