算法设计与分析 实验讲义(2012_09_17).doc

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
云南大学信息学院 计算机科学与技术专业本科 《算法设计与分析》 实验讲义 任课教师:岳昆 2012年9月 前 言 计算思维、算法设计能力,程序实现、系统开发能力,分别是计算机科学与技术专业研究型(科学与分析)和应用型(工程与综合)人才培养的目标,这些目标由一系列专业课程支撑,《算法设计与分析》是核心课程《算法设计与分析》 目 录 第1章 算法分析基本概念 4 实验1.1 算法计算时间复杂度和增长率(4学时) 4 1. 实验目的 4 2. 原理解析 4 3. 实验内容 6 4. 实验步骤和要求 6 第2章 搜索算法 8 实验2.1 搜索算法的实现,时间复杂度分析与测试(4学时) 8 1. 实验目的 8 2. 原理解析 8 3. 实验内容 9 4. 实验步骤和要求 9 第3章 递归与分治算法 11 实验3.1 分治算法的递归程序实现与时间复杂度测试(4学时) 11 1. 实验目的 11 2. 原理解析 11 3. 实验内容 13 4. 实验步骤和要求 13 第4章 动态规划算法 15 实验4.1 动态规划算法的实现与时间复杂度测试(3学时) 15 1. 实验目的 15 2. 原理解析 15 3. 实验内容 16 4. 实验步骤和要求 16 实验4.2 动态规划算法的适应性测试(3学时) 17 1. 实验目的 17 2. 原理解析 17 3. 实验内容 18 4. 实验步骤和要求 18 第5章 贪心算法 19 实验5.1 贪心算法的实现与时间复杂度测试(4学时) 19 1. 实验目的 19 2. 原理解析 19 3. 实验内容 20 4. 实验步骤和要求 20 第6章 回溯算法 22 实验6.1 回溯算法的实现和时间复杂度测试(4学时) 22 1. 实验目的 22 2. 原理解析 22 3. 实验内容 23 4. 实验步骤和要求 23 第7章 算法设计与性能测试综合练习 24 实验7.1 哈夫曼编码与数据压缩 24 实验7.2 最优选课 24 附录:实验报告撰写规范 26 第1章 算法分析基本概念 实验1.1 算法计算时间复杂度和增长率(4学时) 1. 实验目的 通过算法的程序实现和执行时间测试、并与理论上的结论进行对比分析,深入理解算法时间复杂度分析中对于输入数据考虑其等价类的意义,理解算法时间复杂度渐进性态和和增长率的概念,为后续学习和实验奠定基础,同时也学习程序效率测试的基本思路。 2. 原理解析 算法时间复杂度分析的相关概念 (1) 算法的计算时间取决于算法中某些操作的执行次数,这些操作是算法时间复杂度分析的依据。 (2) 增长率反映了算法的计算时间复杂度,即随着算法输入规模的增加、算法计算时间增加的趋势。 (3) 算法的计算时间复杂度针对输入数据的等价类来分析或测试。 随机数生成算法 通过程序生成(伪)随机数,作为实验用测试数据。可使用编程语言自带的random函数生成,也可以采用一些有效的随机数生成算法生成,例如“线性同余法”,基于该算法,只要参数选择合适,所产生的伪随机数就能满足均匀性和独立性,与真正的随机数具有相近的性质通过设置X+1=(aXi+c) mod m, n(0,其中的个整数m——模数m0;a——乘数0(am;c——增量0(cm;X0——开始值0(X0m。这样得到所求的随机数序列Xi},称作线形同余序列。 (list, N) numberOfPairs=N swappedElements=true while swappedElements do numberOfPairs=numberOfPairs-1 swappedElements=false for i=1 to numberOfPairs do if list[i]list[i+1] then swap(list[i],list[i+1]) swappedElements=true end if end for (2) MergeSort(list, first, last) if firstlast then middle=(first+last)/2 MergeSort(list, first, middle) MergeSort(list, middle+1, last) MergeLists(list, first, middle, middle+1, last) end if MergeLists(list, start1, end1, start2, end2) while (start1≤end1) and (star

文档评论(0)

fpiaovxingl + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档