首页>参考读物>计算机科学与技术>计算机科学理论与基础知识

经典算法的起源
作者 : [希]帕诺斯·卢里达斯(Panos Louridas) 著
译者 : 吴向军 边芮 译
出版日期 : 2022-08-25
ISBN : 978-7-111-70888-9
定价 : 79.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 190
开本 : 16
原书名 : Algorithms
原出版社: MIT Press
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

在计算机出现之前,算法就已经存在了。本书旨在介绍经典算法及其起源,提供解决问题的新思路,让读者知其然并知其所以然。本书从最基础的“什么是算法”开始讨论,首先介绍如何评价算法的性能,然后展开讨论与图、搜索和排序相关的经典算法,解释“算法是怎么运作的”,最后介绍PageRank和深度学习两个大型算法应用。本书用通俗易懂的语言来描绘算法世界,穿插有趣的文化历史故事和简单易懂的例子,不涉及艰深的数学知识,即使非专业人士也能轻松读懂。

图书特色

图书前言

我认识两位年轻人,他们所拥有的知识比过去任何科学家、哲学家或学者都多。他们是我的儿子。但我可不是一位溺爱孩子,并对自己孩子拥有的非凡天赋而感到惊讶的父亲。这两位年轻人用便携式工具将自己与庞大的信息库相连接。由于掌握了在互联网上搜索知识的技能,他们变得无所不知。
他们不需要字典就能在母语和外文之间互译,在过去几年,足不出户便知天下事。世界各地的新闻转眼即至,在我知道之前,他们就已与世界各地的同龄人交流了。他们可制订详尽的外出计划,也可沉迷在游戏之中,或追随快速发展的趋势,而这种趋势变化之快以至于我还来不及明白他们为何如此关注。
所有这些成为现实要归功于数字技术的快速发展。现在便携式设备在计算能力上比当年把人类送上月球的设备还要强。像前面所描述的那样,我们的生活发生了巨大变化。对未来的预测五花八门,从不需要工作的乌托邦社会,到反乌托邦社会,各种观点争论不休。
幸运的是,我们有能力构建未来,而影响未来的一个重要因素是我们对支撑眼前这些成就和变化的技术有多熟悉。虽然我们可能在日常忙碌中忽略它,但现在确实是人类历史上的最好时期。我们比以往任何时候都更健康,就平均而言,人类比过去更长寿。即使仍然存在不平等,但许多人已经摆脱了贫困的桎梏。人类在虚拟和现实中从未联系得如此紧密。便捷的旅行使我们有机会体验不同的文化,参观那些曾在画册中看到的惊叹之地。所有这些进步会且应该会持续下去。
然而,要融入此进步,仅会应用数字技术是不够的,我们还需了解它。首先,一个极其现实的理由就是它可提供一些很好的工作机会。其次,即便不从事技术型工作,也应该了解其基本原理,以便领悟其发展方向,并扮好自己的角色。数字技术几乎都由硬件(构成计算机和数字设备的物理组件)和软件(运行在其上的程序)组成。程序的核心是其实现的算法,即表达求解问题方法的一组指令(若不太像算法的定义,别担心,我们会在书中给出详细描述)。没有算法,计算机将毫无用处,现代技术也会不复存在。
数字技术几乎都由
硬件(构成计算机和数字设备的物理组件)和
软件(运行在其上的程序)组成。
程序的核心是其实现的算法。
我们的必备知识应与时俱进。在历史长河的大部分时间里,学校教育被认为是非必需的。大多数人是文盲,即使接受教育,也只是掌握一些实用技能。19世纪初,全球人口中80%以上未受教育,而现在绝大多数人已接受多年的学校教育。预计到21世纪末,全球未受教育的人口比例将降为零。我们受教育的时间也在增加。1940年,只有不到5%的美国人拥有学士学位,而2015年,这一比例几乎达到1/3 由启蒙教育统计的全球进展的各项指标,请参阅Pinker(2018)。。
在19世纪,没有一所学校教授分子生物学,因为无人知晓。直到20世纪,DNA被发现。现在,它成为受教育人士应掌握的基础知识。类似地,算法在古代就已存在,但仅有极少数人与之相关,直至现代计算机的出现。我相信,现在已到这样的时间点,算法将被认为是核心基础知识之一。除非我们知道算法是什么和它们如何运作,否则我们将无法理解它们能做什么,它们如何影响我们,如何通过算法得到预期结果,它们的限制是什么,以及它们正常运作的条件,等等。在依赖算法的日常生活中,提醒每位公民对算法有所了解是理所当然的。
学习算法可能以另一种方式对我们有所帮助。如果说学数学使我们有严谨的推理能力,那么了解算法会使我们具备一种崭新的算法思维模式,即把推理变成求解问题的实际步骤。这样,有效的算法实现(如程序)可在计算机中快速运行。即便我们不是专业程序员,设计实用且有效的求解步骤也是一种有益的思考方式。
了解算法会使我们具备一种崭新的算法思维模式,
即把推理变成求解问题的实际步骤。
这样,有效的算法实现(如程序)
可在计算机中快速运行。
本书的目的是向非专业人士介绍算法,使读者理解算法如何运作,而不是阐述算法在生活中的作用。有些书籍在某些方面做了杰出工作,如介绍如何改善大数据的处理,讨论将人工智能和计算设备融入日常生活对人类生存条件的改变。本书对“发生什么”不感兴趣,对“如何发生”感兴趣。为此,我们给出一些真实的算法,不仅描述它们做什么,更重要的是关注它们如何运作。我们将提供详细的解释说明,而非粗略的介绍。
“算法是什么?”答案非常简单,算法是求解问题的特定方法。这些求解方法可用一系列简单的求解步骤来描述,每步可由计算机快速且高效地执行。然而,这些解决方法并不神秘。它们仅由简单步骤组成这一客观事实,意味着算法不可能超越多数人的理解能力。
事实上,本书没有超出普通高中所学的知识。在书中会出现一些数学运算符号,因为如果没有它们,我们无法严谨地讨论算法。若某概念在算法中常用,但在计算机科学之外并不常用,则书中会给予解释。
已故物理学家斯蒂芬·霍金在1988年出版的畅销书《时间简史》的序言中写道:“有人告诉我,书中每加入一个方程都会使其销量减半。”这听起来好像是不祥的预告,因为数学符号确实在本书中多次出现。然而,鉴于两个缘由,我决定顶住压力继续这样做。第一,霍金的物理知识所需的数学水准是大学或更高层次,而本书所用的数学知识要简单得多。第二,本书的目的不仅是呈现算法做什么,更要表达它们怎么做。
在讨论算法时,读者应学会使用一些词汇,其中包括一些数学符号。符号不是技术人员的专属,熟悉它们有助于消除该学科的神秘感。最后,我们会明白,用这些符号能精确定量地谈论一些事情。
像这样的一本书不可能涵盖算法的方方面面,但可提供一份概述,向读者介绍算法的思维模式。第1章通过介绍“什么是算法”以及“如何评价算法性能”来奠定基础。随后可以说,算法是可用笔在纸上完成的有限步骤序列,这个简洁的描述与实际情况相差无几。第1章开始探讨算法和数学符号之间的关系,这两者间的主要差异是其实用性。对算法而言,我们感兴趣的是解决问题的实用方法,需要度量算法的实用性和有效性。我们会看到这些问题可用计算复杂度的概念来构建。
随后的三章是算法的三个最基本的应用领域。第2章介绍处理网络(或图)相关问题的算法。这些问题可能包括道路网络中的路径问题,社交网络中你和其他人的关联问题,以及在关系上并不明显相关的其他领域,如DNA测序和比赛调度。这些讨论表明可用相同的方法有效解决不同的问题。
第3章和第4章分别探讨如何搜索东西和把东西按一定顺序进行排列的问题。这些看似平淡无奇,却是计算机最重要的应用。计算机消耗大量时间来排序和搜索,但我们并未注意到这一事实,因为它们在多数应用中对用户是透明的。排序和搜索会使我们看到算法的重要一面。对某些问题,我们知道可用多个算法来解决,可根据某些特殊属性来选择这些算法,有些算法会比其他算法更适合。因此,了解不同算法如何解决相同问题是有益的。
其后两章介绍大型算法的重要应用。第5章用图来解释PageRank算法,该算法用于网页重要性的排序。PageRank是谷歌成立之初所使用的算法,该算法对搜索结果中的网页排序起着关键作用。有幸的是,了解PageRank算法的工作原理并不困难。这使我们明白算法如何解决看似不可能由计算机解决的问题:如何判断什么是重要的?
第6章介绍计算机科学中最活跃的领域:神经网络和深度学习。神经网络的成功在大众媒体上有所报道,图像分析、自动翻译或医学诊断等应用激起了人们的兴趣。我们从简单的单个神经元开始,构建大规模的神经网络来完成复杂任务。我们知道这些神经元是在一些基本原理的基础上运作的。这些神经网络工作效率的提升来自简单神经元的互连和使神经网络具有学习能力的算法应用。
在概述算法可做什么之后,在后记中探讨了计算的局限性。我们知道计算机已具有非凡的特性,但还是希望它在未来能做得更多,但是否存在计算机也不能做的事?我们对计算局限性的讨论可以对算法和计算的本质作更精确的解释说明。之前,我们把算法描述为一组可用笔在纸上完成的有限步骤序列,但这些步骤是什么样的?笔和纸如何贴切地类比真正的算法?

