【算法导论(第三版)浅浅的看一下】

在这周末看了《算法导论》(第三版)这本书一些部分,看的时候属于囫囵吞枣,属于懂得有这么个算法,也懂得大概怎么做,用了什么技巧,也懂得他的运行时间复杂度处于一种什么水平。但是对于其中的证明只能说大概看懂,习题也没做,甚至有些星号章节,直接跳过了,因为我觉得就这一次看书的目的来说,我只看前面的部分效果已经达到了。

我这次看书的目的就是为了知道解决各种问题,有一些什么算法,不至于我在看论文时,连最大流、B树、割、线性规划(标准型和松弛型)、NP完全(NP-Complete)、NP困难(NP-hard)、集合覆盖问题、电路可满足性问题等等这些相对来说比较基础的知识都不懂。

作为非科班出身,我自学数据结构与算法,并且平时做题,那么最快了解的方式就是不求甚解的过一遍经典书籍,知道领域中存在什么东西,以后在科研中或者继续学习中,更加深入的学习这些算法,实现它,应用它。这也是我觉得非科班学计算机的比较高效的方法,你没有时间去一门一门课实验、习题等等都跟完,并且那样子战线拉得太长了,加上没有同辈一起学习也没有的deadline,很可能永远停留在第一章😂。

总体来说,计算机领域的知识搭建,对于非科班来说,先整体,再局部。这样可能会更有学下去的动力。对于科班的来说,我觉得CSAPP应该是必学吧,对于之后的学习都有好处。

另外,在本人非常浅的看本书的过程中,我个人发现了很多错误,因为它不改,就推导不出后面的结论,所以个人觉得他一定要改的,目前还没有和英文原版真正的比对,因为自己发现了,即使没发现,也不大影响我目前的目的:浅浅的看一下,有个了解。但是,如果要深入学,那还是要英文原版对应着看的,他的翻译水平和CSAPP差太远了,CSAPP几乎没错误,并且各种名词翻译的也挺好,再次推荐这本书。

第一部分 基础知识

这一部分,我在很久前看的,当时看的是第1~4章,中间设计很多基础知识,数学方法,数学归纳法什么的,这些其实在平时的学习中都有用到,这部分算是一个总结。第五章还没看,暂时不打算看了,之后再说吧。

第 1 章 算法在计算中的应用

1.1 算法

1.2 作为一种技术的算法

第 2 章 算法基础

2.1 插入排序

2.2 分析算法

2.3 设计算法

2.3.1 分治法

2.3.2 分析分治算法

第 3 章 函数的增长

3.1 渐近记号

3.2 标准记号与常用函数

第4 章 分治策略

4.1 最大子数组问题

4.2 矩阵乘法的 Strassen 算法

4.3 用代入法求解递归式

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

4.5 用主方法求解递归式

*4.6 证明主定理

4.6.1 对 b 的幂证明主定理

4.6.2 向下取整和向上取整

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

5.1 雇佣问题

5.2 指示器随机变量

5.3 随机算法

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

5.4.1 生日悖论

5.4.2 球与箱子

5.4.3 特征序列

5.4.4 在线雇佣问题

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

这一部分算是很熟悉的了,很多书上都有,并且任何介绍算法的文章都绕不开排序,网上关于排序的帖子也是多如牛毛,各种动态图。并且相关的排序算法也在《算法》(第4版)中已经学习过,并且都自己实现过,知道他是怎么排的,怎么用,时间复杂度,有什么特性,等等。所以看本书过程中,这个部分全没有看,但是肯定是不大影响我的理解的,因为反正证明也不是我的重点。没有不做练习的看证明是没有效果的。

第 6 章 堆排序

6.1 堆

6.2 维护堆的性质

6.3 建堆

6.4 堆排序算法

6.5 优先队列

第 7 章 快速排序

7.1 快速排序的描述

7.2 快速排序的性能

7.3 快速排序的随机化版本

7.4 快速排序分析

7.4.1 最坏情况分析

7.4.2 期望运行时间

