×
超值优惠券
¥50
100可用 有效期2天

全场图书通用(淘书团除外)

关闭
算法设计与分析 ――基于计算教学论的解析

算法设计与分析 ――基于计算教学论的解析

1星价 ¥60.5 (6.8折)
2星价¥60.5 定价¥89.0
暂无评论
图文详情
  • ISBN:9787121440519
  • 装帧:一般胶版纸
  • 册数:暂无
  • 重量:暂无
  • 开本:其他
  • 页数:444
  • 出版时间:2022-08-01
  • 条形码:9787121440519 ; 978-7-121-44051-9

本书特色

本教材的显著特点是以计算教学论的方式和工具着力揭示算法的精髓、力量、智、慧和艺术;是基于现代版 C++编程特征进行算法的实现及专业化实验;算法知识层上的非平凡推进。

内容简介

本教材是基于作者所创立的计算教学论编写的,是为实现教学效率显著提升而对计算教学论提出的思想、 方法和工具的深广应用。 本教材共 12 章。第 1 章由 Euclid GCD 算法引出算法的定义,并介绍基于可视化的算法学习方法,第 2~5 章分别介绍算法的穷举设计方法、算法复杂度分析、算法的递归设计方法和基于比较的排序算法,第 6~10 章 分别介绍分治、动态规划、贪心、回溯和分支限界等经典的算法设计方法,第 11 章介绍 RSA 算法,第 12 章介 绍 NP 理论。 本教材可作为高等学校计算机科学与技术专业算法设计与分析课程的教材,也可作为计算机及相关专业研 究生和科研、工程或技术人员自学算法设计与分析的参考书。

目录

目 录

第1章 算法及其可视化教学支持系统

1.1 初识算法:Euclid GCD算法

1.1.1 GCD 及因子分解方法

1.1.2 Euclid GCD算法

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 算法的现代版C++描述方法

1.3.5 设计算法求解问题的基本过程

1.4 可视化算法学习的支持工具

1.4.1 CAAIS的基本界面及其功能

1.4.2 算法CD-AV演示的基本操作

1.5 使用现代版C++进行算法实验

1.5.1 现代版C++的算法实验环境建议

1.5.2 算法的现代版C++实现方式——以Euclid GCD算法为例

1.6 算法国粹——《九章算术》中的二进制GCD算法

1.6.1 《九章算术》中的更相减损术——*早的二进制GCD算法

1.6.2 现代版的二进制GCD算法

习题

参考文献

第 2 章 算法的穷举设计方法

2.1 穷举算法设计基础

2.2 穷举算法设计示例

2.2.1 百钱买百鸡问题算法设计

2.2.2 素性测试的试除算法设计

2.2.3 顺序搜索算法设计及CD-AV演示

2.2.4 洗牌算法设计及CD-AV演示

2.3 伪随机数发生器及其在算法实验中的应用

2.3.1 生成伪随机数的线性同余法

2.3.2 传统C语言标准库中的伪随机函数及其应用

2.3.3 现代版 C++标准库中的伪随机函数及其应用

2.4 算法国粹——图灵奖获得者姚期智院士的伪随机数理论

2.4.1 姚期智院士密码学安全的伪随机数理论

2.4.2 LCG不是密码学安全的

2.4.3 Java JDK提供的密码学安全的伪随机数发生器

习题

参考文献

第 3 章 算法复杂度分析

3.1 算法复杂度分析基础

3.1.1 算法的输入规模及复杂度计量

3.1.2 算法的*好、*坏和平均情况复杂度

3.2 算法复杂度的渐近分析方法

3.2.1 算法的渐近复杂度及其记法

3.2.2 常见的算法复杂度阶及其关系

3.2.3 算法复杂度渐近分析的基本范型

3.3 大整数算术运算的复杂度

3.3.1 二进制数的竖式算术运算的复杂度

3.3.2 大整数的多精度表示

3.3.3 多精度整数算术运算的复杂度

3.4 Euclid GCD算法的复杂度分析

