应该怎样读TAOCP【转】

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
 
  首先要清楚这套书的定位:它是古典的算法分析的工具书。 
     
  1.古典(classic)体现在模型和问题上。 
     
  模型就是顺序算法(sequential algorithms)的经典模型。大名鼎鼎的MIX并非是个程序设计语言这么简单,而是一个计算模型:即标准指令集RAM。这是个非常经典,也是非常符合现实的上界(upper bounds)模型。 
     
  该书涉及到的问题是计算机科学诞生之初就自然面对的几个基本的算法和数据结构的问题。时至今日,这些问题还在应用中扮演着重要角色;在很多研究课题中,它们是基础或原型。 
     
  2.算法分析(analysis of algorithms)是此书的核心。 
     
  TAOCP并没有综述算法设计(design of algorithms)的各种思想;也没有介绍证明问题下界(lower bounds)的各种技巧;也并没有对问题、模型、复杂度这些专题作出体系性的阐述。可以说,TAOCP的几乎所有的篇幅都放在了对具体算法的性能分析上,并把这条路走到了极致。 
     
  3.工具书。这最有争议,因为毕竟还有习题。一些介绍也饶有趣味,不太符合大家对工具书的枯燥这一成见。
     
  但把TAOCP看作工具书还是教材,这就关系到怎么去读这本书。 
     
  (一)该顺着读还是跳着读:个人认为,没有哪本专业书是不能跳着读的。但前提是你对整个书的结构比较清楚,对它的内容也一定程度的熟悉。知道自己想要查阅的部分。如果是初学者,则不建议这么作,至少还是老老实实的把第一章顺序读下来。可是TAOCP并不是给初学者看得。 
     
  (二)初学者适合读TAOCP吗:不太建议。但也要看如何定义初学者——吾生而有涯,而知也无涯。一定程度上,每个人都是初学者。读 TAOCP的前提,就是自己至少比较清楚轻重缓急,可以大概判断那些是根本,那些过时,那些是炫技。这根据每个人的需要,都有各自的具体情况,但至少心里要有点数。如果读书时觉得前路茫茫,完全不知哪里重要。那么去正经的选一门算法基础课才是更应该作的。 
     
  (三)MIX值得用心学吗:这要首先清楚Knuth为什么要在这个讲算法的书里搞出个MIX。个人理解,原因有三。其一,如上所述,计算模型;其二,作者个人的审美品味;其三,用于描述算法的语言。第一条里MIX是桥梁作用,确保数学上的严谨,同时也足以代表现实中典型的计算机体系结构。第二条是美学意义。第三条的作用等于伪码。算法用MIX写一遍,这是为了确保上界算法在模型内的严谨性。整个书都没有用MIX模型来证明任何下界,因此除了确保严谨性,MIX没有在数学上起到实际的用途。因此,过分钻研MIX对于理解书中算法没有太多帮助。但如果纯粹只是个人兴趣则另说。 
     
  (四)习题该怎么对待:TAOCP是为数不多的计算机专著里面能出这么多高水平习题的了。如果有大块的时间,能做一做当然最好不过。但如果只是一般的查阅,习题并非必要。不过有的习题本身就是经典问题。如果正文里没有找到想要的东西,不仿看看习题。 
     
  (五)如何读正文里的算法分析:TAOCP里面的算法分析,算是古典算法分析里面的原教旨主义。始作俑者就是Knuth本人,后面还有 Sedgewick和Flajolet等一干人等给他发扬光大。这一派的作风可以说分毫必究,连常数都不放过。但数学工具却无外乎初等的《具体数学》的工具。这是很好很强大的东西,掌握好了,无论研究还是工作都很方便。但其实TAOCP的数学都不算太难,仔细倒是真的。因此,如果时间不是特别充裕,对书中结构的了解,要比具体分析步骤重要。这些经典内容多少年就没变过,每次有用时都可以回来查查看,每查一次说不定会有新的收获。 
     
  (六)TAOCP的不足:前面已经提过了,下界(lower bounds)介绍的不够。下界结果,大多数只在章节结束的讨论部分引用一下。第三卷的查找(searching)一章,一些近些年的下界方面的新进展都没有被引用,Knuth可能没有想到,数据结构这个经典方向这么多年来都在不温不火的不断前进着,尤其是下界。类似的也有第二卷的随机数(random numbers)一章,可以说连上界都严重过时,错过了去随机(derandomization)的黄金时代。好在其他几章这么多年来无甚进展,没怎么过时。 
     
     
  许多人对TAOCP的推崇是无条件的,这里难免有人云亦云的成分。其实大可不必,读的人尽管放轻松。这么说不是因为TAOCP不值得推崇,而是就算把一切溢美之词都抛于脑后,随着岁月流逝,反复的阅读,你也一定会越来越喜欢这部书的。它的魅力经的起时间的考验。
