1、计算机算法基础周中成苏州科技学院应用数学系Date序先修课:高等数学高等代数程序设计 使用高级程序语言描述一个 具体算法的基础数据结构 为表达非数值算法提供了抽象的运算机制数学类数学类计算机类计算机类Date如何编写计算机程序: 数据结构 +算法 = 程序 算法:计算机软件的 “灵魂 ”结论:算法是计算机科学和计算机应用的核心,图灵奖得主 Donald E. Knuth说: ”计算机科学就是算法的研究 “Date教材:算法分析与设计 刘任任主编 武汉理工大学出版社 参考书:算法设计技巧与分析 沙特 M.H.Alsuwaiyel 电子工业出版社Introduction to The Design
2、 & Analysis of Algorithms(算法设计与分析基础 )(影印版) 美 Anany Levitin 算法设计与分析 王晓东编著 清华大学出版社计算机算法导引 设计与分析 卢开澄编著 清华大学出版社Introduction To Algorithm 高教出版社, MIT Press学时: 51学时Date章节安排 第一章 导论 第二章 分治与递归 第三章 贪心算法 第四章 动态规划 第五章 回溯法 第六章 分枝 -限界法 第八章 NP完全问题 ?Date第一章 引论 1.1 算法的定义及特性1. 什么是算法( algorithm)算法如数学、计算一样,是一个 基本概念 。 We
3、bster辞典: “algorithm(算法)在有限步骤内解一个数学问题的过程,步骤中常常包括某一操作的重复。更广义地说,一个算法就是为解一个问题或实现某一目标的逐步过程 “ D.E.Knuth说:一个算法就是一个有穷规则的集合,其中的规则规定了一个解决某一特定类型的问题的运算序列。此外,它还具有下面第二部分所述的 5个重要特征Date2. 算法的五个重要特性有穷性 、 确定性 、 可行性 、 输入 、 输出1) 确定性 :算法的每种运算必须要有确切的定义,不能有二义性。例:菜谱就不是一个算法,因为菜谱中经常有这样的步骤: “加入食盐少许 ”,这种 “少许 ”是不确定的。Date2) 可行性算
4、法中有待实现的运算都是基本的运算,原理上每种运算都能由人用纸和笔在 “有限 ”的时间内完成。Date3) 输入每个算法有 0个或 多 个输入。这些输入是在算法开始之前给出的量,取自于特定的对象集合 定义域 (或值域)4) 输出一个算法产生 一个 或 多个 输出,这些输出是同输入有某种特定关系的量。Date5) 有穷性一个算法总是在执行了 有穷步 的运算之后 终止 。3。 计算过程与算法只满足确定性、能行性、输入、输出四个特性的一组规则。 算法和计算过程的区别: 计算过程:操作系统 (不终止的运行过程 ) 算法是 “可以终止的计算过程 ” 算法的时效性:只能把在 相当 有穷步内终止的算法投入到计算机上运行Date