北邮算法设计与分析 第一章 引言

合集下载

算法分析与设计1-数据结构基础

算法分析与设计1-数据结构基础
1938年12月7日,Donald E. Knuth 出生于美国威斯康 星州密尔沃基市。让人眩目的履历:
1956年进入俄亥俄州克利夫兰的凯斯理工学院(现并 入凯斯西储大学),学习物理。 1957年大学一年级暑假在学校打工,接触到当时很先 进的IBM650 计算机,对其产生浓厚的兴趣。 1958年改学数学,并从此与计算机结缘。 1960年毕业,因为成绩过于出色,校方打破惯例, Knuth 被同时授予学士和硕士学位。随后进入加州理 工学院数学系。 1963年取得博士学位,并留校任助理教授。
7. 简单是可靠的先决条件。
Dijkstra在1968年发表的短文:Go To Statement Considered Harmful
1974年,Donald E.Knuth因在算法分析和编程语言设计方面 的突出贡献设计和完成TEX(一种创新的具有很高排版质量 的文档制作工具)而被授予图灵奖 。
1984年,艾迪生-韦斯利公司出版 Knuth 教授的《The TeXbook》,该书成 为最权威的 TeX 参考书。 1985年,将 TeX 的默认字体由美国现代改为计算机现代 。 1986年荣获美国数学学会的斯蒂尔奖。 1987年获纽约科学研究会奖。 1988年获富兰克林奖。 1989年,因其对软件理论的贡献获 J.D. Warnier 奖。 1990年,斯坦福大学授予他计算机科学艺术教授的称号。 1991年,《3:16 圣经文本阐释》一书出版,他试图用分层随机抽样的方法 对圣经进行分析。
1930,5,11 – 2002,8,6。 荷兰计算机科学家,毕业就职于荷兰Leiden大学,早 年钻研物理及数学,而后转为计算学。在1972年获得 图灵奖, 之后,他还获得过1974年AFIPS Harry Goode Memorial Award、1989年ACM SIGCSE计算 机科学教育教学杰出贡献奖、以及2002年ACM PODC最具影响力论文奖。

算法设计与分析(第2版) 郑宗汉 第1章-1

算法设计与分析(第2版) 郑宗汉 第1章-1

8
Байду номын сангаас
学习要求
深刻理解每一类算法的思想及其实现
能熟练运用所学知识解决实际问题
培养提高计算思维能力
9
考核方式
Homework and Reading: 20%
Final Exam (Written Test): 80%
10
第1章 算法的基本概念
1.1 引言
1.1.1 算法的定义和特性
c %3 0
(1.1.3)
16
1.1.2 算法的设计和复杂性分析
百鸡问题的穷举法
输入:所购买的3种鸡的总数目n 输出:满足问题的解的数目k,公鸡,母鸡,小鸡的只数g[],m[],s[]
1. void chicken_question(int n, int &k, int g[], int m[], int s[]) 2. { 3. int a,b,c; 分析发现:只能买到n/5 4. k = 0; 只公鸡,n/3只母鸡,将 5. for (a = 0; a <= n; a++) { 算法进行改进。 6. for ( b = 0; b <= n; b++) { 7. for (c = 0; c <= n; c++) { 8. if ((a + b + c == n) && (5 * a + 3 * b + c / 3 == n) && (c%3 == 0)) { 9. g[k] = a; 10. m[k] = b; 11. s[k] = c; 12. k++; 13. } 14. } 15. } 16. } 17. }

《算法设计与分析》(全)

《算法设计与分析》(全)
巢湖学院计算机科学与技术系
1.1、算法与程序
程序:是算法用某种程序设计语言的具体实现。 程序可以不满足算法的性质(4)。 例如操作系统,是一个在无限循环中执行的程序, 因而不是一个算法。 操作系统的各种任务可看成是单独的问题,每一个 问题由操作系统中的一个子程序通过特定的算法来实 现。该子程序得到输出结果后便终止。
渐近分析记号的若干性质
(1)传递性: ➢ f(n)= (g(n)), g(n)= (h(n)) f(n)= (h(n)); ➢ f(n)= O(g(n)), g(n)= O (h(n)) f(n)= O (h(n)); ➢ f(n)= (g(n)), g(n)= (h(n)) f(n)= (h(n)); ➢ f(n)= o(g(n)), g(n)= o(h(n)) f(n)= o(h(n)); ➢ f(n)= (g(n)), g(n)= (h(n)) f(n)= (h(n)); (2)反身性: ➢ f(n)= (f(n));f(n)= O(f(n));f(n)= (f(n)). (3)对称性: ➢ f(n)= (g(n)) g(n)= (f(n)) . (4)互对称性: ➢ f(n)= O(g(n)) g(n)= (f(n)) ; ➢ f(n)= o(g(n)) g(n)= (f(n)) ;
巢湖学院计算机科学与技术系
渐近分析记号的若干性质
规则O(f(n))+O(g(n)) = O(max{f(n),g(n)}) 的证明: ➢ 对于任意f1(n) O(f(n)) ,存在正常数c1和自然数n1,使得对
所有n n1,有f1(n) c1f(n) 。 ➢ 类似地,对于任意g1(n) O(g(n)) ,存在正常数c2和自然数
巢湖学院计算机科学与技术系
第1章 算法引论

