算法(第5部分)
2010-1
机械工业出版社
塞奇威克
303
霍红卫
无
图和图算法在现代计算机应用中颇为常见。对于在实际中出现的一些图处理问题,本书描述了目前最重要的解决方法。由于需要相关知识的人日渐增多,本书的主要目标是使读者了解这些方法及其所蕴含的基本原理。本书从基本原理展开,并从基本信息开始,从经典方法到现代仍在研发中的技术逐一展开讨论。精心选择的示例、详尽的图表以及完善实现的补充材料无一不体现在算法和应用的描述中。 算法 本书是对当前使用的最重要的计算机算法进行深入研究的三卷中的第二卷:图算法。第一卷(第1~4部分)覆盖了基本概念(第1部分)、数据结构(第2部分)、排序算法(第3部分)和搜索算法(第4部分);本卷(第5部分)覆盖了图与图算法;(尚未出版的)第三卷(第6~8部分)覆盖了字符串(第6部分)、计算几何(第7部分)和高级算法及应用(第8部分)。 这些书可作为计算机科学低年级本科生的教材。学习本课程之前要求学生掌握基本程序设计技巧并熟知计算机系统,不过尚未选修计算机科学或计算机应用的高级领域的专业课程。这些书还可用作自学或作为从事计算机系统或应用程序开发的参考读本,因为它们包含了实用算法的实现以及关于这些算法性能特征的详尽信息。这些书包含内容广泛,适合作为这一领域的入门读物。 多年以来,这三卷书共同构成的《算法:C语言实现》(第3版)已经得到世界各地的学生和程序员的广泛使用。我完全重写了这一版的内容,并且增加了数千个新练习、数百个新图表、数十个新程序以及对图表和程序详尽的注释说明。这个新版本不仅涵盖了新的主题,而且还提供了对许多经典算法的更充分的解释。全书对抽象数据类型的强调使这些程序使用更为广泛,而且在现代面向对象的编程环境中也更为适用。对于已经阅读过以前版本的人来说,会从这一版找到更为丰富的信息;并且所有读者都会从中找到富有教益的内容,有效地学习本书提供的基本概念。 这些书适合于程序员和计算机科学专业的学生阅读。每一个使用计算机的人都希望它能运行得更快,或者可解决更大规模的问题。我们所考虑的算法代表了近50年发展起来的知识体系,该体系是在各种应用中有效地使用计算机解决问题不可缺少的部分。从物理学中的N?体模拟问题到分子生物学中的基因序列问题,在此所描述的基本方法在科学研究中已日显重要;另外,对于从数据库系统到Internet搜索引擎,这些方法已经成为现代软件系统的重要组成部分。随着计算机应用的覆盖面越来越广,基本算法的影响也日益显著,特别是本书所涵盖的基本图算法,作用更为突出。本书的目标是要提供一种资源,使广大学生以及专业人士可以了解并明智地利用图算法来解决计算机应用中出现的问题。
本书是深入论述算法的三卷本教程《算法:C语言实现》(第3版)中的第二卷——图算法。作者在这次修订中重写了许多内容,增加了数千个新练习、数百个新图表、数十个新程序,并对图表和程序做了详尽的注释说明。新版中不仅涵盖了新的主题,而且还提供了对许多经典算法的更充分的解释,包括图的性质、图搜索、有向图、最小生成树、最短路径和网。本书涵盖了足够的基本内容及较详细的图算法高级主题,既可单独用作数据结构与算法课程的教材,也可与第一卷(第1~4部分)结合使用。
本书适合高等院校计算机专业师生参考,也可供软件开发人员参考。
Robed Sedgewick,拥有斯坦福大学博士学位(导师为Donald E. Knuth),昔林斯顿大学计算机科学系教授,Adobe Systems公司董事,曾是XeroxPARC的研究人员,还曾就职于美国国防部防御分析研究所以及INRIA。除本书外,他还与Philippe Flajolet合著了《算法分析导论》一书
出版者的话
译者序
中文版序
前言
第五部分 图算法
第17章 图的性质及类型
17.1 术语
17.2 图的
17.3 邻接矩阵表示
17.4 邻接表表示
17.5 变量、扩展和开销
17.6 图生成器
17.7 简单路径、欧拉路径和哈密顿路径
17.8 图处理问题
第18章 图搜索
18.1 探索迷宫
18.2 深度优先搜索
18.3 图搜索ADT函数
18.4 DFS森林的性质
18.5 DFS算法
18.6 可分离性和双连通性
18.7 广度优先搜索
18.8 广义图搜索
18.9 图算法分析
第19章 有向图和有向无环图
19.1 术语和游戏规则
19.2 有向图中的DFS剖析
19.3 可达性和传递闭包
19.4 等价关系和偏序
19.5 有向无环图
19.6 拓扑排序
19.7 有向无环图中的可达性
19.8 有向图中的强连通分量
19.9 再论传递闭包
19.10 展望
第20章 最小生成树
20.1 表
20.2 MST算法的基本原理
20.3 Prim算法和优先级优先搜索
20.4 Kruskal算法
20.5 Boruvka算法
20.6 比较与改进
20.7 欧几里得
第21章 最短路径
21.1 基本原理
21.2 Dijkstra算法
21.3 所有对最短路径
21.4 无环网中的最短路径
21.5 欧几里得网
21.6 归约
21.7 负权值
21.8 展望
第22章 网络流
22.1 流网络
22.2 增大路径最大流算法
22.3 预流-推进最大流算法
22.4 最大流归约
22.5 最小成本流
22.6 网络单纯形算法
22.7 最小成本流归约
22.8 展望
第五部分参考文献
我们讨论的很多算法可以很容易改造为本节所讨论的所有变型算法,因为它们是以几种高级抽象操作为基础的,如“对于与顶点V邻接的每条边执行如下操作。”实际上,我们考虑的某些程序只在这种抽象操作的实现方法上有所不同而已。 为什么不能在更高级的抽象开发这些算法,然后讨论表示数据和实现相关操作的不同选项呢?就像我们在本书中的很多实例中所做的那样。这个问题的答案并不是一句话就能说清楚的。对于稀疏图常选择用邻接表,对于稠密图常选择用邻接矩阵,这些选择我们很清楚。在主要实现中,我们会直接选择这两种特殊表示中的其中一种,因为使用低级表示的代码中,算法的性能特征非常清晰,而且比起那些利用高级抽象编写的代码,该代码一般而言不难读懂和理解。 在某些实例中,算法设计决策依赖于表示的某些性质。在一个更高的抽象级上处理,可能使我们不了解这种依赖性的相关知识。如果我们知道某种表示将导致很差的性能,而另一种表示不会,在不适当的抽象级考虑算法时,就会存在不必要的风险。如常,我们的目标是精细实现,从而可以对性能做出准确的说明。 使用严格的抽象方法可以解决这些问题,我们建立算法中需要的抽象操作的抽象层次。添加一个ADT操作来测试一条边的存在性是一个例子(见练习17.1 9),我们还能建立与表示无关的代码,来处理与给定顶点邻接的每个顶点(见练习17.6 0)。在很多情况下,这样的方法很有意义。然而,在本书中,我们关注的是在稠密图上使用直接访问邻接矩阵的代码和在稀疏图上直接访问邻接表的代码的性能,并增大数据结构以适合所处理的任务。 到目前为止我们所讨论的所有操作是简单的而又必要的数据处理函数;本节要讨论的是第1—3部分的基本算法和数据结构对于处理这些函数是有效的。当开发更复杂的图处理算法时,我们在找出特定实际问题的最佳实现时面临更困难的挑战。为了说明这一点,考虑表17.1 中的最后一行,其中给出了确定两个给定顶点是否存在一条路径的开销。
对于在数学分析方面不算熟练且需要留意理论算法的普通程序员来说,本书是一本可读性很强的优秀读本。他们应该会从中获益良多。 ——Steve Summit,《C Programming FAQs》的作者 Sedgewick有一种真正的天赋,可以用易于理解的方式来解释概念。书中采用了一些易懂的实战程序,其篇幅仅有一页左右,这更是锦上添花。而书中大量采用的图、程序、表格也会极大帮助读者的学习和理解,这使本书更显得与众不同。 ——William A. Ward,南亚拉巴马大学
本书是Sedgewick彻底修订和重写的C算法系列的第二本,集中讲解图算法。全书共有6章 (第17~22章)。第17章详细讨论图性质和类型,第18~22章分别讲解图搜索、有向图和DAG、最小生成树、最短路径以及网络流。 书中提供了用C语言描述的完整算法源程序,并且配有丰富的插图和练习。作者用简洁的实现将理论和实践成功地结合了起来,这些实现均可在真实应用上测试,使得本书自问世以来备受程序员的欢迎。 本书可作为高等院校计算机相关专业算法与数据结构课程的教材和补充读物,也可供自学之用。
无
早就听说这本书是学图论相关算法的好书,今天拿到以后,随便翻看了一下,真的很不错,很全面
终于等到了想要的算法书
这个系列是学长推荐的,里面代码质量非常高,适合初学算法的同学阅读。
不过这本书对我来讲很难懂的!
经典好书。值得购买!
专业,涉及的较深,比较难,正在读
一个一个写也是有点罗梭
地方好
才开始读,准备寒假里把它啃完,呵呵
买来看看充实下自己 ,等了一段时间才买到
书是好书哦,不过翻译地不咋地。啥时候出第三分册?
过段时间看
这书真烂