第1章_算法在计算中的作用_算法分析与设计_杭电_褚一平资料
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
乘法:2n次 加法:n次
算法2
1. p ← an
2. 对i从n到1做 3.p ← px + ai 1 4. 输出p
乘法:n次 加法:n次
算法分析即指对一个算法所需要的资源进行 预测; 资源:内存、通信带宽或计算机硬件,但通 常,资源是指我们希望测度的计算时间; 对于一个问题,通过分析几种候选算法,选 出一个最有效地算法; 分析的结果可能是找出不止一个的候选算 法,但在这一过程中,通常都要去掉几个较 差的算法;
算法概念的总结
算法是求解某个问题的长度有限的指令序 列,每条指令都是确定的、简单的、机械 的、可执行的。 算法给出了某一实际问题的计算/处理过程 对算法的研究
算法设计 算法复杂度分析
单个算法的复杂性 算法复杂性比较:效率 更近一步:算法的使用场景
算法的复杂性
评价一个算法可以从不同方面来考虑,如正确 性,简单性,时间复杂性,空间复杂性,还可 以提出求解某问题的最优算法这样的问题。
内存 磁盘 磁带
对多项式计算:
变元个数、次幂、系数范围等等
算法的正确性
如果一个算法对其每一个输入实例,都能 输出正确的结果并停止,则称它是正确 的。 正确的算法解决了给定的计算问题 不正确的算法:
可能不会停止 或者给出的结果不正确
不正确的算法不是都没用
近似 模拟
可计算性
从理论上判断什么问题可以给出算法利用 计算机求解,什么问题不可以,属于“可 计算性理论”研究的问题。 比如:“停机问题”就是不可计算的。 可计算理论认为可计算的问题,都有求解 的算法,这样的算法不是唯一的(有无限 多个),它们的计算复杂性也不一样。复 杂性较小的才是实际可计算的。
课程教材
以MIT的算法导论为基本教材,可参考: 《计算机算法导论》、卢开澄、清华 《Introduction to Algorithms, A Creative Approach》、
Ubi Manber (算法大师) 《Algorithms Design Techniques and Analysis》、沙特
则:
p(x) an xn an1xn1 a1x a0 (an xn1 an1xn2 a1) x a0
n1次
f (n) f (n 1) 1, n
f (1) 1
算法1
1. y ← 1
2. p ← a0
3. 对i从1到n做 4. y ← xy 5. p ← ai y + p 6. 输出p
计算机系统的结构 内存访问 读写操作等等
实用的才是最好的
三大部分都将提供部分最新研究成果或者相应应用的 paper,课后学习和阅读。
算法的概念
算法是求解某个问题的长度有限的指令序列,每条指令 都是确定的、简单的、机械的和可执行的。 “求解数学问题(如寻找最大公约数)的一个过程,该过 程步骤有限,通常还涉及重复的操作。”—维基百科
(强调分 析) 《Programming Pearls》(编程珠玑I和II)
对算法课的看法
核心是分析算法复杂性的方法
第一部分是核心 基础算法(应用最广泛)+分析(最重要)
解决问题的思路是关键
第二部分 方法+分析+应用
算法无止境
第三部分是提升(数学很重要)
算法的应用:
论文增色 如何在各个方向应用则是重点,算法本身的研究不是目的。 实际应用当中需要考虑
求解某一具体问题的数学过程
收敛算法
迭代算法
对于任一属于这个问题的实例的有效输入,应在有 限步(一步执行一条指令)内给出结果(输出), 并中止。
形象的算法例子
DEMO视频
问题:抽象描述;
实例:问题的具体化; 【例1】多项式计算 问题:给定多项式 p( x) an xn an1 xn1
求p(x)的值
我们将着重讨论时间复杂性,并且是从数学的 角度来讨论,而不从具体的机器、语言、编程 技巧来看。
时间复杂性将归结为某些基本操作的次数问 题,基本操作的次数与问题的规模有关。
那么如何确定问题的规模?一般我们考虑对基 本操作的次数影响最大的量。
算法效率
求解同一个问题可以有不同的算法,效率 或复杂性也可能不同。 多项式值计算的基本操作——乘法 两个已排好序的数据合并;
实例: p( x) 3x2 2x 1; x 4
a1 x和x
人类基因:10万种基因;30亿种化学基对
排序和比对
快速地访问和检索因特网上的信息
数据传输路径寻找; 搜索引擎检索技术;
电子商务领域的信息安全
公共密钥加密技术 数字签名技术
规划(动态、线性)
石油公司确定该在何处打井? 总统选举确定宣传基金花在何处? 航空公司的机组人员调配? 因特网服务提供商确定服务器安置位置?
1. 算法在计算机中的作用
指导思想
解决问题的方法学习、不是数据结构学习:如何 解决问题 算法分析是重点,知道方法比较容易,分析该方 法的复杂度、优缺点才是重要 基本的算法及其分析方法讲全,高级设计与分析 技术都讲授,而算法研究的问题非常多,因此选 择主题讲授 数据结构、包括高级数据结构不是本课程的讲授 内容
算法效率比较: 排序法比较:插入排序和合并排序 设进行长度为n的数组的排序
方法1:多项式:
p(x) an xn an1xn1 a1x a0
an xn1 x (an1xn1 a1x a0 )
则:
n1次
f (n) f (n 1) 2, 2n
f (1) 2
方法2:多项式:
交通图中任何两个交叉点之间的最短路 径:最短路径 n个矩阵相乘<A_1,A_2,…,A_n>:动态规划 A*x=b (mod n); a,b,n为整数:数论 平面上n个点的凸壳:计算几何 共同特征: 有很多解决方案->算法分析:复杂性 有着实际的应用
算法需要考虑的问题
排序算法要考虑的因素:
待排序的数据项数 数据项已经排好序的程度 对数据项取值的可能相知 打算采用的存储设备的类型
算法分析模型
20世纪30年代:问题的可解和不可解
计算模型->建立算法求解问题(可解)
计算模型:
哥德尔(Godel)的递归函数 丘齐(Church)的伽马演算 波斯特(Post)源自文库波斯特机 图灵(Turing) 的图灵机 RAM模型
丘齐:所有这些模型是等效的(可解层次)
算法分析的模型:RAM模型
算法2
1. p ← an
2. 对i从n到1做 3.p ← px + ai 1 4. 输出p
乘法:n次 加法:n次
算法分析即指对一个算法所需要的资源进行 预测; 资源:内存、通信带宽或计算机硬件,但通 常,资源是指我们希望测度的计算时间; 对于一个问题,通过分析几种候选算法,选 出一个最有效地算法; 分析的结果可能是找出不止一个的候选算 法,但在这一过程中,通常都要去掉几个较 差的算法;
算法概念的总结
算法是求解某个问题的长度有限的指令序 列,每条指令都是确定的、简单的、机械 的、可执行的。 算法给出了某一实际问题的计算/处理过程 对算法的研究
算法设计 算法复杂度分析
单个算法的复杂性 算法复杂性比较:效率 更近一步:算法的使用场景
算法的复杂性
评价一个算法可以从不同方面来考虑,如正确 性,简单性,时间复杂性,空间复杂性,还可 以提出求解某问题的最优算法这样的问题。
内存 磁盘 磁带
对多项式计算:
变元个数、次幂、系数范围等等
算法的正确性
如果一个算法对其每一个输入实例,都能 输出正确的结果并停止,则称它是正确 的。 正确的算法解决了给定的计算问题 不正确的算法:
可能不会停止 或者给出的结果不正确
不正确的算法不是都没用
近似 模拟
可计算性
从理论上判断什么问题可以给出算法利用 计算机求解,什么问题不可以,属于“可 计算性理论”研究的问题。 比如:“停机问题”就是不可计算的。 可计算理论认为可计算的问题,都有求解 的算法,这样的算法不是唯一的(有无限 多个),它们的计算复杂性也不一样。复 杂性较小的才是实际可计算的。
课程教材
以MIT的算法导论为基本教材,可参考: 《计算机算法导论》、卢开澄、清华 《Introduction to Algorithms, A Creative Approach》、
Ubi Manber (算法大师) 《Algorithms Design Techniques and Analysis》、沙特
则:
p(x) an xn an1xn1 a1x a0 (an xn1 an1xn2 a1) x a0
n1次
f (n) f (n 1) 1, n
f (1) 1
算法1
1. y ← 1
2. p ← a0
3. 对i从1到n做 4. y ← xy 5. p ← ai y + p 6. 输出p
计算机系统的结构 内存访问 读写操作等等
实用的才是最好的
三大部分都将提供部分最新研究成果或者相应应用的 paper,课后学习和阅读。
算法的概念
算法是求解某个问题的长度有限的指令序列,每条指令 都是确定的、简单的、机械的和可执行的。 “求解数学问题(如寻找最大公约数)的一个过程,该过 程步骤有限,通常还涉及重复的操作。”—维基百科
(强调分 析) 《Programming Pearls》(编程珠玑I和II)
对算法课的看法
核心是分析算法复杂性的方法
第一部分是核心 基础算法(应用最广泛)+分析(最重要)
解决问题的思路是关键
第二部分 方法+分析+应用
算法无止境
第三部分是提升(数学很重要)
算法的应用:
论文增色 如何在各个方向应用则是重点,算法本身的研究不是目的。 实际应用当中需要考虑
求解某一具体问题的数学过程
收敛算法
迭代算法
对于任一属于这个问题的实例的有效输入,应在有 限步(一步执行一条指令)内给出结果(输出), 并中止。
形象的算法例子
DEMO视频
问题:抽象描述;
实例:问题的具体化; 【例1】多项式计算 问题:给定多项式 p( x) an xn an1 xn1
求p(x)的值
我们将着重讨论时间复杂性,并且是从数学的 角度来讨论,而不从具体的机器、语言、编程 技巧来看。
时间复杂性将归结为某些基本操作的次数问 题,基本操作的次数与问题的规模有关。
那么如何确定问题的规模?一般我们考虑对基 本操作的次数影响最大的量。
算法效率
求解同一个问题可以有不同的算法,效率 或复杂性也可能不同。 多项式值计算的基本操作——乘法 两个已排好序的数据合并;
实例: p( x) 3x2 2x 1; x 4
a1 x和x
人类基因:10万种基因;30亿种化学基对
排序和比对
快速地访问和检索因特网上的信息
数据传输路径寻找; 搜索引擎检索技术;
电子商务领域的信息安全
公共密钥加密技术 数字签名技术
规划(动态、线性)
石油公司确定该在何处打井? 总统选举确定宣传基金花在何处? 航空公司的机组人员调配? 因特网服务提供商确定服务器安置位置?
1. 算法在计算机中的作用
指导思想
解决问题的方法学习、不是数据结构学习:如何 解决问题 算法分析是重点,知道方法比较容易,分析该方 法的复杂度、优缺点才是重要 基本的算法及其分析方法讲全,高级设计与分析 技术都讲授,而算法研究的问题非常多,因此选 择主题讲授 数据结构、包括高级数据结构不是本课程的讲授 内容
算法效率比较: 排序法比较:插入排序和合并排序 设进行长度为n的数组的排序
方法1:多项式:
p(x) an xn an1xn1 a1x a0
an xn1 x (an1xn1 a1x a0 )
则:
n1次
f (n) f (n 1) 2, 2n
f (1) 2
方法2:多项式:
交通图中任何两个交叉点之间的最短路 径:最短路径 n个矩阵相乘<A_1,A_2,…,A_n>:动态规划 A*x=b (mod n); a,b,n为整数:数论 平面上n个点的凸壳:计算几何 共同特征: 有很多解决方案->算法分析:复杂性 有着实际的应用
算法需要考虑的问题
排序算法要考虑的因素:
待排序的数据项数 数据项已经排好序的程度 对数据项取值的可能相知 打算采用的存储设备的类型
算法分析模型
20世纪30年代:问题的可解和不可解
计算模型->建立算法求解问题(可解)
计算模型:
哥德尔(Godel)的递归函数 丘齐(Church)的伽马演算 波斯特(Post)源自文库波斯特机 图灵(Turing) 的图灵机 RAM模型
丘齐:所有这些模型是等效的(可解层次)
算法分析的模型:RAM模型