《算法导论 原书第3版》PDF下载

  • 购买积分:21 如何计算积分?
  • 作  者:(美)ThomasH.Cormen,CharlesE.Leiserson,RonaldL.Rivest,CliffordStein著;王刚,邹恒明,殷建平,王宏志等译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2013
  • ISBN:9787111407010
  • 页数:780 页
图书介绍:本书提供了对当代计算机算法研究的一个全面、综合性的介绍。全书共八部分,内容涵盖基础知识、排序和顺序统计量、数据结构、高级设计和分析技术、高级数据结构、图算法、算法问题选编,以及数学基础知识。书中深入浅出地介绍了大量的算法及相关的数据结构,以及用于解决一些复杂计算问题的高级策略(如动态规划、贪心算法、摊还分析等),重点在于算法的分析与设计

第一部分 基础知识 3

第1章 算法在计算中的作用 3

1.1算法 3

1.2作为一种技术的算法 6

思考题 8

本章注记 8

第2章 算法基础 9

2.1插入排序 9

2.2分析算法 13

2.3设计算法 16

2.3.1分治法 16

2.3.2分析分治算法 20

思考题 22

本章注记 24

第3章 函数的增长 25

3.1渐近记号 25

3.2标准记号与常用函数 30

思考题 35

本章注记 36

第4章 分治策略 37

4.1最大子数组问题 38

4.2矩阵乘法的Strassen算法 43

4.3用代入法求解递归式 47

4.4用递归树方法求解递归式 50

4.5用主方法求解递归式 53

4.6证明主定理 55

4.6.1对b的幂证明主定理 56

4.6.2向下取整和向上取整 58

思考题 60

本章注记 62

第5章 概率分析和随机算法 65

5.1雇用问题 65

5.2指示器随机变量 67

5.3随机算法 69

5.4概率分析和指示器随机变量的进一步使用 73

5.4.1生日悖论 73

5.4.2球与箱子 75

5.4.3特征序列 76

5.4.4在线雇用问题 78

思考题 79

本章注记 80

第二部分 排序和顺序统计量 84

第6章 堆排序 84

6.1堆 84

6.2维护堆的性质 85

6.3建堆 87

6.4堆排序算法 89

6.5优先队列 90

思考题 93

本章注记 94

第7章 快速排序 95

7.1快速排序的描述 95

7.2快速排序的性能 97

7.3快速排序的随机化版本 100

7.4快速排序分析 101

7.4.1最坏情况分析 101

7.4.2期望运行时间 101

思考题 103

本章注记 106

第8章 线性时间排序 107

8.1排序算法的下界 107

8.2计数排序 108

8.3基数排序 110

8.4桶排序 112

思考题 114

本章注记 118

第9章 中位数和顺序统计量 119

9.1最小值和最大值 119

9.2期望为线性时间的选择算法 120

9.3最坏情况为线性时间的选择算法 123

思考题 125

本章注记 126

第三部分 数据结构 129

第10章 基本数据结构 129

10.1栈和队列 129

10.2链表 131

10.3指针和对象的实现 134

10.4有根树的表示 137

思考题 139

本章注记 141

第11章 散列表 142

11.1直接寻址表 142

11.2散列表 143

11.3散列函数 147

11.3.1除法散列法 147

11.3.2乘法散列法 148

11.3.3全域散列法 148

11.4开放寻址法 151

11.5完全散列 156

思考题 158

本章注记 160

第12章 二叉搜索树 161

12.1什么是二叉搜索树 161

12.2查询二叉搜索树 163

12.3插入和删除 165

12.4随机构建二叉搜索树 169

思考题 171

本章注记 173

第13章 红黑树 174

13.1红黑树的性质 174

13.2旋转 176

13.3插入 178

13.4删除 183

思考题 187

本章注记 191

第14章 数据结构的扩张 193

14.1动态顺序统计 193

14.2如何扩张数据结构 196

14.3区间树 198

思考题 202

本章注记 202

第四部分 高级设计和分析技术 204

第15章 动态规划 204

15.1钢条切割 204

15.2矩阵链乘法 210

15.3动态规划原理 215

15.4最长公共子序列 222

15.5最优二叉搜索树 226

思考题 231

本章注记 236

第16章 贪心算法 237

16.1活动选择问题 237

16.2贪心算法原理 242

16.3赫夫曼编码 245

16.4拟阵和贪心算法 250

16.5用拟阵求解任务调度问题 253

思考题 255

本章注记 257

第17章 摊还分析 258

17.1聚合分析 258

17.2核算法 261

17.3势能法 262

17.4动态表 264

17.4.1表扩张 265

17.4.2表扩张和收缩 267

思考题 270

本章注记 273

第五部分 高级数据结构 277

第18章 B树 277

18.1 B树的定义 279

18.2 B树上的基本操作 281

18.3从B树中删除关键字 286

思考题 288

本章注记 289

第19章 斐波那契堆 290

19.1斐波那契堆结构 291

19.2可合并堆操作 292