第 8 章 线性时间排序

8.1 排序算法的下界

8.2 计数排序

8.3 基数排序

8.4 桶排序

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

9.1 最小值和最大值

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

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

第三部分 数据结构

再次没有看的部分,因为平时用的很多,对这些基本的数据结构可以说是非常熟悉了。并且《算法》(第4版)对这些数据结构讲解的也非常清晰。对于红黑树这一章,我在看《算法》(第4版)时,曾经两本拿起来对照看过,我觉得,《算法》(第4版)讲解的非常好,比这本书讲的好,推荐《算法》(第4版)。

第 10 章 基本数据结构

10.1 栈和队列

10.2 链表

10.3 指针和对象的实现

10.4 有根树的表示

第 11 章 散列表

11.1 直接寻址表

11.2 散列表

11.3 散列函数

11.3.1 除法散列法

11.3.2 乘法散列法

*11.3.3 全域散列法

11.4 开放寻址法

11.5 完全散列

第 12 章 二叉搜索树

12.1 什么是二叉树

12.2 查询二叉搜索树

12.3 插入和删除

12.4 随机构建二叉搜索树

第 13 章 红黑树

13.1 红黑树的性质

13.2 旋转

13.3 插入

13.4 删除

第 14 章 数据结构的扩张

14.1 动态顺序统计

14.2 如何扩张数据结构

14.3 区间树

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

本部分看了第15.16章,这是非常重要的算法思想, 15章是在我写动态规划博客的那段时间看的,看完后,还做了很多动态规划的题。贪心算法也看了并做了很多题,总体来说,贪心算法我觉得比动态规划简单,动态规划定义子结构和转移方程太难了。

17章,算是算法分析的一章吧,基础的摊还我还是知道点的,这里再看估计就是纯数学分析了,不设计算法,不做算法分析,我此次的目的不在本章。

第 15 章 动态规划

15.1 钢条切割

15.2 矩阵链乘法

15.3 动态规划原理

15.4 最长公共子序列

15.5 最优二叉搜索树

第 16 章 贪心算法

16.1 活动选择问题

16.2 贪心算法原理

16.3 赫夫曼编码

*16.4 拟阵和贪心算法

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

第 17 章 摊还分析

17.1 聚合分析

17.2 核算法

17.3 势能法

17.4 动态表

17.4.1 表扩张

17.4.2 表扩张和收缩

第五部分 高级数据结构

本部分所有章节全部看了,首先讲21章,本章我以为是什么高级结构,结果和《算法》(第4版)第一部分就讲到的Union-Find算法(并查集算法)一样,只是本书多了很多理论证明,证明他的运行时间的上下界,真的头大。这个算法,平时用的挺多,路径压缩和按秩合并都是很熟的,UF算法手写过很多次。

第18章将的B树可以说是有多个子节点红黑树吧,所有叶节点的深度一样,也是一种 O ( log ⁡ n ) O(\log n) O(logn)的操作,学起来比较简单。

第19章,多个根节点的多叉堆,中间删除最小顶点后,合并相同度数的根节点做的很不错,并且删除节点时,将子树变为森林中的一棵树,有一个标记,少了两个孩子,变为一颗子树等等,最后很多操作的渐进复杂度有提升,但是他的实现比较复杂。

第20章,讲到了簇,并且van Emde Boas树中的数据在一个给定的范围内 ( 0 , 1 , 2 , ⋯   , u − 1 ) (0, 1, 2, \cdots, u-1 ) (0,1,2,,u1),通过一些位操作,可以快速得到元素所在的位置,不过这个数据结构,我只能说复杂,我这辈子应该都不会要去真正实现他吧。

第 18 章 B 树

18.1 B 树的定义

18.2 B 树上的基本操作

18.3 从 B 树上删除关键字

第 19 章 斐波那契堆

19.1 斐波那契结构

19.2 可合并堆操作

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

19.4 最大度数的界

第 20 章 van Emde Boas 树

20.1 基本方法

