《算法设计与分析》复习题参考答案.docx

《算法设计与分析》复习题参考答案.docx

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《算法设计与分析》复习题 一、概念题:请解释下列术语。 数据类型 队列 多项式复杂度 满二叉树 NP-难度 算法 SIMD(并行算法) 连通图 抽象数据类型 指数复杂度 递归 完全二叉树 状态空间树 NP-完全的 算法与过程 有向图与无向图 树 P 类问题 确定的算法 NP 问题 二、填空题 简单递选分类过程中所需进行移动存储的操作次数较少,其最大值为 。 一组有序的n 个数,采用逐个查找算法查找一给定的数是否出现在序列中,其算法复杂性为 。 动态规划实际上是研究一类 的算法,其应用非常广泛。 BFS 算法的中文名称是 算法。 一棵树中 定义为该树的高度或深度。 二分检索树要求树中所有结点中的元素满足 。 比较树的结点由称为 和 的两种结点组成。 外结点用一个 结点表示,在二分检索算法中它表示不成功检索的一种情况。 由根到所有内部结点的距离之和称为 ; 由根到所有外部结点的距离之和称为 . max 和 min 被看成是两个内部函数,它们分别求取两个元素的大者和小者,并认为每次调用其中的一个函数都只需作 次元素比较。 如果用分治策略来设计分类算法,则可使最坏情况时间变为o(n logn)。这样的算法称为 。 贪心算法可行的第一个基本要素是 。 当一个问题的最优解包含着它的子问题的最优解时,称此问题具有 性质。 二路归并模式可以用 树来表示。 kruskal 算法对于每一个无向连通图g 产生一棵 。 因为如果有环,则可去掉这个环且不增加这条路径的长度(不含有负长度的环)。如果 k 是这条最短路径上的一个中间结点,那么—由 i 到 k 和由k 到 j 的这两条子路径应分为别是由 i 到 k 和.由 k 到 j 的最短路径。否则,这条由i 到 j 的路径就不是具有最小长度的路径。于是, 原理成立。 为了把动态规划应用于得到一棵最优二分检索树的问题,需要把构造这样的一棵树看成是一系列决策的结果,而且要能列出求取 序列的递推式. 所谓可靠性设计最优化问题是在 的约束下,如何使系统的可靠性达到最优的问题。 货郎担问题是求取具有 的周游路线问题。 三、程序填空题。 对二叉树的先根次序周游算法递归表示为: procedure PREORDER(T) //T 是一棵二元树。T 中每个结点有三个信息段:ICHILD, DATA,RCHILD// if T≠0 then call VISIT(T) (1) (2) endif end PREORDER 递归求取最大和最小元素 procedure MAXMIN(i.j. fmax,fmin) //A(1:n)是含有n 个元素的数组,参数i,j 是整数,1≤i,j≤n// //该过程把A(i,j)中的最大和最小元素分别赋给fmax 和 fmin// integer i,j;global n,A(1:n) case :i=j:fmax?fmin?A(i) :i=j-1:if A(i)A(j) then fmax?A(j);fmin?A(i) else fmax?A(i);fmin?A(j) endif ?(i ? j) / 2? : else: mid? (1) (2) fmax?max(gmax,hmax) fmin?min(gmin,hmin) endcase end MAXMIN 用回溯法求子集和数问题的递归回溯算法procedure SUMOFSUBs,k,r) //找 W(1:n)中和数为 M 的所有子集,进入此过程时 X(1),?,X(k-1)的值已确定。 s ? ?k ?1 W ( j) X ( j)且r ? ?n j ?1 j ?k W ( j)  。这些对W(j)按非降次序排列。假定 W(1)≤M.// global integer M,n; global real W(1:n);global Boolean X(1:n) real r,s;integer k,j //生成左儿子。注意,由于 Bk ?1 ? true ,因此 s+W(k)≤M// X(k)?1 if s+W(k)=M then //子集找到// print (X(j),j?1 to k ) else if s+W(k)+W(k+1)=M then //B k =yrue// (1) endif //生成右儿子和计算B k 的值// endif if s+r-W(k)≥M and s+W(k+1)≤M //B k =true// then X(k)?0 (2) endif end SUMOFSUB 用回溯法求n-皇后问题的所有解procedure NQUEENS(n) //此过程使用回溯法求出在一个n*n 棋盘上放置n 个皇后,使其不能互相攻击的所有可能位置//

文档评论(0)

hao187 + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档