TAOCP第三卷高清版 TAOCP作为一个资料库是绝对优秀的,基础的算法只要你能想到的,几乎都可以在上面找到原始出处。 立即下载

相关推荐

TAOCP 卷一

最著名的算法分析书,作者是顶尖大牛,英文原版,第三版。

应该怎样TAOCP

应该怎样TAOCP 2008年12月20日 星期六 下午 09:36 计算机程序设计艺术 第1卷 基本算法(第3版)(英文影印版)的评论      谈谈我自己这套书的心得。抛砖引玉。        首先要清楚这套书的定位:它是古

junecau的专栏 1767

《The Art of Computer Programming》 TAOCP 高清 PDF

经典数据结构算法书,历经几十年仍然经典!虽使用古老的汇编语言,但是历久常新。好书! 啥?!看完了?大犇!!!去自己创业吧。

了一点TAOCP.《计算机程序设计艺术》

学校的新图书馆开门了,看到了不少好书,尤其是两本我一直瞻仰的好书 :《计算机程序设计艺术》TAOCP和编程珠玑。遂开始了我的书计划,每天一张TAOCP,也就是采用CR阅法,每天一点点,不计算我能完的那一天,力求能够多一点。 前几天完了1.1节,说是完了,其实最后的Knuth大神用集合论证明算法那段看不动,跳过。我也就是只能把书中的欧几里得算法1.1E用C++写了出来,包括习题中那个欧几里得算法算法F,调试了一下,效率果然是好了不少。习题中的算法F虽很小,但我实在是想不出来~~ 附上算法1.

编程学习之路 1万+

计算机程序设计艺术 卷1:1.3.1MIX的描述 习题

MIX的描述

jinyongbomatt2008的专栏 583

王垠:对TAOCP的真正看法

本来早就想想写一个对于Knuth的The Art of Computer Programming的看法。 没想到一去Amazon就找到一个同类 :)   关于Knuth的 TAOCP,我想,大部分人声称看了他的书,或者买了他的书,不过是作为一种炫耀的资本或者摆设。我对门的同学几年前就买了一套三本,全新的精装本,花了 200多块钱。可是呢,他从来就没看。我把它借过来,看了几页就放在那里没有看了

beswkwangbo的专栏 3592

计算机程序设计艺术 介绍

计算机程序设计艺术》(The Art of Computer Programming),簡稱TAOCP,是高德纳(Donald Ervin Knuth)编著的关于计算机程序设计的七卷本著作。作者並因此获得美国计算机协会1974年图灵奖。[1]目录[隐藏]1 概述2 章節3 第4A卷,列舉與

Xiao_Qiang_的专栏 2554

如何TAOCP

谈谈我自己这套书的心得。抛砖引玉。        首先要清楚这套书的定位:它是古典的算法分析的工具书。        1.古典(classic)体现在模型和问题上。        模型就是顺序算法(sequential algorithms)的经典模型。

crack_here的专栏 780

TAOCP--MIX环境准备

欲学TAOCP,先学MIX,为学MIX,先搭建环境。 TAOCP主页上排名第一的模拟器 发现可疑利用MacPort安装 关于MacPort的安装和使用,请自行百度 sudo port install mdk 然后会提示安装依赖的包,然后就等待安装完成。 安装完之后怎么用呢? GNU MDK教程 下面一步一步hello world mdk使用分两种方式:交互式和非交互式的 ...

我的技术人生 601

taocp

明天开始伟大的TAOCP征程!hiahia!

Nikola Telsa的专栏 692

taocp学习思潮[水上原创]

