当前位置:主页 > 书籍配套资源 > 算法配套资源
《算法之道》勘误

《算法之道》勘误

  • 更新:2022-09-06
  • 大小:1.1 MB
  • 类别:算法
  • 作者:邹恒明
  • 出版:机械工业出版社
  • 格式:PDF

  • 资源介绍
  • 相关推荐

本书甄选了那些最能够展现算法思想、战略和精华,并能够有效训练算法思维的内容。本书将算法的讨论分为五大部分:算法基本战略、算法设计战略、算法分析战略、经典算法讨论、难解与无解问题。每一个部分分别讨论算法的一大方面:基础、设计、分析、经典和难解问题。本书既可以作为大学本科或研究生的算法教材或参考书,也可以作为对算法有兴趣的读者提升认知深度的读物。

封面图

目录

  • 前言
  • 第一篇算法基础篇
  • 第1章从无有到无穷2
  • 1.1意念与现实3
  • 1.2什么是算法4
  • 1.3算法的表示6
  • 1.4算法之魂7
  • 1.5如何比较速度8
  • 1.6算法与计算机的关系9
  • 1.7算法的范畴10
  • 1.8为什么学习算法10
  • 思考题11
  • 第2章计数与渐近12
  • 2.1算法的分析12
  • 2.1.1正确性分析13
  • 2.1.2时空效率分析14
  • 2.1.3时空特性分析14
  • 2.2计数:算法分析的核心14
  • 2.3算法设计15
  • 2.4算法效率表示16
  • 2.5渐近分析17
  • 2.6O、(、(表示18
  • 2.7最好、最坏、平均19
  • 2.8O、(、(的另一类定义21
  • 2.9O、(、(的性质22
  • 2.10要更快的计算机还是要更快的算法22
  • 思考题23
  • 第3章分治与递归25
  • 3.1分而治之为上策26
  • 3.2分治策略28
  • 3.3递归表达式求解29
  • 3.3.1递归树法29
  • 3.3.2替换解法30
  • 3.3.3大师解法32
  • 3.4分治策略举例1:乘方运算35
  • 3.5生命不能承受之重:矩阵乘法36
  • 3.6魔鬼序列:斐波那契序列38
  • 3.7VLSI 布线41
  • 3.8多项式乘法43
  • 3.9分治就在潜意识深处43
  • 思考题43
  •  
  • 第二篇算法设计篇
  • 第4章动态规划思想46
  • 4.1什么是动态规划47
  • 4.2流水装配线问题48
  • 4.3最长公共子序列52
  • 4.3.1第一种解法:蛮力策略52
  • 4.3.2第二种解法:动态规划53
  • 4.4最长公共子序列变种55
  • 4.5记忆递归法55
  • 4.6空间效率改善56
  • 4.7最优二叉搜索树56
  • 4.7.1递归解法59
  • 4.7.2计算最优答案59
  • 4.8最优子结构与重叠子问题62
  • 4.8.1最优子结构62
  • 4.8.2重叠子问题63
  • 4.9动态规划与静态规划的关系63
  • 4.10动态规划与静态规划的相互转换64
  • 思考题65
  • 第5章贪婪选择思想67
  • 5.1仅有动态规划是不够的67
  • 5.2什么是贪婪68
  • 5.3背包问题68
  • 5.4贪婪选择属性71
  • 5.5教室规划问题72
  • 5.6最小生成树76
  • 5.6.1Kruskal算法的正确性79
  • 5.6.2Kruskal算法的时间分析80
  • 5.7Prim算法80
  • 5.8霍夫曼树和霍夫曼编码83
  • 5.8.1霍夫曼树85
  • 5.8.2霍夫曼编码86
  • 5.8.3霍夫曼编码的无前缀编码
  • 性质87
  • 5.9贪婪选择属性88
  • 5.10标准分治、动态规划和贪婪选择的比较89
  • 思考题90
  • 第6章随机化思想92
  • 6.1为什么要随机化93
  • 6.2随机的平方94
  • 6.3什么是随机化算法95
  • 6.4拉斯维加斯算法96
  • 6.5蒙特卡罗算法97
  • 6.6素性测试97
  • 6.7矩阵乘积验证器100
  • 6.8随机化最小生成树算法102
  • 6.8.1Karger-Klein-Tarjan算法103
  • 6.8.2节点降低算法103
  • 6.8.3线性时间最小生成树算法104
  • 6.8.4线性时间最小生成树算法的时间成本分析104
  • 6.9随机数的生成105
  • 6.10随机化算法的应用105
  • 思考题106
  •  
  • 第三篇算法分析篇
  • 第7章概率分析108
  • 7.1一切都在概率中109
  • 7.2什么是概率分析109
  • 7.3梦幻情人的代价110
  • 7.3.1直接分析112
  • 7.3.2最坏情况分析113
  • 7.3.3最好情况分析113
  • 7.3.4平均情况分析113
  • 7.3.5平均情况下成本的概率分析113
  • 7.4概率分析结果的有效性114
  • 7.5正确概率分析的保障115
  • 7.6梦幻情人的概率115
  • 7.7随机排列问题117
  • 7.8南柯一梦:从无穷到无有119
  • 7.9概率分析的其他应用120
  • 思考题121
  • 第8章摊销分析122
  • 8.1什么是摊销分析123
  • 8.2摊销分析与数据结构124
  • 8.3摊销分析的几种方法124
  • 8.4聚类分析125
  • 8.4.1栈操作的聚类分析125
  • 8.4.2二进制计数器的聚类分析126
  • 8.5会计分析128
  • 8.6势能分析130
  • 8.6.1栈操作的势能分析130
  • 8.6.2二进制计数器的势能分析131
  • 8.7摊销分析应用:表格扩展的代价131
  • 8.7.1动态表插入操作的聚类分析134
  • 8.7.2动态表插入操作的会计分析134
  • 8.7.3动态表插入操作的势能分析136
  • 8.8运气不好就摊销137
  • 思考题138
  • 第9章竞争分析139
  • 9.1什么是竞争分析139
  • 9.2在线算法和离线算法141
  • 9.3竞争力142
  • 9.4健忘对手和优良对手142
  • 9.5线性表更新问题143
  • 9.6前置移动算法的竞争分析145
  • 9.7聚类问题147
  • 9.7.1聚类问题的次优解算法148
  • 9.7.2CLUSTERING-ALGORITHM算法的竞争分析148
  • 9.8竞争分析与普通算法分析149
  • 思考题149
  • 第四篇经典算法篇
  • 第10章排序和次序152
  • 10.1排序无处不在152
  • 10.2插入排序153
  • 10.2.1插入排序的效率分析154
  • 10.2.2折半插入排序155
  • 10.3归并排序156
  • 10.4快速排序158
  • 10.4.1快速排序的过程158
  • 10.4.2快速排序的时间复杂性分析159
  • 10.4.3最坏情况分析160
  • 10.4.4最好情况分析160
  • 10.4.5平均情况分析161
  • 10.5随机化快速排序162
  • 10.6排序的下限164
  • 10.7线性排序165
  • 10.8计数排序166
  • 10.9基数排序168
  • 10.9.1基数排序的正确性169
  • 10.9.2基数排序的时间效率分析170
  • 10.10桶排序171
  • 10.10.1桶排序的定义172
  • 10.10.2桶排序的正确性173
  • 10.10.3桶排序的时间复杂性分析173
  • 10.11次序选择175
  • 10.12快速次序选择算法176
  • 10.13随机快速次序选择算法178
  • 10.14最坏情况下的线性选择算法179
  • 10.14.1杠杆点好坏分析180
  • 10.14.2算法的时间复杂性分析181
  • 思考题181
  • 第11章搜索与哈希183
  • 11.1搜索问题184
  • 11.2顺序搜索184
  • 11.3折半搜索185
  • 11.4常数搜索186
  • 11.5哈希搜索187
  • 11.6哈希函数选择189
  • 11.6.1直接哈希189
  • 11.6.2除法(模除法)哈希190
  • 11.6.3乘法哈希191
  • 11.6.4乘法哈希的赌徒原理192
  • 11.6.5乘方取中法193
  • 11.7哈希算法的碰撞问题193
  • 11.7.1开放寻址哈希193
  • 11.7.2开放寻址哈希的时间成本194
  • 11.7.3开放寻址下成功搜索的时间成本195
  • 11.7.4封闭寻址哈希196
  • 11.7.5探寻序列的设计197
  • 11.7.6封闭寻址哈希的效率分析199
  • 11.7.7搜索不成功的时间成本199
  • 11.7.8成功搜索的效率分析201
  • 11.8哈希表元素删除201
  • 11.9随机化哈希202
  • 11.10全域哈希203
  • 11.11全域哈希构造204
  • 11.12完美哈希206
  • 思考题208
  • 第12章最短路径211
  • 12.1剑指罗马211
  • 12.2最短路径问题213
  • 12.3单源单点最短路径问题215
  • 12.3.1深度优先搜索与广度优先搜索215
  • 12.3.2深度优先解法217
  • 12.4单源多点最短路径问题218
  • 12.4.1最短路径的性质219
  • 12.4.2Dijkstra最短路径算法220
  • 12.4.3Dijkstra算法举例221
  • 12.4.4Dijkstra算法与洪水泛滥222
  • 12.4.5Dijkstra算法的正确性223
  • 12.4.6Dijkstra算法的时间复杂性224
  • 12.5Bellman-Ford算法226
  • 12.5.1负权重的应对方式227
  • 12.5.2Bellman-Ford算法的正确性230
  • 12.5.3负循环检查问题231
  • 12.5.4Bellman-Ford算法的时间复杂性231
  • 12.6多源多点最短路径问题232
  • 12.6.1多源多点最短路径问题解决思路232
  • 12.6.2直接动态规划解法233
  • 12.6.3矩阵乘法解法234
  • 12.6.4Floyd-Warshall 算法235
  • 12.6.5Johnson 算法236
  • 12.6.6Johnson等效变换237
  • 12.6.7差限问题解决238
  • 12.7天意难违240
  • 思考题240
  •  
  • 第五篇难解与无解篇
  • 第13章可解与不可解244
  • 13.1我们战无不胜吗245
  • 13.2易解与难解245
  • 13.3决策问题和优化问题246
  • 13.4决策问题247
  • 13.5P类问题247
  • 13.6NP类问题248
  • 13.7 (确定性)图灵机249
  • 13.8非确定性图灵机249
  • 13.9非确定性算法250
  • 13.10回到NP类问题251
  • 13.11P和NP252
  • 13.12搜索问题、决策问题和优化问题253
  • 13.13有没有解和是否可决定253
  • 思考题254
  • 第14章NP完全问题256
  • 14.1玉龙雪山下的审判256
  • 14.2NP完全问题的定义257
  • 14.3NP完全的重要性258
  • 14.4多项式时间规约259
  • 14.5如何证明一个问题S是NP完全259
  • 14.6第1个NP完全问题的证明260
  • 14.7库克定理260
  • 14.83-SAT问题263
  • 14.9证明NP难的技巧264
  • 14.10整数规划265
  • 14.11独立集问题266
  • 14.12汉密尔顿回路问题268
  • 14.13讨论:弱NP完全、强NP完全和中NP完全271
  • 思考题272
  • 第15章无解与近似273
  • 15.1难解问题274
  • 15.2不可决定问题274
  • 15.3程序终结的判断275
  • 15.4难解之题的求解276
  • 15.5智能穷举、近似算法和本地搜索277
  • 15.6智能穷举之回溯策略279
  • 15.7智能穷举之分支限界280
  • 15.8贪婪近似策略280
  • 15.9启发式搜索策略281
  • 15.10模拟淬火算法282
  • 15.10.1模拟淬火算法的思想284
  • 15.10.2模拟淬火算法的基本循环284
  • 15.10.3淬火算法描述284
  • 思考题286
  • 结语算法之道288
  • 附录算法随想290
  • 参考文献293

资源下载

资源下载地址1:https://pan.baidu.com/s/1StNlIE0iHlNfvWwHsBx1uA

相关资源

网友留言