IT人的算法书单:挖掘程序的灵魂

144
作者 阿里云云栖社区
2017.08.10 16:06 字数 4899

摘要算法始源于千百年前,中国古代就有各种的算法,比如今天我们依旧在使用的辗转相除法等等,甚至《九章算术》其实可以称之为一本算法书。在茫茫的书籍的海洋中,有关算法的书籍多不胜数,然而经历过大浪淘沙剩下的才是经典之作,本文就为大家介绍基本算法的相关书籍,希望能帮助大家在探索程序的灵魂之路上不断前行。

       我们都知道对于软件而言,最为经典的定义就是程序=算法+数据结构,算法对于软件的重要性不言而喻,甚至可以说算法是程序的灵魂所在。甚至有人说如果计算机系只开设三门课的话,那么一定是:离散数学、编译原理还有算法和数据结构。算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。其实对于IT人而言,无时无刻都沉浸在算法之中,小到可能只是对于一个简单的一维数组进行排序,大到使用进行实时个性化推荐或者使用机器学习算法预测未来的发展趋势,这一切都是算法。而算法也在我们的生活中,比如我们小时候最爱举的那个“泡茶”的例子、如何从一堆硬币中通过天平找出假的那枚硬币...

       都说相由心生,思维也是一样,IT人的思维往往比较缜密,因为我们的脑袋中其实运行着各种“算法”,不知道你是否也是这样,等电梯时总觉得它的算法存在问题。好了,言归正传,算法始源于千百年前,中国古代就有各种的算法,比如今天我们依旧在使用的辗转相除法等等,甚至《九章算术》其实可以称之为一本算法书。在茫茫的书籍的海洋中,有关算法的书籍多不胜数,然而经历过大浪淘沙剩下的才是经典之作,本文就为大家介绍基本算法的相关书籍,希望能帮助大家在探索程序的灵魂之路上不断前行。


《计算机程序设计艺术》—— 高德纳 (Donald E.Knuth)



       高德纳,计算机科学家,算法与程序设计技术的先驱者、斯坦福大学计算机系荣休教授、计算机排版系统TEX和METAFONT字体系统的发明人,因诸多成就以及大量富于创造力和具有深远影响的著作而誉满全球。

       《计算机程序设计艺术》系列著作被公认为是对经典计算机科学的论述,曾在1999年被《美国科学家》期刊评选为20世纪重要的12部学术专著之一。这一宏伟浩大的工程始于1962年,计划出版7卷,目前已经出版了4卷。数十年来,这本书一直是广大学生、研究人员和业内人士学习程序设计理论和实践的无价之宝,书中各处无不体现着作者渊博的学识、严谨的治学态度,以及深刻的洞察力。该套书自出版以来,广受众多科学家的赞许,并对无数读者产生了极其深远的影响。《计算机程序设计艺术》堪称计算机科学领域的瑰宝。从事研究的人惊艳于其精美优雅的分析,而普通程序员则一直在卓有成效地利用书中提供的各种方案解决日常问题。这些书展现了作者的博观、清晰、幽默,所有的人都钦佩不已。高德纳是算法和程序设计领域的先驱者,对计算机科学发展史也有着深入的研究,书中在介绍众多理论的同时,也给出了相关的历史和发展历程,成为本书的一大特色。


《算法导论》——  Thomas H.Cormen, Charles E.Leiserson, Ronald L.Rivest, Clifford Stein



       《算法导论》是一本十分经典的计算机算法书籍,与《计算机程序设计艺术》相媲美。该书由Thomas H.Cormen、Charles E.Leiserson、Ronald L.Rivest、Clifford Stein四人合作编著。本书的最大特点就是将严谨性和全面性融入在了一起。本书深入浅出,全面地介绍了计算机算法。对每一个算法的分析既易于理解又十分有趣,并保持了数学严谨性。本书涵盖的内容有:算法在计算中的作用,概率分析和随机算法的介绍。本书专门讨论了线性规划,介绍了动态规划的两个应用,随机化和线性规划技术的近似算法等,还有有关递归求解、快速排序中用到的划分方法与期望线性时间顺序统计算法,以及对贪心算法元素的讨论。本书还介绍了对强连通子图算法正确性的证明,对哈密顿回路和子集求和问题的NP完全性的证明等内容。《算法导论》内容丰富,对本科生的数据结构课程和研究生的算法课程都是很实用的教材。本书在读者的职业生涯中,也是一本案头的数学参考书或工程实践手册。大学期间,老师给我们的观点是对于这本书可以粗略地全面概览一遍,知道究竟有什么样的算法可以解决什么样的问题,当遇到具体问题需要使用这些算法时再去查找和使用,将《算法导论》当做一本工具书。


