版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
..第1章算法概述〔1算法的性质包括输入、输出、确定性、有限性。〔2算法复杂性:算法所运行所需要的计算机资源的量,所需资源多,算法的复杂性高;反之则复杂性低。时间复杂性:需要时间资源的量<指令数>空间复杂性:需要空间资源的量<存储器的大小>计算题第2章递归与分治策略〔1分治法主要思想:将一个规模为n的问题分解为k个规模较小子问题,这些子问题互相独立且与原问题相同,递归解决这些子问题,然后将各子问题的解合并得到原问题解。〔2使用分治算法找一组数的最大最小数。采用如下设计思想:将数据集S均分为S1和S2;求解S1和S2中的最大和最小值;最终的最大和最小值可以计算得到:min<S1,S2>,max<S1,S2>;采用同样的处理方法递归处理S1和S2。可以得到该算法复杂性的递推公式如下根据递推公式推导出该复杂性表达式:分治法所能解决的问题具有的特征.〔1该问题规模缩小到一定的程度就可以容易地解决;因为问题的计算复杂性一般是随着问题规模的增加而增加,因此大部分问题满足这个特征。〔2该问题可分解为若干个规模较小相同问题,即该问题具有"最优子结构性质"。这条特征是应用分治法前提,它也是大多数问题可满足的,反映了递归思想的应用。〔3利用该问题分解出的子问题的解可以合并为该问题的解。能否利用分治法完全取决于问题是否具有这条特征,如果具备了前两条特征,而不具备第三条特征,则可以考虑贪心算法或动态规划。〔4该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。这条特征涉及到分治法的效率,如果各子问题是不独立的,则分治法要做许多不必要的工作,重复地解公共的子问题,此时虽然也可用分治法,但一般用动态规划较好。4数组A含有9个元素,这些元素恰好是第2至第10个Fibonacci数,写出在数组A中查找x=17的二分查找过程〔写出过程即可,不需要写代码。〔5下面给出了非递归形式的二分搜索方法代码,请补充下划线处的代码。template<classType>intBinarySearch<Typea[],constType&x,intn>{//在a[0]<=a[1]<=...<=a[n–1]中搜索x,找到x时返回其在数组中的位置,否则返回-1intleft=0;intright=n-1;while<left<=right>{intmiddle=<left+right>/2;if<x==a[middle]>returnmiddle;if<x>a[middle]>left=middle+1;elseright=middle-1;}return-1;//未找到x}〔6判断下列递归算法〔计算n!是否正确,如果不正确,请说明原因,并改正。intfactoral<inti>{if<n>0>return<n*factoral<n-1>>;}[分析]不正确,因为递归函数没有边界值的判断,无法得出正确的值。另外入口参数与下面的使用不一致。修改如下:intfactoral<intn>{if<n==0>return1;return<n*factoral<n–1>>;}第3章动态规划〔1备忘录法是那种算法的变形〔B。A、分治算法B、动态规划算法C、贪心算法D、回溯法〔2分治法与动态规划算法的相同点和不同点是什么?〔3利用动态规划法设计如下的矩阵连乘最小次数问题,写出动态规划法求解过程。A1:40×25A2:25×25A3:25×15解:m[0][0]=m[1][1]=m[2][2]=m[3][3]=0r=2i=1j=2m[1][2]=40*25*10=10000i=2j=3m[2][3]=25*10*15=3750r=3i=1j=3m[1][3]=m[1][1]+m[2][3]+40*25*15=18750k=2t=m[1][2]+m[3][3]+40*10*15=16000m[1][3]=t=16000〔4具有最优子结构的算法有〔D。A.概率算法B.回溯法C.分支限界法D.动态规划法〔5证明题。计算题〔7有一个箱子容量为V〔正整数,同时有n个物品,每个物品有一个体积〔正整数。要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。编写程序实现,自定义输入和输出。[提示]使用二维数组f[i][j],表示前i个物品装入容量为j的箱子能获得的最大体积,则状态转移方程:f[i][j]=max<f[i-1][j],f[i-1][j-a[i]]+a[i]>;〔8已知字符串A的值是sot,字符串B的值是stop,将字符串A转换为字符串B的编辑距离值为〔。A.1B.2C.3D.4[分析]根据"编辑距离"的定义,可知答案为B。sot通过一个"增加"操作变为stot,然后通过一个"编辑"操作就可以变为stop。注意答案C是错误的。〔9有一辆货车,货车有载重为D,有n件货物,每个货物有重量wi,价值pi。问怎么装能够使装上货车的物品的总价值最大〔使用动态规划算法[分析]"0-1"背包问题。第4章贪心算法简述贪心法的基本思想:设置顶点集合S并不断地作贪心选择来扩充这个集合。一个顶点属于集合S当且仅当从源到该顶点的最短路径长度已知。初始时,S中仅含有源。设u是G的某一个顶点,把从源到u且中间只经过S中顶点的路称为从源到u的特殊路径,并用数组dist记录当前每个顶点所对应的最短特殊路径长度。Dijkstra算法每次从V-S〔顶点集合V"减去"集合S中取出具有最短特殊路长度的顶点u,将u添加到S中,同时对数组dist作必要的修改。一旦S包含了所有V中顶点,dist就记录了从源到所有其它顶点之间的最短路径长度。贪心算法的两个重要性质:贪心选择性质和最优子结构性质贪心算法和动态规划算法都要求问题具有最优子结构性质,这是两类算法的一个共同点。〔1对于具有最优子结构的问题应该选用贪心算法?〔2是否能用动态规划算法求解的问题也能用贪心算法求解?〔2证明上述问题具有"贪心选择性质"和"最优子结构性质"。〔3设7个独立作业{1,2,3,4,5,6,7}由3台相同机器M1,M2,M3加工处理。各作业所需的处理时间分别{2,14,4,16,6,5,3}。任何作业可以在任何一台机器上加工处理,但未完工前不允许中断处理。任何作业不能拆分成更小的子作业。按贪心算法产生作业调度,所需加工时间为多少?〔4某体育馆有一篮球球场出租,共有10位客户申请租用。每个客户申请租用的时间单元如下表所示,其中i表示客户编号,s<i>表示开始租用时刻,f<i>表示结束租用时刻。同一时刻该篮球球场只能租借给一位客户。请使用贪心算法设计一个租用安排方案,在这10位客户里面,使得体育馆能尽可能满足多位客户的需求。并计算出针对上表的10个客户申请,最多可以安排几位客户申请。[分析]这是一个活动安排问题。将这10位客户的申请按照结束时间f<i>递增排序,如下表:〔1选择申请1〔1,4。〔2依次检查后续客户申请,只要与已选择的申请相容不冲突,则选择该申请。直到所有申请检查完毕。申请4〔5,7、申请8〔8,11、申请10〔11,13。〔3最后可以满足:申请1〔1,4、申请4〔5,7、申请8〔8,11、申请10〔11,13共4个客户申请。这是可以满足的最大客户人数。〔5下列哪个问题不能用贪心法求解?〔A.最优装载问题B.活动安排问题C.0-1背包问题D.多机调度问题[分析]答案为C。〔6设有n个程序{1,2,...,n}要存放在长度为L的磁带上,程序i存放在磁带上的长度为li,1<=i<=n。确定这n个程序在磁带上的一个存储方案,使得能够在磁带上存储尽可能多的程序。[分析]程序存储问题,类似"最优装载"问题。先对程序长度进行排序,然后用循环累加排序后的程序长度,并计数程序个数。解题时写出解题思想和基本的算法〔代码框架即可。第5章回溯法〔1回溯法解旅行商问题时的解空间树是〔B。A、子集树B、排列树C、深度优先生成树D、广度优先生成树〔2下面〔剪枝函数是回溯法中避免无效搜索采取的策略〔3用回溯法搜索排列树的算法是什么?voidBacktrack<intt>{if<t>n>output<x>;{elsefor<inti=t;i<=n;i++>{swap<x[t],x[i]>;if<Constraint<t>&&Bound<t>>Backtrack<t+1>;swap<x[t],x[i]>;}}}在调用Backtrack<1>执行回溯搜索之前,先将变量数组x初始化为单位排列<1,2,…,n>〔4对批处理作业调度问题:作业需要机器处理时间的表如下,如果调度方案为:1,2,3,计算完成时间和。作业调度方案:1,2,3〔必须考虑机器的空闲时间:作业1在机器1上完成的时间为2,在机器2上完成的时间为3〔2+1作业2在机器1上完成的时间为5〔2+3,在机器2上完成的时间为6〔5+1作业3在机器1上完成的时间为7〔2+3+2,在机器2上完成的时间为10〔7+3完成时间和:3+6+10=19〔5写出用回溯法求解如下0-1背包的求解过程〔使用约束函数和限界函数进行剪枝,并画出状态空间搜索树:有3个物品,它们的重量和价值如下表所示,背包容量C=60。〔6设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij。采用回溯法设计一个算法,为每一个人都分配1件不同的工作,并使总费用达到最小。[分析]根据问题描述,可得解题思路如下:由于每个人都必须分配到工作,可以建一个二维数组c[i][j],用以表示i号工人完成j号工作所需的费用。给定一个循环,从第1个工人开始循环分配工作,直到所有工人都分配到。为第i个工人分配工作时,再循环检查每个工作是否已被分配,没有则分配给i号工人,否则检查下一个工作。可以用一个一维数组x[j]来表示第j号工作是否被分配,未分配则x[j]=0,否则x[j]=1。利用回溯法在工人循环结束后回到上一工人,取消此次分配的工作,而去分配下一工作直到可以分配为止。这样,一直回溯到第1个工人后,就能得到所有的可行解。在检查工作分配时,其实就是判断取得可行解时的二维数组的下标一都不相同,下标二同样不相同。第6章分支限界法〔1简述回溯法和分支限界法的异同点。分支限界法类似于回溯法,也是在问题的解空间上搜索问题解的算法。二者的不同之处在于:〔1回溯法的求解目标往往是找出解空间树中满足约束条件的所有解,而分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解中找出在某种意义下的最优解;〔2回溯法以深度优先的方式搜索解空间树,而分支限界法则以广度优先或以最小耗费〔最大效益优先的方式搜索解空间树。给定0/1背包问题,参数为:n=3,w=[16,15,15],p=[45,25,25],c=30。用队列式分支限界法求解此问题。给出求解过程〔包括在求解过程中队列内容的变化情况。〔3布线问题的解空间是图.1:程序与算法的区别:
算法是给人来读的,直接给计算机是不能执行的;程序可以不满足算法的有限性
2:简述分治法的主要思想。
将一个问题不断分割成若干个小问题,然后通过对小问题的求解再生成大问题的解。
因此分治法可以分为两个重要步骤:
〔1自顶向下:将问题不断分割成小的问题。
〔2自底而上:将小问题解决来构建大问题的解。
3:分治法能解决问题所具有的性质
〔1该问题规模缩小到一定的程度就可以容易地解决;因为问题的计算复杂性一般是随着问题规模的增加而增加,因此大部分问题满足这个特征。
〔2该问题可以分解为若干个规模较小的相同问题,即该问题具有"最优子结构性质"。这条特征是应用分治法的前提,它也是大多数问题可以满足的,此特征反映了递归思想的应用。
〔3利用该问题分解出的子问题的解可以合并为该问题的解。。
4:动态规划与分治法的相同点和不同点
1.共同点:
将待求解的问题分解成若干子问题,先求解子问题,然后再从这些子问题的
解得到原问题的解。
2.
不同点:
○1、适合于用动态规划法求解的问题,分解得到的各子问题往往不是相互独立的;
而分治法中子问题相互独立。
○2、动态规划法用表保存已求解过的子问题的解,再次碰到同样的子问题时不必
重新求解,而只需查询答案,故可获得多项式级时间复杂度,效率较高;而分治法中对于每次出现的子问题均求解,导致同样的子问题被反复求解,故产生指数增长的时间复杂度,效率较低
5:简述贪心算法的基本思想
所谓贪心算法指的是为了解决在不回溯的前提之下,找出整体最优或者接近最优解的这样一种类型的问题而设计出来的算法。贪心算法的基本思想是找出整体当中每个小的局部的最优解,并且将所有的这些局部最优解合起来形成整体上的一个最优解。因此能够使用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖北省2023-2024学年普通高中学业水平合格性考试仿真模拟卷英语试卷
- 中国车座垫行业市场调查研究及投资前景预测报告
- 四年级数学(四则混合运算)计算题专项练习与答案
- 桁架式电动升降雷达塔 7米高透波玻璃钢避雷针 玻璃纤维照明灯杆
- 餐饮知识类培训课件图片
- 年产80万套制动鼓轮毂提质升级项目可行性研究报告模板-立项备案
- 树立正确职业心态
- 车床数控知识培训课件
- 生成式人工智能的教育应用与展望-以ChatGPT 系统为例
- 临床类风湿关节炎疾病概述、临床表现、治疗原则、要护理问题、相关因素、护理重点及健康指导
- 代县雁门光伏升压站~宁远220kV线路工程环评报告
- 承诺函(支付宝)
- 危险化学品目录2023
- FZ/T 81024-2022机织披风
- GB/T 24123-2009电容器用金属化薄膜
- 艾滋病梅毒乙肝实验室检测
- 国铁桥梁人行道支架制作及安装施工要点课件
- 领导科学全套精讲课件
- 粤教版地理七年级下册全册课件
- 小学科学苏教版六年级上册全册精华知识点(2022新版)
- 萎缩性胃炎共识解读
评论
0/150
提交评论