当前位置:文档之家› 算法第1章算法概述详解

算法第1章算法概述详解


6
计算机算法设计与分析
7
意念与现实(4): 一个例子
如果我们再次改变试验中拿球的方式,将拿某个特定标号 的球改为取出任意标号的球,即在差 1分钟到零点时,将标 号为1 ~ 10的 10个球放进罐子,然后从罐子里任意拿出一个 球;在差1/2分钟到零点时,将标号为11~20的10个球放进罐 子,然后从罐子里任意拿出一个球;在差 1/4 分钟到零点时, 将标号为21~30的10个球放进罐子,然后从罐子里任意拿出 一个球……这种拿球方式又将产生何种结果呢? 答案是仍然是0 太不可思议了吧!这三个本质相同的算法怎么有如此匪夷 所思的结果呢?如果非要说这三个算法有什么不同,就是拿 球时的标号不同。 但难道标号的不同使最后球的数量发生了变化?
计算机算法设计与分析
3
主要内容介绍
• • • • • • 第1 章 第2 章 第3 章 第4 章 第5 章 第6 章 算法概述 递归与分治策略 动态规划 贪心算法 回溯法 分支限界法
3
计算机算法设计与分析
4
意念与现实(1): 一个例子
给你一个无限容积的罐子和无限个球,球从1开始连续编号
★ 在差 1分钟到零点时:将标号为 1~10的 10个球放进罐子, 然后将10号球从罐子里拿出。 ★ 在差1/2分钟到零点时:将标号为 11~20的10个球放进罐 子,然后将20号球从罐子里拿出。 ★ 在差1/4分钟到零点时:将标号为21~30的10个球放进罐 子,然后将30号球从罐子里拿出。 ★ …… 就这样将游戏进行下去。假定放球和取球不占时间,请问,
计算机算法设计与分析
6
意念与现实(3): 一个例子
对于有些人来说,这个答案似乎不可接受。但又确实找不 到驳斥的办法。你能找出来吗?
也许这个答案是合理的,因为拿球顺序的变化使得算法发 生了变化,即我们实际上讨论的是两个算法。 可仔细一想又觉得不对,因为两个算法都是每次放进 10 个 球,拿出1个球,即从根本上说,这是两个一样的算法,怎 么会有截然相反的结果呢?
14
计算机算法设计与分析
15
1.1.3 算法的描述方法
15
计算机算法设计与分析
16
16
计算机算法设计与分析
17
17
计算机算法设计与分析
18
18
计算机算法设计与分析
19
19
计算机算法设计与分析
20
20
计算机算法设计与分析
21
21
计算机算法设计与分析
22
22
计算机算法设计与法设计与分析
14
算法与程序的区别
程序是算法用某种程序设计语言的具体实现。 程序可以不满足算法的性质(4)。 例如,操作系统是一个在无限循环中执行的程序,因而
不是一个算法。
操作系统的各种任务可看成是单独的问题,每一个问题 由操作系统中的一个子程序通过特定的算法来实现。该子 程序得到输出结果后便终止。
空间复杂性:算法运行所需要的空间资源量
选用算法应遵循的一个重要原则:当给定的问题有多种算
7
计算机算法设计与分析
8
意念与现实(5): 一个例子
没错,就是这个标号对结果产生了深远影响。从某种意义 上说,标号是虚的,它只存在于我们的想象中,但确实对现 实结果产生了影响,即我们的思维使算法发生了变化。或许 从另一个角度来看,这个问题就是:没有就是无穷,无穷就 是没有。它们之间也许根本没有什么不同,它们的不同只存 在于人们的想象或者意念中。也许这是为什么无穷的符号 是由两个 0连接而成的,从左右两面看都是无有,而从中间 看则是无穷。
计算机算法设计与分析
24
24
计算机算法设计与分析
25
1.2 算法复杂性分析
25
计算机算法设计与分析
26
算法复杂性
算法复杂性的高低体现在运行该算法所需要的计算机资源 的多少上:所需资源越多,算法复杂性越高;反之,所需资 源越少,算法复杂性越低。
算法的复杂性有:时间复杂性与空间复杂性 时间复杂性:算法运行所需要的时间资源量
从这个意义上说,算法是一种思维方式(Algorithmic
Thinking),或者说一种哲学。
8
计算机算法设计与分析
9
一个最简单的算法: 1. 起床 2. 吃早点 3. 上早自习 4. 上课 5. 吃午饭 6. 上课 7. 吃晚饭 8. 上晚自习 9. 睡觉
计算机算法设计与分析
10
计算机算法设计与分析
当时钟指向零点时,罐子里还剩多少个球?
4
计算机算法设计与分析
5
意念与现实(2): 一个例子
这个答案很直接:无穷多个球!所有编号不是10n(n≥1) 的球在放进罐子里后就不会再拿出来;而在到达零点之前这 种放球、取球的次数是无限的。因此,罐子里面的球在零点 时将是无数个。
你很确信这个答案吗?
现在来让我们改变拿球的方式,将每次拿10、20、30… 号 球分别变为拿1、2、3…号球,即第x次拿球,所拿出来的球 的编号是x。结果又会怎样呢? 这个时候,神奇的事情发生了。这个罐子里面的球数将为0。 对于任意一个球,设其编号为 n ,则在差 (1/2)n-1 分钟到零 点时该球将被取出。也就是说,对于任意球 n,在零点时它 都不在罐子里。因此,零点时罐子里球的个数为0。 5
11
11
计算机算法设计与分析
12
12
计算机算法设计与分析
13
1.1.2 算法及其重要性质
算法:是指解决问题的一种方法或一个过程。 算法是由若干条指令组成的有穷序列,满足性质: (1)输入:有0个或多个由外部提供的量作为算法的输入。
(2)输出:算法产生至少一个量作为输出。(1个或多个)
(3)确定性:组成算法的每条指令是清晰,无歧义的。 (4)有限性:算法中每条指令的执行次数是有限的,执行每 条指令的时间也是有限的。
计算机算法设计与分析
1
计算机算法设计与分析
主讲人:袁运浩 E-mail: yhyuan@ 计算机科学与技术系 江南大学物联网工程学院
计算机算法设计与分析
2
课时数:48节
上课:1-16周 成绩:卷面成绩(70%)+平时成绩(30%) 教材:计算机算法设计与分析, 王晓东,电子工业出版社, 2012 参考书: (1) 算法设计与分析, 郑宗汉, 郑晓明, 清华大学出版社 (2) 算法导论, Thomas H. Cormen编著. 潘金贵等译, 机械 工业出版社
相关主题