【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

"Grokking Algorithms"简介与作者采访

  • 2016-07-20
  • 本文字数:2570 字

    阅读完需:约 8 分钟

关键点

  • 这本书目的是告诉读者解决问题的新方法。
  • 这本书试图通过插图来让大家更容易掌握主题,避免部分读者觉得太费解。
  • 这本书不仅适合没有接触过算法的人,也适合刚从计算机专业毕业的学生。
  • 这本书提供了非常多的例子和简单练习。
  • 这并不是一本参考书,也不是练习书。它只包含了作者日常编程实践中证明了有用的算法。

Aditya Y. Bhargava 所著 _ Grokking Algorithms _(曼宁出版社出版)采用了一种全新的方式来介绍数据结构、算法和复杂度等复杂概念。作为一个视觉型学习者,Bhargava 说他试图借助插图的强大表现力来帮助读者更容易地掌握主题,避免部分读者觉得太费解。

这本书假设读者已经有了编程基础。Bhargava 说它不仅适合没有接触过算法的人,也适合刚从计算机专业毕业的学生。

书中前 3 章介绍了大 O 符号和递归等基本概念。读者在这里可以读到关于数组和链表等数据结构的例子,还有二分查找和选择排序等算法。

第 4 章以快速排序算法为例,介绍了分而治之的解决问题方法。

第 5 到 7 章主要介绍了哈希表和图。除了详细描述哈希表和图到底是什么之外,书中还提供了许多非常有意义的用例来帮助大家理解它们的使用场景。哈希冲突和性能内容都有所覆盖,还有如何选择一个合适的哈希算法等。至于图,广度优先算法和 Dijkstra 最短路径优先算法都有所讲述。

第 8 章和第 9 章用贪心算法和动态规划方法来解决一些基本问题。贪心算法是在 NP 完全问题的背景下介绍的。贪心算法和动态规划方法都用来解决旅行商问题、背包问题等经典问题。

第 10 章介绍了 K 近邻算法(K-nearest neighbors,KNN 算法),这是一种用于聚合的机器学习算法,比如设定一些数据点之间的距离定义,就可以使它们呈现出一定的聚合状态。这一章非常简单的介绍了一下机器学习后面的基本算法。

在最后一章即第 11 章里作者简单介绍了 10 个算法,为读者的进一步学习做了铺垫。算法包括基于树的搜索、倒序索引、傅立叶变换、Map-Reduce 算法、SHA 哈希等以及其他几个。

全书通篇都会通过插图来解释各个重要概念,特别有趣的是关于一些抽象概念的插图,比如递归和分而治之等。除了用插图去解释每一个概念之外,书中还提供许多的示例代码供读者去构建和执行,还有许多简单的练习题,这样作者可以在继续下一章内容之前评估一下自己对已读内容的理解程度。在书的最后一章提供了所有练习题的解决方案。全书示例代码都是用 Python 写的。

InfoQ 采访了 Aditya Y. Bhargava 来了解更多的幕后内容。

InfoQ:能请您解释一下写这本书的动机吗?除了是一本插图书之外,它与其他的算法书还有什么不同?

Aditya Y. Bhargava: 我关注使概念更容易被理解的方法。比如我写书的原则之一就是“要够用还是要全面”。很多书都是直接把很多的概念直接抛给读者,不管有用没用,这种就是“全面”的方法,我直接一股脑全说了,说不好什么时候你就用得上。而我的书则是用“够用”的方法:我只告诉读者他们现在需要知道的东西。所以我给的例子都会很简短,但都直很切题。

InfoQ:您能简单介绍一下您的计算机科学背景,以及您对算法的兴趣吗?

Bhargava:我是个自学成材的工程师。我最初是用 Basic 语言写游戏,后来改用 ActionScript。我一直都觉得算法很困难,直到终于有一天有一位老师真的帮我把概念都解释清楚了。从那时候开始我就知道了如果你能用一种好方法去解释的话,算法其实并没有那么难。

InfoQ:那您是怎么想到写一本关于算法的插图书呢?图画为什么会对解释和理解算法有帮助?

Bhargava:从 2013 年开始我就在我的博客上写有插图的文章了。我收到了很多读者善意的留言,都说插图帮他们更好的理解了概念。曼宁出版社联系了我,说想出一本插图书,我就想到算法会是一个好的点。算法都是非常抽象的概念,但图画可以让它们具体化。

InfoQ:第一眼看上去,您的书会非常吸引那些以前没有什么算法知识的程序员。您觉得对于那些曾经正式学过算法的程序员们来说,他们也会觉得这本书很有趣吗?您的书对他们有什么价值?

Bhargava:很多人都喜欢我关于动态规划算法的那一章。即使是对于科班计算机学科出身的人来说,我仍然觉得动态规划算法很难理解。我们给那一章写了很长的一节 FAQ 来给大家解释清楚动态规划算法的难以理解的部分。

有些人喜欢我给的例子。其实要解释好一个概念,是很难找到非常合适的好例子的。所以如果你想把这些概念教给别人还想让别人真的理解的话,我的书是非常有用的。

InfoQ:您的读者该期望从您的书中得到些什么?不该期望得到什么?

Bhargava:我的书会教给读者解决问题的新方法。有些读者的目的是扩大自己的工具箱,那么他们现在就应该能解决一些他们以前解决不了的问题了。

