算法设计与分析——基于计算教学论的解析
定价:¥89.00
作者: 段会川等
出版时间:2023-09
出版社:电子工业出版社
- 电子工业出版社
- 9787121440519
- 1-3
- 16开
- 2023-09
- 746
- 工学
- 计算机类
- 计算机科学与技术
- 本科 研究生及以上
内容简介
本教材是基于作者所创立的计算教学论编写的,是为实现教学效率显著提升而对计算教学论提出的思想、 方法和工具的深广应用。 本教材共 12 章。第 1 章由 Euclid GCD 算法引出算法的定义,并介绍基于可视化的算法学习方法,第 2~5 章分别介绍算法的穷举设计方法、算法复杂度分析、算法的递归设计方法和基于比较的排序算法,第 6~10 章 分别介绍分治、动态规划、贪心、回溯和分支限界等经典的算法设计方法,第 11 章介绍 RSA 算法,第 12 章介 绍 NP 理论。 本教材可作为高等学校计算机科学与技术专业算法设计与分析课程的教材,也可作为计算机及相关专业研 究生和科研、工程或技术人员自学算法设计与分析的参考书。
目录
目 录
第 1 章 算法及其可视化教学支持系统 ............ 1
初识算法:Euclid GCD 算法 .............. 1
1.1.1 GCD 及因子分解方法 .............. 1
1.1.2 Euclid GCD 算法 ....................... 3
算法的定义 .......................................... 3
1.2.1 算法是一种求解问题的
科学方法 ................................... 4
1.2.2 算法的克努特定义.................... 5
1.2.3 算法的图灵机定义.................... 6
算法的描述方法 .................................. 8
1.3.1 算法的自然语言描述方法 ........ 8
1.3.2 算法的流程图描述方法 ............ 8
1.3.3 算法的伪代码描述方法 ............ 9
1.3.4 算法的现代版 C++描述方法 ... 10
1.3.5 设计算法求解问题的
基本过程 ................................. 10
可视化算法学习的支持工具............. 12
1.4.1 CAAIS 的基本界面及其
功能 ......................................... 12
1.4.2 算法 CD-AV 演示的基本
操作 ......................................... 13
使用现代版 C++进行算法实验 ........ 15
1.5.1 现代版 C++的算法实验
环境建议 ................................. 15
1.5.2 算法的现代版 C++实现
方式——以 Euclid GCD
算法为例 ................................. 16
算法国粹——《九章算术》中的
二进制 GCD 算法 .............................. 17
1.6.1 《九章算术》中的更相减
损术——最早的二进制
GCD 算法 ................................ 17
1.6.2 现代版的二进制 GCD 算法 .... 18
习题 ............................................................ 19
参考文献 ..................................................... 20
第 2 章 算法的穷举设计方法 .......................... 22
穷举算法设计基础 ............................ 22
穷举算法设计示例 ............................ 23
2.2.1 百钱买百鸡问题算法设计 ..... 23
2.2.2 素性测试的试除算法设计 ..... 26
2.2.3 顺序搜索算法设计及 CD-AV
演示 ......................................... 28
2.2.4 洗牌算法设计及 CD-AV 演示 29
伪随机数发生器及其在算法实验
中的应用 ............................................ 31
2.3.1 生成伪随机数的线性同余法 ... 31
2.3.2 传统 C 语言标准库中的
伪随机函数及其应用 ............. 32
2.3.3 现代版 C++标准库中的
伪随机函数及其应用 ............. 33
2.4 算法国粹——图灵奖获得者姚期智
院士的伪随机数理论 ........................ 34
2.4.1 姚期智院士密码学安全的
伪随机数理论 ......................... 35
2.4.2 LCG 不是密码学安全的 ........ 35
2.4.3 Java JDK 提供的密码学
安全的伪随机数发生器 ......... 37
习题 ........................................................... 39
参考文献 ..................................................... 40
第 3 章 算法复杂度分析 .................................. 42
算法复杂度分析基础 ........................ 42
3.1.1 算法的输入规模及复杂度
计量 ......................................... 42
3.1.2 算法的最好、最坏和平均
情况复杂度 ............................. 43
算法复杂度的渐近分析方法 ............ 45
3.2.1 算法的渐近复杂度及其记法 . 46
3.2.2 常见的算法复杂度阶及其
关系 ......................................... 51
算法设计与分析——基于计算教学论的解析
- VIII -
3.2.3 算法复杂度渐近分析的
基本范型 ................................. 53
大整数算术运算的复杂度 ................ 55
3.3.1 二进制数的竖式算术运算的
复杂度 ..................................... 55
3.3.2 大整数的多精度表示 .............. 57
3.3.3 多精度整数算术运算的
复杂度 ..................................... 57
Euclid GCD 算法的复杂度分析 ........ 59
3.4.1 Fibonacci 数列及其通项的
闭式解 ..................................... 59
3.4.2 Euclid GCD 算法复杂度的
详细分析 ................................. 62
算法复杂度的平摊分析方法............. 64
3.5.1 平摊分析方法概述.................. 64
3.5.2 Fibonacci 堆的基本操作及其
复杂度的平摊分析.................. 66
算法复杂度的实验分析法 ................ 70
3.6.1 算法复杂度实验分析的
必要性和基本过程.................. 70
3.6.2 算法复杂度的实验分析法
示例 ......................................... 72
问题的复杂度 .................................... 73
3.7.1 问题的复杂度概述.................. 73
3.7.2 基于比较的排序问题的
复杂度 ..................................... 74
算法国粹——姚期智院士的通信
复杂性理论 ........................................ 76
3.8.1 通信复杂性的问题定义 .......... 76
3.8.2 通信复杂性理论的基本成果.... 77
习题 ............................................................ 80
参考文献 ..........................
第 1 章 算法及其可视化教学支持系统 ............ 1
初识算法:Euclid GCD 算法 .............. 1
1.1.1 GCD 及因子分解方法 .............. 1
1.1.2 Euclid GCD 算法 ....................... 3
算法的定义 .......................................... 3
1.2.1 算法是一种求解问题的
科学方法 ................................... 4
1.2.2 算法的克努特定义.................... 5
1.2.3 算法的图灵机定义.................... 6
算法的描述方法 .................................. 8
1.3.1 算法的自然语言描述方法 ........ 8
1.3.2 算法的流程图描述方法 ............ 8
1.3.3 算法的伪代码描述方法 ............ 9
1.3.4 算法的现代版 C++描述方法 ... 10
1.3.5 设计算法求解问题的
基本过程 ................................. 10
可视化算法学习的支持工具............. 12
1.4.1 CAAIS 的基本界面及其
功能 ......................................... 12
1.4.2 算法 CD-AV 演示的基本
操作 ......................................... 13
使用现代版 C++进行算法实验 ........ 15
1.5.1 现代版 C++的算法实验
环境建议 ................................. 15
1.5.2 算法的现代版 C++实现
方式——以 Euclid GCD
算法为例 ................................. 16
算法国粹——《九章算术》中的
二进制 GCD 算法 .............................. 17
1.6.1 《九章算术》中的更相减
损术——最早的二进制
GCD 算法 ................................ 17
1.6.2 现代版的二进制 GCD 算法 .... 18
习题 ............................................................ 19
参考文献 ..................................................... 20
第 2 章 算法的穷举设计方法 .......................... 22
穷举算法设计基础 ............................ 22
穷举算法设计示例 ............................ 23
2.2.1 百钱买百鸡问题算法设计 ..... 23
2.2.2 素性测试的试除算法设计 ..... 26
2.2.3 顺序搜索算法设计及 CD-AV
演示 ......................................... 28
2.2.4 洗牌算法设计及 CD-AV 演示 29
伪随机数发生器及其在算法实验
中的应用 ............................................ 31
2.3.1 生成伪随机数的线性同余法 ... 31
2.3.2 传统 C 语言标准库中的
伪随机函数及其应用 ............. 32
2.3.3 现代版 C++标准库中的
伪随机函数及其应用 ............. 33
2.4 算法国粹——图灵奖获得者姚期智
院士的伪随机数理论 ........................ 34
2.4.1 姚期智院士密码学安全的
伪随机数理论 ......................... 35
2.4.2 LCG 不是密码学安全的 ........ 35
2.4.3 Java JDK 提供的密码学
安全的伪随机数发生器 ......... 37
习题 ........................................................... 39
参考文献 ..................................................... 40
第 3 章 算法复杂度分析 .................................. 42
算法复杂度分析基础 ........................ 42
3.1.1 算法的输入规模及复杂度
计量 ......................................... 42
3.1.2 算法的最好、最坏和平均
情况复杂度 ............................. 43
算法复杂度的渐近分析方法 ............ 45
3.2.1 算法的渐近复杂度及其记法 . 46
3.2.2 常见的算法复杂度阶及其
关系 ......................................... 51
算法设计与分析——基于计算教学论的解析
- VIII -
3.2.3 算法复杂度渐近分析的
基本范型 ................................. 53
大整数算术运算的复杂度 ................ 55
3.3.1 二进制数的竖式算术运算的
复杂度 ..................................... 55
3.3.2 大整数的多精度表示 .............. 57
3.3.3 多精度整数算术运算的
复杂度 ..................................... 57
Euclid GCD 算法的复杂度分析 ........ 59
3.4.1 Fibonacci 数列及其通项的
闭式解 ..................................... 59
3.4.2 Euclid GCD 算法复杂度的
详细分析 ................................. 62
算法复杂度的平摊分析方法............. 64
3.5.1 平摊分析方法概述.................. 64
3.5.2 Fibonacci 堆的基本操作及其
复杂度的平摊分析.................. 66
算法复杂度的实验分析法 ................ 70
3.6.1 算法复杂度实验分析的
必要性和基本过程.................. 70
3.6.2 算法复杂度的实验分析法
示例 ......................................... 72
问题的复杂度 .................................... 73
3.7.1 问题的复杂度概述.................. 73
3.7.2 基于比较的排序问题的
复杂度 ..................................... 74
算法国粹——姚期智院士的通信
复杂性理论 ........................................ 76
3.8.1 通信复杂性的问题定义 .......... 76
3.8.2 通信复杂性理论的基本成果.... 77
习题 ............................................................ 80
参考文献 ..........................