上架指导

计算机\算法

封底文字

算法不是一行行神秘的代码,
而是你我都应具备的一种思维模式。


在计算机出现之前,算法就已经存在了。了解经典算法的起源,不仅是因为我们身处信息时代,更是因为算法的底层逻辑和应用可以为我们的工作、生活提供解决问题的新思路。
本书从最基础的“什么是算法”开始讨论,首先介绍如何评价算法的性能,然后展开讨论与图、搜索和排序相关的经典算法,解释“算法是怎么运作的”,最后介绍PageRank和深度学习两个大型算法应用。本书用通俗易懂的语言来描绘算法世界,穿插有趣的文化历史故事和简单易懂的例子,不涉及艰深的数学知识,即使非专业人士也能轻松读懂。

作者简介
帕诺斯·卢里达斯
(Panos Louridas)
曼彻斯特大学软件工程博士,现为雅典经济与商业大学管理科学与技术系副教授,研究兴趣包括算法应用、软件工程、安全和实用密码学等。著有《真实世界的算法:初学者指南》。在加入高校之前,他曾在投资银行担任高级软件工程师。

译者简介
吴向军 博士,中山大学副教授。主要研究方向为人工智能和算法设计等,近年来主要从事智能规划领域的研究和规划系统的设计与开发工作。
边芮 博士,广东财经大学讲师。主要研究方向为人工智能和知识工程等,近年来主要从事智能规划和信息管理系统等方面的研究。


