算法设计与分析 第一章ppt

合集下载

算法设计与分析 ppt课件

算法设计与分析  ppt课件
相容的(兼容的).
活动安排问题是要求在所给的活动集合中选出最大
相容活动子集.
ppt课件
3
算法设计与分析 > 贪心算法
[直观想法]
在安排时应该将结束时间早的活动尽量往 前安排,好给后面的活动安排留出更多的 空间,从而达到安排最多活动的目标。
贪心准则应当是:在未安排的活动中挑选 结束时间最早的活动安排。
4.1 活动安排问题
有n个活动E={1,2,…,n},其中每个活动要使用同一
资源,同一时间只允许一个活动使用该资源.
每个活动i都有一个开始时间si,和一个结束时间fi . 如果选择活动i,则它在时间区间[si, fi )内占用该资 源;若区间 [si, fi ) 与[sj, fj )不相交, 则称活动i与j是
8
算法设计与分析 > 贪心算法
背包问题
给定n种物品和一个背包。物品i的重量是wi ,其价值为vi,背包的容量为C。应如何选择装 入背包的物品,使得装入背包中物品的总价值 最大?
在选择物品i装入背包时,可以选择物品i的 部分,而不一定要全部装入背包,1≤i≤n。 不允许重复装入。
ppt课件
9
算法设计与分析 > 贪心算法
ppt课件
10
算法设计与分析 > 贪心算法
贪心选择:
每次捡最轻的物品装;
只考虑到多装些物品,但由 于单位价值未必高,总价值 不能达到最大;
每次选择的价值最大,但同时
每次捡价值最大的装;也的可物能品占少用 ,了未较必大能的够空达间到,总装价
值最大
每次装包时既考虑物品的重量又考虑物品的
价值,也就是说每次捡单位价值最大的装。
因为Ak中的活动都是不相交的,aj是Ak中结束时间最早的 活动,而fm≤fj ,所以Ak′中的活动都是不相交的。

《算法设计与分析》课件

《算法设计与分析》课件

常见的贪心算法包括最小生成树算法 、Prim算法、Dijkstra算法和拓扑排 序等。
贪心算法的时间复杂度和空间复杂度 通常都比较优秀,但在某些情况下可 能需要额外的空间来保存状态。
动态规划
常见的动态规划算法包括斐波那契数列、背包 问题、最长公共子序列和矩阵链乘法等。
动态规划的时间复杂度和空间复杂度通常较高,但通 过优化状态转移方程和状态空间可以显著提高效率。
动态规划算法的时间和空间复杂度分析
动态规划算法的时间复杂度通常为O(n^2),空间复杂度为O(n)。
04 经典问题与算法实现
排序问题
冒泡排序
通过重复地遍历待排序序列,比较相邻元素的大小,交换 位置,使得较大的元素逐渐往后移动,最终达到排序的目 的。
快速排序
采用分治策略,选取一个基准元素,将比基准元素小的元 素移到其左边,比基准元素大的元素移到其右边,然后对 左右两边的子序列递归进行此操作。
动态规划是一种通过将原问题分解为若干个子 问题,并从子问题的最优解推导出原问题的最 优解的算法设计方法。
动态规划的关键在于状态转移方程的建立和状态 空间的优化,以减少不必要的重复计算。
回溯算法
01
回溯算法是一种通过穷举所有可能情况来求解问题的算法设计方法。
02
常见的回溯算法包括排列组合、八皇后问题和图的着色问题等。
空间换时间 分治策略 贪心算法 动态规划
通过增加存储空间来减少计算时间,例如使用哈希表解决查找 问题。
将问题分解为若干个子问题,递归地解决子问题,最终合并子 问题的解以得到原问题的解。
在每一步选择中都采取当前状态下最好或最优(即最有利)的 选择,从而希望导致结果是最好或最优的。
通过将问题分解为相互重叠的子问题,并保存子问题的解,避 免重复计算,提高算法效率。

算法设计技巧与分析 第1章11 算法基本概念PPT课件

算法设计技巧与分析  第1章11 算法基本概念PPT课件