算法设计与分析基础

算法设计与分析基础

2023/12/21
20
LingJie/GDUT
1.2.6 详细表述该算法的方法
• 可以用到的工具有自然语言(nature
language)、伪代码(pseudocode)以及程序 流程图(flow chart)等。
• 当对一个问题有了概要的理解后,下面的工作
就是把这个问题的想法进行细化。所谓的细化 就是把它们表示成算法的步骤。
令执行顺序以及同步等问题。并行算法的设计 有相应的理论,这里仅考虑串行算法。
2023/12/21
17
LingJie/GDUT
1.2.3 选择精确或者近似的算法
• 解决问题下一步要考虑的是使用精确的还是近
似的算法。并不是每一个可解的问题都有精确 的算法,例如求一个数的平方根,求非线性方 程的解等。有时候一个问题有精确的解法但是 算法的执行效率很差,例如旅行家问题。因此 如果待处理的问题涉及到上述那些方面,则要 考虑是选择精确的还是近似的算法。
2023/12/21
10
LingJie/GDUT
-- 2* 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
-- 2 3*
5
7
9
11
13
15
17
19
21
23
25
-- 2 3
5*
7
11
13
17
19
23
25
-- 2 3
5
7
11
13
第一步:找出m的所有质因数。 第二步:找出n的所有质因数。 第三步:从第一步求得的m的质因数分解式和第二步求得的n
的质因数分解式中,找出所有公因数。 第四步:将第三步找到的公因数相乘,结果为所求的

算法设计与分析(第一章)

算法设计与分析(第一章)

2014-5-14
计算机算法设计与分析
9
计算机程序
• 程序是计算机内进行信息处理的一种逐步 描述,它 • (1)是由某种程序设计语言的若干条命令组 成的有穷序列; • (2)每条命令的意义都是确定的; • (3)具有零个或多个输入; • (4)产生若干个输出; • 程序的执行可能终止也可能不终止。
• 分解
将复杂的任务分解为若干个 相对简单的子任务的合成。
… Bk
• 抽象与分解是程序设计者的两个基本功夫。 • 递归方法是算法设计中最重要的思想方法。
2014-5-14 计算机算法设计与分析 25
递归与经典算法
• 递归(Recursion)就是通过把复杂问题分解为 较简单的同一问题来求解。 • 应用递归方法的经典算法有: 此外还有: • 分治法(Divide and Conquer) 非经典算法 • 贪心法(Greedy) 和并行算法。 • 回溯法(Backtracking) • 分支界限法(Branch and Bound) • 动态规划法(Dynamic Programming)
2014-5-14 计算机算法设计与分析 29
时间复杂性的计算
• 时间的复杂性就是程序执行的时间总和。 • 时间复杂性f(n, I)的计算为: f(n, I) = i t e (n, I) i i =1
• 其中:ti为执行抽象计算机的第i种指令一 次所需要的时间,这里假定抽象计算机 共有k种指令;ei(n, I)为经过统计后得到 的执行抽象计算机的第i种指令的次数。
2014-5-14 计算机算法设计与分析 28
决定算法复杂性的因素
• • • • 算法的复杂性取决于 (1)求解问题的规模; (2)具体的输入数据; (3)算法本身的设计。

算法分析与设计(习题答案)

算法分析与设计(习题答案)

算法分析与设计教程习题解答第1章 算法引论1. 解:算法是一组有穷的规则,它规定了解决某一特定类型问题的一系列计算方法。

频率计数是指计算机执行程序中的某一条语句的执行次数。

多项式时间算法是指可用多项式函数对某算法进行计算时间限界的算法。

指数时间算法是指某算法的计算时间只能使用指数函数限界的算法。

2. 解:算法分析的目的是使算法设计者知道为完成一项任务所设计的算法的优劣,进而促使人们想方设法地设计出一些效率更高效的算法,以便达到少花钱、多办事、办好事的经济效果。

3. 解:事前分析是指求出某个算法的一个时间限界函数(它是一些有关参数的函数);事后测试指收集计算机对于某个算法的执行时间和占用空间的统计资料。

4. 解:评价一个算法应从事前分析和事后测试这两个阶段进行,事前分析主要应从时间复杂度和空间复杂度这两个维度进行分析;事后测试主要应对所评价的算法作时空性能分布图。