3.4.1 Fibonacci数列及其通项的闭式解

3.4.2 Euclid GCD算法复杂度的详细分析

3.5 算法复杂度的平摊分析方法

3.5.1 平摊分析方法概述

3.5.2 Fibonacci堆的基本操作及其复杂度的平摊分析

3.6 算法复杂度的实验分析法

3.6.1 算法复杂度实验分析的必要性和基本过程

3.6.2 算法复杂度的实验分析法示例

3.7 问题的复杂度

3.7.1 问题的复杂度概述

3.7.2 基于比较的排序问题的复杂度

3.8 算法国粹——姚期智院士的通信复杂性理论

3.8.1 通信复杂性的问题定义

3.8.2 通信复杂性理论的基本成果

习题

参考文献

第 4 章 算法的递归设计方法

4.1 递归算法的普适性及其理论内涵

4.1.1 递归算法的基本特性及实例

4.1.2 递归是一种普适的算法表达方法

4.2 子集遍历问题的递归穷举算法

4.2.1 子集遍历问题及其递归穷举算法设计

4.2.2 现代版C++实现与CD-AV演示设计

4.3 全排列遍历问题的递归穷举算法

4.3.1 全排列遍历问题及其递归穷举算法设计

4.3.2 现代版C++实现与CD-AV演示设计

4.4 0-1背包问题及其递归穷举算法

4.4.1 0-1背包问题的定义及解空间分析

4.4.2 0-1 背包问题的递归穷举算法

4.5 TSP 问题及其递归穷举算法

4.5.1 TSP 问题的定义及解空间分析

4.5.2 TSP 问题的递归穷举算法

4.6 栈框架及将递归算法转换为迭代算法的方法

4.6.1 函数调用的栈框架

4.6.2 将递归算法转换为迭代算法的方法

4.7 算法国粹——管梅谷教授的中国邮递员问题

4.7.1 CPP与欧拉回路

4.7.2 CPP的求解思路与算法

习题

参考文献

第 5 章 基于比较的排序算法

5.1 冒泡排序算法

5.1.1 基本思想、伪代码与复杂度分析

5.1.2 现代版C++实现

5.1.3 CD-AV演示设计

5.2 插入排序算法

5.2.1 基本思想、伪代码与复杂度分析

5.2.2 现代版 C++实现

5.2.3 CD-AV 演示设计

5.3 堆排序算法

5.3.1 二叉堆的理论及相关算法

5.3.2 基本思想、伪代码与复杂度分析

5.3.3 现代版C++实现

5.3.4 CD-AV演示设计

5.3.5 优先队列简介

5.4 算法国粹——π值计算方法

5.4.1 刘徽关于π值的“割圆术”计算方法

5.4.2 祖冲之的π值计算成果

5.4.3 π值的近现代计算方法和计算成果

习题

参考文献

第 6 章 算法的分治设计方法

6.1 分治法基础

6.1.1 分治法概述

6.1.2 二分搜索算法

6.2 Karatsuba 乘法算法

6.2.1 大整数乘法的朴素分治算法

6.2.2 大整数乘法的Karatsuba算法

6.3 归并排序算法

6.3.1 基本思想、伪代码与复杂度分析

6.3.2 现代版C++实现与CD-AV演示设计

6.4 快速排序算法

6.4.1 基本思想、伪代码与复杂度分析

6.4.2 现代版C++实现与CD-AV演示设计

6.5 大师定理及其应用

6.5.1 大师定理简介

6.5.2 大师定理的应用

6.6 算法国粹——贾宪的增乘开平方法

6.6.1 增乘开平方法详解

6.6.2 近代开平方法——牛顿迭代法

习题

参考文献

第 7 章 算法的动态规划设计方法

7.1 DP方法概述

7.1.1 Fibonacci数的DP计算

7.1.2 DP方法的基本思想及其所求解问题的两个重要特征

7.1.3 DP算法设计的基本步骤

7.2 两个字符串间的编辑距离问题的DP算法

7.2.1 DP方程及算法设计