《算法》——  Robert Sedgewick, Kevin Wayne



       《算法(第4版)》是Sedgewick之巨著,与高德纳TAOCP一脉相承,几十年多次修订,经久不衰的畅销书,涵盖所有程序员必须掌握的50种算法。该书全面讲述算法和数据结构的必备知识,具有以下几大特色:算法领域的经典参考书:Sedgewick畅销著作的最新版,反映了经过几十年演化而成的算法核心知识体系。内容全面:全面论述排序、搜索、图处理和字符串处理的算法和数据结构,涵盖每位程序员应知应会的50种算法。全新修订的代码:全新的Java实现代码,采用模块化的编程风格,所有代码均可供读者使用。与实际应用相结合:在重要的科学、工程和商业应用环境下探讨算法,给出了算法的实际代码,而非同类著作常用的伪代码。富于智力趣味性:简明扼要的内容,用丰富的视觉元素展示的示例,精心设计的代码,详尽的历史和科学背景知识,各种难度的练习,这一切都将使读者手不释卷。科学的方法:用合适的数学模型精确地讨论算法性能,这些模型是在真实环境中得到验证的。与网络相结合:配套网站提供了本书内容的摘要及相关的代码、测试数据、编程练习、教学课件等资源。


《计算机算法的设计与分析》—— 阿霍,霍普克劳夫特,乌尔曼



       《计算机算法的设计与分析》是一部设计与分析领域的经典著作,着重介绍了计算机算法设计领域的基本原则和根本原理。书中深入分析了一些计算机模型上的算法,介绍了一些和设计有效算法有关的数据结构和编程技术,为读者提供了有关递归方法、分治方法和动态规划方面的详细实例和实际应用,并致力于更有效算法的设计和开发。同时,对NP完全等问题能否有效求解进行了分析,并探索了应用启发式算法解决问题的途径。另外,本书还提供了大量富有指导意义的习题。值得一提的是,本书第一作者阿霍,是哥伦比亚大学计算机科学系主管本科生教学的副主任,IEEE Fellow,美国科学与艺术学院及国家工程学院院士,曾获得IEEE的冯·诺伊曼奖。他还是《编译原理》(Compiler:Principles,Techniques,and Tools)的第一作者,其技术能力和影响力可想而知。


《算法设计与分析基础》—— Anany Levitin



       《算法设计与分析基础》在讲述算法设计技术时采用了新的分类方法,在讨论分析方法时条分缕析,形成了连贯有序、耳目一新的风格。此书涵盖算法入门课程的全部内容,更注重对概念(而非形式)的理解。书中通过一些流行的谜题来激发学生的兴趣,帮助他们加强和提高解决算法问题的能力。每章小结、习题提示和详细解答,形成了非常鲜明的教学特色。作者基于丰富的教学经验,开发了一套全新的算法分类方法。该分类法站在通用问题求解策略的高度,对现有大多数算法准确分类,从而引领读者沿着一条清晰、一致、连贯的思路来探索算法设计与分析这一迷人领域。《算法设计与分析基础》十分适合用作算法设计和分析的基础教材,也适合任何有兴趣探究算法奥秘的读者使用,只要读者具备数据结构和离散数学的知识即可。


《算法图解》—— Aditya Bhargava



       《算法图解》是一本像小说一样有趣的算法入门书。算法是解决问题的一步步流程,也是计算机科学领域的核心主题。如今程序员经常使用的算法已经经过了前人的探索、检验及证明。如果你想搞明白这些算法,又不想被困在繁琐的证明中,本书正是你的不二选择。这本图示丰富、引人入胜的实用指南将让你轻松学会如何在自己的程序中高效使用重要的算法。这本书是大家都可以看懂的算法基础书,书中的代码示例基于Python语言,书中涵盖400多个示意图,生动地介绍了算法的执行过程,并且展示了不同算法在性能方面的优缺点,能够帮助编程人员使用常见算法解决每天面临的实际编程问题。书中的前三章将帮助我们打下基础,学习二分查找、大O表示法、两种基本的数据结构以及递归等。余下的篇幅将主要介绍应用广泛的算法,具体内容包括:面对具体问题时的解决技巧,比如,何时采用贪婪算法或动态规划;散列表的应用;图算法;Kzui近邻算法。


