算法分析第五次作业答案(卜东波)
算法考试题目及答案解析

算法考试题目及答案解析一、单项选择题1. 在算法中,以下哪个选项不是算法的特性?A. 有穷性B. 确定性C. 可行性D. 随机性答案:D解析:算法的特性包括有穷性、确定性和可行性。
有穷性指的是算法必须在执行有限步骤后终止;确定性指的是算法的每一步操作都是明确的,不存在二义性;可行性指的是算法的每一步操作都必须足够基本,以至于可以准确地执行。
随机性并不是算法的特性之一。
2. 以下哪个排序算法的时间复杂度是O(n^2)?A. 快速排序B. 归并排序C. 冒泡排序D. 堆排序答案:C解析:冒泡排序是一种简单的排序算法,其时间复杂度为O(n^2),在最坏的情况下,需要比较每一对元素。
快速排序的平均时间复杂度为O(n log n),归并排序的时间复杂度为O(n log n),堆排序的时间复杂度为O(n log n)。
3. 在图的遍历中,深度优先搜索(DFS)使用的栈是什么类型的栈?A. 后进先出栈B. 先进后出栈C. 先进先出栈D. 随机进随机出栈答案:B解析:深度优先搜索(DFS)使用的数据结构是栈,遵循的是先进后出的原则,即后进先出栈。
4. 哈希表解决冲突的方法不包括以下哪一项?A. 分离链接法B. 开放寻址法C. 链地址法D. 二分查找法答案:D解析:哈希表解决冲突的方法主要包括分离链接法、开放寻址法和链地址法。
二分查找法是一种查找算法,不是用来解决哈希表冲突的方法。
5. 以下哪个算法不是动态规划算法?A. 斐波那契数列B. 0-1背包问题C. 最短路径问题D. 快速排序答案:D解析:斐波那契数列、0-1背包问题和最短路径问题都可以使用动态规划算法来解决。
快速排序是一种排序算法,不属于动态规划算法。
二、多项选择题1. 以下哪些是算法设计中常用的数据结构?A. 数组B. 链表C. 栈D. 队列E. 树答案:ABCDE解析:数组、链表、栈、队列和树都是算法设计中常用的数据结构,它们各自有不同的特点和适用场景。
算法设计与分析课后答案

