算法设计与分析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
—David Berlinski ,《算法的出现》,2000
本章要点
• 算法的基本概念 • 算法复杂度分析的准则 • 基本数据结构 • 常见的重要问题类型 • 常用的算法设计方法
章节内容
1.1 算法概述 1.2 问题的求解过程 1.3 算法的复杂性分析 1.4 算法设计中常见的重要问题类型 1.5 算法设计中用到的基本数据结构 1.6 常用的算法设计方法
1.1.1 什么是算法
例1.1 数学作业有10道应用 题,必须一道题、一道题的 解答,解答每道题的过程是 相同的,看题→思考→解答, 然后验算检查有无错误,若 没错就做下一道题;若有错, 就重做。直到10道题都解答 完这次作业才算完成。解题 的方法和步骤 所示。
这个算法的执行者是人 而不是机器。
1.1.1 什么是算法
第1章 算法设计与分析基础 √
第2章 递归法
√
第3章 分治法
√
第4章 贪心方法
√
第5章 动态规划
√
第6章 回溯法
√
第7章 分枝限界法
√
有两种思想,就像珠宝商放在天鹅绒上的宝石 一样熠熠生辉。一个是微积分,另一个就是算法。 微积分以及在微积分基础上建立起的数学分析体系 造就了现代科学,而算法造就了现代世界。
int c=n%m; n=m; m=c; } return n; }
【程序1-3】gcd的连续整数 检测算法 int gcd(int m, int n){ int t ; i f (m==0) return n; if (n==0) return m;
int t=m>n?n:m;
while (m%t || n%t) t--;
4
课程介绍
参考书籍
1. 陈慧南《算法设计与分析》 电子工业出版社 2. 王晓东 《算法设计与分析》 清华大学出版社 3. Thomas H. Cormen,Charles E. Le Introduction to
Algorithms 中文版: 算法导论 机械工业出版社
5
课程介绍
学时
32hrs(理论)+ 8hrs(实验)
int gcd(int m, int n){ if (m>n) swap(m, n); return rgcd(m, n); }
1.1.1 什么是算法
【程序1-2】欧几里德迭代算法
int gcd(int m, int n){
if (m==0) return n;
if (n==0) return m; if (m>n) swap(m, n); while(m>0){
引言
1.1 算法概述
1.1.1 什么是算法
算法研究是计算机科学的主要任务之一,利用计算机解决 一个实际问题时,第一步是选择一个合适的数学模型表示问题, 以便抽象出问题的本质特征,然后就是寻找一种算法,作为问 题的一种解法。
1. 算法的定义 算法是解题方案的准确而完整的描述,也就是解题的方
法和步骤。下面我们举两个例子来说明算法。
计算机科学中讨论的算法是由计算机来执行的,也可由 人模拟它用笔和纸执行。 例1.2 求任意两个整数m和n(0≤m<n)的最大公约数,称 为欧几里德算法,记为gcd(m, n)。
作为例子,这里用了三种方法来解决这一问题。
【程序1-1】欧几里德递归算法 void swap(int &a, int &b){ int c; c=a; a=b; b=c; } int rgcd(int m, int n){ if(m==0) return n; return rgcd(n%m, m); }
实验所需语言
✓ C/C++/……
考核
平时(出勤10%+作业10%)+期末考试(80%)
6
课程要求
过程要求
– 预习+听课+复习+作业/实验
学习要求
– 了解计算机应用中的各种常用算法 – 了解评价算法的准则和方法 – 掌握设计和分析算法的基本原理、方法和技巧 – 提高分析问题和解决问题的能力
章节安排
算法设计与分析
课程介绍
课程地位
– 专业必修课 – 开发系统软件及大型பைடு நூலகம்用软件等的重要基础
课程目标
培养算法设计与分析的能力 – 掌握常见的算法设计技术及其在具体问题中的应用 – 掌握算法的分析评价方法
教材
— 自编
2
课程介绍
课程地位
– 专业必修课 – 开发系统软件及大型应用软件等的重要基础
课程目标
算法中所有的操作都必须足够基本,使算法的执行者或 阅读者明确其含义以及如何执行。 (5)有穷性(finiteness)
算法的有穷性是指算法必须总能在执行有限步骤之后终止。
1.1.1 什么是算法
3. 算法的基本要素 一个算法通常由两种基本要素组成:一是对数据对象的运算和
操作,二是算法的控制结构。
在一般的计算机系统中,基本的运算和操作有四类。 1)算术运算:主要包括加、减、乘、除等运算。 2)逻辑运算:主要包括与、或、非等运算。 3)关系运算:主要包括大于、小于、等于、不等于等运算。 4)数据传输:主要包括赋值、输入、输出等操作。
培养算法设计与分析的能力 – 掌握常见的算法设计技术及其在具体问题中的应用 – 掌握算法的分析评价方法
教材
— 自编
3
课程介绍
课程的主要内容
1. 算法的基本概念和常见符号 2. 算法设计的常用技术
• 递归法、蛮力法、分治法、减治法 • 贪心法、动态规划、回溯法、分枝限界法 • 概率算法、近似算法、计算复杂性理论 3. 算法的评价:复杂度分析
return t;
}
1.1.1 什么是算法
2. 算法的特征
算法通常具有以下几个特征: (1)输入(input)
一个算法可以有零个或多个输入。 (2)输出(output)
一个算法应有一个或多个输出,作为算法进行信息加工的 结果。 (3)确定性(definiteness)
确定性指算法中的每一个步骤都必须是有明确定义的。 (4)可行性(effectiveness)
一个算法一般都可以用顺序、选择、循环(当型循环或直到 型循环)三种控制结构组成。
1.1.1 什么是算法
4. 算法的描述工具 描述算法可以有多种方式。
(1)用自然语言描述算法 (2)用流程图表示算法 (3)用N-S流程图表示算法 (4)用伪代码描述算法
无论何种算法描述方式,最终要用计算机执 行的话都需要转换成为相应的计算机语言程序。
本章要点
• 算法的基本概念 • 算法复杂度分析的准则 • 基本数据结构 • 常见的重要问题类型 • 常用的算法设计方法
章节内容
1.1 算法概述 1.2 问题的求解过程 1.3 算法的复杂性分析 1.4 算法设计中常见的重要问题类型 1.5 算法设计中用到的基本数据结构 1.6 常用的算法设计方法
1.1.1 什么是算法
例1.1 数学作业有10道应用 题,必须一道题、一道题的 解答,解答每道题的过程是 相同的,看题→思考→解答, 然后验算检查有无错误,若 没错就做下一道题;若有错, 就重做。直到10道题都解答 完这次作业才算完成。解题 的方法和步骤 所示。
这个算法的执行者是人 而不是机器。
1.1.1 什么是算法
第1章 算法设计与分析基础 √
第2章 递归法
√
第3章 分治法
√
第4章 贪心方法
√
第5章 动态规划
√
第6章 回溯法
√
第7章 分枝限界法
√
有两种思想,就像珠宝商放在天鹅绒上的宝石 一样熠熠生辉。一个是微积分,另一个就是算法。 微积分以及在微积分基础上建立起的数学分析体系 造就了现代科学,而算法造就了现代世界。
int c=n%m; n=m; m=c; } return n; }
【程序1-3】gcd的连续整数 检测算法 int gcd(int m, int n){ int t ; i f (m==0) return n; if (n==0) return m;
int t=m>n?n:m;
while (m%t || n%t) t--;
4
课程介绍
参考书籍
1. 陈慧南《算法设计与分析》 电子工业出版社 2. 王晓东 《算法设计与分析》 清华大学出版社 3. Thomas H. Cormen,Charles E. Le Introduction to
Algorithms 中文版: 算法导论 机械工业出版社
5
课程介绍
学时
32hrs(理论)+ 8hrs(实验)
int gcd(int m, int n){ if (m>n) swap(m, n); return rgcd(m, n); }
1.1.1 什么是算法
【程序1-2】欧几里德迭代算法
int gcd(int m, int n){
if (m==0) return n;
if (n==0) return m; if (m>n) swap(m, n); while(m>0){
引言
1.1 算法概述
1.1.1 什么是算法
算法研究是计算机科学的主要任务之一,利用计算机解决 一个实际问题时,第一步是选择一个合适的数学模型表示问题, 以便抽象出问题的本质特征,然后就是寻找一种算法,作为问 题的一种解法。
1. 算法的定义 算法是解题方案的准确而完整的描述,也就是解题的方
法和步骤。下面我们举两个例子来说明算法。
计算机科学中讨论的算法是由计算机来执行的,也可由 人模拟它用笔和纸执行。 例1.2 求任意两个整数m和n(0≤m<n)的最大公约数,称 为欧几里德算法,记为gcd(m, n)。
作为例子,这里用了三种方法来解决这一问题。
【程序1-1】欧几里德递归算法 void swap(int &a, int &b){ int c; c=a; a=b; b=c; } int rgcd(int m, int n){ if(m==0) return n; return rgcd(n%m, m); }
实验所需语言
✓ C/C++/……
考核
平时(出勤10%+作业10%)+期末考试(80%)
6
课程要求
过程要求
– 预习+听课+复习+作业/实验
学习要求
– 了解计算机应用中的各种常用算法 – 了解评价算法的准则和方法 – 掌握设计和分析算法的基本原理、方法和技巧 – 提高分析问题和解决问题的能力
章节安排
算法设计与分析
课程介绍
课程地位
– 专业必修课 – 开发系统软件及大型பைடு நூலகம்用软件等的重要基础
课程目标
培养算法设计与分析的能力 – 掌握常见的算法设计技术及其在具体问题中的应用 – 掌握算法的分析评价方法
教材
— 自编
2
课程介绍
课程地位
– 专业必修课 – 开发系统软件及大型应用软件等的重要基础
课程目标
算法中所有的操作都必须足够基本,使算法的执行者或 阅读者明确其含义以及如何执行。 (5)有穷性(finiteness)
算法的有穷性是指算法必须总能在执行有限步骤之后终止。
1.1.1 什么是算法
3. 算法的基本要素 一个算法通常由两种基本要素组成:一是对数据对象的运算和
操作,二是算法的控制结构。
在一般的计算机系统中,基本的运算和操作有四类。 1)算术运算:主要包括加、减、乘、除等运算。 2)逻辑运算:主要包括与、或、非等运算。 3)关系运算:主要包括大于、小于、等于、不等于等运算。 4)数据传输:主要包括赋值、输入、输出等操作。
培养算法设计与分析的能力 – 掌握常见的算法设计技术及其在具体问题中的应用 – 掌握算法的分析评价方法
教材
— 自编
3
课程介绍
课程的主要内容
1. 算法的基本概念和常见符号 2. 算法设计的常用技术
• 递归法、蛮力法、分治法、减治法 • 贪心法、动态规划、回溯法、分枝限界法 • 概率算法、近似算法、计算复杂性理论 3. 算法的评价:复杂度分析
return t;
}
1.1.1 什么是算法
2. 算法的特征
算法通常具有以下几个特征: (1)输入(input)
一个算法可以有零个或多个输入。 (2)输出(output)
一个算法应有一个或多个输出,作为算法进行信息加工的 结果。 (3)确定性(definiteness)
确定性指算法中的每一个步骤都必须是有明确定义的。 (4)可行性(effectiveness)
一个算法一般都可以用顺序、选择、循环(当型循环或直到 型循环)三种控制结构组成。
1.1.1 什么是算法
4. 算法的描述工具 描述算法可以有多种方式。
(1)用自然语言描述算法 (2)用流程图表示算法 (3)用N-S流程图表示算法 (4)用伪代码描述算法
无论何种算法描述方式,最终要用计算机执 行的话都需要转换成为相应的计算机语言程序。