19.3关键字减值和删除一个结点 298

19.4最大度数的界 300

思考题 302

本章注记 305

第20章van EmdeBoas树 306

20.1基本方法 306

20.2递归结构 308

20.2.1原型van Emde Boas结构 310

20.2.2原型van Emde Boas结构上的操作 311

20.3 van Emde Boas树及其操作 314

20.3.1 van Emde Boas树 315

20.3.2 van Emde Boas树的操作 317

思考题 322

本章注记 323

第21章 用于不相交集合的数据结构 324

21.1不相交集合的操作 324

21.2不相交集合的链表表示 326

21.3不相交集合森林 328

21.4带路径压缩的按秩合并的分析 331

思考题 336

本章注记 337

第六部分 图算法 341

第22章 基本的图算法 341

22.1图的表示 341

22.2广度优先搜索 343

22.3深度优先搜索 349

22.4拓扑排序 355

22.5强连通分量 357

思考题 360

本章注记 361

第23章 最小生成树 362

23.1最小生成树的形成 362

23.2 Kruskal算法和Prim算法 366

思考题 370

本章注记 373

第24章 单源最短路径 374

24.1 Bellman-Ford算法 379

24.2有向无环图中的单源最短路径问题 381

24.3 Dijkstra算法 383

24.4差分约束和最短路径 387

24.5最短路径性质的证明 391

思考题 395

本章注记 398

第25章 所有结点对的最短路径问题 399

25.1最短路径和矩阵乘法 400

25.2 Floyd-Warshall算法 404

25.3用于稀疏图的Johnson算法 409

思考题 412

本章注记 412

第26章 最大流 414

26.1流网络 414

26.2 Ford-Fulkerson方法 418

26.3最大二分匹配 428

26.4推送-重贴标签算法 431

26.5前置重贴标签算法 438

思考题 446

本章注记 449

第七部分 算法问题选编 453

第27章 多线程算法 453

27.1动态多线程基础 454

27.2多线程矩阵乘法 465

27.3多线程归并排序 468

思考题 472

本章注记 476

第28章 矩阵运算 478

28.1求解线性方程组 478

28.2矩阵求逆 486

28.3对称正定矩阵和最小二乘逼近 489

思考题 493

本章注记 494

第29章 线性规划 495

29.1标准型和松弛型 499

29.2将问题表达为线性规划 504

29.3单纯形算法 507

29.4对偶性 516

29.5初始基本可行解 520

思考题 525

本章注记 526

第30章 多项式与快速傅里叶变换 527

30.1多项式的表示 528

30.2 DFT与FFT 531

30.3高效FFT实现 536

思考题 539

本章注记 541

第31章 数论算法 543

31.1基础数论概念 543

31.2最大公约数 547

31.3模运算 550

31.4求解模线性方程 554

31.5中国余数定理 556

31.6元素的幂 558

31.7 RSA公钥加密系统 561

31.8素数的测试 565

31.9整数的因子分解 571

思考题 574

本章注记 576

第32章 字符串匹配 577

32.1朴素字符串匹配算法 578

32.2 Rabin-Karp算法 580

32.3利用有限自动机进行字符串匹配 583

32.4 Knuth-Morris-Pratt算法 588

思考题 594

本章注记 594

第33章 计算几何学 595

33.1线段的性质 595

33.2确定任意一对线段是否相交 599

33.3寻找凸包 604

33.4寻找最近点对 610

思考题 613

本章注记 615

第34章NP完全性 616

34.1多项式时间 619

34.2多项式时间的验证 623

34.3 NP完全性与可归约性 626

34.4 NP完全性的证明 633

34.5 NP完全问题 638

34.5.1团问题 638

34.5.2顶点覆盖问题 640

34.5.3哈密顿回路问题 641

34.5.4旅行商问题 644

34.5.5子集和问题 645

思考题 647

本章注记 649

第35章 近似算法 651

35.1顶点覆盖问题 652

35.2旅行商问题 654

35.2.1满足三角不等式的旅行商问题 654

35.2.2一般旅行商问题 656

35.3集合覆盖问题 658

35.4随机化和线性规划 661

35.5子集和问题 663

思考题 667

本章注记 669

第八部分 附录:数学基础知识 672

附录A求和 672

A.1求和公式及其性质 672

A.2确定求和时间的界 674

思考题 678

附录注记 678

附录B 集合等离散数学内容 679

B.1集合 679

B.2关系 682

B.3函数 683

B.4图 685

B.5树 687

B.5.1自由树 688

B.5.2有根树和有序树 689

B.5.3二叉树和位置树 690

思考题 691

附录注记 692

附录C计数与概率 693

C.1计数 693

C.2概率 696

C.3离散随机变量 700

C.4几何分布与二项分布 702

C.5二项分布的尾部 705

思考题 708

附录注记 708

附录D矩阵 709

D.1矩阵与矩阵运算 709

D.2矩阵的基本性质 712

思考题 714

附录注记 715

参考文献 716

索引 732