花哨的算法書

Yue Wang 评论 Algorithms 3 2012-08-26 08:02:02
DrSuckIt
DrSuckIt (slow is fast.) 2012-10-25 12:34:42

本来就是CS2 的书。 定位跟国内的数据结构课程定位差不多,重点在实现。
你说那几本都是算法分析课程的定位。

Ming.明
Ming.明 2012-10-30 14:49:28

粗略看了下。觉得这书,如果已经上过数据结构与算法的课的同学,可以不考虑这书了。。如果是第一次接触算法,倒可以做为入门书籍。。觉得进阶看的书,还是算法导论好些。

corpsefire
corpsefire 2012-11-11 11:30:36

“比如書中給出了一個in-place的mergesort,按理說,in-place的mergesort寫起來很麻煩,很難做好,但書中的代碼短得令人難以相信。定睛一看,那代碼用額外的數組的,根本不能算in-place。”

没看过,不过难以相信啊,这本书前面几版评价还是相当高的,怎么可以犯这种原则性错误

Yue Wang
Yue Wang 2012-11-11 12:33:29

@尸体发火: 那你自己看嘍

RONGE KUTA
RONGE KUTA (热爱自由,乐于分享) 2012-11-15 18:30:39

lz 是学院派~~~
在学校时买过算法导论,但那本书比较学院派,不是很喜欢
出来工作后,买了这本书,这里面算法比较实用化, 例如压缩算法这种实用但不会在学院派教科书(因为确实没有多少算法思想,特别是RLE LZ77这种)中讲的书就讲得很细致
另外,字符串的讲解也是很独特,BM这种算法也是一种实用但不会在学院派教的,书中讲的却很细致;PS:像KMP这种算法基本上是学院派的算法,工程上甚至不比暴力有优势;
正则式那一节也很细致,模拟NFA的技术在google re2 引擎中获得应用,是当今最快的正则式引擎之一,一般这种是在编译原理书才会讲的,但却是应用很广的算法

另外,讲模拟技术也是非常独特的设定,这种东西都是学院派不讲,但工程上又非常有用的技术;

其它案例不胜枚举,作者的编写主旨是想结合业界的应用来讲算法,选取的算法都非常的考究,面向的不仅是学生,很多成分上是为程序员考虑


Yue Wang
Yue Wang 2012-11-16 01:40:50

@希望变美女 Kuta: 我只是說這書中代碼很多不給力,比如Shunting-yard algorithm,文中給的事實上是脫了n層皮的簡化版,很多corner cases也完全沒考慮到。

Yue Wang
Yue Wang 2012-11-16 01:42:54

@ronge Kuta: 另外,我舉的這些東西,在學界外也都很重要。我找工作期間其實面試就是翻來覆去地問這些東西。比如fb就讓我手寫過shunting yard,如果只看這本書的話,這題一定做錯。

大型屌丝少年B
大型屌丝少年B 2012-12-17 02:44:58

kmp我倒觉得用二维数组似乎更能体现出书中提到的DFA的特点。这书确实不是理论派的,应该是定位在初学者快速入门上的层次的,习题是很不错的。在看CLRS之前把这书看一遍习题写一遍看CLRS应该会更轻松。

CJ
CJ (MIT course 6爱好者) 2012-12-17 12:57:19

seidgewick还有2本高阶向的算法1~5,评论也都是比《算法导论》实用,这本书里前言推荐你读完后去读1~5
反正很多书评评论《算法导论》又难读又不注重实践导向,搞得我很没好感

丁又专
丁又专 (悦读、梦想、创业) 2013-02-27 15:27:30

一个学期使用后再来评价。

我家后院的樱桃树
我家后院的樱桃树 2013-08-26 10:32:00

算法其实有两门课,一门是“算法及数据结构”,就是介绍基本的数据结构及算法实现,附带说说它们的应用。一门是“算法分析及设计”,讲的是算法背后的思想原理及理论基础,比如如何证明一个算法的正确性,分析算法效率的数学理论,主流的算法设计方法及其思想(及我们常见的那些算法是按照什么思路设计出来的)。

楼主所论述的此书缺点,基本上误以为此书是“算法分析及设计”了。那部分内容,可以参见《算法导论》。算法导论融入了部分“算法分析”课程的内容。如果楼主想完整掌握“算法分析及设计”的全部内容,请研读Knuth的大作。

我只是来玩的
我只是来玩的 2013-10-31 12:17:21

@我家后院的樱桃树 能说下算法分析及设计 具体是指什么书么?

鹿笑天
鹿笑天 (Mia San Mia) 2013-12-12 23:06:10

书里好像没有给in place的mergesort吧

CJ
CJ (MIT course 6爱好者) 2013-12-13 00:25:50

