[学习]算法设计与分析作业第56章v

合集下载

算法分析与设计作业参考答案

算法分析与设计作业参考答案

算法分析与设计作业参考答案《算法分析与设计》作业参考答案作业⼀⼀、名词解释:1.递归算法:直接或间接地调⽤⾃⾝的算法称为递归算法。

2.程序:程序是算法⽤某种程序设计语⾔的具体实现。

⼆、简答题:1.算法需要满⾜哪些性质?简述之。

答:算法是若⼲指令的有穷序列,满⾜性质:(1)输⼊:有零个或多个外部量作为算法的输⼊。

(2)输出:算法产⽣⾄少⼀个量作为输出。

(3)确定性:组成算法的每条指令清晰、⽆歧义。

(4)有限性:算法中每条指令的执⾏次数有限,执⾏每条指令的时间也有限。

2.简要分析分治法能解决的问题具有的特征。

答:分析分治法能解决的问题主要具有如下特征:(1)该问题的规模缩⼩到⼀定的程度就可以容易地解决;(2)该问题可以分解为若⼲个规模较⼩的相同问题,即该问题具有最优⼦结构性质;(3)利⽤该问题分解出的⼦问题的解可以合并为该问题的解;(4)该问题所分解出的各个⼦问题是相互独⽴的,即⼦问题之间不包含公共的⼦问题。

3.简要分析在递归算法中消除递归调⽤,将递归算法转化为⾮递归算法的⽅法。

答:将递归算法转化为⾮递归算法的⽅法主要有:(1)采⽤⼀个⽤户定义的栈来模拟系统的递归调⽤⼯作栈。

该⽅法通⽤性强,但本质上还是递归,只不过⼈⼯做了本来由编译器做的事情,优化效果不明显。

(2)⽤递推来实现递归函数。

(3)通过Cooper 变换、反演变换能将⼀些递归转化为尾递归,从⽽迭代求出结果。

后两种⽅法在时空复杂度上均有较⼤改善,但其适⽤范围有限。

三、算法编写及算法应⽤分析题: 1.冒泡排序算法的基本运算如下: for i ←1 to n-1 dofor j ←1 to n-i do if a[j]交换a[j]、a[j+1];分析该算法的时间复杂性。

答:排序算法的基本运算步为元素⽐较,冒泡排序算法的时间复杂性就是求⽐较次数与n 的关系。