算法设计与分析课后答案5..证明等式gcd(m,n)=gcd(n,m mod n)对每⼀对正整数m,n都成⽴.Hint:根据除法的定义不难证明:●如果d整除u和v, 那么d⼀定能整除u±v;●如果d整除u,那么d也能够整除u的任何整数倍ku.对于任意⼀对正整数m,n,若d能整除m和n,那么d⼀定能整除n和r=m mod n=m-qn;显然,若d能整除n和r,也⼀定能整除m=r+qn和n。
数对(m,n)和(n,r)具有相同的公约数的有限⾮空集,其中也包括了最⼤公约数。
故gcd(m,n)=gcd(n,r)6.对于第⼀个数⼩于第⼆个数的⼀对数字,欧⼏⾥得算法将会如何处理?该算法在处理这种输⼊的过程中,上述情况最多会发⽣⼏次?Hint:对于任何形如0<=m并且这种交换处理只发⽣⼀次.7.a.对于所有1≤m,n≤10的输⼊, Euclid算法最少要做⼏次除法?(1次)b. 对于所有1≤m,n≤10的输⼊, Euclid算法最多要做⼏次除法?(5次)gcd(5,8)习题1.21.(农夫过河)P—农夫W—狼G—⼭⽺C—⽩菜2.(过桥问题)1,2,5,10---分别代表4个⼈, f—⼿电筒4. 对于任意实系数a,b,c, 某个算法能求⽅程ax^2+bx+c=0的实根,写出上述算法的伪代码(可以假设sqrt(x)是求平⽅根的函数)算法Quadratic(a,b,c)//求⽅程ax^2+bx+c=0的实根的算法//输⼊:实系数a,b,c//输出:实根或者⽆解信息D←b*b-4*a*cIf D>0temp←2*ax1←(-b+sqrt(D))/tempx2←(-b-sqrt(D))/tempreturn x1,x2else if D=0 return –b/(2*a)else return “no real roots”else //a=0if b≠0 return –c/belse //a=b=0if c=0 return “no real numbers”else return “no real roots”5.描述将⼗进制整数表达为⼆进制整数的标准算法a.⽤⽂字描述b.⽤伪代码描述解答:a.将⼗进制整数转换为⼆进制整数的算法输⼊:⼀个正整数n输出:正整数n相应的⼆进制数第⼀步:⽤n除以2,余数赋给Ki(i=0,1,2...),商赋给n第⼆步:如果n=0,则到第三步,否则重复第⼀步第三步:将Ki按照i从⾼到低的顺序输出b.伪代码算法DectoBin(n)//将⼗进制整数n转换为⼆进制整数的算法//输⼊:正整数n//输出:该正整数相应的⼆进制数,该数存放于数组Bin[1...n]中i=1while n!=0 do {Bin[i]=n%2;n=(int)n/2;i++;}while i!=0 do{print Bin[i];i--;}9.考虑下⾯这个算法,它求的是数组中⼤⼩相差最⼩的两个元素的差.(算法略) 对这个算法做尽可能多的改进.算法MinDistance(A[0..n-1])//输⼊:数组A[0..n-1]//输出:the smallest distance d between two of its elements习题1.31.考虑这样⼀个排序算法,该算法对于待排序的数组中的每⼀个元素,计算⽐它⼩的元素个数,然后利⽤这个信息,将各个元素放到有序数组的相应位置上去.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.(古⽼的七桥问题)习题1.41.请分别描述⼀下应该如何实现下列对数组的操作,使得操作时间不依赖数组的长度. a.删除数组的第i 个元素(1<=i<=n)b.删除有序数组的第i 个元素(依然有序) hints:a. Replace the i th element with the last element and decrease the array size of 1b. Replace the ith element with a special symbol that cannot be a value of the array ’s element(e.g., 0 for an array of positive numbers ) to mark the i th position is empty. (―lazy deletion ‖)第2章习题2.17.对下列断⾔进⾏证明:(如果是错误的,请举例) a. 如果t(n )∈O(g(n),则g(n)∈Ω(t(n)) b.α>0时,Θ(αg(n))= Θ(g(n)) 解:a. 这个断⾔是正确的。
东北师范大学22春“计算机科学与技术”《算法分析与设计》作业考核题库高频考点版(参考答案)试题号2

东北师范大学22春“计算机科学与技术”《算法分析与设计》作业考核题库高频考点版(参考答案)一.综合考核(共50题)1.函数atoi(“1234”)的函数返回值是1234。
()A.错误B.正确参考答案:B2.已知一列数{8,9,7,4,1,2},使用简单选择排序法对其按照升序进行排列,第0趟比较之后数列为()A.8,9,7,4,1,2B.1,9,7,4,8,2C.8,7,4,1,2,9D.1,2,8,9,7,4参考答案:B3.在C语言中字符串的头文件是string.h。
()A.错误B.正确参考答案:B4.如何一步步的跟踪代码,找到问题,搞明白为何程序不能正常运行,这个过程称为()。
A.编写程序B.调试程序C.执行程序D.编译程序参考答案:B5.下列说法错误的是()A.使用高级计算机语言,如C、C++、Java,编写的程序,都需要经过编译器编译或解释,才能转化成机器能够识别并能执行的二进制代码B.如何一步步的跟踪代码,找到问题,搞明白为何程序不能正常运行,这个过程称为调试程序C.自动化的工具同样也能够帮助你跟踪程序,尤其当程序很复杂时效果更加明显,这种工具叫做调试器D.调试器不能解决程序中出现的问题参考答案:D6.快速排序的速度在所有排序方法中为最快,而且所需附加空间也最少。
()A.错误B.正确参考答案:A7.穷举法,也称辗转法,是一种针对于密码的破译方法,即将密码进行逐个推算直到找出真正的密码为止。
()A.错误B.正确参考答案:A8.例如“DisplayInfo()”和“UserName”这样的命名规则是()。
A.匈牙利命名法B.骆驼命名法C.下划线命名法D.帕斯卡命名法参考答案:D9.图中有关路径的定义是()。
C.由不同边所形成的序列D.上述定义都不是参考答案:A10.字符数组可用字符串来初始化。
()A.错误B.正确参考答案:B11.一个n个顶点的连通无向图,其边的个数至少为()。
A.n-1B.nC.n+1D.nlogn参考答案:A12.在程序调试中,我们需要借助于()来中断程序的运行,查看变量的值。
高二数学算法与框图试题答案及解析