1. j ← 1
2. while ( j <n ) and ( x≠A[j]end while
5. if x = A[j] then return j else return 0
算法1.2 BINARYSEARCH
输入: 2 个元素的升序数组 A[1···n] 和元素 x 。
这样的过程能称之为算法吗?
Euclid
输入 :正整数m和n。 输出 :m和n的最大公因子。
1 如果n = 0, 计算停止返回m, m即为结果;否则继 续 2。
2 记r为m除以n的余数,即r=m mod n。 3 把n赋值给m,把r赋值给n,继续1。
这个算法是否符合5个要求?
Pseudocode
第j次循环剩余元素数目是 n/2j1 最大值为满足 n/2j1 1的 j 值
结论: j long1
Decision Tree
二元树的高度= logn
最大比较次数=决策树高度+1
5
2
8
1369
4 7 10
7
3
11
1
5
9
13
2 4 6 8 10 12 14
定理1.1
对于一个大小为 n 的排序数组, 算法BINARYSEARCH执行的
时间复杂性 空间复杂性
分析计算方法
What’s Algorithm?
算法:一个由有限指令集组成的过程。 一系列解决问题的清晰指令,也就是说,能够对一 定规范的输入,在有限时间内获得所要求的输出。
Five characters
输入 有零个或多个由外部提供的量作为算法的输入。
输出 算法产生至少一个量作为输出。
最大次数为 logn1 。

算法设计技巧与分析课件

算法设计技巧与分析课件
2013-7-14 华南师范大学 计算机学院 2
Chapter 1 Basic Concepts in Algorithmic Analysis 内容
• • • • • • • • • 1.8 Time Complexity 1.8.1 Order of growth 1.8.2 The O-notation 1.8.3 The fl-notation l.8.4 The e-notation 1.8.5 MamPles 1.8.6 Complekity classes and the o-notation 1.9 Space Complexity 1.10 Optimal Algorithms
2013-7-14
华南师范大学 计算机学院
23
算法1.4 选择selectionsort, 算法1.5 插入排序insertionsort
• 算法1.4 比较次数,(n-1)+…+1的连续和 • 复制次数:0 到3(n-1) • 算法1.5 :比较次数n-1到n(n-1)/2之间。元 素赋值次数为 比较次数加上n-1.
一个算法应该是可以信赖的,而且学习一个算法直到彻 底掌握的最好方法是反复进行试验。 因此,遇到一个算法时,应该找出这个算法的一个例子, 给出该例子的要点进行试验。
2013m)
• 程序是算法用某种程序设计语言的具体实现。
• 程序可以不满足算法的有限性的性质。例如操作系统,是一个
2013-7-14 华南师范大学 计算机学院 5
算法 几点说明
1. “算法”的 几个词:Algorithm、Logarithm、Algorism 2. “算法”的现代诠释 算法的现代意义十分类似于处方、过程、方法、规程、程 序,一个算法就是有穷规则的集合。其中,规则规定了一个 解决某一特定类型的问题的运算序列。 3. 学习“算法”的方法

算法分析与设计课件:第一章 绪言上

算法分析与设计课件:第一章 绪言上

前言
理论上的可计算——可计算性理论 现实上的可计算——计算复杂性理论
前言:学习算法的意义 Story-1
“I can’t find an efficient algorithm, I guess I’m just too dumb.” Serious damage to your position within the company !!!
前言
(6)已知研究生选课情况,安排课程考试的日程
研究生选课情况表
姓名Βιβλιοθήκη 选修课1选修课2选修课3
杨 一 算法分析(A) 形式语言(B) 计算机网络(E)
石磊 计算机图形学(C) 模式识别 (D)
魏涛 计算机图形学(C) 计算机网络(E) 人工智能(F)
马耀先 模式识别(D ) 人工智能(F) 算法分析(A)
• Be a great thinker and designer.
• Not: A list of algorithms
– - Learn their code – - Trace them until work – - Implement them – - be a mundane programmer
二、什么是算法 例1 已知两正整数m和n,求二者的最大公因子 算法1.1 欧几里德(Euclid)算法 输入 正整数m,n 输出 m和n的最大公因子
• 定理 • 对任意正整数m和任意非负整数n,并且
m>n ≥ 0
• 有 gcd(m,n)=gcd(n,m mod n) • 如 gcd(24,18) • = gcd(18,6) • = gcd(6,0) • =6
• 可计算性理论、复杂性理论、逻辑、形式
语法和自动机

算法分析基础ppt课件

算法分析基础ppt课件