20.2 递归结构

20.2.1 原型 van Emde Boas 结构

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

20.3 van Emde Boas 树及其操作

20.3.1 van Emde Boas 树

20.3.2 van Emde Boas 树的操作

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

21.1 不相交集合的操作

21.2 不相交集合的链表表示

21.3 不相交集合森林

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

第六部分 图算法

这部分也全看,22~24章和《算法》(第4版)中的内容大差不差(不考虑数学证明的话),所以看的也挺快挺顺利。

25章,把节点对之间的最短路径变为动态规划问题,两种不同的动态规划方式,导致不同的时间复杂度。第一种他吧动态规划和矩阵乘法联系起来,并且用每次2倍的增长,使得复杂度降低了。第二种方法利用了最短路径上的其他点,也是其他点的最短路径这一性质,也导出了一个动态规划算法。

26章,最大流问题。最大流最小割定理。残存网络,增广路径啥的。前置重贴标签算法很巧妙,大概懂了他是怎么做的,证明真的是没看大懂,这章的证明是本书我看过的到目前为止最难的,当然后面第7部分的证明更难,很多直接跳过了。

第 22 章 基本的图算法

22.1 图的表示

22.2 广度优先搜索

22.3 深度优先搜索

22.4 拓扑排序

22.5 强连通分量

第 23 章 最小生成树

23.1 最小生成树的形成

23.2 Kruskal 算法和 Prim 算法

第 24 章 单源最短路径

24.1 Bellman-Ford 算法

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

24.3 Dijkstra 算法

24.4 差分约束和最短路径

24.5 最短路径性质的证明

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

25.1 最短路径和矩阵乘法

25.2 Floyd-Warshall 算法

25.3 用于稀疏图的 Johnson 算法

第 26 章 最大流

26.1 流网络

26.2 Ford-Fulkerson 方法

26.3 最大二分匹配

*26.4 推送-重贴标签算法

*26.5 前置重贴标签算法

第七部分 算法问题选编

这部分看了29、31、33、34、35。

一个字:

最大的收获,了解名词,大概用什么方法解决这些算法问题。至于证明,一笑而过。

第 27 章 多线程算法

27.1 动态多线程基础

27.2 多线程矩阵乘法

27.3 多线程归并排序

第 28 章 矩阵运算

28.1 求解线性方程组

28.2 矩阵求逆

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

第 29 章 线性规划

29.1 标准型和松弛型

29.2 将问题表达为线性规划

29.3 单纯形算法

29.4 对偶性

29.5 初始基本可行解

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

30.1 多项式的表示

30.2 DFT 和 FFT

30.3 高效 FFT 实现

第 31 章 数论算法

31.1 基础数论概念

31.2 最大公约数

31.3 模运算

31.4 求解模线性方程

31.5 中国余数定理

31.6 元素的幂

31.7 RSA 公钥加密系统

*31.8 素数的测试

*31.9 整数的因子分解

第 32 章 字符串匹配

32.1 朴素字符串匹配算法

32.2 Rabin-Karp 算法

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

32.4 Knuth-Morris-Pratt 算法

第 33 章 计算几何学

33.1 线段的性质

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

33.3 寻找凸包

33.4 寻找最近点对

第 34 章 NP 完全性

34.1 多项式时间

34.2 多项式时间的验证

34.3 NP 完全性与可归约性

34.4 NP 完全性的证明

34.5 NP 完全问题

34.5.1 团问题

34.5.2 顶点覆盖问题

34.5.3 哈密顿回路问题

34.5.4 旅行商问题

34.5.5 子集和问题

第 35 章 近似算法

35.1 顶点覆盖问题

35.2 旅行商问题

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

35.2.2 一般旅行商问题

35.3 集合覆盖问题

35.4 随机化和线性规划

35.5 子集和问题

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

附录 A 求和

A.1 求和公式及其性质

A.2 确定求和时间的界

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

B.1 集合

B.2 关系

B.3 函数

B.4 图

B.5 树

B.5.1 自由树

