算法设计技巧与分析课件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2013-7-14 华南师范大学 计算机学院 20
Merge算法
2013-7-14
华南师范大学 计算机学院
21
观察结论1.2
• 使用算法Merge将两个数组合并为一个大小 为n的有序数组,元素赋值的次数恰好是2n
2013-7-14
华南师范大学 计算机学院
22
例子--选择排序 1. 5
• 基本思想 • 算法:SelectionSort • 观察:比较次数:n(n-1)/2,赋值次数界 于0与3(n-1)之间。
2013-7-14
华南师范大学 计算机学院
28
强调例子--1. 7自底向上合并排序
• • • • • 图示, 基本思想,P9 BottomUpSort 实例: 性能分析:P11
2013-7-14
华南师范大学 计算机学院
29
1. 8 时间复杂性- 阶的增长
• 衡量: P12,近似时间。 比较,界限
算法概念
算法是程序设计的精髓,程序设计的实质就是细化构造解 决问题的算法,将其解释为计算机语言。 算法是在有限步骤内求解某一问题所使用的一组定义明确 的指令(规则)。通俗点说,就是计算机解题的过程。在 这个过程中,无论是形成解题思路还是编写程序,都是在 实施某种算法。前者是推理实现的算法,后者是操作实现 的算法。 一个算法应该具有以下五个重要的特征:
– 即:1n/2j-1 <2 – 也即: 2j-1n <2j – j-1 log n <j
2013-7-14
j=Floor(log n)+1
16
华南师范大学 计算机学院
随堂练习
设 有序数组:
试搜索x=20, 以及 X =22. 1)拟用什么法?为什么? 2)试给出用你想要得算法求解的过程。
参考:教材binarySearch Example 1.1
–算法:BOTTOMUPSORT –元素赋值次数为2n p9 –P11, 分析
2013-7-14 华南师范大学 计算机学院 26
P r o o f
2013-7-14
华南师范大学 计算机学院
27
例子--插入排序1. 6
• • • • 基本思想 算法:InsertionSort 比较次数: n(n-1)/2 赋值次数:比较次数加n-1
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.
2013-7-14 华南师范大学 计算机学院 19
基本思想
• 3个数组 • A[p…q], A[q+1…r], B[p…r] • 3个指针:s,t,k
–s初始化时各自指向A[p] –t初始化时各自指向A[q+1] –k初始化时各自指向B[p],暂存器。 –比较A[s],A[t],小的值存入B[k] –小的指针+1,形成新比较对,存入k+1 –某组已到尾部,将另一组尚未比较的复制到B –B回写到A
有穷性: 一个算法必须保证执行有限步之后结束; 确切性: 算法的每一步骤必须有确切的定义; 输入:一个算法有0个或多个输入,以刻画运算对象的初始情况; 输出:一个算法有一个或多个输出,以反映对输入数据加工后的 结果。没有输出的算法是毫无意义的; 可行性: 算法原则上能够精确地运行,而且人们用笔和纸做有限 次运算后即可完成。
2013-7-14 华南师范大学 计算机学院 25
1. 7 自底向上合并排序
• 归并排序
–算法基本思想(合并两个有序表MERGE为 基础,把最初的输入两两排序,逐渐合并为完 整的有序表) –简单的以8个数的情形做例子{9,4,5,2,1,7,4,6}由 小到大,
• 考虑的对象按层计数如11页图1.4
– 算术运算:+,—, ×,/ – 比较和逻辑运算 – 赋值运算,包括遍历表或树的指针赋值
2013-7-14 华南师范大学 计算机学院 30
2013-7-14
华南师范大学 计算机学院
31
1. 8 时间复杂性-2 表示
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-ห้องสมุดไป่ตู้-14
华南师范大学 计算机学院
17
二分查找的基本运算量分析