高二数学算法与框图试题答案及解析1.(8分).已知程序框图为:指出其功能(用算式表示)【答案】解:算法的功能为:【解析】略2.设,,c,则()A.B.C.D.【答案】B【解析】故选B3.计算机执行右面的程序段后,输出的结果是()A.1,3B.4,1C.0,0D.6,0【答案】B【解析】分析:分析程序中各变量、各语句的作用,再根据流程图所示的顺序,可知:该程序的作用是利用顺序结构计算变量a,b的值,并输出,逐行分析程序各语句的功能不难得到结果.解答:解:∵a=1,b=3∴a=a+b=3+1=4,∴b=a-b=4-3=1.故输出的变量a,b的值分别为:4,1故选B点评:根据流程图(或伪代码)写程序的运行结果,是算法这一模块最重要的题型,其处理方法是::①分析流程图(或伪代码),从流程图(或伪代码)中即要分析出计算的类型,又要分析出参与计算的数据(如果参与运算的数据比较多,也可使用表格对数据进行分析管理)?②建立数学模型,根据第一步分析的结果,选择恰当的数学模型③解模.4.用秦九韶算法计算多项式f (x)=8x4+5x3+3x2+2x+1在x=2时的值时,v= .2【答案】45【解析】略5.在下列各数中,最大的数是()A.B.C.D.【答案】A【解析】将四个选项的不同进位制分别转换为十进制为:A.;B.;C.;D.显然最大的是A.故答案为A.【考点】1.进位制之间的转化;2.比较大小.6.按流程图的程序计算,若开始输入的值为,则输出的的值是()A.B.C.D.【答案】D【解析】由程序框图,得,输出值.【考点】流程图.7.阅读右边的程序框图,运行相应的程序,则输出s的值为().A.1B.2C.3D.0【答案】【解析】时,,,否,;,否时,;,否时,;,是,输出.【考点】程序框图的应用8.若如下框图所给的程序运行结果为,那么判断框中应填入的关于的条件是()A.B.C.D.【答案】【解析】开始,第一轮,;第二轮,;第三轮,;第四轮,;由题可知,第四轮退出循环,所以判断框应填:,故答案选.【考点】程序框图的识别.9.执行如图所示的程序框图,若输入,则输出的()A.B.C.D.【答案】A【解析】程序执行中的数据变化如下:不成立,输出【考点】程序框图10.执行右边的程序框图,若第一次输入的a的值为-1.2,第二次输入的a的值为1.2,则第一次、第二次输出的a的值分别为()A.0.2,0.2B.0.2,0.8C.0.8,0.2D.0.8,0.8【答案】C【解析】程序执行中的数据变化如下:不成立,输出;不成立,输出【考点】程序框图11.某程序的框图如图所示,执行该程序,若输入的p为16,则输出的n的值为__________.【答案】4【解析】第一次循环:S=3,n=2;第二次循环:S=3+6=9,n=3;第三次循环:S=9+9=18,n=4;此时18<p不成立,跳出循环体.故输出的n的值为4.【考点】程序框图12.把11化为二进制数为().A.1 011(2)B.11 011(2)C.10 110(2)D.0 110(2)【答案】A【解析】,故选A。
算法分析课后习题解答