(1)设⽐较⼀次花时间1;(2)内循环次数为:n-i 次,(i=1,…n ),花时间为:∑-=-=in j i n 1)(1(3)外循环次数为:n-1,花时间为:2.设计⼀个分治算法计算⼀棵⼆叉树的⾼度。

算法分析与设计习题集答案

算法分析与设计习题集答案

算法分析与设计习题集基础篇1、算法有哪些特点?它有哪些特征?它和程序的主要区别是什么?特点:就是一组有穷的规则,它规定了解决某一特定类型问题的一系列运算〔书上定义〕特征:输入、输出、有穷性、明确性、有效性区别:算法是完成特定任务的有限指令集。

程序是用电脑语言编写的写成特定任务的指令序列。

2、算法的时间复杂度指的是什么?如何表示?算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。

这是一个关于代表算法输入值的字符串的长度的函数。

时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。

〔百度百科〕3、算法的空间复杂度指的是什么?如何表示?一个程序的空间复杂度是指运行完一个程序所需内存的大小。

利用程序的空间复杂度,可以对程序的运行所需要的内存多少有个预先估计。

一个程序执行时除了需要存储空间和存储本身所使用的指令、常数、变量和输入数据外,还需要一些对数据进行操作的工作单元和存储一些为现实计算所需信息的辅助空间。

程序执行时所需存储空间包括以下两部分。

〔1〕固定部分。

这部分空间的大小与输入/输出的数据的个数多少、数值无关。

主要包括指令空间〔即代码空间〕、数据空间〔常量、简单变量〕等所占的空间。

这部分属于静态空间。

〔2〕可变空间,这部分空间的主要包括动态分配的空间,以及递归栈所需的空间等。

这部分的空间大小与算法有关。

一个算法所需的存储空间用f(n)表示。

S(n)=O(f(n))其中n为问题的规模,S(n)表示空间复杂度。

答:最坏情况时间复杂性:最好情况时间复杂性::I*是DN中使T(N, I*)到达Tmax(N)的合法输入;P(I)是在算法的应用中出现输入I的概率10、限界函数的功能是什么?答:用限界函数剪去得不到最优解的子树11、设某一函数定义如下:编写一个递归函数计算给定x的M〔x〕的值。

本函数是一个递归函数,其递归出口是:M〔x〕= x-10x>100递归体是:M〔M〔x+11〕〕x ≤100实现此题功能的递归函数如下:intm ( intx ){ int y;if ( x>100 )return(x-10 );else {y =m(x+11) ;return (m (y ));}procedure M(x)if x>100 thenreturn(x-10)elsereturn M(M(x+11))endifend M12、已知一个顺序表中的元素按元素值非递减有序排列,编写一个函数删除表中多余的值相同的元素。

《计算机算法-设计与分析导论》课后习题答案共39页word资料

《计算机算法-设计与分析导论》课后习题答案共39页word资料

4.1:在我们所了解的早期排序算法之中有一种叫做Maxsort 的算法。

它的工作流程如下:首先在未排序序列(初始时为整个序列)中选择其中最大的元素max ,然后将该元素同未排序序列中的最后一个元素交换。

这时,max 元素就包含在由每次的最大元素组成的已排序序列之中了,也就说这时的max 已经不在未排序序列之中了。

重复上述过程直到完成整个序列的排序。

(a) 写出Maxsort 算法。

其中待排序序列为E ,含有n 个元素,脚标为范围为0,,1n -K 。

void Maxsort(Element[] E) { int maxID = 0;for (int i=E.length; i>1; i--) { for (int j=0; j<i; j++) {if (E[j] > E[maxID]) maxID = k; E[i] <--> E[maxID];(b) 说明在最坏情况下和平均情况下上述算法的比较次数。

最坏情况同平均情况是相同的都是11(1)()2n i n n C n i -=-==∑。

4.2:在以下的几个练习中我们研究一种叫做“冒泡排序”的排序算法。

该算法通过连续几遍浏览序列实现。

排序策略是顺序比较相邻元素,如果这两个元素未排序则交换这两个元素的位置。

也就说,首先比较第一个元素和第二个元素,如果第一个元素大于第二个元素,这交换这两个元素的位置;然后比较第二个元素与第三个元素,按照需要交换两个元素的位置;以此类推。

(a)起泡排序的最坏情况为逆序输入,比较次数为11(1)()2n i n n C n i -=-==∑。

(b) 最好情况为已排序,需要(n-1)次比较。

4.3: (a)归纳法:当n=1时显然成立,当n=2时经过一次起泡后,也显然最大元素位于末尾;现假设当n=k-1是,命题也成立,则当n=k 时,对前k-1个元素经过一次起泡后,根据假设显然第k-1个元素是前k-1个元素中最大的,现在根据起泡定义它要同第k 个元素进行比较,当k 元素大于k-1元素时,它为k 个元素中最大的,命题成立;当k 元素小于k-1元素时,它要同k-1交换,这时处于队列末尾的显然时队列中最大的元素。

算法设计与分析习题解答

算法设计与分析习题解答

算法设计与分析习题解答第一章作业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.1、算法与程序
程序:是算法用某种程序设计语言的具体实现。 程序可以不满足算法的性质(4)。 例如操作系统,是一个在无限循环中执行的程序, 因而不是一个算法。 操作系统的各种任务可看成是单独的问题,每一个 问题由操作系统中的一个子程序通过特定的算法来实 现。该子程序得到输出结果后便终止。
渐近分析记号的若干性质
(1)传递性: ➢ f(n)= (g(n)), g(n)= (h(n)) f(n)= (h(n)); ➢ f(n)= O(g(n)), g(n)= O (h(n)) f(n)= O (h(n)); ➢ f(n)= (g(n)), g(n)= (h(n)) f(n)= (h(n)); ➢ f(n)= o(g(n)), g(n)= o(h(n)) f(n)= o(h(n)); ➢ f(n)= (g(n)), g(n)= (h(n)) f(n)= (h(n)); (2)反身性: ➢ f(n)= (f(n));f(n)= O(f(n));f(n)= (f(n)). (3)对称性: ➢ f(n)= (g(n)) g(n)= (f(n)) . (4)互对称性: ➢ f(n)= O(g(n)) g(n)= (f(n)) ; ➢ f(n)= o(g(n)) g(n)= (f(n)) ;
巢湖学院计算机科学与技术系
渐近分析记号的若干性质
规则O(f(n))+O(g(n)) = O(max{f(n),g(n)}) 的证明: ➢ 对于任意f1(n) O(f(n)) ,存在正常数c1和自然数n1,使得对
所有n n1,有f1(n) c1f(n) 。 ➢ 类似地,对于任意g1(n) O(g(n)) ,存在正常数c2和自然数
巢湖学院计算机科学与技术系
第1章 算法引论

智慧树知道网课《算法分析与设计(山东联盟)》课后章节测试满分答案

智慧树知道网课《算法分析与设计(山东联盟)》课后章节测试满分答案

第一章测试1【判断题】(10分)一个问题的同一实例可以有不同的表示形式A.错B.对2【判断题】(10分)同一数学模型使用不同的数据结构会有不同的算法,有效性有很大差别。

A.错B.对3【判断题】(10分)问题的两个要素是输入和实例。

A.对B.错4【单选题】(10分)算法与程序的区别是()A.有穷性B.确定性C.输出D.输入5【单选题】(10分)解决问题的基本步骤是()。

(1)算法设计(2)算法实现(3)数学建模(4)算法分析(5)正确性证明A.(3)(1)(5)(4)(2)B.(3)(4)(1)(5)(2)C.(1)(2)(3)(4)(5)D.(3)(1)(4)(5)(2)6【单选题】(10分)下面说法关于算法与问题的说法的是()。

A.算法是一种计算方法,对问题的每个实例计算都能得到正确答案。

B.证明算法不正确,需要证明对任意实例算法都不能正确处理。

C.如果一个算法能应用于问题的任意实例,并保证得到正确解答,称这个算法解答了该问题。

D.同一问题可能有几种不同的算法,解题思路和解题速度也会显著不同。

7【多选题】(10分)下面关于程序和算法的说法正确的是()。

A.算法的每一步骤必须要有确切的含义,必须是清楚的、无二义的。

B.程序总是在有穷步的运算后终止。

C.程序是算法用某种程序设计语言的具体实现。

D.算法是一个过程,计算机每次求解是针对问题的一个实例求解。

8【多选题】(10分)最大独立集问题和()问题等价。

A.最大团B.稳定匹配问题C.区间调度问题D.最小顶点覆盖9【多选题】(10分)给定两张喜欢列表,稳定匹配问题的输出是()。

A.完美匹配B.最大匹配C.稳定匹配D.没有不稳定配对10【单选题】(10分)问题变换的目的有()。

(1)复杂变简单(2)未知变已知(3)隐式变显式(4)难解变易解(5)以上都是。

A.(5)B.(1)C.(2)D.(3)E.(4)11【单选题】(10分)按照霍纳法则,计算p(x)=a n x n+a n-1x n-1+…+a1x1+a0的数量级为____。

算法设计与分析作业

算法设计与分析作业

算法设计与分析作业作业一:给一个数组,用冒泡排序、选择排序、合并排序与快速排序四种方法实现过程且比较,并把排序时间显示出来。

冒泡排序:原理:将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮。

在冒泡排序算法中我们要对这个“气泡”序列处理若干遍。

所谓一遍处理,就是自底向上检查一遍这个序列,并时刻注意两个相邻的元素的顺序是否正确。

如果发现两个相邻元素的顺序不对,即“轻”的元素在下面,就交换它们的位置。

代码:package maopao;public class maopao{public void paixu(){int array[] = {1,3,-2,0,8,7,-1,13,63,-20,120};long start = System.nanoTime();//开始时间for(int i = 0;i<array.length;i++){for(int j = i+1;j<array.length;j++){if(array[i] < array[j]){int tempt = array[i];array[i] = array[j];array[j] = tempt;}}}for(int i = 0 ; i< array.length; i++){System.out.println(" "+array[i]+" ");}long end = System.nanoTime();//结束时间System.out.println("所花费的时间为: "+(end-start)+"纳秒" );//运行时间}public static void main(String[] args){maopao m = new maopao();m.paixu();}}运行结果:选择排序:原理:对待排序的记录序列进行n-1遍的处理,第i遍处理是将L[i..n]中最小者与L[i]交换位置。

算法设计与分析智慧树知到课后章节答案2023年下山东交通学院

算法设计与分析智慧树知到课后章节答案2023年下山东交通学院

算法设计与分析智慧树知到课后章节答案2023年下山东交通学院山东交通学院第一章测试1.解决一个问题通常有多种方法。

若说一个算法“有效”是指( )A:这个算法能在一定的时间和空间资源限制内将问题解决B:这个算法能在人的反应时间内将问题解决C:这个算法比其他已知算法都更快地将问题解决D:(这个算法能在一定的时间和空间资源限制内将问题解决)和(这个算法比其他已知算法都更快地将问题解决)答案:(这个算法能在一定的时间和空间资源限制内将问题解决)和(这个算法比其他已知算法都更快地将问题解决)2.农夫带着狼、羊、白菜从河的左岸到河的右岸,农夫每次只能带一样东西过河,而且,没有农夫看管,狼会吃羊,羊会吃白菜。

请问农夫能不能过去?()A:不一定B:不能过去 C:能过去答案:能过去3.下述()不是是算法的描述方式。

A:自然语言 B:E-R图 C:程序设计语言 D:伪代码答案:E-R图4.有一个国家只有6元和7元两种纸币,如果你是央行行长,你会设置()为自动取款机的取款最低限额。

A:40 B:29 C:30 D:42答案:305.算法是一系列解决问题的明确指令。

()A:对 B:错答案:对6.程序=数据结构+算法()A:对 B:错答案:对7.同一个问题可以用不同的算法解决,同一个算法也可以解决不同的问题。

()A:错 B:对答案:对8.算法中的每一条指令不需有确切的含义,对于相同的输入不一定得到相同的输出。

( )A:错 B:对答案:错9.可以用同样的方法证明算法的正确性与错误性 ( )A:错 B:对答案:错10.求解2个数的最大公约数至少有3种方法。

( )A:对 B:错答案:错11.没有好的算法,就编不出好的程序。

()A:对 B:错答案:对12.算法与程序没有关系。

( )A:错 B:对答案:错13.我将来不进行软件开发,所以学习算法没什么用。

( )A:错 B:对答案:错14.gcd(m,n)=gcd(n,m m od n)并不是对每一对正整数(m,n)都成立。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(单位:s)
22个基站
42个基站
旅行商问题
针对昆明LTE网络,选取部分基站,计算基站间的 距离,在部分基站间引入边,得到
1)图1. n=15个基站顶点组成的图,以图中基站顶点 作为城市
——从n=22的基站图中,去除2组、7个位置相邻的 基站:2, 12, 15; 4, 6, 8,18
——对应地,从22个基站顶点的邻接矩阵(.xls)中, 去除这7个基站对应的行、列, 得到15个基站顶点的邻接矩阵
分析结果
1. 算法运行数据,记录在(前一张)表格中 2. <lgn, lgt(n)>散点图 3. 线性回归表达式lgt(n) = k* lgn + b
不许抄袭!
不同台式机、笔记本电脑的硬件配置不同 ,在2台不同机器上程序运行时间t(n)不可 能完全相同!!!
图的m着色问题
从昆明LTE网络中,选取部分基站,计算基站间的 距离,在部分基站间引入边,得到
方法 根据资料/讲义,算法在一个随机解上的最坏复杂度为O(n3) 假设: t(n)=O(nk),则 lgt(n) ~klgn,
通过对数据<n, lgn, lgt(n)>的线性回归分析,以lgn为自变量x ,以lgt(n)为因变量y,得到回归表达式 y = k*x +b,判断: 1)阶次k的范围( ? ≤ k ≤ ?), 2)t(n) ~ C nk
模,但需要保持10组数据。
例如,如果问题规模n=500,000时,算法运行时间 已经达到4小时左右,可以在5,000至500,000间取 10个不同的n值。考察这10个问题规模n下的算法 运行时间
此时,n可以取值:
5,000
10,000
50,000
100,000
200,000 250,000
270,000 300,000
400,000 500,000
要求
1. 对n的10个不同取值,编程统计程序运行时间t(n)和为了 得到正确解需要产生的初始随机解个数m
2. 分析程序运行时间t(n)、初始随机解个数m随问题规模n 的变化规律 n~t(n)、 n~m
注意: 1)采用程序设计语言提供的时间测量函数,测量程序运行 时间; 2)了解程序结构,添加代码,统计产生的初始随机解个数m 3)如果由于问题规模n过小,无法测出程序准确运行时间, 可适当增大n的数值
•1
7
5
•2
•2
•1
8
•2
•5 •3
3
•1
3
•1 9
•9 •7
•6 •3
0
图4. 30个基站组成的无向图
旅行商问题(续)
参照教科书,编程实现回溯法、分支限界法,求解 旅行商问题,并对比2个算法对同一规模问题的运 行时间
参照图1、图2,针对指定起始城市,计算最短旅行 路径 1) 图1 15个基站图,起始城市结点20 2) 图2 20个基站图,起始城市结点20
1)图1. n=22个基站顶点组成的图 2)图3. n=42个基站顶点组成的图
说明:2个基站间如果无直接路径,则邻接矩阵中2个基 站顶点间的权重为99999
•2 0
•9
•3 •1 3
•2 •1 5
•5 •1 7
•7
•1 6
•22
•1
1
•1
8
•1 9
•8
•2 •1
10 •1
•1
2
•1
4
图1. 22个基站组成的无向图
——从n=22的基站图中,去除2个位置相邻的基站: 4, 6
——对应地,从22个基站顶点的邻接矩阵(.xls)中, 去除这2个基站对应的行、列,
得到20个基站顶点的邻接矩阵
•5 •20
•17
•9
•7
•3
•16
•13
•2 •12
•15
•22
•1 1
•19
去除顶点{6,4}及关联边 •18 •6
•8
•21 •10
[学习]算法设计与分析作业 第56章v
n皇后问题
分析掌握讲义ppt和“附件1.基于局部快速搜索的N 皇后问题求解”中给出的“n皇后局部快速搜索”计算 程序的原理、算法步骤、代码结构
利用给定的程序,针对10个不同问题规模n,计算 正确的n后排列方案。
注意:
根据实验机器的实际运行情况,选择合适问题规
散点图,观察lgn ~ lgt(n)>间的数据变化趋势 Step4. 利用Excel线性回归分析函数,针对数据对<n, lgn,
lgt(n)>,回归分析,得到表达式 y = k*x +b,即
lgt(n) = k* lgn &#view/a628ff6db84ae45c3b358c44.html
•5 •20
•17
•9
•7
•3
•16
•22
•1 1
•19
去除顶点{6,4,8,18}及关联边
•18 •6
•8
•13
•21 •10
•4
•1
•2
•12 •14
•15
去除顶点{2,12,15}及关联边 图1. 15个基站组成的无向图
旅行商问题
2)图2. n=20个基站顶点组成的图,以图中基站顶点 作为城市
0
•4
•2
•2
2
7
•3 1
•5
•4
2
•3
•1
3
•3
•2
0
3
•4 •1 1 4
•2
•2 8
•1
9 •8
•1
•1 7
8
•1
•1 2
•9
•7
3
•3
•1
6
5
•2 0
•24
•11
•3 8
•1
•3 9
•2 6
•34
•2 1
•3
图的m着色问题
要求
问题
用到的颜色总数m 搜索过的结点总 程序运行时间T
(色数)
数L
n m t(n) lg t(n) 2 lg n 3 lg n
对数据<n, lgn, lgt(n)>的线性回归分析
Step1. 计算数据对<n, lgn, lgt(n)> Step2. 以lgn为自变量x,以lgt(n)为因变量y Step3. 利用Excel的”数据分析”功能,作出<n, lgn, lgt(n)>的
•4
•1
•14
图2. 20个基站组成的无向图
•5 •20
•22
•17 •1
1
•9
•7
•18

•16
•19 •8
•13
•21 •10
•1
•2
•12
•14
•15
图3. 22个城市组成的无向图
•6 •4
•8
•1
•2
6
4
•2
2
•1 2
•2
•1
•1
9
•4
•2
•2
8
1
7
0
•1
•2
•2
1
6
•1
•2
5
0
•1
4
•6 •4
•8
•1
•2
6
4
•2
2
•1 2
•2
•1
•1
9
•4
•2
•2
8
1
7
0
•1
•2
•2
1
6
•1
•2
5
0
•1
4
•1
7
5
•2
•2
•1
8
•2
•5 •3
3
•1
3
•1 9
•9 •7
•6 •3
0
图2. 30个基站组成的无向图
图3. 42个基站组成的无向图
•1
•6
•3 5
•2 5
6
•3 7
•3 2
•2
•4 9
相关文档
最新文档