2013-7-14 华南师范大学 计算机学院 18
1.4 合并两个已排序的表
• 两个数组A[1…q], B[q+1…r] 已是有序,不 妨升序 • 下面的算法将这两个合并为一个有序数组 • 观察1.1:Merge 将n1和n2大小的两个数组合 并成一个n= n1+n2的数组,(n1 ≤n2)元素 的比较次数为n1到n-1之间。特例:如果 两个数组的大小为Floor(n/2)和Ceiling(n/2), 需要比较的次数在Floor(n/2)到n-1之间。
2013-7-14
华南师范大学 计算机学院
11
算法的描述方法
自然语言; 图表; 框图; 计算机语言或程序设计语言等。 如,汇编、C++、Java。
2013-7-14
华南师范大学 计算机学院
12
1.3 二分搜索
• 假定元素满足:线序集合 • A[1…n] 中有x吗? • 从头到尾的扫描,比较n次: 顺序搜索 • 顺序搜索适合无序的集合 • 有序的集合:BinarySearch P4 • 要求能够写出:这个简单的算法,并分析 运算量。
确定一个包含N个变量的多项式方程是否有整数解 简单理由陈述:P3Top
可判定性-〉可计算性理论, 可解性-〉计算理论; 有Digital Computer后,对可解问题的研究的要求越来越多。
程序,资源量,尽可能少使用资源(时间,空间)的有效算法的需求。 效率:指解决问题所需时间和空间 排序一组元素的算法作为研究的实例表明:设计了许多有效算法,解决 问题的效率将不会因其他方法而有大的提高。
– – – – – – 近似时间 ,相对于同一/不同问题的算法,估计时间相对性 独立于机器,独立于不同语言 技术上的进步,不影响算法的时间测度方法成立 基本运算支撑的大规模输入实例。 P13图1.5: 表示运行时间的典型函数的增长情况 P14 表1.1: 不同大小输入的时间量级运行时间比较
• 元运算:对任何计算步骤,其代价总是一个时间常量为上 界,而不管输入数据或执行的算法,总称这样的计算步骤 为元运算,(基本操作)
在无限循环中执行的程序,因而不是一个算法。
• 操作系统的各种任务可看成是单独的问题,每一个问题由操作 系统中的一个子程序通过特定的算法来实现。该子程序得到输 出结果后便终止。
2013-7-14
华南师范大学 计算机学院
7
1.2 历史背景
20世纪,早期, 30年代 能否用有效的过程来求解问题受到关注
问题分类为:可解、不可解(存在有效过程来求解问题) 计算模型:存在模型,用此模型能建立一求解某问题的算法,--入- -可解的类 模型列举:歌德尔的递归函数,Church的Lamda演算,Post的波斯特机, Turing机。 Church论断:所有4个模型等效。如果一个问题在某一模型上可解,那么 在其他模型上都是可解的。=>“几乎所有”问题都是不可解的。
一个算法应该是可以信赖的,而且学习一个算法直到彻 底掌握的最好方法是反复进行试验。 因此,遇到一个算法时,应该找出这个算法的一个例子, 给出该例子的要点进行试验。
2013-7-14 华南师范大学 计算机学院 6
程序(Program)
• 程序是算法用某种程序设计语言的具体实现。
• 程序可以不满足算法的有限性的性质。例如操作系统,是一个
2013-7-14
华南师范大学 计算机学院
8
好的算法所具备的意义
2013-7-14
华南师范大学 计算机学院
9
衡量算法性能的标准
• 衡量算法性能一般有下面几个标准
正确性 易读性 健壮性 算法的时间和空间性能:高效率和低存储空间 我们这里主要讨论算法的时间和空间性能,并以此作为衡 量算法性能的重要标准。而且我们主要侧重于时间方面。 – – – –
2013-7-14 华南师范大学 计算机学院 13
1.3- (例) 线性查找的时间评估
最小查找时间?
最好情况, A[1]=X Tavg(n)=n/2
平均查找时间?P(i)=1/n,
最大查找时间?最坏情况, x 不在A[1...n]或x=A[n], 复杂度为n
2013-7-14 华南师范大学 计算机学院 14
2013-7-14 华南师范大学 计算机学院 5
算法 几点说明
1. “算法”的 几个词:Algorithm、Logarithm、Algorism 2. “算法”的现代诠释 算法的现代意义十分类似于处方、过程、方法、规程、程 序,一个算法就是有穷规则的集合。其中,规则规定了一个 解决某一特定类型的问题的运算序列。 3. 学习“算法”的方法
2013-7-14
华南师范大学 计算机学院
24
1.5-1.6. 选择排序P7,插入排序P8 算法时间复杂度的例子
• [例1] 检索问题的顺序查找算法 以元素的比较作为基本操作。考虑成功检索的情况。 –最好情况下的时间复杂度: (1) –最坏情况下的时间复杂度: (n) –在等概率前提下,平均情况下的时间复杂度: (n) • [例2] 直接插入排序算法 以元素的比较作为基本操作。 –最好情况下的时间复杂度: (n) –最坏情况下的时间复杂度: (n2) –在等概率前提下,平均情况下的时间复杂度: (n2)
华南师范大学 计算机学院 3
2013-7-14
1. 1
引言
Donald E. Knuth: 计算机科学就是算法的 研究.
每个领域: 依赖 有效算法设计 运行时间: 由例子到理论 时间是衡量算法有效性的最好测度
算法的几个方面:
输入 有限指令集 输出 (存在? Y/N)
2013-7-14 华南师范大学 计算机学院 4
2013-7-14
华南师范大学 计算机学院
10
算法的表达机制
【表达算法的抽象机制】对于一个明确的数学 问题,设计它的算法,总是先选用该问题的一 个数学模型。
接着,弄清该问题数学模型在已知条件下的初 始状态和要求的结果状态,以及这两个状态之 间的隐含关系。 然后探索从数据模型的已知初始状态到达要求 的结果状态所需的运算步骤。
1. 3 二分搜索及其时间复杂度
• 线性搜索 • 二分搜索
及其算法分析
同数据结构,略。但要求作为例子或问题求解。
2013-7-14
华南师范大学 计算机学院
15
比较次数分析
• While中,j次循环时剩余元素数目 Floor(n/2j-1) • 循环停止条件:找到x,或 当前查找范 围的数组长度为1。 • 最大搜索次数:满足Floor(n/2j-1)=1 时的j 值
《算法设计技巧与分析》
第1章 算法分析基本概念
曹霑懋 caozhanmao@sohu.com
Chapter 1 Basic Concepts in Algorithmic Analysis 内容
• 1.1 Introduction • l.2 Historical Background • 1.3 Binary Search • 1.3.1 Analysis of the binary search algorithm • 1.4 Merging Two Sorted Lists • 1.5 Selectinn Sort • 1.6 Insertion Sort • 1.7 Bottom-Up Merge Sorting • 1.7.1 Analysis of bottom-up merge sorting •
相关文档
最新文档