算法设计与分析:C++语言描述(第2版)

算法设计与分析:C++语言描述(第2版)
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2012-07
版次: 2
ISBN: 9787121173998
定价: 38.00
装帧: 平装
开本: 16开
纸张: 胶版纸
正文语种: 简体中文
42人买过
  •   《算法设计与分析:C++语言描述(第2版)》为普通高等教育“十一五”国家级规划教材。

      本书内容分为3部分:算法和算法分析、算法设计策略及求解困难问题。第1部分介绍问题求解方法、算法复杂度和分析、递归算法和递推关系;第2部分讨论常用的算法设计策略:基本搜索和遍历方法、分治法、贪心法、动态规划法、回溯法和分枝限界法;第3部分介绍NP完全问题、随机算法、近似算法和密码算法。书中还介绍了两种新的数据结构:跳表和伸展树,以及它们特定的算法分析方法,并对现代密码学做了简要论述。

      本书结构清晰、内容翔实、逻辑严谨、深入浅出。书中算法有完整的C++程序,程序构思精巧,且有详细注释。所有程序都已在VC++环境下编译通过并能正确运行,它们既是学习算法设计的示例,也能使复杂抽象的算法设计更易为学习者理解和掌握。书中包含大量实例和图示,并附丰富的习题,便于自学。 第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.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章 分治法

    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 顶点覆盖
  • 内容简介:
      《算法设计与分析:C++语言描述(第2版)》为普通高等教育“十一五”国家级规划教材。

      本书内容分为3部分:算法和算法分析、算法设计策略及求解困难问题。第1部分介绍问题求解方法、算法复杂度和分析、递归算法和递推关系;第2部分讨论常用的算法设计策略:基本搜索和遍历方法、分治法、贪心法、动态规划法、回溯法和分枝限界法;第3部分介绍NP完全问题、随机算法、近似算法和密码算法。书中还介绍了两种新的数据结构:跳表和伸展树,以及它们特定的算法分析方法,并对现代密码学做了简要论述。

      本书结构清晰、内容翔实、逻辑严谨、深入浅出。书中算法有完整的C++程序,程序构思精巧,且有详细注释。所有程序都已在VC++环境下编译通过并能正确运行,它们既是学习算法设计的示例,也能使复杂抽象的算法设计更易为学习者理解和掌握。书中包含大量实例和图示,并附丰富的习题,便于自学。
  • 目录:
    第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.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章 分治法

    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 顶点覆盖
查看详情
12
相关图书 / 更多
算法设计与分析:C++语言描述(第2版)
算法分析与设计实践
王小明
算法设计与分析:C++语言描述(第2版)
算法与音乐分析
许琛
算法设计与分析:C++语言描述(第2版)
算法竞赛实战笔记
梁博 等
算法设计与分析:C++语言描述(第2版)
算法详解(卷4)——NP-Hard问题算法
[美]蒂姆·拉夫加登(Tim Roughgarden)
算法设计与分析:C++语言描述(第2版)
算法设计方法与优化(第2版)
滕国文;滕泰
算法设计与分析:C++语言描述(第2版)
算法详解 卷3 贪心算法和动态规划
[美]蒂姆·拉夫加登(Tim Roughgarden)
算法设计与分析:C++语言描述(第2版)
算法与数据结构(C++语言版)(第2版)
冯广慧
算法设计与分析:C++语言描述(第2版)
算法设计与分析基础(Java版)(微课视频版)
李春葆;刘娟;喻丹丹
算法设计与分析:C++语言描述(第2版)
算法设计与分析基础(C++版)(微课视频版)
李春葆;陈良臣;喻丹丹
算法设计与分析:C++语言描述(第2版)
算法伦理:社会感知算法设计的科学
Michael Kearns,Aaron Roth
算法设计与分析:C++语言描述(第2版)
算法设计实例教程
雷小宇
算法设计与分析:C++语言描述(第2版)
算法设计与分析基础(Java版)学习与上机实验指导
李春葆;刘娟;喻丹丹