嗯嗯, 樱桃树同学说得很对, 我现在也算上过一遍算法分析课了, 大致知道怎么回事了
Coursera上有一门这本书作者用本书做教材的算法课
另有一门斯坦福开的算法分析, 页面简介中解释了自己与普林斯顿算法的区别, 正如樱桃树所言, 大学四年是要把这2门都上一遍的
另外Sedgewick还单独开一门算法分析

所以楼主犯的错误是指着苹果说我要香蕉, 所以我认为这个苹果不是个好东西

Yue Wang
Yue Wang 2013-12-24 12:02:19

@鹿笑天 pg 271 Abstract in-place merge
@RainBow, @我家后院的樱桃树 等

- 書中的代碼有多爛是不證自明的,上面舉的 shunting yard、in place merge、以及後面要提到的 PDA 判定 regular expression 等例子你們可以自己去讀。
- 我知道注重「algorithm design」和「data structure」的區別。如果是後者,大可不必講 Searching,Sorting,MST之類的內容。這書講了但完全沒講到點子上。好的教材需要啓發學生去發現,讓學生具有科學的思維方法,這本書這點做得不夠。
- 要提醒大家的是,哪怕作為「data structure」教材,講解數學證明是很重要的。Hash table 為什麼有用,都是建立在嚴格的數學證明上的(見 Concrete Mathematics 的離散概率一節)。regluar expression 算簡單的了,背後少不了嚴格的數學證明(書中講如何判定NFA居然用到了stack。不是說用到了不對,而是如果你只給這一個方法,會給人PDA等同於NFA的錯覺,而事實上PDA是context free的)。不是說你作為講數據結構的書,數學層面的分析就不需要了。

最後的最後,我不能說我多牛逼,但我至少經典的計算機科學書看了不少了, PhD 也畢業了,現在也在一家高手如雲的 IT 公司上班。學到我這個層次,評論計算機科學專業書的品味不會差到哪裡去。

我家后院的樱桃树
我家后院的樱桃树 2013-12-25 21:35:05

@伊月 Wang
原来如此,所以,尼的问题就是,大学毕业了,回头看小学数学书,觉得写得太简单了,看初中物理书,觉得里面很多描述往小了说是不负责任,往大了说根本是错的。

我家后院的樱桃树
我家后院的樱桃树 2013-12-25 21:38:02

@伊月 Wang 偶不是指责,尼有这样的感觉很正常。学深了以后往往容易忘了如何入门的,总觉得入门书里,有些该讲得没讲,有些不言自明的地方却花费了太多笔墨。这也是为什么在芬兰,很多博士毕业生要先上师范,再去教书。不然大概没学生听得懂。:)

Subete
Subete (Zenbu) 2014-01-23 01:08:27

讲的全的书太多了,难的是讲的细!你看算法导论1000页,这本书900页,但是覆盖的知识点比算法导论少了很多。这说明了这本书每个知识点比算法导论讲的细致很多。

codeRush
codeRush 2014-01-28 10:26:11



我完全不同意你的观点。

我觉得第一章写的非常好。
第一章用一个case,深入浅出地告诉了我们算法研究的科学方法,这种感觉对于初学者来说是非常重要的。

而且,DP和LP这种算法,本来就可以不出现在初学者的数据结构课程上

这本书的作者就是那本著名的Algorithms In C的作者,他用Java重写这本书就是为了照顾初学者

tianchaos™
tianchaos™ (DREAM LEAD LIFE) 2014-02-20 15:06:06

看完所有的评论,我决定看完这本书。

PC
PC 2014-02-23 22:46:01

书中的3-way partition quick sort指的是Dijkstra 3-way partitioning算法,这个在他官网有附加资料,书可能没写清楚。另外习题2.3.22给了一个更高级的Bentley-McIlroy 3-way partitioning算法。其实我看了一点觉得他的网站比书更好,里面有许多ppt和video demo还有习题答案,相当浅显易懂。还有书可能有错误,他网站有勘误,而且网页每天都在更新啊,这点可以说相当的敬业。
网址:http://algs4.cs.princeton.edu
这本书可能对楼主是比较简单,但我们可以看到别人对作者的评论:“没有人能够将算法和数据结构解释得比Robert Sedgewick更清楚易懂了!”,我觉得这本书好在它可以让很多菜鸟可以学到东西,不至于一上来什么都看不懂。

[已注销]
[已注销] 2014-03-05 21:19:35

看了前面的感觉有些啰嗦啊,不过coursera上有公开课挺好的。

陈尼玛
陈尼玛 2015-01-01 14:44:37

真感觉这本书的评价虚高,太依赖java特性了,java的接口都没说清楚,对于没学过java的人根本不知道怎么回事。

我家后院的樱桃树
我家后院的樱桃树 2015-01-03 20:49:36

to 陈尼玛 他有另一本书,有在说Java

熊大将军
熊大将军 2015-04-22 11:25:58