7.2.2 现代版C++实现与复杂度分析

7.2.3 CD-AV演示设计

7.3 矩阵链相乘问题的DP算法

7.3.1 DP方程及算法设计

7.3.2 现代版C++实现与复杂度分析

7.3.3 CD-AV演示设计

7.4 0-1背包问题的DP算法

7.4.1 DP方程及算法设计

7.4.2 现代版C++实现与复杂度分析

7.4.3 CD-AV演示设计

TSP 问题的 DP 算法

7.5.1 DP方程及算法设计

7.5.2 现代版C++实现与复杂度分析

7.5.3 CD-AV演示设计

7.6 算法国粹——秦九韶的正负开方术与*优多项式计算算法

7.6.1 秦九韶的正负开方术

7.6.2 秦九韶的*优多项式计算算法

习题

参考文献

第 8 章 算法的贪心设计方法

8.1 贪心法概述 ...................................... 209

8.1.1 找零钱问题、局部*优与全局*优

8.1.2 贪心法的基本特征

8.2 图中单源*短路径的Dijkstra算法

8.2.1 *短路径的*优子结构性质

8.2.2 Dijkstra算法的基本思想与贪心选择策略

8.2.3 现代版C++实现与复杂度分析

8.2.4 CD-AV演示设计

8.3 图的*小生成树的Prim算法

8.3.1 *小生成树的*优子结构性质

8.3.2 Prim算法的基本思想与贪心选择策略

8.3.3 现代版C++实现与CD-AV演示设计

8.4 图的*小生成树的Kruskal算法

8.4.1 Kruskal算法的基本思想与贪心选择策略

8.4.2 不相交集合及其Union与Find操作

8.4.3 现代版C++实现与复杂度分析

8.4.4 CD-AV演示设计

8.5 Huffman编码算法

8.5.1 变长编码、前缀编码及其满二叉树表示

8.5.2 Huffman编码算法的基本思想与复杂度分析

8.5.3 *优前缀编码的*优子结构性质与Huffman编码算法的贪心选择策略

8.5.4 现代版C++实现

8.5.5 CD-AV演示设计

8.6 算法国粹——姚期智院士的*小生成树算法

8.6.1 算法描述

8.6.2 复杂度分析

习题

参考文献

第 9 章 算法的回溯设计方法

9.1 图的DFS算法

9.1.1 图及其表示

9.1.2 图的DFS算法、DFS树及拓扑排序

9.1.3 现代版C++实现

9.1.4 CD-AV演示设计

9.2 回溯法概述

9.2.1 回溯法基础

9.2.2 问题解的形态与回溯算法的基本流程及相关的节点状态

0-1 背包问题的回溯算法

9.3.1 约束条件和限界条件设计

9.3.2 0-1背包问题回溯算法的伪代码及运行实例

9.4 N-皇后问题的回溯算法

9.4.1 N-皇后问题的定义、解空间分析及约束条件设计

9.4.2 现代版C++实现

9.4.3 CD-AV演示设计

9.5 K-着色问题的回溯算法

9.5.1 图着色问题的定义与分析

9.5.2 K-着色问题的回溯算法设计

9.5.3 现代版C++实现

9.5.4 CD-AV演示设计

9.6 算法国粹——线性方程组的消元求解法

9.6.1 中国古代数学家对线性方程组消元求解法的探索

9.6.2 线性方程组求解的高斯消元法

习题

参考文献

第 10 章 算法的分支限界设计方法

10.1 图的广度优先搜索

10.1.1 图的BFS算法

10.1.2 现代版C++实现

10.1.3 CD-AV演示设计

10.2 分支限界法概述

10.2.1 分支限界算法设计的基本要领

10.2.2 两类分支限界法

10.3 0-1背包问题的分支限界算法

10.3.1 约束条件和限界函数设计

10.3.2 现代版C++实现

10.3.3 CD-AV演示设计

10.4 TSP问题的分支限界算法

10.4.1 TSP问题与哈密尔顿回路