B.5.2 有根树和有序树

B.5.3 二叉树和位置树

附录 C 计数与概率

C.1 计数

C.2 概率

C.3 离散随机变量

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

C.5 二项分布的尾部

附录 D 矩阵

D.1 矩阵与矩阵运算

D.2 矩阵的基本性质

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Introduction to Algorithms Third Editio Contents I Foundations Introduction 3 1 The Role of Algorithms in Computing 5 1.1 Algorithms 5 1.2 Algorithms as a technology 11 2 Getting Started 16 2.1 Insertion sort 16 2.2 Analyzing algorithms 23 2.3 Designing algorithms 29 3 Growth of Functions 43 3.1 Asymptotic notation 43 3.2 Standard notations and common functions 53 4 Divide-and-Conquer 65 4.1 The maximum-subarray problem 68 4.2 Strassen’s algorithm for matrix multiplication 75 4.3 The substitution method for solving recurrences 83 4.4 The recursion-tree method for solving recurrences 88 4.5 The master method for solving recurrences 93 4.6 Proof of the master theorem 97 5 Probabilistic Analysis and Randomized Algorithms 114 5.1 The hiring problem 114 5.2 Indicator random variables 118 5.3 Randomized algorithms 122 5.4 Probabilistic analysis and further uses of indicator random variables 130 vi Contents II Sorting and Order Statistics Introduction 147 6Heapsort151 6.1 Heaps 151 6.2 Maintaining the heap property 154 6.3 Building a heap 156 6.4 The heapsort algorithm 159 6.5 Priority queues 162 7 Quicksort 170 7.1 Description of quicksort 170 7.2 Performance of quicksort 174 7.3 A randomized version of quicksort 179 7.4 Analysis of quicksort 180 8 Sorting in Linear Time 191 8.1 Lower bounds for sorting 191 8.2 Counting sort 194 8.3 Radix sort 197 8.4 Bucket sort 200 9 Medians and Order Statistics 213 9.1 Minimum and maximum 214 9.2 Selection in expected linear time 215 9.3 Selection in worst-case linear time 220 III Data Structures Introduction 229 10 Elementary Data Structures 232 10.1 Stacks and queues 232 10.2 Linked lists 236 10.3 Implementing pointers and objects 241 10.4 Representing rooted trees 246 11 Hash Tables 253 11.1 Direct-address tables 254 11.2 Hash tables 256 11.3 Hash functions 262 11.4 Open addressing 269 11.5 Perfect hashing 277 Contents vii 12 Binary Search Trees 286 12.1 What is a binary search tree? 286 12.2 Querying a binary search tree 289 12.3
算法导论 第三》是由Thomas H. Cormen (作者)、Charles E. Leiserson (作者)、Ronald L. Rivest (作者)和Clifford Stein (作者)共同编写的一本经典教材。该书对算法导论的内容进行了全面、系统的阐述,是计算机科学领域的经典之作。 这本书的全书共分6个部分,包括基础知识、排序和顺序统计量、数据结构、高级设计和分析技术、高级数据结构、图算法等。通过讲解不同的算法和数据结构,读者能够深入理解算法设计和分析的基本原理和技巧。 《算法导论 第三》的特点之一是结合了理论和实践,既讲解了算法的理论基础,也提供了实践中的应用和案例。读者通过实践演练和编程实践,能够更好地理解和掌握算法的操作过程和性能分析。 此外,《算法导论 第三》还提供了大量的习题和题解,读者可以通过习题的解答来巩固和检验自己的知识掌握程度。同时,书中还介绍了一些经典的算法问题和解决方法,为读者提供了解决实际问题的思路和方法。 总之,作为一本经典的计算机科学教材,《算法导论 第三》是学习和研究算法设计与分析的重要参考书。通过系统地学习该书的内容,读者能够建立起扎实的算法基础,提高问题解决和程序设计能力,对于计算机科学的学习和研究具有重要的指导作用。同时,该书也适合作为计算机专业相关课程的教材使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值