- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
专业.
专业.
专业.
专业.
《算法设计与分析》教案
专业.
第1章 绪论
算法理论的两大论题:
1 ?算法设计
2.算法分析
1.1算法的基本概念
1.1.1 为什么要学习算法
理由1:算法——程序的灵魂
问题的求解过程:
分析问题T?设计算法-编写程序f整理结果
程序设计研究的四个层次:
算法T?方法学T?语言f工具
理由2:提高分析问题的能力
算法的形式化?思维的逻辑性、条理性
1.1.2算法及其重要特性
算法(Algorithm):对特定问题求解步骤的一种描述,是指令的有限序列。
算法的五大特性:
(1)输入:一个算法有零个或多个输入。
⑵输出:一个算法有一个或多个输出。
⑶有穷性:一个算法必须总是在执行有穷步之后结束,旦每一步都在有穷时间完成。
⑷确定性:算法中的每一条指令必须有确切的含义,对于相同的输入只能得到相同的 输出。
⑸可行性:算法描述的操作可以通过已经实现的基本操作执行有限次来实现。
1.1.3算法的描述方法
(D自然语言
优点:容易理解
?? 专业. ??
专业.
专业.
专业.
专业.
缺点:冗长、二义性
使用方法:粗线条描述算法思想 注意事项:避免写成自然段 欧几里德算法
⑶程序设计语言
优点:能由计算机执行
缺点:抽象性差,对语言要求高 使用方法:算法需要验证 注意事项:将算法写成子函数
欧几里德算法
# include iostream.h
int CommonFactor(int mz int n) {
int r=m % n;
while (r!=0)
{
m 二 n;
n 二 r;
r=m % n;
return n;
}
void main))
{ cout?CommonFactor(63r 54)?endl;
}
⑷伪代一一算法语言
伪代码(Pseudocode):介于自然语言和程序设计语言之间的方法,它采用某一程序 设计语言的基本语法,操作指令可以结合自然语言来设计。
优点:表达能力强,抽象性强,容易理解
使用方法:7 ± 2
欧几里德算法
r = m%n;
循环直到r等于0
2」m = n;
n 二 r;
2.3r = m%n;
3?输出n;
1」?4算法设计的一般过程
i ?理解问题
预测所有可能的输入
在精确解和近似解间做选择
确定适当的数据结构
算法设计技术
描述算法
跟踪算法
分析算法的效率
9.根据算法编写代码
1.2算法分析
算法分析(Algorithm Analysis):对算法所需要的两种计算机资源——时间和空间进 行估算
时间复杂性(Time Complexity)
空间复杂性(Space Complexity)
算法分析的目的:
设计算法一一设计出复杂性尽可能低的算法
选择算法一一在多种算法中选择其中复杂性最低者
时间复杂性分析的关键:
问题规模:
输入量的多少;
基本语句:
执行次数与整个算法的执行时间 成正比的语句
for (i=l; iv二n; i++) for (j=l; jv二n; j++) x++;
问题规模:n 基本语句:X++
大O符号
定义1.1若存在两个正的常数O和力,对于任意nrO,都有j\n)cxftn],则称
MBS)
大Q符号
定义1.2若存在两个正的常数o和ztO,对于任意心命,都有则称
7(n)=Q(p(n))
3?O符号
定义】?3若存在三个正的常数ol、c2和加,对于任意a?ztO都有c]xf[n)7ln)
例:7{n) =5/?2+ 8/?+ 1
当门A1 时,5/?2+ 8/7 + 1 5n2 + 8n+ n
=5r)2 + 9n5fi2 + 14n2 = (9(/72)
当 77A1 时,5/72 + 8/7+1 5/72 = 0(/72)
???当门时,丨4门2二5门2 + 8/7+1》5/?2
贝ij: 5r/2 + 8n+ ] =O(n2)
定理 1?1 T[n)=amnm ^amAnmA +??- +a]mcO (am0),则有 7[n)=O(nm) 且 7{n)=Q(nm],因此,有 7(n)=O(nn7)o
1.2.2最好、最坏和平均情况
例:在一维整型数组A[n]中顺序查找与给定值k相等的元素(假设该数组中有且仅有 一个元素值为k)
int Find(int A[]Jntn)
{
for (i=0; in; i++)
if (A[i]= =k) break;
return i;
}
结论:如果问题规模相同,时间代价与输入数据有关,则需要分析最好情况、最坏情况、 平均情况。
“ 最好情况:出现概率较大时分析
/ 最差情况:实时系统
/ 平均情况:已知输入数据是如何分布的,
通常假设等概率分布
1-2.3非递归算法的分析
算法——非递归算法、递归算法 例:求数组最小值算法
int ArrayMin
原创力文档


文档评论(0)