技术书推荐 | 《Python算法教程》

一本为Python程序员解决算法问题的书《Python算法教程》,它的内容涵盖相关的面向对象模式和一些常见问题的处理方式——也就是相关的解决方案。对于一个算法设计者,我们需要的不是简单地实现或执行一些现有算法的能力。相反,我们期望能拿出一个新算法——一个能解决一般性问题的、前人没有提过的全新解决方案。《Python算法教程》就是这样一本帮你解决此类方案的书。


但这又不是一本传统意义上的算法书。毕竟,大部分这类题材的权威书籍(例如Knuth那部经典著作,或是由Cormen等人合著的那本标准教科书1)都属于理论研究型的,显得有些过于严肃,尽管其中也不乏一些侧重于可读性的作品(例如Kleinberg与Tardos合写的书2就是其中之一)。当然,我们在这里并不是要取代这些优秀的作品,而只是希望能在此基础上做一些补充。作者希望利用自己多年的算法教学经验,尽可能清楚地为读者诠释算法的工作方式,以及一些需要共同遵守的基本原则。对于一个程序员来说,这种程度的诠释可能就已经足够了,读者需要有更多的机会去理解为什么相关的算法是正确的、如何将这些算法运用到他们所面对的新问题中去。但这就需要去阅读一些更形而上的、百科全书式的教科书。希望这本书能为读者打下一定的基础,这将有助于他们理解相关的定理以及其相应的证明。


请注意:

这本书和其他算法书之间的一个区别是,我采用了谈话式的风格。虽然我希望这至少能吸引一些我的读者,但这可能不是您喜欢的风格。我们对此深感抱歉,但现在您已经至少被提醒了。


除此之外,市面上还有另一种算法类书籍。它们通常以“(数据结构与)算法(blank版)”为题,这里的blank通常为作者本人所使用的编程语言。有不少这样的书(而且似乎都是以blank=Java的情况为主),但其关注点多集中在与基本数据结构有关的东西上,以至于忽略了某些更为实质性的内容。如果说这是某一门数据结构基础课程的教科书,或许还可以理解,但对于Python程序员来说,学习单向或双向链表并不是一件能让所有人兴致勃勃的事情(尽管我们在下一章中还是会提到一些)。即便是哈希这样重要的技术,我们也可以通过Python中的字典类型免费获得相应的哈希表,完全不需要再去考虑重新实现它们。恰恰相反,我将注意力集中在更高级的一些算法。但这样一来,许多重要的概念在Python语言本身或标准库对相关算法(如查找、搜索、哈希等)的“黑盒”化实现中被淡化了。为此,我们在文中加入了一些特定的“黑盒子”专栏,以做补充。


当然,本书与那些“Java/C/C++/C#”算法流派还有一个显著的区别,即这里的blank为Python。这使得本书更接近那些与语言无关的算法书(例如Knuth3、Cormon等人以及Kleinberg与Tardos的作品),这些书常常使用伪代码来说明问题。这实际上是一种侧重于可读性的伪编程语言,因而它不具备执行能力。而可读性正好是Python最显著的特点之一,因此它或多或少可以被视为是一种具有执行能力的伪代码。就算我们从没用过Python,也能看懂绝大部分Python程序。总之,这本书中代码示例都是高度可读的——我们不需要成为Python方面专家,也能轻松读懂这些示例(尽管有时候还是需要读者去查阅一些与内置函数有关的资料)。当然,您也可以把这些示例当作伪代码来理解。综上所述……


《Python算法教程》涉及以下内容

  • 算法分析,主要侧重于渐近运行时间分析。

  • 算法设计的基本原则。

  • 如何用Python描述那些常用的数据结构。

  • 如何用Python实现那些知名算法


《Python算法教程》还将简单或部分涉及以下内容

  • Python中直接可用的算法,它们通常是语言本身或其标准库的一部分。

  • 纯思想性及形而上的内容(尽管本书会对它们做一些证明,并提供相关的证明示例)。


《Python算法教程》不会涉足以下领域

  • 与数值计算或数学理论有关的算法(只有第2章中涉及了一些浮点运算)。

  • 并行算法与多核编程。

  • 正如大家所知,“用Python实现”只是整个拼图的一部分。我们所希望的是,读者能掌握其中的设计原则与理论基础,以便能设计出属于自己的算法与数据结构。


看了这么多,有没有感觉到这真的是一本为Python程序员解决算法问题的书,如果还有疑问,没关系,我们这里开放了样章试读,足够让你对这本书有大致的了解,如果动了心,请小伙伴们点击阅读原文购买。


目录:

第1章 引言

第2章 基础知识

第3章 计数初步

第4章 归纳、递归及归简

第5章 遍历:算法学中的万能钥匙

第6章 分解、合并、解决

第7章 贪心有理吗?请证明

第8章 复杂依赖及其记忆体化

第9章 Dijkstra及其朋友们从A到B的旅程

第10章 匹配、切割及流量

第11章 困难问题及其(有限)稀释

附录A 猛踩油门!令Python加速

附录B 一些著名问题与算法

附录C 图论基础

附录D 习题提示


《Python算法教程》


Python是一种面向对象、解释型计算机程序设计语言,其应用领域非常广泛,包括数据分析、自然语言处理、机器学习、科学计算以及推荐系统构建等。

本书用Python语言来讲解算法的分析和设计。本书主要关注经典的算法,但同时会为读者理解基本算法问题和解决问题打下很好的基础。全书共11章。分别介绍了树、图、计数问题、归纳递归、遍历、分解合并、贪心算法、复杂依赖、Dijkstra算法、匹配切割问题以及困难问题及其稀释等内容。本书在每一章结束的时候均有练习题和参考资料,这为读者的自我检查以及进一步学习提供了较多的便利。在全书的最后,给出了练习题的提示,方便读者进行查漏补缺。

本书概念和知识点讲解清晰,语言简洁。本书适合对Python算法感兴趣的初中级用户阅读和自学,也适合高等院校的计算机系学生作为参考教材来阅读。


样章试读:http://www.epubit.com.cn/book/details/4006


作者简介:


Magnus Lie Hetland是一位经验丰富的Python程序员,他自20世纪90年代以来就一直在使用该语言。同时,他还是挪威科技大学的副教授,有着数十年的算法教学经验,是《Beginning Python》一书的作者。


点击【阅读原文】购买



欢迎投稿 职场/创业方向. 邮箱wangfzcom(AT)163.com:王夫子社区 » 技术书推荐 | 《Python算法教程》

    标签:

点评 0

评论前必须登录!

登陆 注册