精彩导读
了解算法会使我们有一种崭新的算法思维模式,把推理变成求解问题的实际步骤。
你可能认为算法是计算机所做的事,但该想法是错的。之所以是错的,是因为在计算机出现之前,算法就已存在很久了。
若算法是一组我们自己能执行的步骤,则程序是用计算机能理解的符号编写这些步骤的活动。
图的定义是宽泛的,只要某种东西可以被表达为事物之间的关联,就可将其视为图。
搜索以不同形式出现在各种环境中。好的搜索算法会加快执行速度。
虽然所有排序算法都能使排序对象变得有序,但每个算法都有更适合的应用场景。
一个网页累积的链接越多,该网页就显得越重要。
人工神经元要比生物神经元简单得多,虽然生物神经元的工作方式可用简单模型来解释,但正是由于大量相连的生物神经元,我们所了解的智能才得以呈现。

作者简介

[希]帕诺斯·卢里达斯(Panos Louridas) 著 :帕诺斯·卢里达斯(Panos Louridas) 曼彻斯特大学软件工程博士,现为雅典经济与商业大学管理科学与技术系副教授,研究兴趣包括算法应用、软件工程、安全、实用密码学等。著有《真实世界的算法:初学者指南》。在加入高校之前,他曾在投资银行担任高级软件工程师。

---译者简介---
吴向军 博士,中山大学副教授。主要研究方向为人工智能和算法设计等,近年来主要从事智能规划领域的研究和规划系统的设计与开发工作。

边芮 博士,广东财经大学讲师。主要研究方向为人工智能和知识工程等,近年来主要从事智能规划和信息管理系统等方面的研究。

译者序

