




已阅读5页,还剩47页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
算法设计与分析 第二讲分治 目的分治法的思想分治算法的设计方法将递归算法改写成迭代算法的一般方法重点分治法的抽象控制策略针对问题的抽象控制策略实现难点将递归算法改写成迭代算法的一般方法和实现 2 1基本策略 一 求解大规模问题的复杂性 二 化整为零 分而治之 Pn p1n1 p2n2 pknk s0 s1 sk S 分解 分治 合并 三 分治法的抽象控制策略 设 原问题输入为a n 简记为 1 n 子问题输入为a p a q 1 p q n 简记为 p q 已知 SOLUTION intdivide int int intsmall int int SOLUTIONconquer int int SOLUTIONcombine SOLUTION SOLUTION SOLUTIONDandC p q divideandconquer if small p q returnconquer p q else m divide p q returncombine DandC p m DandC m 1 q 分治法的抽象控制算法 已知n个按非降次序排列的元素a n 查找元素x是否在表中出现 若找到 返回其下标值 否则 返回一负数 2 2二分检索 一 问题 二 分治的思路 原问题 n a 0 a n 1 x 数据分组 a 0 a k 2 a k 1 a k a n 1 三个子问题 k 1 a 0 a k 2 x 1 a k 1 x n k a k a n 1 x intBinSearch1 p q x intk p q 2 if qa k returnBinSearch1 k 1 q x 三 递归算法 四 计算复杂度 1 二元比较树 以有序表的中间元素为根节点的二分树 左子树上所有元素不比父节点元素值大 右子树上所有元素不比父节点元素值小 圆形接点称为内节点 对应成功检索的数据元素 二分检索树的深度 二元比较树的深度 方形接点称为外节点 对应不成功检索的数据子集 定理2 2若n在区域 2k 1 2k 中 则对于一次成功的检索 BinSearch1至多作k次比较 而对于一次不成功的检索 或者作k 1次比较或者作k次比较 成功检索最好情况 不成功检索最好情况 成功检索最坏情况 不成功检索最坏情况 2 时间复杂度 平均情况分析 内部路径长度之和 I 5 2 7 1 3 6 8 4 9 外部路径长度之和 E E I 2n 成功检索的平均比较次数 S n I n 1 不成功检索的平均比较次数 U n E n 1 因为 U n O logn 所以 S n O logn 由此可得 S n 1 1 n U n 1 成功检索不成功检索最好最坏平均最好最坏平均O 1 O logn O logn O logn O logn O logn 二分检索的时间复杂度结论 定理2 3设a n 含有n n 1 个不同元素 排序为a 1 a n 又设用以比较为基础去判断是否x a n 的任何算法在最坏情况下所需的最小比较次数为FIND n 那么 FIND n 说明 任何以比较为基础的检索算法 最坏情况下的比较次数都不可能低于O logn 因此 二分检索是最优的最坏情况算法 3 以比较为基础检索的时间下界 思考题 1 请证明E I 2n2 请证明S n I n 1 2 3找最大和最小元素 在n个不同元素的集合a n 中同时找出它的最大和最小元素 一 问题 比较次数 2 n 1 将语句1的体改写成if a i max max a i elseif a i min min a i 直接搜索的改进方法 三 实现分治的递归算法 集合只有一个元素时 max min a i 集合只有两个元素时if a i a j max a j min a i else max a i min a j 集合中有更多元素时分治 将原集合分解成两个子集 分别求两个子集的最大和最小元素 再合并结果 递归算法 typedefstruct ElemTypemax min SOLUTION SOLUTIONMaxMin i j SOLUTIONs s1 s2 if i j s max s min a i returns if i j 1 if a i s2 max s max s1 max s max s2 max s1 min s2 min s min s1 min s min s2 min returns 时间复杂度 当n是2的幂时 即对于某个正整数k n 2k 有 令t n 表示MaxMin需要的元素比较次数 存在下列递推关系 t n 2t n 2 2 2 2t n 4 2 2 4t n 4 4 2 2k 1t 2 2k 1 2k 2 3n 2 2 当元素的比较开销与整数比较开销相当时 将前两条if语句合并为 if i j 1 对应一元素和两元素的情况 if a i a j s max a j s min a i else s max a i s min a j returns MaxMin需要的比较次数 存在下列递推关系 思考题请分析c n 递推关系式中为什么是加3而不是加2 给定一个含n个元素的集合a n 按一定次序 本课程假定均为非降次序 将其分类 排序 2 4分类 一 问题 二 插入分类 基本思想 InsertSort intn for j 1 j 0 插入分类算法 三 归并分类 基本思想 归并分类递归算法 MergeSort l h if l h m l h 2 MergeSort l m MergeSort m 1 h Merge l m h 已分类子集的归并过程 Merge low mid high ElemTypeb n l low h mid 1 k l while lmid while h high b k a h 转储剩余部分 elsewhile l mid b k a l a low high b low high 将b数组转储到a 已分类子集的归并算法 时间复杂度 缺点与改进 结合插入分类与归并分类各自的优点 四 快速分类 设计思路 实现部分分类的划分过程举例 实现部分分类的划分算法 Partition p q r a p j p 1 k q while 1 while j r k if j k t a j a j a k a k t j k elsebreak a p a k a k r returnk 快速分类算法 QuickSort p q if p q j Partition p q QuickSort p j 1 QuickSort j 1 q 时间复杂度 最坏情况 CW n n n 1 3 2 O n2 假设n个元素各不相同 划分元素随机选取 取第k 1 k n 个元素是等概率的 计算时间C n 取决于Partition的元素比较次数 平均情况 经推导可得 CA n 2 n 1 loge n 1 O nlogn 结论 快速分类算法的最坏情况时间为O n2 平均情况为O nlogn 五 几种分类算法的时间复杂度比较 结论 以比较为基础的分类算法在最坏情况下的时间下界为O nlogn 是最坏情况下的最优算法 一 问题 2 5选择 给定一个含n个元素的集合a n 找出其中第k小的元素 并将其转储到a k 三 基于分治思想的选择算法 基本思路 用partition算法实现分治 selection p q k intj j partition p q if k j return if k j selection p j 1 k elseselection j 1 q k 分治算法 思考题 1 过程MergeSort的时间复杂度是以什么计算操作频数度量的 最好情况 最坏情况 平均时间复杂度是多少 2 用C语言实现merge过程时 数组b定义为局部变量时 最小存储量需求为多少 可否定义为外部数组 最小存储量需求为多少 一 递归算法的特点 2 6消除递归 符合人的递推求解问题的自然思维习惯算法的结构简单 代码精炼 可读性好效率低 递归的基本思路 分治 输出s abc 的递归过程 voidreverse char s externElemTypestack 2 n 1 top 0 L1 if s 0 stack top s stack top L2 s s 1 gotoL1 L2 putchar s 接下来处理返回语句if top 0 return 栈为空else addr stack top 恢复地址s stack top 恢复参数if addr L2 gotoL2 改写的迭代算法 voidreverse char s inttop 0 while s 0 top s while top 0 putchar s s top 优化后的迭代算法 例2 写一个求数组a n 中的最大元素的递归算法并将其改写成迭代算法 分治的思路 思考题 为什么k不作为局部变量在L1之后入栈 可否象i j一样处理 intmax inti intj k n 1 for j n 2 j i j if a j a k k j returnk 优化后的迭代算法 例3 将分治算法的抽象递归过程改写为迭代过程 SOLUTIONDandC p q divideandconquer intm SOLUTIONs1 s2 s if small p q s conquer p q else m divide p q s1 DandC p m s2 DandC m 1 q s combine s1 s2 returns 抽象控制递归算法 SOLUTIONDandC p q externElemTypestack 5 n 1 top 0 intm SOLUTIONs1 s2 L1 if small p q s conquer p q else m divide p q stack top p stack top q stack top m stack top L2 p p q m gotoL1 L2 s1 stack top stack top p stack top q stack top m stack top L3 p m 1 q q gotoL1 L3 s2 stack top s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 地铁建造工程节点方案(3篇)
- 丰台工程用井方案(3篇)
- 农业无人机租赁市场用户满意度调查与2025年服务质量提升策略
- 农业无人机监测与遥感技术在2025年产量预测中的应用分析报告
- 牧童谣课件教学课件
- 矿业会计面试题及答案解析
- 安全教育培训评估意见课件
- 风电叶片回收处理技术现状分析及2025年产业化前景展望报告
- 2025年电力行业市场前瞻:电力物联网技术创新投资战略分析
- 停车场租赁书
- 宾馆内部治安管理制度
- “美感让美安全”专项行动工作实施方案解读课件
- 立克次体病患者护理
- 新《职业病危害工程防护》考试复习题库(浓缩500题)
- 合作代建合同协议书
- 送养协议书范本
- 三星手机市场定位、营销策略及消费者行为研究
- 全职妈妈工作简历模板
- 中国石化考试题及答案
- 2025-2030中国抗癫痫药行业市场发展趋势与前景展望战略研究报告
- 水土保持试题多选及答案
评论
0/150
提交评论