《算法神探:一部谷歌首席工程师写的CS小说》——  杰瑞米·库比卡, 啊哈磊, 李嘉浩



       《算法神探:一部谷歌首席工程师写的CS小说》这本书围绕程序设计典型算法,精心编织了一个扣人心弦又趣味横生的侦探缉凶故事。小说主人公运用高超的搜索技巧和精深的算法知识,最终识破阴谋、缉拿元凶。其间,用二分搜索搜查走私船、用搜索树跟踪间谍、用深度优先搜索逃离监狱、用优先队列开锁及用优先搜索追寻线索等跌宕起伏又富含算法精要的情节,让读者在愉悦的沉浸式体验中快速提升境界,加深对程序世界的理解。本书适合开发人员、编程爱好者和相关专业学生阅读,也是少儿计算机科学启蒙的绝佳读物。这本书说是一本算法书,倒不如说是一本科普书籍,可以当做一本专属于IT人的小说来看。


《改变未来的九大算法》—— 美 约翰.麦考密克



       Google得出的搜索结果是如何产生的?百度为何会陷入“搜索门”,又是什么机制使然?身处在大数据时代的我们,究竟该如何应对变化莫测的世界?……没有满篇的专业术语,第一次让我们通过简单明了的语言、生动的例证了解支撑计算机王国的灵魂支柱——9大算法,包括人工智能、数据压缩,以及Google著名的PageRank等。《改变未来的九大算法》一书精彩地介绍了搜索引擎、PageRank、公开密钥加密、纠错码、模式识别、数据压缩、数据库、数字签名等内容。在解释这些算法的同时,作者也向我们展示了充满科学原创精神的计算机世界:因为每一种算法的提出不但延伸了虚拟世界的领域,同时也是人类智慧的彰显,可以被广泛运用于众多领域。

       在读完本书后,你不会成为一名更加熟练的计算机用户,但你会更珍视自己每天在所有计算设备上不停使用的思想的美。我们每天都会进行多次搜索查询,但是你想过这个令人惊叹的工具是如何奏效的吗?谷歌的精英管理层因为谷歌“以超乎寻常的技巧返回相关度极高的结果”而获奖,他们是怎么做到的?《改变未来的九大算法》将带你一探究竟。


《算法帝国》—— Christopher Steiner



       今天,算法涉足的领域已经远远超出了其创造者的预期。特别是进入信息时代以后,算法的应用涵盖金融、医疗、法律、体育、娱乐、外交、文化、国家安全等诸多方面,显现出源于人类而又超乎人类的强大威力。《算法帝国》是《纽约时报》畅销书作者斯坦纳的又一力作,通过一个又一个引人入胜的故事,向读者介绍了算法掌控世界的真实情况,揭示了“机器人革命”是如何悄然在我们身边发生的。如果说《改变未来的九大算法》是为弥散程序员气质的业余技术控洗髓内修的白话算法书,《算法帝国》就是为抱负征服世界雄心的程序员易筋外修的演义励志书,一路读来心中满盈释然和暗合之悦。搞了小半辈子算法,一直到听过凯文—斯拉文(KevinSlavin)的TED演讲“算法如何塑造我们的世界”,才有意识地去感知周遭世界一行一止中算法的开合有度。本书大开大阖,从70年代华尔街的勃兴开始,以本世纪华尔街和硅谷的权力更替收尾,世界易帜,算法仍旧。书名直译为《算法如何控制我们的世界》,对于潜志算法的我们,是控制还是被控制?书尾赫然写道:“你很有可能统治世界,如果没有机器人抢在你前头的话。”

       《算法帝国》适合所有对科技史、信息革命、算法原理、数据分析感兴趣的读者阅读参考。


《终极算法:机器学习和人工智能如何重塑世界》—— 佩德罗·多明戈斯



       算法已在多大程度上影响我们的生活?购物网站用算法来为你推荐商品,点评网站用算法来帮你选择餐馆,GPS系统用算法来帮你选择好的路线,公司用算法来选择求职者……当机器最终学会如何学习时,将会发生什么? 不同于传统算法,现在悄然主导我们生活的是“能够学习的机器”,它们通过学习我们琐碎的数据,来执行任务;它们甚至在我们还没提出要求,就能完成我们想做的事。 什么是终极算法? 机器学习五大学派,每个学派都有自己的主算法,能帮助人们解决特定的问题。而如果整合所有这些算法的优点,就有可能找到一种“终极算法”,该算法可以获得过去、现在和未来的所有知识,这也必将创造新的人类文明。 你为什么必须了解终极算法? 不论你身处什么行业、做什么工作,了解终极算法都将带给你崭新的科学世界观,预测以后的科技发展,布局未来,占位未来!

       “终极算法可以获得过去、现在和未来的所有知识,它的发明将成为人类最伟大的科学成就之一。”机器学习和人工智能究竟如何重塑我们的这个世界,或许你能够在这本书中找到答案。

日记本