算盘是中国古代发明的一种简单而又高效的计算工具,有关算盘的知识是20世纪90年代前小学生必学的内容之一。珠算口诀是算盘计算方法的表现形式,正确运用珠算口诀会得到正确的计算结果。按“算法”的原始含义来说,珠算口诀就是一种算法。
作者把算法和音乐节奏有趣地联系起来。作曲家在谱曲时,按自己构思的主旋律把各种音符有序地谱写下来,然后用乐器演奏,演奏的结果是一连串悦耳的声音。若乐器发出不搭调的杂音,就说明乐谱有瑕疵,相当于计算机程序中的漏洞(或bug)。所以,伟大的贝多芬肯定是一位杰出的音乐程序员,其作品《命运交响曲》无疑是用音符谱写的经典“程序”。
人工智能是计算机学科的一个研究和应用热点。作者在本书中呈现了19世纪末西班牙生物学家Ramón y Cajal所绘的神经元示意图,该图反映出神经元的特殊结构。人工智能研究者根据该神经元示意图设计出神经元模型,并通过“学习”来调整模型中的参数,从而模拟神经元的不同行为。由此可见,人工智能也是一个仿生学的研究方向,模仿人类的大脑活动也许比其他仿生研究更具有挑战性。
本书是一本计算机算法方面的科普性书籍,作者以通俗易懂、引人入胜的叙述方式介绍各种算法思想,避免使用一些过于严谨的专业术语。比如,用“大海捞针”来形容一种搜索算法就非常形象,顾名思义,广大读者更容易理解该搜索策略。本书适合对计算机知识有兴趣的初中生、高中生或其他相关人员阅读。计算机专业一、二年级的大学生阅读此书,也会对相关知识的起源有深刻的印象。
感谢曲熠编辑的信任,使我们有缘接触到算法方面的科普知识。对于书中的音乐知识,我们请教了谢秀燕老师和钟科老师,从而使相关译文能使用较准确的音乐术语和象声词来表述。在翻译特定技术词语时,我咨询了老同学严国平先生和黄志毅先生(现都移居新西兰),他们对我的求助给予了及时而又准确的回复,这使我对译文更有信心。对于译文中的一些词语,我们还请教了学校图书馆的陈璇老师,她的帮助使译文更加通顺。在此,对他们表示衷心感谢。
感谢刘顺平所做的辅助工作,他初译了前言、致谢和作者简介等,并整理了参考文献和延伸阅读等。他的辅助工作使得翻译进度加快。
在翻译安排上,第3章和第4章由边芮翻译,其余章节由吴向军翻译。初译后,我们对照式地阅读了彼此的译文,努力兼顾原文的本意和译文的通顺。我们虽已尽力,但无奈知识储备有限,译文中难免会出现偏差或误译。在此,敬请广大读者批评、指教!

译者
2022年4月

图书目录

译者序
前言
致谢
第1章 什么是算法1
 算法时代1
 做事的方法3
 第一个算法8
 算法、计算机和数学12
 评价算法17
 常见的时间复杂度20
第2章 图27
 从图到算法30
 路径和DNA32
 锦标赛赛程安排36
 最短路径42
第3章 搜索51
 大海捞针52
 马太效应与搜索54
 开普勒、汽车和秘书58
 二分搜索60
第4章 排序65
 简单的排序方法68
 基数排序72
 快速排序76
 合并排序83
第5章 PageRank算法89
 基本原理93
 一个示例95
 超链接矩阵和幂方法98
 悬空节点和随机浏览104
 Google矩阵106
 PageRank算法的应用111
第6章 深度学习113
 生物神经元和人工神经元113
 学习过程120
 从神经元到神经网络126
 反向传播算法128
 识别衣物131
 深度学习的应用139
后记143
术语表151
参考文献171
延伸阅读176

教学资源推荐
作者: 万珊珊 吕橙 郭志强 李敏杰 张昱 编著
作者: (美)Robert Sedgewick, (法)Philippe Flajolet
作者: 王立柱
作者: 陈火红 杨剑 薛小香 王朋波
参考读物推荐
作者: Tom St Denis;Simon Johnson
作者: (美)Tim Mather;Subra Kumaraswamy;Shahed Latif 著
作者: [美]迈克尔·吉内塞雷斯(Michael Genesereth),[美]维奈·K.乔杜里(Vinay K. Chaudhri) 著
作者: 华诚科技 编著