- 1、本文档共148页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法分析与设计.
目录
第一章 绪论 3
1.1 算法的概念 3
1.2 算法问题求解基础 6
1.3 重要的问题类型 9
1.4 基本数据结构 11
第二章 算法效率分析基础 16
2.1 分析框架 16
2.2 渐进符号和基本效率类型 19
2.3 非递归算法的数学分析 22
2.4 递归算法的数学分析 25
2.5 例:Fibonacci数列※ 27
第三章 蛮力法(Brute Force)和算术问题 33
3.1 选择排序和冒泡排序 33
3.2 蛮力字符串匹配※ 35
3.3 穷举搜索(Exhaustive Search) 36
3.4基本算术 40
3.5模算术 42
3.6素性检测 42
3.7密码学 42
第四章 分治法(Devide-and-Conqure) 43
4.1 主定理(Master Theorem) 43
4.2 归并排序 44
4.3 快速排序 46
4.4 大整数乘法※ 49
4.5 Strassen矩阵乘法※ 50
4.6快速傅里叶变换FFT※ 52
第五章 减治法(Decrese-and-Conqure) 58
5.1 插入排序 58
5.2 深度优先搜索和广度优先搜索※ 59
5.3 生成组合对象的算法 63
5.4 二叉搜索(折半查找) 67
5.5 乘法和乘方问题※ 69
5.6 Euclid算法分析※ 71
第六章 时空权衡(Time and Space Tradeoffs)与动态规划(Dynamic Programming) 72
6.1 计数排序 72
6.2 高效串匹配算法※ 73
6.3 再谈Fibonacci数列 78
6.4 有向无环图中最短路径※ 79
6.5 计算传递闭包的Warshall算法和多源最短路径问题的Floyd算法 81
6.6 矩阵链相乘问题 84
6.7 最优二叉搜索树※ 86
6.8 最长递增子序列※ 89
6.9 编辑距离※ 89
6.10 背包问题※ 92
6.11 旅行商TSP问题※ 95
第七章 贪心法(Greedy Techniques) 99
7.1 连续背包问题※ 99
7.2 最小生成树问题(MST,minimum spanning tree) 102
7.3 单源最短路径问题的Dijkstra算法 109
7.4 Huffman编码 112
7.5集合覆盖 118
第八章 线性规划(Linear Programming) 119
8.1 线性规划简介 119
8.2 求解线性规划问题的单纯形算法 122
8.3 网络流问题 129
8.4 二部图的匹配问题 129
8.5 对偶 129
8.6 零和游戏 130
第九章 算法能力的极限 131
9.1 求算法下界的方法 131
9.2 问题归约 132
9.3 P,NP和NP完全问题 134
9.4 回溯法(Backtracking) 139
9.5 分支限界法(Branch-and-Bound) 141
9.6 近似算法(Approximation algorithms) 144
第一章 绪论
1.1 算法的概念
算法:解决一个问题的无歧义的指令序列,对合法的输入在有限的时间内可得到需要的输出。
算法的一些特点:
无歧义性(确定性):算法的每个步骤必须确定无疑
有穷性:算法的执行必须有限步终止
输入的范围:算法只对满足条件的输入有响应
正确性:算法应能解决要求的问题
同一算法的不同表示形式:自然语言、伪代码、高级语言
同一问题存在的多种算法:设计思想不同,时空性能各异
例,求两个正整数m和n的最大公因子的算法
算法一 最容易想到的算法——挨个检查
Step 1 t = min {m, n}
Step 2 如果m除以t的余数为0,转Step 3;否则,转Step 4;
Step 3 如果n除以t的余数为0,返回t的值;否则,转Step 4;
Step 4 t = t – 1,转Step 2。
分析:
上述步骤每一步均确定没有歧义,是一个循环结构程序
循环执行次数未知,那么它会有限步终止吗?(每次t – 1)
该算法由自然语言描述
该算法正确吗?如何证明?
算法二 小学数学中讲述的算法
Step 1 将m分解质因子;
Step 2 将n分解质因子;
Step 3 寻找Step 1和Step 2得到的两个质因子连乘积的公共部分(注:若m的分解中质因子p出现了x次,n的分解中p出现了y次,作为公共部分,p应出现min{x, y}次);
Step 4 计算公共部分的连乘积,并将结果返回。
分析:此算法中,如何分解质因子没说明,如何寻找公共部分不清楚,不满足算法的确定性要求,所以严格讲起来不能称为算法,至少有待进一步具体说明!
考虑如何具体说明:
分解质因子需要知道有哪些质数
寻找公共部分涉及到质因子连乘
您可能关注的文档
最近下载
- 小学四年级四则运算500题.docx VIP
- 环境保护管理体系与措施.doc VIP
- 波音777X折叠式翼梢结构设计及仿真.docx
- 2025重庆江北区郭家沱街道办事处招聘1人笔试备考试题及答案解析.docx VIP
- 05G359-3悬挂运输设备轨道标准图集.pdf VIP
- 7.动物行为与环境变化 说课稿-2023-2024学年科学六年级下册青岛版.docx VIP
- 2025抖音电商品牌服饰秋冬趋势报告.pdf VIP
- 数字化技术在“思想道德与法治”课程中的应用与教学模式创新.docx VIP
- 邮政面试经典题目及答案.docx VIP
- 2025中国南水北调集团水网发展研究有限公司招聘6人模拟试卷含答案解析.docx VIP
文档评论(0)