算法分析与设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

例子:[伪定理] 所有马都只有一种颜色。
证明:任何一个马的集合都只有一种颜色
=>所有马只有一种颜色。
设H为任何一个马的集合,对H中马数量n归纳:
1)n=0,H
成立;n=1,显然成立。
2)设H中的马为h1, h2, … hn,由于任意n-1匹马的集合有唯
一的颜色,那么 H1
h2 h3 h4 … hn
方格位置随意
瓷砖材料形状为
精品课件
14
归纳法证明举例-铺砖定理
证明:不妨假设 m 2n

1)当n=0时,显然成立;n=1时,也显然成立;
2) n1 m , 2n
2n1,对2n1
大小的地板显然成立,现四分地板得到4个相同大小的
地板。
也变成存在特殊 方格地板地板
特殊方格地板
[证毕]
精品课件
15
归纳法证明举例-马的颜色
Aho, Hopcroft, Ullman. 数据结构与算法( 1983年影印本,清华出版社)
Thomas H. Cormen 等4人. 算法导论(MIT第2版 ), 高教出版社影印本
潘金贵. 现代计算机常用数据结构和算法(南大 出版社),即Cormen等3人书第一版的翻译
精品课件
2
参考书目
的约数
d0
即d可以同时整除X和Y=X+1。
对于
,否可则以Y 同m 时整除o d连 d续1整数
精品课件
10
[欧几里德]证明
矛盾
因此,P为无限集合。 [证毕]
下面衍生出找素数的一个算法:
精品课件
11
派生出算法
function Newprime(P:整数集)
{变量P为一非空有限的素数集} XP中所有元素的乘积; YX+1;
确定性 清晰、无歧义 有限性 指令执行次数、时间
特点:
执行时,不能包含任何主观的决定; 不能有类似直觉/创造力等因素。
精品课件
5
例子:
人们日常生活中做菜的过程,可否用算法 描述?
✓ 如:“咸了”、“放点盐”、“再煮一会”。 ✓ 可否用计算机完成?
算法必须规定明确的量与时间; 不能含糊字眼。
算法分析与设计
陶军 CS dept. 李文正楼北203 Tel: 83790366 juntao@seu.edu.cn
精品课件
1
参考书目
Aho, Hopcroft, Ullman. The Design and Analysis of Computer Algorithms. (1974版 影印版,铁道出版社)
if n<2 then return n;
else retu精r品n课F件ibonacci(n-
18
如何选择算法?
当解决一个问题时,存在几种算法可供选择,如 何决定哪个最好?
两种研究方法:
经验(Empirical):对各种算法编程,用不同实例实 验;
理论(Theoretical):以数学化的方式确定算法所需 要资源数与实例大小之间函数关系。
3
第一章 预备知识
学习要点:
理解算法的概念。 理解什么是程序,程序与算法的区别和内在联
系。 掌握算法的计算复杂性概念。 掌握算法渐近复杂性的数学表述。 掌握用C++语言描述算法的方法。
精品课件
4
什么是算法?
算法(algorithm)
一个(由人或机器进行)关于某种运算规则的集合
输入 规则 输出
即 第1个月买了1对兔子;第2个月仍只有1对;第3 个月有2对…
依此类推,如兔子不死亡,那么各月的兔子数由 Fibonacci序列给出:递归f0形式0; f11
fnfn1fn2, n2
序列以0, 1, 1, 2, 3, 5, 8, 13, 21, 34, …
Fibonacci序列的算法:
Function Fibonacci(n)
M. H. Alsuwaiyel. Algorithms: Design Techniques and Analysis(电子工业出版社影 印本,方世昌等译)
王晓东. 算法设计与分析.(电子工业出版社) Sara Baase等. 计算机算法:设计与分析导论(
第3版),高教出版社影印本。
精品课件
H2 h1
h3 h4 … hn
对两个集合应用归纳假设:
H1一种颜色 H2一种颜色
=>
H1和H2同种颜色
H具有同种颜色。?
精品课件
16
归纳法证明举例-马的颜色
n 0 n 1,
必须 n 3
正确 ,从2=>3,3=>4,…
不能1=>2。
精品课件
17
归纳法证明举例-斐波纳契序列
例子:[Fibonacci序列] 每个月一对繁殖期的兔子 会产生一对后代,而这对后代2个月后又会繁殖。
通常,描述算法用类Pascal的结构化编程语言。
精品课件
8
算法的证明技巧
反证法(proof by contradication)/间接证明(indirect proof):为了证明命题的正确性,转而证明该命题 的反命题能导致矛盾。
例子:
[欧几里德] 定理:存在无穷多个素数。
证明:假设P为有限素数集,那么显然 P 。
精品课件
6
当然不是所有算法都要明确的选择,有些 概率算法进行选择。
“随机”<>“随意”
有些问题没有实用算法(求解精确解,需 要几百年)。
✓ 去寻找{规则集}
近似算法
启发式算法
可以预测误差, 且误差足够小
误差无法控制, 但可预计误差大小
在可接受的时间内可以算出足够好的近似解
精品课件
7
如何描述算法
简化
function DumpEuclid(P:整数集)
{P为非空有限素数集}
XP中最大的元素;
repeat XX+1 until X是素数;
return d
精品课件
源自文库13
算法的证明技巧
归纳法(induction): 特殊=>一般法则。 例子:[铺砖定理] 铺砖问题总是有解的。
m×m个方格(m为2的幂)
P 且有限, 将P中所有元素相乘,X表
示积
Y=X+1。
对Y分析:d为Y的一个最小的且大于1的约数。
精品课件
9
[欧几里德]证明
Y>1,且不要求d一定不等于Y, d一定存在。
d定为素数,否则存在一个约数z,使得z可整除Y

d为Y的一个最小的约数
又=>
矛z<盾d
d P
=>
,且X是P中所有元素的积
d是X
d1; repeat dd+1 until d整除Y;
return d
通过上述证明d定为
素数且 dP

精品课件
12
派生出算法
function Newprime(P:整数集) 通过上述证明d定为
XP中所有元素的乘积; YX+1;
素数且 dP
d1;
repeat dd+1 until d整除Y;
return d
相关文档
最新文档