10.4.2 费用矩阵及其归约矩阵上的哈密尔顿回路

10.4.3 基于费用矩阵归约的TSP问题的分支限界条件设计

10.4.4 现代版C++实现

10.4.5 CD-AV 演示设计

10.5 算法国粹——内插法与招差术

10.5.1 中国古代数学家对内插法与招差术的探索

10.5.2 现代插值法

习题

参考文献

第 11 章 RSA 算法

11.1 公钥密码学基础

11.1.1 凯撒加密

11.1.2 对称密钥体制

11.1.3 公钥密码学简介

11.2 模幂运算的反复平方算法

11.2.1 模运算基础

11.2.2 模幂运算的反复平方表示与算法

11.3 模同余、模的乘法逆元及扩展Euclid GCD算法

11.3.1 模同余的定义及其运算性质

11.3.2 模的乘法逆元及扩展Euclid GCD算法

11.4 Miller-Rabin素性测试算法

11.4.1 关于素数的定理

11.4.2 费马小定理及相关的素性测试算法

11.4.3 Miller-Rabin素性测试算法详解

11.5 RSA算法的基本原理与实现

11.5.1 RSA算法的基本原理

11.5.2 现代版C++实现

11.5.3 CD-AV演示设计

11.6 算法国粹——中国余数算法

11.6.1 《孙子算经》中的中国余数算法

11.6.2 秦九韶关于中国余数算法的普适设计

11.6.3 中国余数算法的现代版C++实现及CD-AV演示设计

11.6.4 中国余数算法在加快RSA解密运算中的应用

习题

参考文献

第 12 章 NP理论

12.1 算法不可解的问题

12.1.1 停机问题的不可计算性

12.1.2 希尔伯特第十问题的不可计算性

12.2 易解问题与难解问题、NP理论基础

12.2.1 易解问题与难解问题

12.2.2 NP理论基础

12.3 NP 完全性理论

12.3.1 判定性问题的多项式时间归约

12.3.2 通过定义证明的NP完全问题

12.3.3 通过多项式归约证明的NP完全问题

12.3.4 问题复杂性类间的关系

12.4 算法国粹——姚期智院士的百万富翁问题

12.4.1 多方安全计算简介

12.4.2 百万富翁问题及其求解协议

习题

参考文献

附录:教材算法的现代版C++实现及计算教学论简介

附录 1-1 Euclid GCD算法

附录 2-1 洗牌算法

附录 2-2 顺序搜索算法

附录 4-1 子集遍历问题的递归穷举算法

附录 4-2 全排列遍历问题的递归穷举算法

附录 5-1 冒泡排序算法

附录 5-2 插入排序算法

附录 5-3 堆排序算法

附录 6-1 归并排序算法

附录 6-2 快速排序算法

附录 7-1 Levenshtein编辑距离问题的DP算法

附录 7-2 矩阵链相乘问题的DP算法

附录 7-3 0-1背包问题的DP算法

附录 7-4 TSP问题的DP算法

附录 8-1 Dijkstra*短路径算法

附录 8-2 Prim算法

附录 8-3 Kruskal算法

附录 8-4 Huffman编码算法

附录 9-1 图遍历的DFS算法

附录 9-2 N-皇后问题的回溯算法

附录 9-3 K-着色问题的回溯算法

附录 10-1 图的BFS算法

附录 10-2 0-1背包问题的分支限界算法

附录 10-3 TSP问题的分支限界算法

附录 11-1 RSA算法

附录 11-2 中国余数算法

附录 12 计算教学论简介


展开全部

作者简介

段会川 教授,长期致力于以计算改进教和学的效率,并创立了计算教学论学说。该学说以计算的本质能力即算法化的知识表达和解析改进教与学的效率,在《算法设计与分析》和《计算机网络原理》课程中取得了很好的效果。

预估到手价 ×

预估到手价是按参与促销活动、以最优惠的购买方案计算出的价格(不含优惠券部分),仅供参考,未必等同于实际到手价。

确定
快速
导航