2-34、Gray码是一个长度为2n的序列。
序列中无相同元素。
每个元素都是长度为n位的串。
相邻元素恰好只有一位不同。
用分治策略设计一个算法对任意的n构造相应的Gray码。
答:设序列中元素由0、1组成。
当 n=1 时 Gray码的序列有2个元素(21=2),分别为:0,| 1当 n=2 时 Gray码的序列有4个元素(22=4),分别为:00,10,| 11,01当 n=3 时 Gray码的序列有8个元素(23=8),分别为:000,100,110,010,| 011,111,101,001当 n=4 时 Gray码的序列有16个元素(24=16),分别为:0000,1000、1100、0100,0110,1110,1010,0010,| 0011,1011,1111,0111,0101,1101,1001,0001从上面的列举可得如下规律:n=k时,Gray码的序列有2k个元素,分别为:n=k-1时的Gray码元素正向后加0,得前2k-1个元素,反向后加1的后2k-1个元素。
如 n=2时 Gray码序列的4个元素分别为:00,10, 11,01当 n=3 时 Gray码序列的前4个元素(23=8),分别为:000,100,110,010是n=2时Gray码四个元素正向后加0,即:000,100, 110,010Gray码序列的后4个元素(23=8),分别为:011,111,101,001 是n=2时Gray码四个元素反向后加1,n=2时Gray码四个元素:00,10, 11,01即:011,111,101,001可以看出,Gray码可以用分治策略,递归实现,2n的Gray码可以用2n-1的Gray码构成。
算法描述:void Gray( type a[],int n){ char a[];if (n==1) { a[0]=’0’;a[1]=’1’;}if (n>1){ Gray(a[],n-1);int k=2n-1-1; //Gray码的个数,因为数组下标从0开始int i=k;for (int x=k;x>=0;x--){char y=a[x];a[x]=y+’0’;a[i+1]=y+’1’; i++;}}}3-7 给定由n个英文单词组成的一段文章,……答:设由n 个单词组成的一段文章可以表示为 A[1:n],它的“漂亮打印”方案记为B[1:n],构成该最优解的最小空格数(最优值)记为m[1][n](1)分析最优解的结构:A[1:n]的最优解B[1:n],必然在第k个单词处断开,那么A[1:k]是“漂亮打印”,并且A[k+1:n]也是“漂亮打印”。
算法分析习题参考答案第五章

1.最大子段和问题:给定整数序列 n a a a ,,,21 ,求该序列形如∑=jik k a 的子段和的最大值: ⎭⎬⎫⎩⎨⎧∑=≤≤≤ji k k n j i a 1max ,0max1) 已知一个简单算法如下:int Maxsum(int n,int a,int& best i,int& bestj){ int sum = 0;for (int i=1;i<=n;i++){ int suma = 0;for (int j=i;j<=n;j++){ suma + = a[j]; if (suma > sum){ sum = suma; besti = i; bestj = j; } }}return sum;}试分析该算法的时间复杂性。
2) 试用分治算法解最大子段和问题,并分析算法的时间复杂性。
3) 试说明最大子段和问题具有最优子结构性质,并设计一个动态规划算法解最大子段和问题。
分析算法的时间复杂度。
(提示:令1()max,1,2,,jk i j nk ib j a j n ≤≤≤===∑)解:1)分析按照第一章,列出步数统计表,计算可得)(2n O2)分治算法:将所给的序列a[1:n]分为两段a [1:n/2]、a[n/2+1:n],分别求出这两段的最大子段和,则a[1:n]的最大子段和有三种可能: ①a[1:n]的最大子段和与a[1:n/2]的最大子段和相同; ②a[1:n]的最大子段和与a[n/2+1:n]的最大子段和相同; ③a[1:n]的最大子段和为两部分的字段和组成,即j n jil n i ja a a a a+++++=+⎥⎦⎥⎢⎣⎢=⎥⎦⎥⎢⎣⎢∑ 122;intMaxSubSum ( int *a, int left , int right){int sum =0;if( left==right)sum = a[left] > 0? a[ left]:0 ;else{int center = ( left + right) /2;int leftsum =MaxSubSum ( a, left , center) ;int rightsum =MaxSubSum ( a, center +1, right) ;int s_1 =0;int left_sum =0;for ( int i = center ; i >= left; i--){left_sum + = a [ i ];if( left_sum > s1)s1 = left_sum;}int s2 =0;int right_sum =0;for ( int i = center +1; i <= right ; i++){right_sum + = a[ i];if( right_sum > s2)s2 = right_sum;}sum = s1 + s2;if ( sum < leftsum)sum = leftsum;if ( sum < rightsum)sum = rightsum;}return sum;}int MaxSum2 (int n){int a;returnMaxSubSum ( a, 1, n) ;} 该算法所需的计算时间T(n)满足典型的分治算法递归分式T(n)=2T(n/2)+O(n),分治算法的时间复杂度为O(nlogn)3)设}{max )(1∑=≤≤=j ik k ji a j b ,则最大子段和为).(max max max max max 11111j b a a nj jik k ji n j j ik k nj n i ≤≤=≤≤≤≤=≤≤≤≤==∑∑},,,,max {)(11211j j j j j j j a a a a a a a a a j b +++++=---最大子段和实际就是)}(,),2(),1(max{n b b b .要说明最大子段和具有最优子结构性质,只要找到其前后步骤的迭代关系即可。
Dynamic Programming(卜东波计算机算法作业题5)

Dynamic ProgrammingSuppose you have one machine and a set of n jobs a 1, a 2, . . . ,a n to process on that machine. Each job a j has a processing time t j , a profit p j , and a deadline d j . The machine can process only one job at a time, and job a j must run uninterruptedly for t j consecutive time units. If job a j is completed by its deadline d j , you receive a profit p j , but if it is completed after its deadline, you receive a profit of 0. Give an algorithm to find the schedule that obtains the maximum amount of profit, assuming that all processing times are integers between 1 and n. What is the running time of your algorithm?解:3.1算法思想本题为动态规划的最大利润作业调度问题,具有最优子结构性质和子问题重叠性质。
首先我们按照截止期限递增的顺序对所有工作进行排序,选择和安排任务子集J i ,使得J 中的每个作业都能在各自的时限内完工,且使获得的利润∑P i 总和最大。
令d=max{d i } 1≤i≤n ,b=min{n,d},任何最大利润的可完工子序列中的作业个数必不大于b 。
08—09年期末考试算法设计与分析试卷B及答案

附表5:考试课程: 班级: 姓名: 学号:------------------------------------------------- 密 ---------------------------------- 封 ----------------------------- 线 ---------------------------------------------------------、⑴ 证明:令F(N)=O(f),则存在自然数N1、C1,使得对任意的自然数N 1N ≥,有: F(N));(1N f C ≤……………………………..(2分)同理可令G(N)=O(g), 则存在自然数N 2、C2,使得对任意的自然数N 2N ≥,有:G(N));(2N g C ≤ ……………………………..(3分)令 C3=m ax{C1,C2},N3=ma x{N1,N2},则对所有的N 3N ≥,有: F(N));(3)(1N f C N f C ≤≤G (N ));(3)(2N g C N g C ≤≤ ……………………………..(5分) 故有:O (f)+O(g)=F(N)+G(N))())()((3)(3)(3g f O N g N f C N g C N f C +=+=+≤ 因此有:O(f)+O(g)=O(f+g ) ……………………………..(7分)⑵ 解:① 因为:;01033)103(lim 222=+-+∞→nn n n n n 由渐近表达式的定义易知: 103322+n n 是的渐近表达式。
……………………………..(3分)② 因为:;0/12121)/121(lim=+-+∞→nn n 由渐近表达式的定义易知:21是21+1/n 的渐近表达式。
……………………………..(6分)2、解:经分析结论为:(1));5(log log 2+=n n θ………………………….(5分)(2))(log 2n n O =;………………………….(10分)(3))(log 2n n Ω=;………………………….(15分)3、解:用分治法求解的算法代码如下:int partit io n(float A[],int p,in t r ) {i nt i=p,j =r+1; f lo at x =a[p]; w hile (1) {while(a[++i]<x&&i <r); w hile(a[--j]>x);if(i>=j)break;a[i]];……………………………..(4分)[ja};a[p]=a[j];a[j]=x;returnj;……………………………..(7分)}voidQuicksort(floata[], int p, intr){if( p<r){int q=partition(a,p,r);……………………………..(10分)Quicksort(a,p,q-1);Quicksort(a,q+1,r);}};Quicksort(a,0,n-1);……………………………..(13分)4、解:用动态规划算法求解的算法代码如下:int lcs_len(char *a,char *b,int c[][N]){intm=strlen(a),n=strlen(b),i,j;for(i=0;i<=m;i++) c[i][0]=0;for(j=1;j<=n;j++) c[0][j]=0;……………………………..(4分)for(i=1;i<=m;i++)for(j=1;j<=n;j++)if(a[i-1]= =b[j-1])c[i][j]=c[i-1][j-1]+1;else if(c[i-1][j]>=c[i][j-1])c[i][j]=c[i-1][j];else c[i][j]=c[i][j-1];……………………………..(7分) return c[m][n];……………………………..(8分)};char *build_lcs(char s[],char *a,char *b){intk,i=strlen(a),j=strlen(b),c[N][N];k=lcs_len(a,b,c);s[k]=’\0’;while(k>0){if(c[i][j]==c[i-1][j])i--;……………………………..(11分)else if(c[i][j]==c[i][j-1]) j--;else{s[--k]=a[i-1];i--,j--;}}returns;……………………………..(15分)}5、解:int greedy(vecter<int>x,int n){int sum=0,k=x.size();for(int j=0;j<k;j++)if(x[j]>n){cout<<”No solution”<<endl;re tur n -1;……………………………..(6分) }for(int i=0,s=0;i<k ;i ++){ s+=x[i];if(s>n){ sum ++;s=x[i];}……………………………..(9分)}return sum;……………………………..(12分)} 6、解:此题用动态规划算法求解:i nt di st( ) {i nt m=a.si ze ( ); int n=b.s ize( );vec tor<i nt>d(n+1,0);for(int i =1;i<=n;i ++) d[i]=i;……………………………..(5分) f or(i=1;i<=m;i++){ int y=i -1;f or(int j =1;j<=n;j ++){ int x =y; y=d[j];int z=j>1?d[j-1]:i; ……………………………..(10分) int del=a[i-1]= =b[j-1]?0:1;d [j ]=min(x+d el,y+1,z+1); ……………………………..(13分) } }ret urn d[n]; ……………………………..(16分) }7、试用回溯法解决下列整数变换问题:关于整数的变换和定义如下:⎣⎦2/)(;3)(i i g i i f ==。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
算法第五次作业答案
第1题:
答:TURE
法一:我们已知用Kruskal算法能够生成G的一棵最小生成树,而在此算法运行时最小费用边e*将被首先添加进来,从而可知最后生成的最小生成树肯定包含边e*
法二:假设边e*(代价最少的边)的两个顶点为v1和v2,图G中共有N 个点,为v1、v2、…v N。
现在假设已经找出了除v1外的点全部被纳入的最优生成树,现在只要将v1以最小代价连入即可,由于e*是v1连接的代价最少的边(v1连接的其余边要付出的代价都比e*大),所以一定会选择e*连入以生成最小生成树。
第2题:
答:
1) 算法如下:
While 图G中还有环
用BFS算法遍历图G,找到一个环后删除环中费用最大的边;
返回删除了一条边后的图G;
Endwhile
消除了所有的环后最后剩下的图G即为最小生成树
2) 算法正确性证明:
使用BFS广度搜索遍历整个图,找到环后删除环中代价最大的边,之后重新遍历,每遍历一次消除一个环,最后留下的图中没有环,并且剩下的边都是相对代价小的,因此生成的是最小生成树。
3) 复杂度:
因为最多不超过n+8个边,所以环至多只有9个,所以整个BFS 遍历最多不超过9次,而BFS 算法复杂度为O(V+E)=O(n),故总的复杂度是O(n).
第3题:
(1)算法描述如下:
①初始化一个具有n 个顶点0条边的图G
②对给定的度数序列0L 进行排序得11212{,,,}d n n L d d d d d =≥≥≥……且…… ③1L 中前n d 个数均减1并舍去最后一个数得
21211L {1,1,,1,,,}n n d d n d d d d d +-=---…………
④在进行第③步处理的同时对图G 中的顶点进行连线并用2L 替换0L ; ⑤重复步骤②—④直到0L 为空,此时得到的图G 即为所求
(2)算法正确性证明:
①如果图G 具有n-1个顶点且度数序列为2L ,在图G 中添加一个顶
点n v ,使得n v 与顶点12,,,n
d v v v ……相连,得到图'G 且其度数序列为1L 。
②如果图G 具有n 个顶点且度数序列为1L ,则图G 中必然存在顶点n v 且n v 与12,,,n
d v v v ……相连,在删除顶点n v 后得到图'G 且其度数序列为2L 。
(3)算法复杂度分析
该算法的时间消耗主要用于度数序列的排序,排序所用时间为(1)/2n n +,即时间复杂度为O(2n )。
第4题:
答:给出一个算法确定是否存在一个有效的调度,则算法如下:
1) 计算1
n i
i b =∑和1n
i i r t =∑的值 2) 比较1n i i b =∑≤1n
i i r t =∑,若成立,则为YES;否则为NO 显然算法运行时间主要为第一步的时间,容易得出T(n)=O(n)。
验证算法正确性:
1) 若1n i
i b =∑>1n i i r t =∑,则显然不管用何种调度算法都不能满足限制条
件。
2) 若1n i i b =∑≤1n
i i r t =∑,设i i i b r t =,对n 个i r 由小到大排序为''''12,......i n r r r r ,则由小到大输出对应的视频流显然为一个有效调度,即在满足等式情况下,存在有效调度。
第5题:
第6题:
1) 算法:
new line
for i = 1 to n
if SizeofCurrentLine + w i <= L
place the ith word on the line
else place the ith word on a new line
2)算法复杂度显然为O(n).
3)证明:
用数学归纳法证明。