Chapter1 算法引论.pdfVIP

  • 0
  • 0
  • 约1.91万字
  • 约 45页
  • 2018-07-18 发布于湖北
  • 举报
算法设计与分析 Algorithm Design and Analysis 课程内容 (64学时)  常用的算法设计策略(包括分治策略、动态规划、贪心 策略、回溯法、随机算法等)  算法复杂度分析方法(计算迭代次数、使用递归方程、 频度分析等)  其中:实验内容为16学时 课程要求  掌握常用的算法设计策略、算法复杂度分析方法  授课方式:讲授  考核方式:闭卷笔试 教材  《算法设计技巧与分析》,M. H. Alsuwaiyel 著, 电子 工业出版社,吴伟昶等译,2010 相关参考文献  Algorithm Design Techniques and Analysis, M. H. Alsuwaiyel. (影印本). 电子工业出版社. 2013  计算机算法设计与分析( 第4版), 王晓东, 电子工业出版 社, 2012.  算法设计与分析,王红梅编著,清华大学出版社, 2006.  算法导论( 第2版) ,Thomas H. Cormen等著,潘金贵等 译,机械工业出版社,2006. 引例一:斐波那契数列 目 的:考察不同算法的差异性  斐波那契数列是由13世纪的意大利数学家、来自Pisa 的Leonado Fibnacci发现。  斐波那契数列是由1,1开始,之后的每一项等于前两 项之和:  1,1,2 ,3 ,5 ,8 ,13,21 ,34 ,55 ,89 ,144 。  这个数列有如下一些特性:  前2个数相加等于第3个数  前1个数除以后一个数越往后越无限接近于0.618 (黄金分 割)  相邻的两个比率必是一个小于0.618一个大于0.618  后1个数除以前一个数越往后越无限接近于1.618  … 1 , if n 1, 2  an  a a if n + , ≥3 n−1 n−2 问题:编写一个程序(设计一个算法) ,输入为整数n, 输出为第n项斐波那契数列的值。 1 算法引论  历史背景  算法复杂度与渐近分析方法  如何估计算法的复杂度  算法复杂度分析的意义 历史背景简介  阶段1 :二十世纪30 年代,能否使用一个有效的过程(相当于现在算法 的概念) 来求解一个给定的问题一直是人们所关注的。当时的焦点是将 问题进行分类:可解或是不可解。关注问题是否可以求解的领域称为 可计算理论(computability theory or theory of computation)。出现了 一系列的计算模型,例如:calculus of Church 、Post machines of Post 、Turing machines of Turing 、RAM model of computation 。  阶段2 :随着数字计算机的出现,人们越来越关注于那些可求解的问题。 一开始,人们满足于能够在一定的时间内解决一个特定的问题,而不 去关注所需要的资源。慢慢地,人们需要考虑在有限资源的条件下高 效地解决问题。这就导致了计算复杂度(computational complexity)这 一新学科的诞生。在这个领域,主要是研究解决可求解问题时所需要 的资源,主要是时间和空间复杂性。有时候,其他的资源也需要考虑, 例如,通信代价、需要使用的处理器的个数(使用并行计算模型)等等。 引例二:搜索问题  给定已经排好序(不妨假设为非降序) 的n个元素 A[1…n] , 现在要判定一个给定的元素x 是否在此数组中 出现。  方法1 :顺序搜索  方法2 :二分搜索 二分搜索算法 输入:非降序排列的数组A[1…n]和元素x 输出:如果x=A[j], 1 ≤j ≤n,则输出j, 否则输出0.

文档评论(0)

1亿VIP精品文档

相关文档