算法之道

当前位置:首页 > 计算机网络 > 计算机理论 > 算法之道

出版社:机械工业出版社
出版日期:2010-2
ISBN:9787111294948
作者:邹恒明
页数:292页

作者简介

《算法之道》追求的目标是算法背后的逻辑,是一本启示书,而不是一本包罗万象的算法大全。因此,《算法之道》甄选了那些最能够展现算法思想、战略和精华,并能够有效训练算法思维的内容。《算法之道》将算法的讨论分为五大部分:算法基础篇、算法设计篇、算法分析篇、经典算法篇、难解与无解篇。每一个部分分别讨论算法的一大方面:基础、设计、分析、经典和难解问题。
《算法之道》既可以作为大学本科或研究生的算法教材或参考书,也可以作为对算法有兴趣的读者提升认知深度的读物。

书籍目录

前言第一篇  算法基础篇  第1章  从无有到无穷    1.1  意念与现实    1.2  什么是算法    1.3  算法的表示    1.4  算法之魂    1.5  如何比较速度    1.6  算法与计算机的关系    1.7  算法的范畴    1.8  为什么学习算法    思考题  第2章  计数与渐近  ……  第3章  分治与递归第二篇  算法设计篇  第4章  动态规划思想  第5章  贪婪选择思想  第6章  随机化思想第三篇  算法分析篇  第7章  概率分析  第8章  摊销分析  第9章  竞争分析第四篇  经典算法篇  第10章  排序和次序  第11章  搜索与哈希  第12章  最短路径第五篇  难解与无解篇  第13章  可解与不可解  第14章  NP完全问题  第15章  无解与近似结语  算法之道附录  算法随想参考文献

编辑推荐

《算法之道》:揭橥算法之道,求开智慧之门逻辑演绎、生活归纳、趣味交织、入木三分地揭示算法的奥妙。新的角度、新的分析、新的境界、耳目一新地阐述算法的精华。《算法之道》以全新的角度揭示算法的奥秘,内容囊括了所有重要的算法战略和有独特代表性的算法问题。《算法之道》对算法的基本设计与分析战略、高级设计战略、高级分析战略、经典算法问题、难解与近似算法问题进行了深入的讨论。书中选取的每个算法都在某个方面具有独特性,能够彰显算法的精髓。《算法之道》隐含7个悖论和7个奥秘。如果能够发现一二,你将获得奇妙的感受。《算法之道》有如下几个特点:启示:深入探讨算法背后的逻辑,对算法的剖析达到前所未有的境界。独特:同样的算法、相似的问题,选取不同的角度,帮助读者理解到新的高度。简洁:摈弃臃肿繁琐的内容堆砌,精选代表性的算法问题来彰显算法的普遍逻辑。新颖:不同一般的章节组织使条理更为清晰,在内容上引入部分清新的概念和定义。幽默:以讲故事的形式将算法的精华娓娓道来,易于理解和消化。

前言