精品
14
1. 3 二分搜索及其时间复杂度
• 线性搜索 及其算法分析 • 二分搜索
同数据结构,略。但要求作为例子或问题求解。
2020/6/13
精品
15
比较次数分析
• While中,j次循环时剩余元素数目 Floor(n/2j-1)
• 循环停止条件:找到x,或 当前查找范 围的数组长度为1。
• 最大搜索次数:满足Floor(n/2j-1)=1 时的j 值
2020/6/13
精品
7
1.2 历史背景
20世纪,早期, 30年代 能否用有效的过程来求解问题受到关注
问题分类为:可解、不可解(存在有效过程来求解问题) 计算模型:存在模型,用此模型能建立一求解某问题的算法,--入- -可解的类 模型列举:歌德尔的递归函数,Church的Lamda演算,Post的波斯特机, Turing机。 Church论断:所有4个模型等效。如果一个问题在某一模型上可解,那么 在其他模型上都是可解的。=>“几乎所有”问题都是不可解的。
2.算法的时间复杂性 (1)最坏情况下的时间复杂性
Tmax(n) = max{ T(I) | size(I)=n } (2)最好情况下的时间复杂性
Tmin(n) = min{ T(I) | size(I)=n } (3)平均情况下的时间复杂性
Tavg(n) = p(I)T(I) siz(eI)n
其中I是问题的规模为n的实例,p(I)是实 例I出现的
➢每个领域: 依赖 有效算法设计 ➢运行时间: 由例子到理论 ➢时间是衡量算法有效性的最好测度
➢算法的几个方面:
➢输入 ➢有限指令集 ➢输出 (存在? Y/N)
2020/6/13

算法设计与分析 ppt

算法设计与分析 ppt
算法设计与分析 >目录
第一章 算法概述 第二章 递归与分治策略 第三章 动态规划 第四章 贪心算法 第五章 回朔法 第六章 分支限界法 第七章 随机化算法
1
算法设计与分析 >第一章 目录
1.1 算法与程序 1.2 算法复杂度分析 1.3 NP完全性理论
2
算法设计与分析>算>法算概法述概述
1.1 算法与程序 1 算法定义及其特性
A


条件成立?
条件成立?


B
A
B
A
C
14
算法设计与分>析算>法算概法述概述
5. 算法分类
从解法上 数值型算法:算法中的基本运算为算术运算. 非数值型算法:算法中的基本运算为逻辑运算.
从处理方式上 串行算法:串行计算机上执行的算法. 并行算法:并行计算机上执行的算法.
本课程主要介绍非数值型的串行算法.
如果存在一个函数 ~T(n)使得当n ,有
(T(n) - ~T(n)) / T(n)0
称 ~T(n)是T(n)当 n 时的渐进性态 或 渐进复杂性
27
算法设计与分>>析算算法>法算复概法杂述概性分述析 >渐进性态
在数学上,T(n)与 ~T(有n)相同的最高阶项.可取 为~T(略n去) T(n)的低阶项后剩余的主项. 例如 T(n)=3n2+4nlogn+7, 则 ~T(n) 可以是3n2 当n充分大时用 ~T(n)代替T(n)作为算法复杂性的度量, 以简化分析 比较两个算法时,如果他们的阶不同,就可分出效率高低 。故此时只需关心 ~T最(n高) 限的阶即可。可忽略最高项系 数或低阶项。
4

算法分析与设计算法设计与分析一课件

算法分析与设计算法设计与分析一课件

本课程需要的基础 数据结构 程序设计语言(C/C++):结构化设计 一定的数学基础 操作系统、编译
授课形式: 课堂教学:(√) 课堂讨论:专题、解题报告 上机实践:需要提交实验报告
主要参考书
计算机算法基础, 余祥宣等编著,华中科技大学出版社 Introduction to algorithms, Thomas H. Cormen,etc., third
数值天气预报
只有在要求的时间内解决问题才是有意义的。
基于算法的时效性,只有把在相当有穷步内终止的 算法投入到计算机上运行才是实际可行的。
何为“相当有穷”? ——通过算法分析,了解算法速度,给出算法计算 时间的一个精确的描述,以衡量算法的执行速度, 选择合适的算法解决问题。 注:算法分析还包括空间分析。
运算的分类(续)
➢ 时间非囿界于常数的运算:
字符串操作:与字符串中字符的数量成正比 例:字符串的比较运算(strcmp)
与算法学习相关的内容
五个方面:设计、表示、证明、分析、测试
1)设计:构思算法的处理规则,创造性的活动。
2)表示:用语言把算法描述出来。“类语言”、“伪代码” (SPARKS语言、类C语言)
3)证明:证明算法是正确的。 算法的正确性:对合法输入能得出正确的答案。 算法的证明:证明算法的正确性,与语言无关 程序的证明:证明程序的正确性
4)分析:对算法的时、空特性做定性、定量分析,以了解算法 的性质。
5)测试:将算法变成程序,放到计算机上运行,观察运行情况 编程中的调试:排错过程。“调试只能指出有错误,而不 能指出它们不存在错误” 运行中的测试:分析过程。作时空分布图,验证分析结论, 进一步优化算法设计。
本课程集中于学习算法的设计与分析。通过学习,掌握计算 机算法设计和分析基本策略与方法,为设计更复杂、 更有效的算法奠定基础