别看图多,其实根本就不好读,快速排序不明不白,KMP最关键的地方一步带过,dijkstra绕了半天反而糊涂了

Treenewwbee
Treenewwbee (呵呵。) 2015-05-23 10:09:28

to 熊大将军 Dijkstra这书里面讲的这么清楚,都给了两种观点不同观点去证明这个贪心算法为什么是最优的,哪儿有绕?

蘑菇小鸡炖土豆
蘑菇小鸡炖土豆 2015-09-29 12:46:00

关键是说了这么多,你倒是给出一本推荐的算法书 啊 ,用具体编程语言写得,然后重要思想都写出来了的,什么你说的动态规划,而且写的代码风格简洁的 ,给出一本啊?
没有的话,说缺点可以啊,你要是说不适合 ,我就觉得是你自己说话方式的问题了。。。。

蘑菇小鸡炖土豆
蘑菇小鸡炖土豆 2015-09-29 12:47:57

如果po主,没有的话,请不要藐视作者对此书设计的水平,要么你自己动笔写出一本书来,我觉得我看了一半,还是Okay的,比起其他薄薄的算法设计,教材编纂水平高出一大截。

蘑菇小鸡炖土豆
蘑菇小鸡炖土豆 2015-09-29 12:48:55

说本书算法缺少什么 ,我可以基本赞同,但你丫非要说这书写的不好,那么请你推荐一本或者自己写出一本更好的

momofarm
momofarm 2015-10-07 17:48:08

這本書的小缺點是在做效率分析介紹的時候, 步驟過於模糊, 跳得太快看不懂.

還是在西方大學, 分析是另外開一門課的?

Monkey
Monkey (默默无闻是一件令人伤感的事) 2016-05-26 14:49:23

只能说定位不同,不代表不好,我认识的起码十个人是靠这本书入门算法的,相比之下国内的教材蠢得一逼,十X五规划教材中有哪本比这个强?同样是写书,用心程度相差极大。

Yue Wang
Yue Wang 2016-05-27 16:01:50

@程序猿在偷懒

你要和國內的書比,那就真的沒意思了⋯⋯

@蘑菇小鸡炖土豆

對不起,這書真心寫得不好,而且有很多誤導性的描述。上面回覆中我也舉出了很多例子。

你讓我推薦我原文推了,自己不仔細看。你讓我寫一本我真心不行。我能聽出郎朗和鋼琴高手的水平高低,但你讓彈拉三還不如殺了我。

Arondes
Arondes 2016-08-18 05:11:07

我认为这部书对于入门者来说还是很好的,有很多图,而且很多简单的东西翻来覆去的讲。
第一章的基础也有它的意义,比如我此前从未用过Java,看了之后大概就知道是怎么回事了,可以自己写起简单的Java来。
作者的态度也很积极。我看了一半,发现书里有段代码似乎不是很robust,就发了一封邮件,作者半小时之内就回复了我,并且告知在他们网站上的代码已经考虑了这个问题。后来我仔细对比才发现,书里的代码有很多和网站上放的是不同的,也许是因为书没有更新的缘故。
我不是学计算机出身,也并不从事这类工作,不过读这本书很轻松,躺着歪着一边喝着饮料一边都可以看得下去。回忆起读泛函分析和代数拓扑时的痛苦,简直是不可同日而语。

云中君
云中君 2017-04-12 21:30:49
真感觉这本书的评价虚高,太依赖java特性了,java的接口都没说清楚,对于没学过java的人根本... 真感觉这本书的评价虚高,太依赖java特性了,java的接口都没说清楚,对于没学过java的人根本不知道怎么回事。 ... 陈尼玛

言之有理,像我这样Java语法刚学完的小白,对作者自己写的几个接口也看得云里雾里的。如果作者花点篇幅讲清楚就好了。

sundance1
sundance1 2017-11-26 14:17:24
言之有理,像我这样Java语法刚学完的小白,对作者自己写的几个接口也看得云里雾里的。如果作... 言之有理,像我这样Java语法刚学完的小白,对作者自己写的几个接口也看得云里雾里的。如果作者花点篇幅讲清楚就好了。 ... 云中君

可以不管它自己造的工具,直接用java7写就行吧。

sundance1
sundance1 2017-11-26 14:19:27
真感觉这本书的评价虚高,太依赖java特性了,java的接口都没说清楚,对于没学过java的人根本... 真感觉这本书的评价虚高,太依赖java特性了,java的接口都没说清楚,对于没学过java的人根本不知道怎么回事。 ... 陈尼玛

没用多少java知识,对理解没影响。

醉水的消失
醉水的消失 (月月火水木金金) 2018-02-23 15:00:35
看了前面的感觉有些啰嗦啊,不过coursera上有公开课挺好的。 看了前面的感觉有些啰嗦啊,不过coursera上有公开课挺好的。 [已注销]

我都把这本书看完了才看到这个评论。。。