这里是不断更新的关于学习taocp方法的内容。也许我自己也不知道如何开始,但我知道必须开始。我会跳跃式的学习taocp,而不是从头到尾的系统性的通学习。目前,我跳过了数学准备部分,直接来看看MIX部分。我也看到MMIX的书都已经出来了,但我还是选择MIX。我们的中心是算法的思想,我根据自己的很浅的理解这么说的。我觉得你可以通过c或c++学习算法,也可以通过java学习算法

水上留痕 2475

taocp中对算法的形式化定义[水上原创]

    在整理完MIX部分的内容,有了大概能看懂MIX程序的基础之后,开始看第一章前边和第二章的内容,这两天翻来翻去的看,的确让人头大,于是又在google上搜索,看看有没有前人学习的痕迹做参考,倒是找到了几页还算有用的内容。    但是绝大多数人来说,计算机科学与技术所涉及的数学理论的确是让人头疼的问题,我也一样。因为本科时没有这么有觉悟的去学习数学知识,在浏览taocp的数学准备部分,真的是极

水上留痕 2179

TAOCP Vol 3

计算机程序设计技巧3.排序查找计算机程序设计技巧3.排序查找

Algorithms Jeff 2019最新版

1、书籍 | 一份点赞上千的《算法》讲义,来自20年教学经验的UIUC计算机教授。 2、一位从1998年就开始讲课的老教授Jeff Erickson,把他20年来在UIUC讲 课的内容整理成了一本算法书,名字简单粗暴,就叫《算法》(Algorithms) 3、2019最新版

TAOCP中最大公约数算法理解

TAOCP中,介绍了一个求取最大公约数的算法。假设有两个整数m,n,那么求取两个整数最大公约数的方法如下:        E1:m除以n,余数为r;        E2:如果r=0,那么最大公约数就是n;否则,进入E3;        E3:n的值给m,r的值给n,然后返回E1继续。        算法的主要难点在于:如何论证E3生成的整数对儿的最大公约数为什么与初始的m,n最大公约数一致

小灰笔记 824

TAOCP之排序算法(一)

这一段时间都在看TAOCP的排序算法,这些都是我大学生活里面很想看却没看到的部分,同时也为了巩固实践,把它们都写出程序来了。供自己复习之用,也希望能与网友分享。如果有什么问题,还请各位网友能够指正出来。一、计数排序(位于TAOCP第三卷中的内部排序前面的内容中,是高德纳先生讲的第一种类型的排序方法,其适应面比较窄,但却是很有效。同时可以证明此算法是稳定的)// a数组存储输入数据,count数组用...

Being 312

TPS_AOV_2 Algorithm made by Knuth {照TAOCP 2.2.3 完成}

我最近写了几篇TAOCP笔记,大家可以去看看 其实我已近把全书很大一部分(除1.2,1.5,2.3,4,5节,及很多Execrise没写完) 好吧开始今天的写作。 (专有名词之前讲过了 大家可以去我之前的文章)了解 Question(TPS.cpp) Input(TPS.qus) 第一行是一个数 NodeC,表示节点数 后面?行是两个数j,k,表示j在k前输出(1<j,k<=Nod...

qq_43057060的博客 279

Hello, taocp.---踏实&&分析

knuth的所谓taocp是很久以前就被膜拜的算法好书,7、8年我看到其电子版后心想不过如此,认为里面的数学和复杂度分析并不难,无非是些初等代数、微积分、数论、图论,简单的组合数学、一丁点线性代数或概率,只怕是徒有虚名而已,于是把它束之高阁,拖到一个偏僻的文件夹里,继续搞一些实用和时髦的东西。眼这些年过去了,我继续着我的浮躁,却感觉有点累。回过头来感觉自己还是头脑空空,觉得自己在做很多事情的时候是凭着经验,根本不愿,也不会动脑分析。taocp的正文很简单,事实上每节正文几乎都曾经在其他学科学过,现在看只是

思考使人沉静 1914

[TAOCP第三卷6.1节]顺序搜索

TAOCP第三卷搜索算法中最先讲的就是顺序搜索。 顺序搜索的优点是足够的简单,在数据量足够小的时候速度最快。 而且在无序数据集的时候顺序搜索是唯一可行的方法。 首先是6.1节的程序S [code="c"] int search(int array[],int count, int n) { int i = 0; for(; i < count; i++) { ...

黄金分割 231
上一篇: 国内外图形学研究机构
下一篇: 关于opengl在VC 2008下的配置问题解决
jyNext
博客等级 码龄14年 27粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值