算法设计与分析课件chapter1

算法设计与分析课件chapter1

Chapter 1Introduction1.1Role of Algorithms in Computer Science(1)算法是计算机科学基础的重要主题·70年代前,计算机科学基础的主题没有被清楚地认清。

·70年代,Knuth出版了《The Art of Computer Programming》(三卷), 以各种算法研究为主线,确立了算法为计算机科学基础的重要主题,1974年获得图灵奖。

·70年代后,算法作为计算机科学的核心推动了计算机科学技术的飞速发展(2) 计算机科学的体系·解决一个计算问题的过程可计算否→能行可计算否→算法设计与分析→用计算机语言实现算法→软件系统·可计算理论:·计算模型·可计算问题/不可计算问题·计算模型的等价性--图灵/Church命题·计算复杂性理论·在给定的计算模型下研究问题的复杂性·上界·下界·平均·固有复杂性·复杂性问题的非类: P=NP?·抽象复杂性研究·算法设计和分析·可计算问题的算法的设计与分析·设计算法的理论、方法和技术·分析算法的理论、方法和技术(3) 算法设计与分析的意义·计算机各领域的核心·计算机工程特别是计算机软件工程的基础1.2 Concepts of Algorithms(1) 算法的定义定义1.2.1 (计算). 可由一个给定计算模型机械地执行的规则或计算步骤序列称为该计算模型的一个计算。

*一个计算机程序是一个计算(计算模型是该计算机)*计算可能永远不停止--不是算法。

定义1.2.2 (算法). 算法是一个满足下列条件的计算:① 有穷性/终止性:有限步内必须停止。

/* 好算法/坏算法 */② 确定性:每一步都是严格定义和确定的动作。

算法设计与分析PPT课件

算法设计与分析PPT课件

数组
输出
1 0,0,2 1 2 3
2
1,1,2 0,0,2
123
,2,2
3 1,1,2 1 2 3 1 2 3
0,0,2
2
2,1,2 0,0,2 1 3 2
,2,2
3 2,1,2 1 3 2 1 3 2
0,0,2
2
2,1,2 0,0,2
123
1 1,0,2 2 1 3
层次 栈状态 (i, k, m)
个函数是双递归函数。 Ackerman函数A(n,m)定义如下:
A(1,0)2
A(0,m)1
A(n,0)n2
m0 n2
A(n,m)A(A(n1,m),m1) n,m1
Ackerman函数无法找到非递归的定义。
28
Ackerman函数
A(1,0)2
A(0,m)1
A(n,0)n2
m0 n2
A(n,m)A(A(n1,m),m1) n,m1
P n ( x ) ( ( ( a n x ( a n 1 ) ( a n 2 ) x a n 3 ) ) x a 1 ) x a 0
T(n)n
Horner(int a[n+1],real x) { int p= a[n];
for (i=1;i<=n;i++) p=p*x+a[n-i]; return p; }
算法复杂性是算法运行所需要的计算机资源的量, 需要时间资源的量称为时间复杂性,需要的空间资源的 量称为空间复杂性。这个量应该只依赖于算法要解的问 题的规模、算法的输入和算法本身的函数。如果分别用 n、I和A表示算法要解问题的规模、算法的输入和算法 本身,而且用C表示复杂性,那么,应该有C=F(n,I,A)。 一般把时间复杂性和空间复杂性分开,并分别用T和S来 表示,则有: T=T(n,I)和S=S(n,I) 。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
17
> 算法复杂性分析 > 算法概述 算法设计与分析 >算法概述
考虑时间复杂性的理由
某些计算机用户需要提供程序运行时间的上限 (用户可接受的); 所开发的程序需要提供一个满意的实时反应。
18
> 算法复杂性分析 > 算法概述 算法设计与分析 >算法概述
算法分析:(渐进算法分析):对执行算法所消 耗或占用的资源进行估算,给出算法耗费的 限界函数. 需解决两个问题: 如何度量复杂性? 如何分析复杂性?
~ 当n充分大时用 T(n)代替T(n)作为算法复杂性的度量,
以简化分析 比较两个算法时,如果他们的阶不同,就可分出效率高 ~ 低。故此时只需关心 T( n ) 最高限的阶即可。可忽略最高 项系数或低阶项。
28
> 算法复杂性分析 >渐进性态 > 算法概述 算法设计与分析 >算法概述
2.渐进性态的阶
7
>算法概述 算法设计与分析 >算法概述
2.确定性
算法的每一步骤必须有确定的含义,对每一种可能出 现的情况,算法都应给出确定的操作,不能有多义性.
例如 计算分段函数 f(x) =
1 x>100 0 x<10
算法描述:输入变量x,
若x大于100的数,输出1; 若x小于10的数,输出0. 输入10<=x<=100,则算法在异常情况下,执
例如
3n=O(n),
n+1024=O(n),
2n2+11n-10=O(n2)
n2=O(n3) ?

