内容推荐 本书主要介绍经典的算法设计技术,包括递归与分治策略、动态规划法、贪心算法、回溯法、分支限界法、概率算法等。在算法分析方面,介绍了二分搜索技术、大整数的乘法、Strassen矩阵乘法、棋盘覆盖、合并排序、快速排序、循环赛日程表、矩阵连乘问题、最长公共子序列、凸多边形最优三角剖分、多边形游戏、图像压缩、活动安排问题、最优装载、哈夫曼编码、最小生成树问题、套利问题、n皇后问题、图的m着色问题、15谜问题、单源最短路径问题、旅行商问题等,并对有的问题进行算法优化设计。书中主要突出对问题本身的分析和求解方法,并进行了问题的计算复杂性分析。本书每章均精选了一些基础的算法习题,针对各章节不同的算法设计技术设计了多个上机实验,并提供多套自测试卷,有助于学生了解自己对学习内容的掌握程度,自测学习效果。 本书可作为大学计算机科学与技术、软件工程等专业本科生的教学用书,也可作为从事实际问题求解的算法设计与分析工作人员的参考书。 目录 第1章 算法概述 1.1 什么是算法 1.2 算法复杂性 1.3 算法复杂性计量 1.4 算法复杂性的表示 1.4.1 算法复杂性的渐近性态 1.4.2 复杂性渐近阶 1.4.3 5个渐近意义下的记号 1.4.4 常见的算法时间复杂度 1.5 算法复杂性的重要性 习题1 第2章 递归与分治策略 2.1 递归的概念 2.2 分治法的基本思想 2.3 二分搜索技术 2.3.1 线性查找 2.3.2 二分搜索法 2.3.3 二分搜索算法复杂性最坏情形分析 2.3.4 二分搜索算法复杂性平均情形分析 2.4 大整数的乘法 2.4.1 大整数乘积的分治算法描述 2.4.2 大整数乘积的时间复杂度递推方程 2.5 Strassen矩阵乘法 2.5.1 Strassen矩阵分治乘法 2.5.2 时间复杂度递推方程 2.6 棋盘覆盖问题 2.6.1 问题描述 2.6.2 算法复杂性分析 2.7 合并排序 2.7.1 基于比较的排序时间复杂度下界 2.7.2 用递归树解递归关系式 2.7.3 合并排序 2.8 快速排序 2.8.1 算法描述 2.8.2 时间复杂度分析 2.9 循环赛日程表安排 2.9.1 问题描述 2.9.2 问题的分治法设计思想 2.9.3 分治算法实现 习题2 第3章 动态规划法 3.1 动态规划法概述 3.1.1 最优性原理 3.1.2 动态规划法的基本步骤 3.2 矩阵连乘问题 3.2.1 问题描述 3.2.2 分析最优解的结构 3.2.3 建立递归关系 3.2.4 计算最优值 3.2.5 构造最优解 3.3 动态规划算法的基本要素 3.3.1 最优子结构 3.3.2 重叠子问题 3.3.3 备忘录方法 3.4 最长公共子序列问题 3.4.1 问题描述 3.4.2 最长公共子序列的结构 3.4.3 子问题的递归结构 3.4.4 计算最优值 3.4.5 构造最长公共子序列 3.4.6 算法的改进 3.5 凸多边形的最优三角剖分问题 3.5.1 问题描述 3.5.2 三角剖分的结构及其相关问题 3.5.3 最优子结构性质 3.5.4 最优三角剖分对应的权的递归结构 3.5.5 计算最优值 3.5.6 构造最优三角剖分 3.6 多边形游戏 3.6.1 问题描述 3.6.2 最优子结构性质 3.6.3 递归求解 3.6.4 算法描述 3.7 图像压缩 3.7.1 图像压缩实例 3.7.2 最优子结构性质 3.7.3 递归计算最优值 3.7.4 算法实现 习题3 第4章 贪心算法 4.1 活动安排问题 4.1.1 贪心算法设计的特点 4.1.2 问题描述 4.1.3 活动安排问题的贪心算法 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.3.4 算法描述 4.4 最短路径问题 4.4.1 问题描述 4.4.2 算法基本思想 4.4.3 算法实现 4.5 哈夫曼编码 4.5.1 哈夫曼树 4.5.2 构造一棵哈夫曼树 4.5.3 哈夫曼编码 4.5.4 算法分析与设计 4.5.5 哈夫曼算法的正确性 4.6 TSP问题 4.6.1 TSP问题研究进展 4.6.2 最近邻点贪心策略 4.6.3 最短链接贪心策略 4.7 最小生成树 4.7.1 Prim算法(最近顶点策略) 4.7.2 Kruskal算法(最短边策略) 4.8 套利问题 4.8.1 套利问题描述 4.8.2 问题的贪心选择性质 4.8.3 问题的最优子结构性质 4.8.4 算法实例 习题4 第5章 回溯法 5.1 回溯法的算法框架 5.1.1 明确定义问题的解空间 5.1.2 运用回溯法解题的步骤 5.1.3 回溯法的算法框架 5.2 n皇后问题 5.2.1 问题描述 5.2.2 算法设计 5.2.3 算法实现 5.2.4 8皇后问题的不等效解分析与实现 5.3 图的m着色问题 5.3.1 问题描述 5.3.2 算法实现 5.4 回溯法的效率分析 5.4.1 重排原理 5.4.2 估算结点数 5.4.3 回溯法的效率 习题5 第6章 分支限界法 6.1 分支限界法的基本思想 6.2 分支限界法的算法实例 6.2.1 分支限界法解0-1背包问题 6.2.2 分支限界法解旅行商问题 6.2.3 分支限界法解15谜问题 6.3 单源最短路径问题 6.3.1 问题描述 6.3.2 算法分析 6.3.3 分支限界算法实现 6.4 装载问题 6.4.1 队列式分支限界法 6.4.2 算法的改进 6.4.3 构造最优解 6.4.4 最大收益分支限界(优先队列式) 习题6 第7章 概率算法 7.1 随机数 7.2 数值概率算法 7.2.1 用随机投点法计算n值 7.2.2 计算定积分 7.2.3 解非线性方程 7.2.4 解非线性方程组 7.3 蒙特卡罗算法 7.3.1 |