5. 解:①n=11; ②n=12; ③n=982; ④n=39。

第2章 递归算法与分治算法1. 解:递归算法是将归纳法的思想应用于算法设计之中,递归算法充分地利用了计算机系统内部机能,自动实现调用过程中对于相关且必要的信息的保存与恢复;分治算法是把一个问题划分为一个或多个子问题,每个子问题与原问题具有完全相同的解决思路,进而可以按照递归的思路进行求解。

2. 解:通过分治算法的一般设计步骤进行说明。

3. 解:int fibonacci(int n) {if(n<=1) return 1;return fibonacci(n-1)+fibonacci(n-2); }4. 解:void hanoi(int n,int a,int b,int c) {if(n>0) {hanoi(n-1,a,c,b); move(a,b);hanoi(n-1,c,b,a); } } 5. 解:①22*2)(−−=n n f n② )log *()(n n n f O =6. 解:算法略。

算法设计与分析第一章02

算法设计与分析第一章02
①用怎样的一个量来表达算法的复杂性 ②对一个具体的算法,怎样计算它的复杂性
24
智能信息处理研究中心(RCIIP)
算法的复杂性
定义 (输入的大小) 设Input是问题R的输入集合,R的输入大小是一个函数。F: InputN,N是正整数集合。 例: 矩阵问题的输入大小=矩阵的维数 图论问题的输入大小=图的边数/结点数 定义(时间复杂性) 一个算法对特定输入的时间复杂性是该算法对该输入产生结 果需要的原子操作或“步”数 ①时间复杂性是输入大小的函数 ②我们假设每一步的执行需要常数时间,实际上每步需要的 时间量可能不同。 定义(空间复杂性) 一个算法对特定输入的空间复杂性是该算法对该输入产生结 25 果所需要的存储空间大小。
智能信息处理研究中心(RCIIP)
计算机算法设计与分析
潘海为

1
智能信息处理研究中心(RCIIP)
算法的复杂性
算法的复杂性是算法效率的度量,是评价效法效率的重要依据 一个算法复杂性的高低体现在运行该算法所需的计算机资源 的多少上 计算机的资源,主要体现在时间和空间(存储器)资源上。因而, 算法的复杂性分为时间复杂性和空间复杂性。本课程主要对 算法的时间复杂性进行分析。 关于算法的复杂性,有两个问题需要搞清楚
智能信息处理研究中心(RCIIP)
算法的复杂性
定义(最坏复杂性) 设Input是问题R的输入集合,Complexity(X)是求解R的算法 A的复杂性函数,Size(y)是R的输入大小函数,A的最坏复杂 性是 MaxComplexity(size(y))yInput 定义(最好复杂性) MinComplexity(size(y))yInput 定义 (平均复杂性) 设y∈Input,y作为算法A的输入出现的概率是py,A的平均复 杂性为

算法设计与分析_第1章_概述

算法设计与分析_第1章_概述

是否存在更好的算法?
下界 最优
途径
理论/数学上的分析 经验/计算机上的执行情况
24
学习要点
算法在计算机科学中的地位 算法的概念 算法分析 算法的计算复杂性概念 算法渐近复杂性的数学表述
25
算法分析
不是所有能计算的都有价值,不是所有有价值的 都能被计算.
----------阿尔伯特.爱因斯坦(1879-1955)
14
算法
算法是问题的程序化解决方案 算法设计技术是用算法解题的一般性方 法,用于解决不同计算领域的多种问题.
问题的陈述远比它的解法重要;得解只要有数学的 或实验的技巧就行。提出新的疑问、新的可能,从新的 角度看老问题,需要创造性的想象力并且标志着科学的 真正进步。 ――A.爱因斯坦
15
问题的求解过程
28
算法复杂性分析
目的 预测算法对不同输入所需资源量 复杂性测度 时间,空间, I/O 等, 是输入大小的函数 用途 为求解一个问题选择最佳算法、最佳设备 需要的数学基础 离散数学,组合数学,概率论,代数等 需要的数学能力 建立算法复杂性的数学模型 数学模型化简
29
学习要点
算法在计算机科学中的地位 算法的概念 算法分析 算法的计算复杂性概念 算法渐近复杂性的数学表述
计算复杂性理论
在给定的计算模型下研究问题的复杂性 复杂性问题的分类: P=NP? 抽象复杂性研究
算法设计和分析
可计算问题的算法的设计与分析 设计算法的理论、方法和技术 分析算法的理论、方法和技术
方法
计算机软件
系统软件 工具软件 应用软件
应用
6
3 算法与其它技术
应 用
计算环境 (.net, grid, web service) 编程设计环境
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档