图书介绍
算法的乐趣2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

- 王晓华著 著
- 出版社: 北京:人民邮电出版社
- ISBN:9787115385376
- 出版时间:2015
- 标注页数:404页
- 文件大小:57MB
- 文件页数:422页
- 主题词:算法语言-程序设计
PDF下载
下载说明
算法的乐趣PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1章 程序员与算法1
1.1 什么是算法2
1.2 程序员必须要会算法吗2
1.2.1 一个队列引发的惨案3
1.2.2 我的第一个算法5
1.3 算法的乐趣在哪里7
1.4 算法与代码8
1.5 总结9
1.6 参考资料9
第2章 算法设计的基础10
2.1 程序的基本结构10
2.1.1 顺序执行10
2.1.2 循环结构11
2.1.3 分支和跳转结构13
2.2 算法实现与数据结构16
2.2.1 基本数据结构在算法设计中的应用16
2.2.2 复杂数据结构在算法设计中的应用19
2.3 数据结构和数学模型与算法的关系24
2.4 总结25
2.5 参考资料25
第3章 算法设计的常用思想26
3.1 贪婪法26
3.1.1 贪婪法的基本思想27
3.1.2 贪婪法的例子:0-1背包问题27
3.2 分治法30
3.2.1 分治法的基本思想30
3.2.2 递归和分治,一对好朋友31
3.2.3 分治法的例子:大整数Karatsuba乘法算法32
3.3 动态规划34
3.3.1 动态规划的基本思想34
3.3.2 动态规划法的例子:字符串的编辑距离37
3.4 解空间的穷举搜索40
3.4.1 解空间的定义41
3.4.2 穷举解空间的策略42
3.4.3 穷举搜索的例子:Google方程式44
3.5 总结46
3.6 参考资料46
第4章 阿拉伯数字与中文数字47
4.1 中文数字的特点47
4.1.1 中文数字的权位和小节48
4.1.2 中文数字的零48
4.2 阿拉伯数字转中文数字49
4.2.1 一个转换示例49
4.2.2 转换算法设计49
4.2.3 算法实现50
4.2.4 中文大写数字51
4.3 中文数字转阿拉伯数字52
4.3.1 转换的基本方法52
4.3.2 算法实现52
4.4 数字转换的测试用例54
4.5 总结55
4.6 参考资料55
第5章 三个水桶等分8升水的问题56
5.1 问题与求解思路57
5.2 建立数学模型58
5.2.1 状态的数学模型与状态树58
5.2.2 倒水动作的数学模型59
5.3 搜索算法60
5.3.1 状态树的遍历60
5.3.2 剪枝和重复状态判断61
5.4 算法实现62
5.5 总结64
5.6 参考资料64
第6章 妖怪与和尚过河问题65
6.1 问题与求解思路66
6.2 建立数学模型66
6.2.1 状态的数学模型与状态树67
6.2.2 过河动作的数学模型67
6.3 搜索算法69
6.3.1 状态树的遍历70
6.3.2 剪枝和重复状态判断70
6.4 算法实现71
6.5 总结72
6.6 参考资料73
第7章 稳定匹配与舞伴问题74
7.1 稳定匹配问题74
7.1.1 什么是稳定匹配74
7.1.2 Gale-Shapley算法原理75
7.2 Gale-Shapley算法的应用实例77
7.2.1 算法实现77
7.2.2 改进优化:空间换时间80
7.3 有多少稳定匹配81
7.3.1 穷举所有的完美匹配81
7.3.2 不稳定因素的判断算法82
7.3.3 穷举的结果84
7.4 二部图与二分匹配84
7.4.1 最大匹配与匈牙利算法85
7.4.2 带权匹配与Kuhn-Munkres算法88
7.5 总结93
7.6 参考资料94
第8章 爱因斯坦的思考题95
8.1 问题的答案96
8.2 分析问题的数学模型96
8.2.1 基本模型定义96
8.2.2 线索模型定义98
8.3 算法设计99
8.3.1 穷举所有的组合结果99
8.3.2 利用线索判定结果的正确性101
8.4 总结103
8.5 参考资料104
第9章 项目管理与图的拓扑排序105
9.1 AOV网和AOE网107
9.2 拓扑排序108
9.2.1 拓扑排序的基本过程108
9.2.2 按照活动开始时间排序108
9.3 关键路径算法111
9.3.1 什么是关键路径112
9.3.2 计算关键路径的算法113
9.4 总结116
9.5 参考资料116
第10章 RLE压缩算法与PCX图像文件格式117
10.1 RLE压缩算法117
10.1.1 连续重复数据的处理117
10.1.2 连续非重复数据的处理118
10.1.3 算法实现118
10.2 RLE与PCX图像文件格式121
10.2.1 PCX图像文件格式121
10.2.2 PCX RLE算法122
10.2.3 256色PCX文件的解码和显示123
10.3 总结124
10.4 参考资料125
第11章 算法与历法126
11.1 格里历(公历)生成算法126
11.1.1 格里历的历法规则126
11.1.2 今天星期几127
11.1.3 生成日历的算法131
11.1.4 日历变更那点事儿132
11.2 二十四节气的天文学计算134
11.2.1 二十四节气的起源134
11.2.2 二十四节气的天文学定义135
11.2.3 VSOP-82/87行星理论137
11.2.4 误差修正——章动141
11.2.5 误差修正——光行差143
11.2.6 用牛顿迭代法计算二十四节气144
11.3 农历朔日(新月)的天文学计算146
11.3.1 日月合朔的天文学定义147
11.3.2 ELP-2000/82月球理论147
11.3.3 误差修正——地球轨道离心率修正149
11.3.4 误差修正——黄经摄动149
11.3.5 月球地心视黄经和最后的修正——地球章动150
11.3.6 用牛顿迭代法计算日月合朔151
11.4 农历的生成算法152
11.4.1 中国农历的起源与历法规则153
11.4.2 中国农历的推算157
11.4.3 一个简单的“年历”165
11.5 总结166
11.6 参考资料167
第12章 实验数据与曲线拟合168
12.1 曲线拟合168
12.1.1 曲线拟合的定义168
12.1.2 简单线性数据拟合的例子168
12.2 最小二乘法曲线拟合169
12.2.1 最小二乘法原理170
12.2.2 高斯消元法求解方程组171
12.2.3 最小二乘法解决“速度与加速度”实验172
12.3 三次样条曲线拟合173
12.3.1 插值函数174
12.3.2 样条函数的定义174
12.3.3 边界条件175
12.3.4 推导三次样条函数176
12.3.5 追赶法求解方程组179
12.3.6 三次样条曲线拟合算法实现181
12.3.7 三次样条曲线拟合的效果183
12.4 总结184
12.5 参考资料184
第13章 非线性方程与牛顿迭代法185
13.1 非线性方程求解的常用方法185
13.1.1 公式法185
13.1.2 二分逼近法186
13.2 牛顿迭代法的数学原理187
13.3 用牛顿迭代法求解非线性方程的实例188
13.3.1 导函数的求解与近似公式188
13.3.2 算法实现188
13.4 参考资料189
第14章 计算几何与计算机图形学190
14.1 计算几何的基本算法190
14.1.1 点与矩形的关系190
14.1.2 点与圆的关系191
14.1.3 矢量的基础知识191
14.1.4 点与直线的关系194
14.1.5 直线与直线的关系194
14.1.6 点与多边形的关系196
14.2 直线生成算法199
14.2.1 什么是光栅图形扫描转换200
14.2.2 数值微分法200
14.2.3 Bresenham算法202
14.2.4 对称直线生成算法204
14.2.5 两步算法205
14.2.6 其他直线生成算法207
14.3 圆生成算法207
14.3.1 圆的八分对称性208
14.3.2 中点画圆法209
14.3.3 改进的中点画圆法——Bresenham算法210
14.3.4 正负判定画圆法211
14.4 椭圆生成算法212
14.4.1 中点画椭圆法213
14.4.2 Bresenham椭圆算法215
14.5 多边形区域填充算法217
14.5.1 种子填充算法218
14.5.2 扫描线填充算法223
14.5.3 改进的扫描线填充算法229
14.5.4 边界标志填充算法233
14.6 总结236
14.7 参考资料236
第15章 音频频谱和均衡器与傅里叶变换算法237
15.1 实时频谱显示的原理237
15.2 离散傅里叶变换238
15.2.1 什么是傅里叶变换239
15.2.2 傅里叶变换原理239
15.2.3 快速傅里叶变换算法的实现243
15.3 傅里叶变换与音频播放的实时频谱显示245
15.3.1 频域数值的特点分析245
15.3.2 从音频数据到功率频谱246
15.3.3 音频播放时实时频谱显示的例子248
15.4 破解电话号码的小把戏251
15.4.1 拨号音的频谱分析251
15.4.2 根据频谱数据反推电话号码252
15.5 离散傅里叶逆变换253
15.5.1 快速傅里叶逆变换的推导254
15.5.2 快速傅里叶逆变换的算法实现254
15.6 利用傅里叶变换实现频域均衡器255
15.6.1 频域均衡器的实现原理255
15.6.2 频域信号的增益与衰减256
15.6.3 均衡器的实现——仿Foobar的18段均衡器258
15.7 总结259
15.8 参考资料259
第16章 全局最优解与遗传算法260
16.1 遗传算法的原理260
16.1.1 遗传算法的基本概念261
16.1.2 遗传算法的处理流程262
16.2 遗传算法求解0-1背包问题267
16.2.1 基因编码和种群初始化267
16.2.2 适应度函数268
16.2.3 选择算子设计与轮盘赌算法268
16.2.4 交叉算子设计270
16.2.5 变异算子设计271
16.2.6 这就是遗传算法272
16.3 总结272
16.4 参考资料273
第17章 计算器程序与大整数计算274
17.1 哦,溢出了,出洋相的计算器程序274
17.2 大整数计算的原理275
17.2.1 大整数加法276
17.2.2 大整数减法278
17.2.3 大整数乘法279
17.2.4 大整数除法与模281
17.2.5 大整数乘方运算282
17.3 大整数类的使用283
17.3.1 与Windows的计算器程序一决高下283
17.3.2 最大公约数和最小公倍数284
17.3.3 用扩展欧几里得算法求模的逆元286
17.4 总结288
17.5 参考资料288
第18章 RSA算法——加密与签名289
18.1 RSA算法的开胃菜289
18.1.1 将模幂运算转化为模乘运算290
18.1.2 模乘运算与蒙哥马利算法291
18.1.3 模幂算法292
18.1.4 素数检验与米勒—拉宾算法292
18.2 RSA算法原理295
18.2.1 RSA算法的数学理论295
18.2.2 加密和解密算法296
18.2.3 RSA算法的安全性297
18.3 数据块分组加密297
18.3.1 字节流与大整数的转换298
18.3.2 PCKS与OAEP加密填充模式298
18.3.3 数据加密算法实现300
18.3.4 数据解密算法实现301
18.4 RSA签名与身份验证302
18.4.1 RSASSA-PKCS与RSASSA-PSS签名填充模式302
18.4.2 签名算法实现304
18.4.3 验证签名算法实现305
18.5 总结305
18.6 参考资料306
第19章 数独游戏307
19.1 数独游戏的规则与技巧307
19.1.1 数独游戏的规则307
19.1.2 数独游戏的常用技巧308
19.2 计算机求解数独问题308
19.2.1 建立问题的数学模型310
19.2.2 算法实现311
19.2.3 与传统穷举方法的结果对比312
19.3 关于数独的趣味话题312
19.3.1 数独游戏有多少终盘313
19.3.2 史上最难的数独游戏314
19.4 总结314
19.5 参考资料315
第20章 华容道游戏316
20.1 华容道游戏介绍316
20.2 自动求解的算法原理317
20.2.1 定义棋盘的局面317
20.2.2 算法思路319
20.3 自动求解的算法实现320
20.3.1 棋局状态与Zobrist哈希算法321
20.3.2 重复棋局和左右镜像的处理323
20.3.3 正确结果的判断条件325
20.3.4 武将棋子的移动325
20.3.5 棋局的搜索算法328
20.4 总结329
20.5 参考资料329
第21章 A*寻径算法330
21.1 寻径算法演示程序330
21.2 Dijkstra算法331
21.2.1 Dijkstra算法原理332
21.2.2 Dijkstra算法实现332
21.2.3 Dijkstra算法演示程序333
21.3 带启发的搜索算法——A*算法335
21.3.1 A*算法原理336
21.3.2 常用的距离评估函数337
21.3.3 A*算法实现340
21.4 总结342
21.5 参考资料342
第22章 俄罗斯方块游戏343
22.1 俄罗斯方块游戏规则343
22.2 俄罗斯方块游戏人工智能的算法原理344
22.2.1 影响评价结果的因素345
22.2.2 常用的俄罗斯方块游戏人工智能算法346
22.2.3 Pierre Dellacherie评估算法347
22.3 Pierre Dellacherie算法实现349
22.3.1 基本数学模型和数据结构定义350
22.3.2 算法实现352
22.4 总结358
22.5 参考资料358
第23章 博弈树与棋类游戏359
23.1 棋类游戏的AI359
23.1.1 博弈与博弈树360
23.1.2 极大极小值搜索算法361
23.1.3 负极大极搜索算法362
23.1.4 “α-β”剪枝算法363
23.1.5 估值函数365
23.1.6 置换表与哈希函数366
23.1.7 开局库与终局库368
23.2 井字棋——最简单的博弈游戏368
23.2.1 棋盘与棋子的数学模型369
23.2.2 估值函数与估值算法370
23.2.3 如何产生走法(落子方法)371
23.3 奥赛罗棋(黑白棋)373
23.3.1 棋盘与棋子的数学模型374
23.3.2 估值函数与估值算法377
23.3.3 搜索算法实现380
23.3.4 最终结果384
23.4 五子棋385
23.4.1 棋盘与棋子的数学模型386
23.4.2 估值函数与估值算法388
23.4.3 搜索算法实现391
23.4.4 最终结果393
23.5 总结393
23.6 参考资料393
附录A 算法设计的常用技巧395
A.1 数组下标处理395
A.2 一重循环实现两重循环的功能396
A.3 棋盘(迷宫)类算法方向遍历396
A.4 代码的一致性处理技巧397
A.5 链表和数组的配合使用398
A.6 “以空间换时间”的常用技巧399
A.7 利用表驱动避免长长的switch-case400
附录B 一个棋类游戏的设计框架401
B.1 代码框架的整体结构401
B.2 代码框架的使用方法403
热门推荐
- 3433712.html
- 264388.html
- 475362.html
- 2149305.html
- 2428431.html
- 2548841.html
- 1105527.html
- 3907889.html
- 1414968.html
- 1264110.html
- http://www.ickdjs.cc/book_2740368.html
- http://www.ickdjs.cc/book_2418602.html
- http://www.ickdjs.cc/book_1229222.html
- http://www.ickdjs.cc/book_3547806.html
- http://www.ickdjs.cc/book_2855011.html
- http://www.ickdjs.cc/book_3107452.html
- http://www.ickdjs.cc/book_1749073.html
- http://www.ickdjs.cc/book_2088010.html
- http://www.ickdjs.cc/book_2270049.html
- http://www.ickdjs.cc/book_3887268.html