n3=O(n2) ?

29
> 算法复杂性分析 >渐进性态 > 算法概述 算法设计与分析 >算法概述
三点注意:
1. 用来作比较的函数 g(n)应该尽量接近 f(n).
例如 3n+2=O(n2) 松散的界限;3n+2=O(n) 较好的界限
>渐进性态
运算规则
1. O(f )+O(g)=O( max( f, g ) )
2. O(f )+O(g)=O(f+g)
3. O(f )· O(g)=O(f· g)
4. 如果 g(n)=O(f (n)),则 O(f )+O(g)=O(f )
5. f=O( f )
设f(n)和 g (n) 是定义在正整数集上的正函数,
(1)大O表示法 (算法运行时间的上限 )
若正常数c和 自然数N0 使得当 n N0 时,有f(n) cg (n) 则称函数 f(n)在n充分大时有上界, 且 g(n)是它一个上界. 记为 f(n) =O(g (n)) , 也称 f(n) 的阶不高于g (n) 的阶.
i 1 k
max 最坏情况:Tmax(n) = max T(n,I) = I Dn I D
n
t e (n, I )
i 1 i i
* = ti ei(n, I )=T(n, I * ) i 1
k
Dn中达到Tmax (n) 的一个输入.
平均情况:Tavg(n) =
I DN
P( I ) T(n, I)
19
> 算法复杂性分析 > 算法概述 算法设计与分析 >算法概述 >复杂性的计量
1.复杂性的计量
算法的复杂性: 算法运行所需的时间和空间的数量.
它与算法求解问题的规模n,算法的输入数I 及算法本身有关.
问题的规模n:指问题的输入数据或初始数据的量.
在不同的问题中, n有不同的表现形式:
例如 在数组中找分量c,
算法效率与计算机的性能有关,但此因素对所有算法 的影响相同。
21
算法设计与分析>算法概述
令 n: 问题规模 I: 输入数据 A: 算法本身 C: 算法的 复杂性, 则 C=f ( n, I, A ) 将时间复杂性和空间复杂性分别考虑,并用T和S表示. 则有:
T=T(n, I, A)
S=S (n, I, A)
15
> 算法复杂性分析 > 算法概述 算法设计与分析 >算法概述
1.2 算法的复杂性分析
算法的复杂性:指执行算法所消耗或占用的资 源的数量 一个算法所需资源越多,我们就说它的复杂性 越高,反之则低. 空间复杂性
算法的复杂性
时间复杂性
16
算法设计与分析>算法概述
考虑空间复杂性的理由
在多用户系统中运行时,需指明分给该程序 的内存大小; 需预先知道计算机系统是否有足够的内存来 运行该程序; 一个问题可能有若干个不同的内存解决方案 ,从中择取; 用空间复杂性估计一个程序可能解决的问题 的最大规模。
~ 1. T(n)的渐进复杂性(渐进表达式) T(n) : (T(n) - ~ T(n)) / T(n)0,n 时
2.渐进阶: O, ,
26
> 算法复杂性分析 >渐进性态 > 算法概述 算法设计与分析 >算法概述
2.复杂性的渐进性态
1.渐进性态
设T(n)为算法A的时间复杂性函数(输入值固定. 如Tmax, Tmin, Tavg ), 则它是n 的单增函数。
如果存在一个函数 T(n) 使得当n ,有 ~ (T(n) - T(n) ) / T(n)0 ~ 称 T(n) 是T(n)当 n 时的渐进性态 或 渐进复杂性
~
27
> 算法复杂性分析 >渐进性态 > 算法概述 算法设计与分析 >算法概述
~ ~ 在数学上,T(n)与 T(n) 有相同的最高阶项.可取 T(n) 为 略去T(n)的低阶项后剩余的主项. 例如 T(n)=3n2+4nlogn+7, 则 ~ T( n ) 可以是3n2
将算法A 隐含在函数名中,不同函数名代表不同算法,
则简化为
T=T( n, I ) S=S( n, I )
22
> 算法复杂性分析 > 算法概述 算法设计与分析 >算法概述 >复杂性的计量
仅以时间复杂性为例将复杂性函数具体化.
设一台抽象计算机提供的元运算有k种, 记作 O1 ,…,Ok ; 设这些元运算每执行一次所需时间分别为 t1 ,…, tk ; 设在算法A中用到Oi的次数为 ei , i =1,…,k, 则 ei = ei ( n, I ) T=T(n,I)= t i ei (n,I)
2. 不要产生错误界限。 例如 n2+100n+6,当 n<3 时,n2+100n+6<106n,由此 就认为 n2+100n+6=O(n). 3. f(n)=O(g(n))不能写成 g(n)=O(f(n)) 因为两者并不等价。实际上,这里的等号并不是通常 相等的含义。
30
>算法概述 算法设计与分析 >算后,T是输入变元 i 的函数.
23
> 算法复杂性分析 > 算法概述 算法设计与分析 >算法概述 >复杂性的计量
说明:
我们不可能对规模为n的每一种合法输
入I都计算ei次,因为输入可能是无穷集合,
我们只能对规模为n的问题的某类具有代表
性的合法输入统计相应的ei.
24
3.算法的描述
描述算法的方式一般有三种:自然语言,流程图, 伪代码语言。 伪代码描述介于自然语言与程序 设计语言之间。
13
>算法概述 算法设计与分析 >算法概述
4. 算法结构
任何算法都可由顺序结构、选择结构、循环结构这 三块“积木”通过组合和嵌套表达出来,遵循这种方 法的程序设计,即为结构化程序设计。
算法的定义因看待的角度不同而不同
哲学家:算法是解决一个问题的抽象行为序 列。
码农:算法是一个计算过程,它接受一些输 入,并产生某些输出。 高大上:算法是解决一个精确定义的计算问 题的工具。
核心:算法是解决问题的办法和法则,算法必 须能够让人一步一步照着执行。
6
>算法概述 算法设计与分析 >算法概述
两个矩阵相乘, 表中排序,
n:数组中分量的个数
n:矩阵的维数 n:数组中分量的个数
遍历一棵树,
n:树中节点数
20
算法设计与分析>算法概述
5*5的矩阵相乘与10*10矩阵的矩阵相乘所需时间 空间均不相同; <问题规模不同> 找c在数组A中的位置,c=A(1),与c=A(100),所需时间 显然也不同 <输入数不同> 顺序查找还是折半查找速度也是不一样的. <算法不同>
算法: 是将问题的输入转化为输出的一系列 计算或操作步骤. “算法是任何定义好的计算程式,它取某些值 或值的集合作为输入,并产生某些值或值的集 合作为输出。”
3
>算法概述 算法设计与分析 >算法概述
算法描述举例
例:求两个不全为0的非负整数m, n的最大公约数 gcd(m,n)的欧几里德算法描述: 1.如果n=0,返回m的值作为结果,过程结束; 否则,进入第二步; 2.用n去除m,将余数赋给 r; 3.将n的值赋给m,将r的值赋给n,返回第一步。
4
>算法概述 算法设计与分析 >算法概述
计算机算法与人工算法
例如 求定积分: s= 人工处理步骤为
找出f(x)的源函数F(x)
利用牛-莱公式:s=F(b)-F(a)
计算机算法:计算定积分采用数值积分的方
法,得到一个近似解.
•有些问题没有计算机算法. •有些问题计算机算法与人工算法不同.
5
算法设计与分析>算法概述
算法的特征
1.有穷性
一个算法须在执行有限个运算步后终止,每一步必须 在有限时间内完成.实际应用中,算法的有穷性应该包括 执行时间的合理性. 程序是算法的程序设计语言的具体实现.可不满足性质1. 一个算法面向一个问题,而不是仅仅求解一个问题的实例
相关文档
最新文档