Skip to Content
算法技术手册(原书第2 版)
book

算法技术手册(原书第2 版)

by George T.Heineman, Gary Pollice, Stanley Selkow
August 2017
Intermediate to advanced
360 pages
8h 35m
Chinese
China Machine Press
Content preview from 算法技术手册(原书第2 版)
图算法
143
图算法
6-12Dijkstra 算法扩展集合
S
6.4.1 输入 / 输出
输入是一个有向带权图
G
= (
V
,
E
)
以及一个源顶点
s
V
。图中每一条边
e
= (
u
,
v
)
都有一
个相关联的非负权值。
Dijkstra
算法
生成了两个计算数组。其中主要的计算结果是数组
dist[]
它的值表示了
从源顶点
s
到图中每个顶点的距离次要的计算结果是数组
pred[]
它用于构造从源
s
到图中每个顶点的实际最短路径。
边的权值是非负数(即大于等于
0
),如果这个假设不成立,那么
dist[]
值有可能包
含无效值。更糟糕的是,如果图中存在一个负值环(即环上的权值之和为负数),那么
Dijkstra
算法
将会陷入死循环。
6.4.2 决方案
Dijkstra
算法
的执行过程中,
dist[v]
代表了从源顶点
s
v
的最短路径的最大长度,
且路径只使用
S
集合中的顶点。对于每一个顶点
v
S
dist[v]
都是正确的。所幸的是,
Dijkstra
算法
并不需要真正地计算和维护集合
S
。它只需要在最开始创建一个包含
V
所有顶点的集合,然后每次从集合中拿出一个顶点,计算出正确的
dist[v]
。为了方
便起见,我们使用
V
-
S
来指代这个不断缩减的集合。当所有顶点都被访问或者从源
s
无法访问时,
Dijkstra
算法
结束。
在例
6-3
C++
实现中,我们使用了优先队列来存储
V
-
S
中的顶点。在这里优先队
列是
二叉堆
,因为我们可以在常数时间内找到
优先级最小
的顶点(优先级是顶点到
s
的距离)。此外,当
s
v
的最短路径找到之后 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

机器学习实战:基于Scikit-Learn、Keras 和TensorFlow (原书第2 版)

机器学习实战:基于Scikit-Learn、Keras 和TensorFlow (原书第2 版)

Aurélien Géron
Go语言编程

Go语言编程

威廉·肯尼迪

Publisher Resources

ISBN: 9787111562221