我只为本书选择那些在现实工作中有用的算法,所以这里的每一章都是非常有用的。比如我并没有讲解插入排序算法,虽然别的算法书都会提到它,但实际上它并不会对读者的工作有什么帮助。所以读者不该期望这是一本参考书,那样会让这本书不得不加入许多无用内容。

InfoQ:请问对于那些以前并没有学过算法,但又想通过读您的书来攻克这个有些难的领域的程序员,您有什么建议吗?

Bhargava:请一定把练习题都作了,大部分都很容易,几分钟就能作完。这些题可以确保你们理解了这些内容。

InfoQ:算法是个非常大的领域。您是用了什么标准来做取舍,讲什么和不讲什么呢?

Bhargava:我只选择那些对于我来说在我的日常工作中非常有用的算法,而且我也只选那些不需要有很多预备知识的算法。

InfoQ:在您做了插图的那些算法中,哪个是最有趣的,哪个是最难的?

Bhargava:最有趣的是为分而治之配图,因为它太适合用可视化的方法表现了。最难的是动态规划算法,因为在方框中很难跟踪表现那些值。

InfoQ:有没有什么算法是你本来想在书中做介绍,但最后还是没有加进来的?

Bhargava:当然有!我在第 11 章,用了一整章来列出了 10 个我本来想详细介绍的算法。其实我本来真的很想介绍一下线性规划算法的,因为它太强大了。

InfoQ:最后,对于那些读过了您的书还想在算法方面继续深入的读者,您有什么建议吗?他们接下来该怎么做?

Bhargava:在网络上有太多的资源了,比如 adit.io (我的博客)和 betterexplained.com 这两个博客。Coursera 的机器学习的课程也非常好。

关于书的作者

Aditya Y. Bhargava是一位有计算机科学和美术双学位的软件工程师。他关于编程的博客是 adit.io

阅读英文原文 Grokking Algorithms Review and Author Q&A

2016-07-20 18:272057
用户头像

发布了 152 篇内容, 共 67.7 次阅读, 收获喜欢 63 次。

关注

评论

发布
暂无评论
发现更多内容

第三期 |《实时洞察 智能运营一用友企业绩效管理白皮书》解读

用友BIP

企业绩效管理

什么样的LED显示屏适合用在车站

Dylan

信息化 应用 LED显示屏 led显示屏厂家

挖掘外贸网站产品核心词,提高购物旺季的订单转化

九凌网络

WeChatTweak for Mac(多开和防撤回工具) macOS微信多开插件

影影绰绰一往直前

Premiere Pro 2023 for Mac(pr 2023)完美激活版下载

iMac小白

Linux内核安全子系统简介(上)

nn-30

Linux Linux Kenel 内核 linux security 内核安全

如何使用Python调用API接口获取淘宝商品数据

Noah

Proxyman 4.14.0 for Mac - HTTP 调试代理应用程序

晴雯哥

Fig Player for Mac(多媒体播放器) 1.3.7激活版

影影绰绰一往直前

Fig Player Fig Player破解下载 Fig Player激活版

网络安全专用产品有哪些?能一一列举出来吗?

行云管家

网络安全 防火墙 等保 安全运维

犀牛8 建模软件Rhinoceros 8 for Mac 完美激活版下载

iMac小白

3大方面升级华为云CCE集群体验,助力集群高效运维管理

华为云开发者联盟

云原生 后端 华为云 华为云开发者联盟 华为云CCE容器服

哈希竞猜游戏开发源码部署方案

西安链酷科技

去中心化 交易所 链游 哈希竞猜

.NET Core中一些优秀的项目和框架

互联网工科生

.net core

清华-用友数智化领导力项目正式开课!

用友BIP

数智化领导力

App Cleaner & Uninstaller for Mac 完美激活 mac清理卸载工具

iMac小白

Downie 4 for Mac(最好用的视频下载软件)

iMac小白

区块链链游合约系统开发项目模式技术方案

西安链酷科技

区块链 设计 方案 链游 合约

Axure RP 8 for Mac(交互式原型设计工具) 中文版

iMac小白

区块链拆分

西安链酷科技

区块链 dapp 去中心化 拆分

Spring高手之路16——解析XML配置映射为BeanDefinition的源码

砖业洋__

spring源码 BeanDefinition分析 Spring框架内部工作 XML配置文件

Acrobat Pro DC 2023 for mac 完美激活版下载

iMac小白

Mac电脑矢量绘图软件:llustrator 2023 for mac最新激活版

iMac小白

币安进军 Web3 钱包领域预示着几个重要的趋势和发展

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

GPTs数据泄露大语言模型安全刻不容缓,如何用AI Agent提升LLM应用安全系数?

王吉伟频道

数据安全 大语言模型 AI Agent AI智能体 RPA Agent

从GPT定制到Turbo升级再到Assistants API,未来AI世界,你准备好了吗?

EquatorCoco

人工智能 AI GPT ChatGPT

DBeaverUltimate for Mac激活版下载(数据库管理软件)

iMac小白

「智造」第6期:浅谈智能工厂

用友BIP

智能制造

专访|OpenTiny 社区 Mr 栋:结合兴趣,明确定位,在开源中给自己一些技术性挑战

OpenTiny社区

开源 前端 React UI组件库

pycharm pro for mac破解版下载(Python编辑开发)

iMac小白

数字货币swap交易所逻辑系统开发分析方案

西安链酷科技

区块链 数字货币 去中心化

"Grokking Algorithms"简介与作者采访_Book Review_Sergio De Simone_InfoQ精选文章