算法详解(卷2):图算法和数据结构

[美] 蒂姆·拉夫加登(Tim Roughgarden)
内容提要 算法详解系列图书共有4卷,本书是第2卷—图算法和数据结构。本书共有6章,主要介绍了3个主题,分别是图的搜索和应用、最短路径以及数据结构。附录简单回顾了渐进性表示法。本书的每一章均有小测验、章末习题,这为读者的自我检查以及进一步学习提供了方便。 本书提供了丰富而实用的资料,能够帮助读者提升算法思维能力。本书适合计算机专业的高校教师和学生,想要培养和训练算法思维和计算思维的IT专业人士,以及正在准备面试的应聘者和面试官阅读参考。 前  言 本书是在我的在线算法课程基础之上编写的,是4卷本系列的第2卷,第1卷是《算法详解(卷1)——算法基础》。这个在线课程2012年起就定期发布,它建立在我在斯坦福大学讲授多年的本科课程的基础之上。这个系列的卷1并不是阅读卷2的先决要求,任何符合下面“本书的目标读者”中所描述背景并熟悉渐进性表示法(附录对这个主题进行了回顾)的读者均适合阅读本书。 本书涵盖的内容 本书介绍了下面3个主题的基础知识。 图的搜索和应用 图可用于对许多不同类型的网络(包括道路网、通信网络、社交网络,以及多任务之间的依赖性网络)进行建模。图可能非常复杂,但图存在一些运算速度非常快的基本算法。我们首先讨论对图进行搜索的线性算法。该算法应用范围极广,包括网络分析以及任务序列化等。 最短路径 最短路径问题的目标是计算网络中从点A到点B的最佳路线。这个问题具有一些显而易见的应用,例如计算行车路线等。许多更为通用的规划问题的本质就是计算最短路径。我们将对其中一种图搜索算法进行归纳,进而引出著名的Dijkstra最短路径算法。 数据结构 本书将帮助读者熟悉几种不同的数据结构,它们用于维护不断变化的具有键的对象集合。我们的基本目标是培养一种能力,也就是能够判断哪种数据结构比较适合自己的应用。选读的高级章节为如何从头实现这些数据结构提供了一些指导方针。 我们首先讨论堆,它可…