计算机算法设计方案书和分析报告.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE / NUMPAGES 计算机算法设计与分析 (书要整体看看再结合老师画的重点) 第一章 1.算法:是在有限步骤内求解某一问题所使用的一组定义明确的规则。 程序:是算法用某种程序设计语言的具体实现。 算法评定标准: 时空的观点 标准1 算法在计算机上的执行的时间最短。 标准2 算法所需要的存储空间最小。 发展的观点 标准3 算法的适应性强。 设计的观点 标准4 算法的设计时间少。 交流的观点 标准5 算法容易理解。 时间复杂性论: 原因: 所有关于时间复杂性增长的阶的定义和渐近界的讨论都可移植到空间复杂性的讨论中。 算法的空间复杂性相对简单,它不可能超过运行时间的复杂性,因为写入每一个内存单元都至少需要一定的时间。对于一个相同的输入I,S(N)=O(T(N))。 空间复杂性降低到一定程度时会大幅度增加时间复杂性,而时间复杂性的降低一般对空间复杂性不会有太大影响。 例: 求两个n阶矩阵的乘积C=AB的算法及其时间复杂性。 定义矩阵A[ ][n],B[ ][n],C[ ][n] for i ← 0 to n            ←频度:n+1  for j ← 0 to n            ←频度:n(n+1) C[i][j] = 0;           ←频度:n2   for k ← 0 to n          ←频度:n2(n+1)    C[i][j] = C[i][j] + A[i][k] * B[k][j]; ←频度:n3 end for end for End for 时间复杂性T(n) = n+1+n (n+1) + n2 + n2(n+1) + n3 = 2n3+3n2+2n+1 上界的阶越低则评估越有价值。 下界的阶越高,则评估精度越高,也就越有价值。 T(n)大概有三种计算方法: 计算迭代次数(循环结构的执行次数) 计算基本运算的频度 使用递归方程(多用于递归算法) 第二章 1.并非所有递归函数都能找到其非递归的定义。 2.分治法的设计思想:将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。原理:递归地解这些子问题,然后将各子问题的解合并得到原问题的解。 分治法的适用条件:该问题的规模缩小到一定的程度就可以容易地解决;该问题可以分解为若干个规模较小的相同问题;利用该问题分解出的子问题的解可以合并为该问题的解;该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。(而动态规划法适合各子问题不独立时,在计算过程中,保存已解决的子问题答案。每个子问题只计算一次,而在后面需要时只要简单查一下,从而避免大量的重复计算 ) 棋盘覆盖法: 算法描述: chessBoard(tr, tc, dr, dc, size) //tr:棋盘左上角方格的行号;tc:棋盘左上角方格的列号;dr:特殊方格所在行号;dc:特殊方格所在列号;size:棋盘规格;tile是全局变量,初值为0。 过程 chessBoard(tr, tc, dr, dc, size) if (size == 1) return; t ← tile++ ; // L型骨牌号 s ← size/2; // 分割棋盘 // 覆盖左上角子棋盘 if (dr tr + s dc tc + s) // 特殊方格在此棋盘中 chessBoard(tr, tc, dr, dc, s); else // 此棋盘中无特殊方格 board[tr + s - 1][tc + s - 1] = t; // 用 t 号L型骨牌覆盖右下角 chessBoard(tr, tc, tr+s-1, tc+s-1, s); // 覆盖其余方格 end if if (dr tr + s dc = tc + s) // 特殊方格在此棋盘中 chessBoard(tr, tc+s, dr, dc, s); else // 此棋盘中无特殊方格 board[tr + s - 1][tc + s] = t; // 用 t 号L型骨牌覆盖左下角 chessBoard(tr,

您可能关注的文档

文档评论(0)

kbook + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档