内容推荐 我们的未来,是人和机器一起仰望星空的时代。 这本书用通俗易懂的语言和生动活泼的例子,介绍了有关“未来算法”的新知识,重点拆解了排序、分类、搜索、递归几大基本的未来算法,轻松讲述了数据结构、模式识别、抽象、优化的定义和应用,并提出了“计算思维”的新概念。 计算思维,简单地说就是计算机怎么解决世界上的问题。 计算思维可以让你像计算机一样思考。学会了计算思维,你可以看透互联网世界和AI是怎么运作的,你也就学会了一种解决大规模复杂问题的方法。 计算思维会给你一套现代的交往语言。它是现代社会的思维方式,它所提供的一套语言,比如算法、数据、模型、迭代、AI等是现代人交往的语言。 计算思维可以帮你优化每日的生活和工作,也可帮你解决人生的复杂问题,比如如何管理时间,如何分配资源,如何找工作或伴侣,如何理解和驾驭AI。 这本书会给你提供一种全新的看世界的视角,让你掌握现代信息运作的奥秘。作者认为,未来的十年是算法发展的黄金十年。在这样的时代背景下,如果能掌控计算思维,你就会在工作和成长中脱颖而出,赢在下一个十年。 作者简介 诸葛越,她是学霸——美国斯坦福大学计算机硕士与博士,纽约州立大学石溪分校应用数学硕士,曾就读于清华大学计算机科学与技术系。 她是互联网企业高管——Hulu(葫芦软件)公司全球研发副总裁、中国研发中心总经理,曾任览盛移动科技有限公司联合创始人兼首席执行官,雅虎北京全球研发中心产品总监,微软北京研发中心项目总经理。 她还是两个孩子的妈妈——开设有微信公众号“东西方教育”,大儿子已在英国剑桥大学攻读自然学科。 目录 推荐序 智能时代的通识教育 前言 操纵未来世界的算法 第一部分 基石 第1章 分解问题:从炒鸡蛋到无人驾驶 炒鸡蛋 短视频推荐 无人驾驶 办婚礼 第2章 算法和排序:巴比伦的泥板 抓牌 开学典礼 算法的特性 一万件衣服 积分送好礼 小明有限的脑空间 用排序思维来做时间管理 第3章 分类算法:全世界所有的东西 男孩女孩看电影 大孩子、小孩子 微博热搜 直到 再抓牌 全世界所有的东西 分类树 世界杯赌球骗局之二分法 无人驾驶交通标志的识别 人脸识别是个分类问题 人脸识别分类算法 分类算法的特性 用分类思维来解除焦虑 要事先行:四象限法则 第4章 搜索算法:找到牛津大学 怎么在书架上找到一本书 谁和你一样大 找到一家满意的餐馆 你的手机通讯录 过滤 选购汽车 找到牛津大学 搜索引擎是怎么工作的 从搜索到推荐 用搜索思维来找工作 第5章 递归算法:洋葱、汉诺塔和昨天的你 报数 洋葱的面积 珍珠心 花菜 中国有多少人 最短路径 世界末日的汉诺塔 斐波那契的兔子 昨天的你 第二部分 架构 第6章 数据结构:皇室家谱和继承 配对的袜子 队列 插队 恺恺的抽屉 摆渡车 歌单、菜单和名字 朋友圈 家谱 二叉树 爬树 皇室家谱和继承 人气网红 大数据与云计算 第7章 模式识别:会扫地的机器人 大城市、中城市、小城市 拿铁、卡布奇诺、馥芮白 机器人包包 红绿蓝紫灯 升级版包包 填满正方形 画圈的博博 电子老鼠走迷宫 扫地机器人 咳嗽声识别新冠 认清本质,识别规律,预测未来 第8章 抽象:10根手指限制了我们的想象 公交车导航 社交网络 电梯的按钮 订单的一生 10根手指限制了我们的想象 手机上的数字键盘 三种颜色的电视 简易二维码 加密和解密 为什么间谍要拿一本书 物理世界到数字世界的抽象 忽略细节,注重要素 第9章 优化:如何找到最佳伴侣 找到最佳伴侣 逃生算法 穷举是个笨办法 优化和最优 完成你的新年愿望清单 清理房间和清理大脑 旅行中的推销员 翻过山丘 计算复杂性 让随机带给我们惊喜 第三部分 未来 第10章 AI和未来计算 孩子是如何学会区分苹果和香蕉的 AlphaGo下围棋 AI是怎么写唐诗宋词和《红楼梦》的 神经网络 机器人约会 诊断癌症患者 嗅觉AI 人工智能的时代刚刚开始 结语 计算思维是一种时代技能 后记 致谢 序言 智能时代的通识教育 吴军 计算机科学家, 硅谷投资人 2016年,谷歌的围棋 程序AlphaGo和李世石对 弈之前,围棋的国手们称 呼它为“阿尔法狗”;在此 之后,则称呼它为“阿老 师”。从狗到老师的变化 ,仅仅隔了几个月。 在高看机器智能一眼 的同时,大家开始恐慌, 就连霍金这样的大科学家 也不例外。我们不妨把这 种恐慌叫作“21世纪的恐 慌”。 这或多或少和菲律宾 的土著见到拿着洋枪洋炮 的麦哲伦时的恐慌相似。 但是,最终土著人发现, 麦哲伦和他们一样,是人 而不是神,甚至也会死, 和他们不同的是,麦哲伦 等人手里有洋枪洋炮。未 来的时代,又将是一个“ 洋枪洋炮”对“大刀长矛” 的时代。 在过去的10年里,传 统行业在和经过IT(信息 技术)改造后的行业竞争 时,无一例外地败北。 2008年金融危机前,全 世界市值前10的公司只有 微软一家是IT企业。仅仅 过去了10多年,市值前 10的公司中有6家是IT企 业了。 但是另一方面,世界 上又有一些受益于这个时 代的人,比如设计了无人 驾驶汽车的安东尼·莱万 多夫斯基 (AnthonyLevandowski) ,设计了AlphaGo深度学 习系统架构的杰夫·迪恩 (Jeff Dean)等人,更 不用说贝佐斯、佩奇和扎 克伯格这些人了。 他们和普通人有什么 不同呢?简单地讲就是他 们拿着“洋枪洋炮”,而普 通人还在使用“大刀长矛” 。 这里所说的武器并非 是计算机,而是思维方式 。将这种思维方式用于工 作和生活中,就是一种方 法论。而了解计算机思维 方式最简单直接的办法, 就是了解计算机的算法, 它们和人们通常解决问题 的方法是不同的。 还是以围棋的例子来 说明。 在人看来,围棋是什 么?是棋道,是文化。但 是在计算机看来,围棋是 一道数学题。那么哪一种 看法对呢?当然是后者。 人之所以把它称为棋 道和文化,说得不客气一 点,是人太“笨”,根本算 不清楚这道题。计算机当 然没有主动思考,帮助它 思考的是它背后的人。 具体讲到AlphaGo这个 团队,他们一开始依然保 留了常人的很多思维,比 如学围棋时觉得就应该使 用人类高手对弈的棋谱。 但最终他们发现,那些人 类的棋谱反而教坏了计算 机。不使用人类对弈数据 的AlphaGo的升级版 AlphaGo Zero,反而比 AlphaGo本身厉害得多。 这就是思维方式的升 级。今后,每一个人都需 要有更好的方法论来指导 生活和工作。 2002年,我加入谷歌 公司时,公司还只有100 多个工程师,连同我在内 开发外国语(主要包括亚 洲的汉语、日语、韩语, 简称CJK;欧洲的法语、 意大利语、德语、西班牙 语,简称FIGS)搜索的 工程师只有4个人。 我们当时已经占了全 世界搜索流量的70%(包 括为雅虎提供服务),相 比之下,我们的竞争对手 们的人数比我们多出一到 两个数量级。而且,我们 中问没有人懂得韩语、法 语、意大利语、西班牙语 这4种语言。 那么这个奇迹是如何 创造的?显然不是靠拼人 力,也并非我们的智力比 别人高多少,而在于我们 的方法和别人不同。 人通常会把每一种语 言的搜索问题看作一个单 独的问题,因为各种语言 在形式上完全不同,然后 从自己熟悉的语言开始, 一种语言一种语言、一件 事一件事地做。 我们则不同,我们直 接面对所有的语言(当时 我们处理了70种),找到 语言的共性,也就是承载 信息,然后从信息的数学 基础出发,让机器同时完 成所有事情。直到今天, 谷歌汉语、日语、韩语搜 索算法的主体使用的依然 是我当初设计的方法,而 英语、法语、意大利语、 德语、西班牙语搜索中的 构词法部分,依然是我们 4个人和阿密特.辛格哈 尔(Amit Singhal)博士 共同设计的。它们依然比 世界上其他任何搜索引擎 使用的方法都要好。 今天,很多成功的企 业、个人有意无意地采用 了这样的方法,也取得了 惊人的成就。比如说,基 于大数据的支付宝,被欺 诈的比例极低,比一般的 银行交易低两个数量级。 这并非是因为传统银 行没有资源,而在于它们 的思维方式太落后——传 统银行把每一笔交易、每 一个案子孤立地看待,这 虽然符合常人的本能,但 是效果有限。而支付宝从 一开始就是网状的,并有 意无意地在网络的基础上 变得“聪明”起来。要知道 ,人的智能是个体行为, 而机器的智能在很大程度 上来自网络效应。 但是,并非所有人、 所有机构都能自觉地采用 适合智能时代的思维方式 和方法。 由于受到过去环境以 及生理上的限制,人在思 维上存在先天不足。好在 有一些人,他们的思维水 平超出我们常人,他们善 用现在的各种IT工具,能 更快更好地达到目的。 学习这些人的思维方 式和方法,是在今后智能 时代赢得胜利的唯一方式 。 今后,不论你从事什 么行业,思维方式改进了 ,方法论先进了,境界提 高了,在竞争中,你就能 用“洋枪洋炮”对付别人的 “大刀长矛”。 当然,计算机算法在 很多人看 导语 算法是未来的基石,思维是底层的架构。这本书用4大算法+4种思维,给你AI时代的制胜武器。讲述的是前沿趋势,教授的是底层思维,赋能的是职场人。 学会了计算思维,具备了数据素养,你就可以看透互联网世界和AI是怎么运作的,也就掌握了一种解决大规模复杂问题的方法。这种方法将成为你在工作和生活中的有力助推。 计算机科学家诸葛越新作!吴军作序,沈向洋、王小川、郝景芳诚意推荐。 随书附赠“下一个十年赢在计算思维”超浓缩思维导图。 后记 在我这一生中,给我 最大影响和最多指导的人 之一是我的博士生导师— —斯坦福大学教授赫克托 ·加西亚一莫利纳。可以 说,除了赶上斯坦福大学 和硅谷的黄金时代之外, 我的另一个幸运之处是遇 到了这位导师。他不仅是 世界公认的信息技术和大 数据专家,也是一位非常 好的导师,一个极其睿智 而善良的人。在学术研究 和为人处事方面,他都对 我和其他学生产生了一生 的影响。 1992年,赫克托从普 林斯顿大学来到斯坦福大 学,我刚好在那一年进去 读博士,成为他在斯坦福 大学数据组 (DatabaseGroup,后来 更名为斯坦福大学信息实 验室)最早的学生之一。 在那之前,关于数据的研 究基本上专注于比较小型 的数据,比如银行存款和 交易。赫克托给我指出的 方向是大数据,具体是数 据仓库和数据挖掘。这些 词在当时的学术研究界都 是让人感到陌生的,这也 是为什么我们的研究领域 是开创性的,研究结果直 到现在都被很多人引用。 我和赫克托合作的论文获 美国计算机学会数据库专 业委员会(SIGMOD)十 年最佳论文奖,这个“时 间考验”论文奖是发给十 年后评出的业界影响最大 的研究论文的,也就是奖 励十年后被证明有先见之 明的学术想法。 我和赫克托的其他学 生们在一起分析过,为什 么赫克托可以在多个领域 先于很多其他学者有所发 现和建树。我们的结论是 :他相信,寻找简单有效 的解决方案(而不是更复 杂、更昂贵的解决方案) 可以达到最佳效果。由于 这一理念,他的想法更本 质、更清晰。赫克托及其 学生的许多论文开辟了新 领域,并受到高度评价, 包括大数据、数字化信息 、数据安全等,他的每个 学生都活跃在不同的前沿 领域。赫克托在研究中喜 欢亲力亲为,积极地和我 们讨论、碰撞,引导学生 们探索无人去过的地方。 除了化繁为简,我还 在赫克托身上得到两方面 终身受益的指导。 第一是“真兴趣”。和 其他很多人一样,我读书 一直读到博士,动力几乎 都是“我可以学得很好”, 从小到大的学习就是为了 学习,我并未发现自己发 自内心的兴趣。然而,赫 克托在我们研究最难的方 向,最摸不着头脑的时候 会说:“这不是很有趣吗 ?”这是他的口头禅。上 课讲数据查找——“这不 是很有趣吗?”开始研究 的时候发现没人想过,不 知道是不是个伪命题—— “这不是很有趣吗?”做了 几个月的证明发现错了— —“这不是很有趣吗?” 仔细地想想,这个问 题真的很有趣。我对未知 的好奇,对问题的好奇, 对错误的好奇,对难题的 好奇,很大一部分来自赫 克托的影响。 第二是“真正的理解” 。我们每天都在和各种人 交流,信息很多。其实, 大多数人并未真正理解一 个问题、一个解答,或者 一个场景。在学术界,大 部分的学术研究都在应用 层面,把前人的方法应用 到不同的场景,仿佛一棵 树上又长出一根新枝。只 有少数的大师对问题有深 入的理解,可以在茂密繁 乱的树枝中看到清晰的主 线,他们是树根和树干的 创作者。赫克托就是这样 一个人。 每当我们想当然地说“ 这件事可以这样”“那个结 果应该正确”的时候,他 都会帮我们想清楚:你为 什么要解这个问题而不是 另一个问题?你的假设是 对的吗?这个问题的根本 点在哪里?哪些是不必要 的?更简单的一个版本, 比如只有三个样本的版本 ,工作原理是什么?把最 简单的场景想清楚了,是 否能一步泛化到所有场景 ?我们纷乱的思路在他的 帮助下变得清晰,主干和 枝叶在我们眼前分离开。 这个方法对我后来做 很多事都大有帮助。就拿 写这本书为例,这本书应 该是很简单的科普书,没 有专业背景的人也能阅读 。但同时,它包含的概念 最基本、最优美。等读者 有了更多计算方面的知识 再来读,又能读出深一层 的意义。你会发现,市面 上纷繁复杂的信息技术最 终归结于本书介绍的几个 基本方法。 我在赫克托那里学到 了深入浅出,对于一个问 题,你想透了才能真正地 理解。 在我读书期间,赫克 托还与特里·维诺格拉德 (TerryWinograd)教授 共同发起了斯坦福大学数 字图书馆计划 (DigitalLibrary),该计 划历时10年,致力于开发 方法,用于捕获、存储和 过滤传统图书馆中保存的 多种信息,最终产生了非 常多对近代信息技术有影 响的想法和方法。这个项 目早期的学生包括谢尔盖 ·布林和拉里·佩奇,他们 分别是两位教授的学生, 也是谷歌的联合创始人。 赫克托在其40年的学 术生涯中带出了57名博士 生,编辑、创作或合作了 9本书,发表了400多篇 期刊文章和审阅的会议论 文。他是数据世界,尤其 是大数据的世界的开山鼻 祖。但是,赫克托一直保 持着谦虚、善良、幽默。 他的风格影响了许多人, 包括我。不幸的是, 2019年下半年,仅65岁 的赫克托因肺癌去世。而 幸运的是,就在2019年8 月,我才带着家人孩子去 见了他。那时候我还不知 道他生病了,他请我们吃 饭,带我们去了校园里的 一个隐秘的仙人掌公园, 又去了新的商 书评(媒体评论) 在《未来算法》一书 中,诸葛越博士分享了她 对计算机算法、工程技术 ,以及教育的思考,目的 是帮助大家掌握未来时代 的方法论。我相信,各种 人,无论是计算机行业的 从业者,还是对计算机一 无所知的人,在阅读了这 本书以后都会有所收获。 对于已经在这个行业工作 的人来讲,这本书能够让 你深度理解这个行业的门 道;对于大众来讲,这本 书则能够让你进入神奇的 计算机世界。 ——吴军 计算机科学 家,硅谷投资人 计算机科学和AI近年 来发展得日新月异,其中 最重要的是计算思维的方 法论。诸葛越博士的《未 来算法》一书,用生活中 的许多具体例子巧妙地介 绍了有趣的计算机算法, 解释了计算思维的重要性 :从时间管理到解除焦虑 ,从找到工作到找到人生 伴侣!学未来算法,用计 算思维,让工作高效,令 生活幸福! ——沈向洋 美国国家 工程院外籍院士,粤港澳 大湾区数字经济研究院理 事长 我有幸从7岁开始热爱 编程。这不仅是我童年的 快乐源泉,更是我认知世 界的窗口,还推动了我的 求学和职业生涯。我希望 未来的孩子能在父母的陪 伴下学习编程,体验算法 的美妙。诸葛越是优秀的 计算机专家兼育儿专家, 她非常适合搭建这样的桥 梁。 ——王小川 搜狗创始 人,CEO,国际信息学奥 赛金牌获得者 一切都是算法。当代 生物学家和当代认知科学 家已经开始发现:生命是 基因和蛋白质的算法,思 维是大脑的算法。人类杰 出的智能,就在于能使用 抽象程度越来越高的算法 ,理解和思考世界上的万 事万物。未来属于对算法 有深刻理解的人。这本书 概括了常用的4大算法与4 种思维,可以说是给了大 家通向智慧殿堂的钥匙。 ——郝景芳 科幻作家 ,童行教育创始人 精彩页 第1章 分解问题:从炒鸡蛋到无人驾驶 在这个开篇短章中,我将介绍计算思维中看似最简单但其实最强大的概念:分解问题。在图卜1中,大家可以看到,分解问题是计算思维这栋房子的“屋顶”。问题被分解后,各类算法才能上阵发挥作用。 分而治之、各个击破是兵家常用的策略。分解问题就是分治法。兵法讲了分治法的“道”,而计算思维介绍分治法的“术”,也就是具体什么是分解问题,怎么分,怎么表示,分了以后怎么一步步地做,最后怎么正确地解决问题。 计算机既聪明又强大,它可以完成登月、自动导航、构建VR之类的特别有意思但人类还做不好或做不到的事情,它还可以下围棋,打败世界冠军。但是,计算机做到这些事,凭的是它的速度超快。计算机没有办法“一览众山小”,它只能一棵树~棵树地看,一朵花一朵花地数。计算机最核心的部件做的是极其严格、死板、正确、简单的操作。从简单操作到强大应用,计算机所使用的方法就是分解问题。 计算机能把复杂的大事情分解成多个简单的小事情,把一个大问题分解成若干小问题,然后逐个击破。分解问题听上去简单,但是我们需要用清晰的逻辑和流程来表现它,计算机才能理解和执行任务. 炒鸡蛋 举个例子,菜谱使用的就是一种标准的分解问题的表现方式,一个不会做菜的人看到菜谱可以一步步炒出一道菜。计算机算法就像菜谱,任何一台计算机接受一个算法都可以同样地完成一项任务。 下面我们就先用简单的菜谱来举例,介绍分解问题中的两个概念:串行和并行。 试想,如果世界上真有炒鸡蛋的菜谱,它会是怎么样的?它会分为以下几步:(1)准备原料,(2)炒蛋,(3)盛到盘子里。注意,这三步需要一步一步地进行,顺序不能颠倒,不能先盛盘再炒蛋。顺序执行,就是计算机语言所说的串行。 这三个步骤也可以用一个非常简单的流程图(见图1-3)来表示。对于串行的事情,做事只能按照给定的先后顺序来。 分解问题不限于一个层次。大步骤可以再继续分解细化。比如,如果一个人还是不理解怎么炒蛋,那么我们可以把上面的步骤细化,第二步“炒蛋”可以再次分解为:(2.1)把油下锅,(2.2)把蛋下锅,(2.3)翻炒5分钟。这三个小步骤也需要串行(见图1-4)。 那什么是并行呢?在第二步的同时,也就是炒蛋的同时,我们可以把盘子准备好,这就叫并行。简单地说,并行就是在同样的时间里同时做多件事。在图1-5所示的流程图里,并行被表示为不同的通道。大家可以看到,并行的两个通道上的任务2和2A可以同时做,但是2和2A必须都发生在任务1之后,任务3之前。 那么分解问题要分解到什么程度呢?我们再用上面的菜谱来打比方,把做菜的过程分解到看菜谱的人看到以后会做就行了。比如,拿盘子这件事一般人都会拿,至于这个人是用左手去拿,还是用右手去拿,写菜谱的人可以不管。只要那个人能准时在炒蛋完成的时候把盘子拿来就行了。 拿盘子这个操作,就等同于我们后面要大篇幅介绍的算法。这件事我们一看就会,还可以请别人代做。分解问题,最终要把问题分解成可以用一台计算机使用算法来解决的问题。 说到这里,你可能会感到疑惑,炒蛋的步骤可以分解,可你还是不知道计算机是怎么完成复杂任务的。其实,计算机实际做的事情确实要更复杂、更难、更耗时间,要求也更高。但复杂的任务也需要先进行分解,基本思路还是一样的。我们来看看短视频推荐和无人驾驶。 P3-6 |