起初神创造天地。地是空虚混沌,渊面黑暗;神的灵运行在水面上。神说:“要有光”。就有了光。神看光是好的,就把光与暗分开了。神称光为昼,暗为夜。有晚上,有早晨,这是头一日。 ……神就照着自己的形象造人, ……神说:“看哪!我将遍地上一切结种子的菜蔬,和一切树上所结有核的果子,全赐给你们作食物。至于地上的走兽和空中的飞鸟,以及各样爬在地上有生命的物,我将青草赐给它们作食物”。事就这样成了。 神看着一切所造的都甚好。有晚上,有早晨,是第6日。天地万物都造齐了。 图1 米开朗基罗创作的西斯廷教堂穹顶画《创世纪》。这幅画里隐含着算法 6天 圣经上写着:神6天创造天地万有,第7日安歇。 对于神创论者来说,这是不可怀疑的事实。但对于进化论者来说,6天创造一切根本就不可能。 作为一本算法书,我们当然不打算加入到神创论者和进化论者的永无休止的争论当中去。我们关心的是这么一个问题:圣经上为什么给出的是6天,而不是其他的时间长度。不管是神创论者还是进化论者,弄清楚6这个数字的来历很可能会对己方的观点有所帮助。在这6天里,神将他的创作方程式重复了6次,每天1次。对于全能的神来说,他完全可以在1天、1秒或者任何他所愿意的时间长度里创造天地万物,但却为什么是不多不少的6天呢?而不管圣经上的 “1天”是多长,这个问题都是值得讨论的。 我们知道,任何一个自然数的约数中都有1和它本身,而所有小于它本身的因数叫做这个自然数的真约数。例如,6的所有真约数是1、2、3;8的真约数是1、2、4。如果一个数的真约数之和等于这个自然数本身,则这个自然数就称为完全数,或者完美数。例如,6 = 1+2+3,因此6是完美数;而8 ( 1+2+4,因此8不是完美数。因此,神6天创造世界,暗示着该创造是完美的! 以完美数来昭示创造的完美,似乎合情合理。但问题是,完美数只有6这一个数吗?如果不是,为什么不使用其他的完美数呢?答案是,完美数虽然不止有6这一个,但确实数量稀少。一直到现在(2009年6月),数学家们探索了2600年,并且现代数学家们还借助了超级计算机,但也仅仅找到了47个完美数。其中第1个完美数是6,接下来的4个完美数分别是: 28、496、8128、33 550 336。而第47个完美数有25 956 377个数位,(注意,是数位,不是数值!)它的数值为:243 112 608 × (243 112 609 ? 1)。 完美数的稀少昭示着达到完美的难度,而神选择6天来创造天地万有也许是因为6是最小的完美数,即创造天地万有对于神来说是轻而易举的一件事情…… 完美与算法 完美数由于其各种神秘属性(真约数之和等于自身只是其中的一个性质)而受到了特殊的关注。但到底哪些数是完美数则不是一件容易判断的事情。显然,按照完美数的定义,判断一个数是否是完美数的不二法则是找出它的所有真约数,然后求和看看其是否等于自身。然而这种方法效率太过低下,因为这意味着因式分解,而这是十分困难的(本书后面将会讨论到这个问题)。 如果判断一个数是否是完美数就已经非常困难,那么要找出所有的完美数则更是一个难上加难的任务。因为这就意味着将所有的数进行上面描述的判断验证:因式分解。这似乎是人类不可能完成的任务。即使用世界上超大的计算机来进行计算,情况也不会有任何数量级的改善。 显然,我们需要新的解决方案,而不是发明或使用新的计算工具!研究这样的问题就可以归结到算法的范畴里,因为如何高效地解决问题正是算法要研究的核心课题。 有意思的是,判断和搜索完美数是算法的研究范畴,而算法本身的追求却也是“完美”(见图2)。 图2 算法所追求的理想就是完美 算法无处不在 如果你觉得算法只是用来研究解决找出完美数之类的“漫无边际的问题”,那就大错特错了。 也许算法这个名词听上去很抽象,让人联想不到任何具体的物体。也许你会觉得算法与自己的生活并无太多关系,它只不过存在于那些闲得无聊的数学家或计算机专业人士的脑海中。 但事实真是这样吗?当然不是。如果我们告诉你算法就是解决各种问题的方法,你就不会觉得它太抽象,与生活无关了吧。事实是,算法无处不在。每个人每天都在使用不同的算法来活出自己的人生,比如你去食堂买饭会选择一个较短的队列,而有人则可能选择一个推进速度更快的队列。每天起床后,你可能先读一会儿书,再去吃早饭;另外一个人则可能先去吃早饭,然后读书。所有这些行为都是算法或算法一部分的体现。也许运行这些算法并不在你的思想意识里,也许你并不知道算法在帮助着自己的生活,但它确实是存在的。这些算法也许没有经过精心设计,没有经过仔细分析,但它还是算法! 2009年7月23日下午,我在游览云南省大理市的蝴蝶泉时由于泉水边的石头很滑,在用泉水洗手时(导游金花说用该泉水洗手会带来好运)不慎滑落到蝴蝶泉水(见图 3)里面,全身湿透。(据说一天至多只会有一个人滑落到泉里,可见本人运气不错!看来“蝴蝶泉边好梳妆”的歌词也许应该改为“蝴蝶泉里好冲凉”。)泉水冰冷透凉,而大理的气温又低。这样,我就面临一个是否更换全身衣服的决定。问题是,旅游团需要马上赶去登游船游览洱海风光,而若找地方或者回旅店换衣服就将赶不上游船。 如何处理这件事情就是一个算法问题:是先上游船再在船上找地方换衣服,还是找个地方换衣服而放弃游览苍山洱海。显然不同的算法有着不同的收益和代价。如果能够在游船上找到合适的地方更换衣服,则采用先上游船再换衣服的算法为佳;否则就是放弃游览的算法更好,因为如果冻病了显然就不划算了。最后,我选择了在游船上更换衣服的算法:在游船上找到了一个贵宾室更衣。 图3 在蝴蝶泉水下洗个手也会涉及算法 算法由问题驱动 算法的发现总是由相关的问题驱动的。拿排序来说,因为生活中到处都充满次序,每个人都要接受自己在某个次序里的位置。比如,各种排名、评优、民意调查等,最后的结果都体现为一个次序!看来,“没有次序无以成方圆”并不是空穴来风!而谈到排序用的方法,人们很自然地想到插入法,因为这种朴素的算法和人的思维方式非常类似:它就是人们打牌时整理手中扑克牌的算法。 但是随着数据量的增大,插入排序的效率缺陷迅速变为人们无法容忍的缺点。于是人们发明了归并排序、堆排序、快速排序等,这些排序的方法大大改善了速度,但是人们却并不满足于此。因此又发明了效率更高的线性排序。表1给出的是各种排序算法平均情况下的效率比较:最上面一行的数字代表输入的规模,如10表示一共有10个数据项,1M表示一共有100万个数据项。其他格子里面的数据为相应算法在相应输入规模下完成排序所需要的时间,单位为毫秒。所有输入数据为随机产生。

章节摘录

插图:到目前为止,我们简要论述了什么是算法、算法之魂、算法和计算机的关系及算法思维,读者应该体会到算法的重要性。但仅仅是因为算法重要就要学习它吗?世界上有很多重要的东西,难道我们都要学吗?即使是计算机专业的学生,不学算法也照样可以编程写软件。那么,我们为什么要学习算法呢?当然,我们有成千个理由要学,但这里仅给出几个。首先,算法是计算机的灵魂。前面已经说过,计算机不能独立于算法而存在,或者说独立于算法的计算机其存在价值要大打折扣。一个程序要完成一个任务,其背后肯定要涉及算法的设计。实际上,程序就是算法的实现,或者说程序是算法的外在体现。学好了算法,就能够设计出更加有效的软件,以最有效的方式完成更为复杂的功能。其次,算法是数学机械化的一部分,能够帮助我们解决复杂的计算问题,其中有的问题就存在于我们的日常生活中。前面讲过,算法无处不在。实际上,人是躲避不了算法的,每天的日常生活都会涉及算法。例如,如何分配自己的时间才能最有效地完成学习或工作任务就会涉及算法。不具备算法知识的人,分配的时候多半会源于自发、非科学的处理方法,难以达到高效。再次,算法作为一种思想,能锻炼我们的思维,使思维变得更清晰、更有逻辑。算法是对事物本质的数学抽象,看似深奥,却体现着点点滴滴的朴素思想。虽然真理未必只有一个,但是只要你掌握了其中的一个,你就掌握了全部,这就像是NP完全问题一样。因此,学会算法的思想,其意义不仅仅在算法本身,对日后的学习生活也会产生深远的影响。

图书封面


 算法之道下载 精选章节试读 更多精彩书评



发布书评

 
 


精彩书评 (总计16条)

  •     这本书从思想层面对常用的算法作出诠释,书中呈现了很多生活实例与历史故事,并把这些内容与算法密切联系起来,能让人从简单的概念学起,并对算法和生活、人生关联思考。有人天生喜欢“遍历”,踏遍千山万水,遍享万种风情。扮演各种角色,希望人生丰富多彩;有人一生“贪婪”,眼界不宽,及时行乐;有人注定适用“穷搜”,辛辛苦苦勤勤恳恳一辈子,付出很多,收获有限;有人善用“时空权衡”,用最少的时间办最多的事情,的确精明;有人会“分治”,再多的难题也能迎刃而解;有人常“回溯”,错的太多,后悔太多;有的人压根没有算法,于是盲目生活,盲目做事,最后所获无几;有人“动态规划”,从而积小成多。 不错的书,观点新颖,不落俗套。
  •     网站打折买了一本,昨天开始看,对第一章的小球和罐子问题感觉怪异,所以专门看了第七章概率分析部分,对此我有一些看法,也不知道是否正确。作为第一章里的小球和罐子问题我认为是极限中的无穷大减无穷大,不能简单的认为等于0吧,毕竟要看极限收敛状况的,我觉得书中有意的对极限作了曲解,不知是否如此。再看第七章—概率分析对它的解析,我觉得有同样的问题。作为发生概率趋向于0的小概率事件,可以认为它发生的概率P=0,但是并不能因此认为它一定不会发生。概率P=0与不发生不能混为一谈。所以无穷个小概率之和是不能简单的认为是0吧。根据情况,极限中无穷小与无穷大的积有三种结果:无穷大、固定值、无穷小。书中不作分析(或者我没注意?没看明白?)直接做出了等于0的结论,是不是有些问题?毕业多年了,对概率忘的差不多了,今天仅凭脑子里的一点记忆作了些判断,希望有人能给我解惑。
  •     作为一个对编程感兴趣而又非计算机专业的学生,我一直想对算法理论有一个系统的学习。买了一本《算法导论》,但读起来却觉得比较吃力,经常被书中的数学推理打击自信。所以这本书一直是断断续续地读着,至今未曾完工。无意中看到有《算法之道》这本书,初一看,感觉很有趣,作者在每章的开始都会通过一个有趣的故事来引出该章需要讨论的主题。在主题的讨论中,有常常通过一些生活实例来进行各个角度的阐述和补充。书中的文字描述较多,而数学推导较少。可以看出,作者尽量地让语言生动活泼,减少枯燥抽象的数学公式推理,降低读者的学习难度,激发读者的阅读兴趣。正如书中所说,“本书追求的目标是算法背后的逻辑,是一本启示书,而不是一本包罗万象的算法大全”。这本书介绍了算法的基础知识、设计分析、经典算法,以及难解和无解问题;对算法的主要方面进行了精要的讨论,而放弃了介绍的全性。所以,这本书比较适合初学者阅读。同时,书中也有一些不足之处,有待改进。作者虽然尽量减少数学描述,但为了说清楚某些算法问题,数学描述又是不可避免的。但书中的数学描述部分有些写得比较粗糙,相关变量的意义声明不清楚,加大了初学者的理解难度。总之,相对于《算法导论》这样的算法学习的“正餐”来说,可以吧《算法之道》看做一道饭前的“开胃小菜”,让初学者对算法有一个初步的认识:原来枯燥的算法也有自己的有趣故事。

精彩短评 (总计101条)

  •     此处风格独特,能把枯燥的算法讲得生动有趣又不离核心,论述不乏幽默,值得购买和阅读。
  •     讲的不错,条理很清晰.
  •     本书将高深的算法用日常生活实例予以讲解,非常适合初学者,是一本难得的算法入门之书
  •     内容很充实,我很喜欢
  •     给人的感觉就是作者自己用心写的书,值得一读
  •     一般般典型的国内教材……不过不失
  •     《算法导论》开胃汤
  •     一开始看书的组织结构感觉还是很不错,但是买下之后细心读了才知道很多东西是生搬硬套。虽然引用很多生活例子或典故,但是感觉内容比较冗余,信息量不大。最致命的,里面还有一些基本的数学错误(或者是我理解错了,可能性不大)。
  •     前几章基础理论部分及算法还行,后面就越来越云里雾里了,突兀的公式,一步到位的推理,不很理解。只多了些概念上的认识,转向算法导论了,感觉详细很多。
  •     主要讲常见的算法思想理论,没有出彩的地方。 了解下NP问题。
  •     延续《操作系统之道》的风格,比导论好啃多了,但书中出现的错误不少,赶快出第二版。
  •     作者对算法的理解是相当深刻的,内容函盖也比较全面,是值得收藏的经典之作.不过算法的伪代码不够规范,易引起歧义.
  •     基本理论介绍
  •     本以为会是一本生动的,深入浅出地介绍算法概论的书,收到一看才发现,不但在讲述上没有新意,比算法的经典教材简陋,还有些故弄玄虚。
  •     图书馆系统故障,说我借了他们两本书没还,天地良心,我在医院实习,都没呆在大学里,校园一卡通也一直在身上,有明确的不在场证据,非得说是我借了,没法子,为了毕业买了。。。
  •     不错 整理下思路
  •     可以学学算法思想
  •     作者另辟蹊径讲诉算法。个人认为在国内技术类书籍中是比较用心来写作的。
  •     更有利于对算法的理解!
  •     好,算法好东西
  •     这本书讲的浅显易懂,适合初学者
  •     由简入繁,很好的思想,出色的算法读物!!
  •     简单说,作者的文笔不错,东西看起还算轻松。
  •     找寻作者未写出来的东西
  •     图文并茂,思路新颖。
  •     讲的理论比较多。
  •     算法入门级的书,书里面的例子举得很好。
  •     写得有点玄
  •     理论性、艺术性、哲学结合的很好
  •     书好,快递的速度也很快
  •     这本书没有类似书籍中长篇的程序代码,写的都是算法背后的逻辑。用哲学观点看待算法!
  •     看的不太懂,迷迷糊糊的
  •     站着看掉的, 没买. 如果自认为算法分析方面还过关的话就不用看了.
  •     讲课用课件水准,非程序员入门。
  •     看看中国人写的'道'的书到底有多大功力?
  •     不能强求它是严谨的算法证明,已经有很多优秀的算法书,算法之道 更多的是从一个更易懂的角度给读者描述这些算法,是已有优秀算法书籍的很好的补充。
  •     邹老师的这本《算法之道》,对各种算法娓娓道来,深入浅出,通俗易懂,对算法的各个方面分析的也很透彻!而其幽默风趣,令人受益匪浅。
  •     很有意思的一本书,写得很好、很生动。看这书需要一定基础的高级数据知识!
  •     感觉很入门吧,只是讲解的较为形象,帮助理解而已。搞竞赛就不要买这本书了
  •     算法之道这本书写得十分好,将一些问题描述得很细,让读者思路清晰,但是包装方面就得批评一下,当当那边给我的书居然有折的
  •     个人感言:
    算法,是任何人、组织都应该学习的。从广义而言,就是人做出各种策略的方法与步骤的顺序组合。可以说,人生本身就是不同算法,成功者的算法一定是有规律的。本书主要是计算机的算法,其背后的灵魂更有价值。
  •     算法和哲学思想的结合 虽然并非何其权威 但是让人有新的思想与体会 不错哟
  •     看不懂,对数学的沟通方式完全无奈
  •     据说比操作系统写得好
  •     这个真的很难,对于普通程序员来看,最好别买,买了也看不进去
  •     好,有实例子更好
  •     作者讲解的还行,可能作者是有独到的见解的,但是,理解应用上,还是有差距。
  •     缩写版《算法导论》,还是挺不错的。
  •     没有那本操作系统讲的好,还有作者很喜欢用恋爱作比喻……
  •     : TP301.6/2196
  •     我才读了前几十页,你自己可以去看看哦,在网上可以找到电子版的一小部分。
  •     除了算法的内容外,还有许多对于真理的思考和探索~
  •     受《计算机的心智》影响 10.2开始读 还是糊涂 看来搞算法前先得搞数学 5星推荐 适合算法入门 可以作为CLRS的准备读物 邹恒明的书都不赖啊
  •     收到书粗略翻了几页,就知道没有买错
  •     荒诞
  •     书总讲解独到,作者措辞很美妙
  •     以前看过这个人的书《操作系统XX》,有点虎头蛇尾。最近正好看形式化的东西看烦了,就买他的书看看,不过还没看
  •     没事的时候看看,即使不当算法入门,也可以看阔眼界,值得一看。
  •     看了JOYO的评论,立马到蔚蓝网买了本。感觉被评论忽悠了。本以为作者能独辟蹊径,从哲学的视角阐释明白算法这门计算机科学中最核心的知识。但作者确实用一些圣经故事等一些生搬硬套、不伦不类的比喻再加上许多看了让人头疼的高等数学公式硬拼成了一本书。即不适合我这样对计算机颇感兴趣的老菜鸟读,更不适合专业人士有系统的学习。哎。。。国内好的计算机书籍太少啦,要不就直接抄老外的,要不就想走捷径整些虚头巴老的东东骗钱骗职称。计算机是门真正的科学,真正的科学是没有捷径可走的啊!
  •     看过的中国人写的算法书里很不错的一部。
  •     写的很有趣的书
  •     该书犹如算法概论一样,阐述算法的思想和角度新颖,将各种算法赋予“哲学”的思想,但有并不空洞,算法与实例的结合是其生动。把数学的抽象,哲学的思想,实例的生动集于算法,使读者从本质上的理解算法。(互动网读者:nk183club)
  •     这本书挺深刻的,值得人好好领悟
  •     作者写的很用心,不过本书开头那个拿球的问题,第x次拿标号为x的球,作者说的是错误的,请读者认真思考,也许是他所说的本书的七个悖论之一吧。总体来说瑕不掩瑜,确实是本好书
  •     当当买书就一个字很爽,这已经是第10次买书了,总体感觉很不错,东西是正品,发货快,而且快递人员(黄马甲)很不错哟,服务好!每次收到东西总是给人暖洋洋的!
  •     没太怎么读,感觉有点深啊
  •     好书!!!好书,有助于我的算法问题!!!
  •     里边介绍了很多种算法,很有用
  •     入门级的算法书
  •     没什么实质内容,语言表达能力也较差,语句不通顺,歧义较多,罗里啰嗦。不推荐买。
  •     说实话,感觉还是老外写的好
  •     算法与设计模式是我认为要时常巩固的东西,这本书的亮点我觉得在于最后的随想,哈哈,把算法与人生作比较,很精辟。。。
  •     内容还行,就是三观有那么点歪。
  •     只有伪代码-=
  •     以前没用过这本算法书,临时需要就**当买了这本,感觉还不错,适合作大学生教材。
  •     内容浅显易懂,值得一读!
  •     没坚持下来,有机会再读!
  •     道可道,非常道
  •     还没看 打算认真的看~
  •     好书好书
  •     有很不错的思想,不像其他的那样泛泛而谈
  •     想讲得很哲学很深刻,实则却是满篇噱头而已。即不深,也不广。
  •     一般,总觉得国内的这类书都不怎么样。不管是原创还是翻译
  •     视角独特 很喜欢这种把理论生活化、艺术化的书。有点松鼠会的感觉,如果国内的教材都这个风格,会怎样
  •     现在正在上这门课,也正是邹恒明老师在教,课堂气氛很活跃,都是因为这本书与一般算法书所不一样的哲学风味,感觉很新颖。
  •     人生算法,算法人生。
  •     不错 对于初入程序的人很有价值
  •     作为入门尚可,无需过于严谨,要求作者达到该行大牛的级別就苛刻些了。
  •     和邹神的风格一样,这一如既往的是一本科普书。。。
  •     不像别的算法书,只是灌输式的讲算法,让人困倦;很生动
  •     看了之后感觉还蛮不错的,是我想要的!!!
  •     这么枯燥的东西讲解的可以这么生动风趣~
  •     明白的算法看了可以一乐, 不明白的算法看了还是迷迷糊糊.. 娱乐娱乐
  •     学霸说邹神的书没用,我不信去读了,然后就信了
  •     前面那章节里面的题目都是MIT 那本算法导论的,而且讲述的比较简略,建议有基础的人买
  •     本以为是认知类的,,无奈数学不好。。。
  •     将来还得翻出来读
  •     75折买的(29.2),买完就掉价了,太恶心了
  •     拿回来的看了下,发现中间已经断了。
  •     作者已经到一定的境界了,跳出算法看算法
  •     我承认只看懂了书里的笑话~~
 

农业基础科学,时尚,美术/书法,绘画,软件工程/开发项目管理,研究生/本专科,爱情/情感,动漫学堂PDF下载,。 PDF下载网 

PDF下载网 @ 2024