一本为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》一书的作者。
读到这里有赠书
评论送书本文中发表评论,评论被点赞最多者将或获赠样书1本,选前31.17日结束领奖提示:1月17日截止后,排在前3的同学去下面链接中领银子兑换样书或者微博中@人邮异步社区 领取奖品http://www.epubit.com.cn/space/188。
关注我们:
亲爱的读者们,感谢您花时间阅读本文。如果您对本文有任何疑问或建议,请随时联系我。我非常乐意与您交流。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。