-
内容大纲
本书为普通高等教育“十一五”国家级规划教材。本书内容分为3部分:算法和算法分析、算法设计策略及求解困难问题。第1部分介绍算法问题求解基础和算法分析基础,以及两种新的数据结构:伸展树与跳表;第2部分讨论常用的算法设计策略,包括基本搜索和遍历方法、分治法、贪心法、动态规划法、回溯法和分枝限界法;第3部分介绍NP完全问题、随机算法、近似算法、遗传算法和密码算法,并对现代密码学和数论做了简要论述。本书结构清晰、内容翔实、逻辑严谨、讲解深入浅出。书中算法有完整的C++程序,这些程序构思精巧,有详细注释,并且已在C++环境下编译通过能正确运行。它们既是讲解算法设计的示例,帮助理解和掌握复杂抽象的算法设计,也是很好的C++程序设计示例。书中包含大量实例,并附有丰富的习题,便于教学和自学。本书可作为高等学校计算机及其他相关专业本科生和研究生“算法设计与分析”课程的教材或参考书,是“算法与数据结构”或“数据结构”课程有益的教学参考书,也可供计算机相关从业者及其他希望了解和学习算法知识的人员参考。 -
作者介绍
-
目录
第1部分 算法和算法分析
第1章 算法问题求解基础
1.1 算法概述
1.1.1 什么是算法
1.1.2 为什么学习算法
1.2 问题求解方法
1.2.1 问题和问题求解
1.2.2 问题求解过程
1.2.3 软件生命周期
1.3 算法设计与分析
1.3.1 算法问题求解过程
1.3.2 如何设计算法
1.3.3 如何表示算法
1.3.4 如何确认算法
1.3.5 如何分析算法
1.4 递归和归纳
1.4.1 递归
1.4.2 递归算法示例
1.4.3 归纳证明
习题1
第2章 算法分析基础
2.1 算法复杂度
2.1.1 什么是好的算法
2.1.2 影响程序执行时间的因素
2.1.3 算法的时间复杂度
2.1.4 使用程序步分析算法
2.1.5 算法的空间复杂度
2.2 渐近表示法
2.2.1 大O记号
2.2.2 Ω记号
2.2.3 Θ记号
2.2.4 小o记号
2.2.5 算法按时间复杂度分类
2.3 递推关系
2.3.1 递推方程
2.3.2 替换方法
2.3.3 迭代方法
2.3.4 递归树
2.3.5 主方法
2.4 分摊分析
2.4.1 聚集分析
2.4.2 会计方法
2.4.3 势能方法
习题2
第3章 伸展树与跳表
3.1 伸展树
3.1.1 二叉搜索树
3.1.2 自调节树和伸展树
3.1.3 伸展操作
3.1.4 伸展树类
3.1.5 旋转的实现
3.1.6 插入运算的实现
3.1.7 分摊分析
3.2 跳表
3.2.1 什么是跳表
3.2.2 跳表类
3.2.3 层次分配
3.2.4 插入运算的实现
3.2.5 性能分析
习题3
第2部分 算法设计策略
第4章 基本搜索和遍历方法
4.1 基本概念
4.2 图的搜索和遍历
4.2.1 搜索方法
4.2.2 邻接表类
4.2.3 广度优先搜索
4.2.4 深度优先搜索
4.3 双连通分量
4.3.1 基本概念
4.3.2 发现关节点
4.3.3 构造双连通图
4.4 与或图
4.4.1 问题分解
4.4.2 判断与或树是否可解
4.4.3 构建解树
4.5 区间最值查询(RMQ)
4.5.1 区间信息维护与查询
4.5.2 ST算法求解RMQ问题
4.6 最近公共祖先(LCA)
4.6.1 概述
4.6.2 倍增法求解LCA问题
4.6.3 在线RMQ法求解LCA问题
4.6.4 Tarjan算法求解LCA问题
习题4
第5章 分治法
5.1 一般方法
5.1.1 分治法的基本思想
5.1.2 算法分析
5.1.3 数据结构
5.2 求最大、最小元
5.2.1 分治法求解
5.2.2 时间分析
5.3 二分搜索
5.3.1 分治法求解
5.3.2 对半搜索
5.3.3 二叉判定树
5.3.4 搜索算法的时间下界
5.4 排序问题
5.4.1 合并排序
5.4.2 快速排序
5.4.3 排序算法的时间下界
5.5 选择问题
5.5.1 分治法求解
5.5.2 随机选择主元
5.5.3 线性时间选择算法
5.5.4 时间分析
5.5.5 允许重复元素的选择算法
5.6 斯特拉森矩阵乘法
5.6.1 分治法求解
5.6.2 斯特拉森矩阵乘法简介
习题5
第6章 贪心法
6.1 一般方法
6.2 背包问题
6.2.1 问题描述
6.2.2 贪心法求解
6.2.3 算法正确性
6.3 带时限的作业排序问题
6.3.1 问题描述
6.3.2 贪心法求解
6.3.3 算法正确性
6.3.4 可行性判定
6.3.5 作业排序贪心算法
6.3.6 改进算法
6.4 最佳合并模式
6.4.1 问题描述
6.4.2 贪心法求解
6.4.3 算法正确性
6.5 最小代价生成树
6.5.1 问题描述
6.5.2 贪心法求解
6.5.3 普里姆算法
6.5.4 克鲁斯卡尔算法
6.5.5 算法正确性
6.6 单源最短路径
6.6.1 问题描述
6.6.2 贪心法求解
6.6.3 迪杰斯特拉算法
6.6.4 算法正确性
6.7 磁带最优存储
6.7.1 单带最优存储
6.7.2 多带最优存储
6.8 贪心法的基本要素
6.8.1 最优量度标准
6.8.2 最优子结构
习题6
第7章 动态规划法
7.1 一般方法和基本要素
7.1.1 一般方法
7.1.2 基本要素
7.1.3 多段图问题
7.1.4 资源分配问题
7.1.5 关键路径问题
7.2 每对结点间的最短路径
7.2.1 问题描述
7.2.2 动态规划法求解
7.2.3 弗洛伊德算法
7.2.4 算法正确性
7.3 矩阵连乘
7.3.1 问题描述
7.3.2 动态规划法求解
7.3.3 矩阵连乘算法
7.3.4 备忘录方法
7.4 最长公共子序列
7.4.1 问题描述
7.4.2 动态规划法求解
7.4.3 最长公共子序列算法
7.4.4 改进算法
7.5 最优二叉搜索树
7.5.1 问题描述
7.5.2 动态规划法求解
7.5.3 最优二叉搜索树算法
7.6 0/1背包问题
7.6.1 问题描述
7.6.2 动态规划法求解
7.6.3 0/1背包问题算法框架
7.6.4 0/1背包问题算法
7.6.5 性能分析
7.6.6 使用启发式方法
7.7 流水线作业调度
7.7.1 问题描述
7.7.2 动态规划法求解
7.7.3 Johnson算法
习题7
第8章 回溯法
8.1 一般方法
8.1.1 基本概念
8.1.2 剪枝函数和回溯法
8.1.3 回溯法的效率分析
8.2 n-皇后问题
8.2.1 问题描述
8.2.2 回溯法求解
8.2.3 n-皇后算法
8.2.4 时间分析
8.3 子集和数问题
8.3.1 问题描述
8.3.2 回溯法求解
8.3.3 子集和数算法
8.4 图着色问题
8.4.1 问题描述
8.4.2 回溯法求解
8.4.3 图着色算法
8.4.4 时间分析
8.5 哈密顿环问题
8.5.1 问题描述
8.5.2 哈密顿环算法
8.6 0/1背包问题
8.6.1 问题描述
8.6.2 回溯法求解
8.6.3 限界函数
8.6.4 0/1背包问题算法
8.7 批处理作业调度
8.7.1 问题描述
8.7.2 回溯法求解
8.7.3 批处理作业调度算法
习题8
第9章 分枝限界法
9.1 一般方法
9.1.1 分枝限界法概述
9.1.2 LC分枝限界法
9.1.3 15谜问题
9.2 求最优解的分枝限界法
9.2.1 上下界函数
9.2.2 FIFO分枝限界法
9.2.3 LC分枝限界法
9.3 带时限的作业排序
9.3.1 问题描述
9.3.2 分枝限界法求解
9.3.3 带时限的作业排序算法
9.4 0/1背包问题
9.4.1 问题描述
9.4.2 分枝限界法求解
9.4.3 0/1背包问题算法
9.5 旅行商问题
9.5.1 问题描述
9.5.2 分枝限界法求解
9.6 批处理作业调度
9.6.1 问题描述
9.6.2 分枝限界法求解
9.6.3 批处理作业调度算法
习题9
第3部分 求解困难问题
第10章 NP完全问题
10.1 基本概念
10.1.1 不确定算法和不确定机
10.1.2 可满足性问题
10.1.3 P类问题和NP类问题
10.1.4 NP难度问题和NP完全问题
10.2 Cook定理和证明
10.2.1 Cook定理
10.2.2 简化的不确定机模型
10.2.3 证明Cook定理
10.3 一些典型的NP完全问题
10.3.1 最大集团
10.3.2 顶点覆盖
10.3.3 三元CNF可满足性
10.3.4 图的着色数
10.3.5 有向哈密顿环
10.3.6 恰切覆盖
10.3.7 子集和数
10.3.8 分划
习题10
第11章 随机算法
11.1 基本概念
11.1.1 随机算法概述
11.1.2 随机数发生器
11.1.3 随机算法分类
11.2 拉斯维加斯算法
11.2.1 标记重复元素算法
11.2.2 性能分析
11.2.3 n-皇后问题
11.2.4 拉斯维加斯算法和回溯法的结合算法
11.3 蒙特卡罗算法
11.3.1 多数元素问题
11.3.2 素数测试问题
11.3.3 伪素数测试问题
11.3.4 米勒-拉宾算法
11.4 舍伍德算法
11.4.1 快速排序舍伍德算法
11.4.2 性能分析
11.4.3 舍伍德算法的其他应用
习题11
第12章 近似算法
12.1 近似算法的性能
12.1.1 基本概念
12.1.2 绝对性能保证
12.1.3 相对性能保证
12.1.4 近似方案
12.2 绝对近似算法的应用
12.2.1 最多程序存储问题
12.2.2 NP难度问题
12.3 □(数学符号)-近似算法的应用
12.3.1 顶点覆盖问题
12.3.2 旅行商问题
12.3.3 NP难度□(数学符号)-近似旅行商问题
12.3.4 具有三角不等式性质的旅行商问题
12.3.5 多机调度问题
12.4 □(数学符号)(n)-近似算法
12.4.1 集合覆盖问题
12.4.2 集合覆盖问题近似算法
12.4.3 ln(n)-近似算法
12.5 多项式时间近似方案
12.5.1 多机调度近似方案
12.5.2 时间分析
12.6 子集和数问题的完全多项式时间近似方案
12.6.1 子集和数问题的指数时间算法
12.6.2 完全多项式时间近似方案
习题12
第13章 遗传算法
13.1 进化计算
13.2 遗传算法的生物学基础
13.3 遗传算法的基本思想
13.4 基本遗传算法
13.4.1 基本遗传算法的构成要素
13.4.2 基本遗传算法的流程图
13.5 遗传算法的特点和应用
13.5.1 遗传算法的特点
13.5.2 遗传算法的应用
13.6 基本遗传算法的实现方法
13.6.1 数据结构
13.6.2 主程序
13.6.3 选择运算
13.6.4 交叉运算
13.6.5 变异运算
13.7 旅行商问题
13.7.1 排列编码
13.7.2 目标函数和适应度函数
13.7.3 锦标赛选择法
13.7.4 顺序交叉
13.7.5 交换变异
13.7.6 参数选择
13.7.7 实例运行结果
习题13
第14章 密码算法
14.1 信息安全和密码学
14.1.1 信息安全
14.1.2 什么是密码
14.1.3 密码体制
14.2 数论初步
14.3 背包问题密码算法
14.3.1 背包问题
14.3.2 超递增背包问题
14.3.3 由私人密钥产生公开密钥
14.3.4 加密方法
14.3.5 解密方法
14.3.6 背包问题安全性
14.4 RSA算法
14.4.1 RSA算法概述
14.4.2 RSA算法安全性
14.5 散列函数和消息认证
14.5.1 散列函数
14.5.2 散列函数的结构
14.5.3 消息认证
14.6 数字签名
14.6.1 RSA算法实现直接数字签名
14.6.2 需仲裁的数字签名
习题14
参考文献
同类热销排行榜
- C语言与程序设计教程(高等学校计算机类十二五规划教材)16
- 电机与拖动基础(教育部高等学校自动化专业教学指导分委员会规划工程应用型自动化专业系列教材)13.48
- 传感器与检测技术(第2版高职高专电子信息类系列教材)13.6
- ASP.NET项目开发实战(高职高专计算机项目任务驱动模式教材)15.2
- Access数据库实用教程(第2版十二五职业教育国家规划教材)14.72
- 信号与系统(第3版下普通高等教育九五国家级重点教材)15.08
- 电气控制与PLC(普通高等教育十二五电气信息类规划教材)17.2
- 数字电子技术基础(第2版)17.36
- VB程序设计及应用(第3版十二五职业教育国家规划教材)14.32
- Java Web从入门到精通(附光盘)/软件开发视频大讲堂27.92
推荐书目
-
孩子你慢慢来/人生三书 华人世界率性犀利的一枝笔,龙应台独家授权《孩子你慢慢来》20周年经典新版。她的《...
-
时间简史(插图版) 相对论、黑洞、弯曲空间……这些词给我们的感觉是艰深、晦涩、难以理解而且与我们的...
-
本质(精) 改革开放40年,恰如一部四部曲的年代大戏。技术突变、产品迭代、产业升级、资本对接...