Skip to content

5.8.6 有向图中的路

1. 弧序列

有向图中一个弧序列 F=(e1,e2,,es) 称为一个长 s 的链,当且仅当 F 不两次含有任何一条弧并且每条弧 ei(i=2,3,,s1) 的端点之一是 ei1 的一个端点,而另外一个是 ei+1 的一个端点.

一个链称作有向链,当且仅当对于 i=1,2,,s1ei 的终点与 ei+1 的始点相重合.

遍历每个顶点至多一次的链或有向链分别称为基本链和基本有向链.

闭链称为圈. 一条闭有向路, 若它的每个顶点恰是两条弧的端点, 则称为环道.

  • 图 5.60 包含不同种类的弧序列.

019363af-d8ae-7006-ac42-15a9aafbc2ce_190_407_546_821_184_0.jpg

2. 连通图和强连通图

有向图 G 称为连通的,当且仅当对于任何两个顶点存在一条连接它们的链. 图 G 称为强连通的,当且仅当对于任何两个顶点 v,w 存在一条给定的连接它们的有向链.

3. 丹齐格算法

G=(V,E,f) 是一个加权简单有向图,并且对于每条弧 e,f(e)>0 . 下列算法产生 G 的所有这样的顶点,它们通过有向链与一个固定顶点 v1 连接,并且它们与 v1 的距离:

a) 顶点 v1 有标号 t(v1)=0 . 令 S1={v1} .

b) 被加标号的顶点的集合是 Sm .

c) 如果 Um={ee=(vi,vj)E,viSm,vjSm}= ,那么算法结束.

d) 不然我们选取弧 e=(x,y) 使得 t(x)+f(e) 极小. 将 ey 加标号,并且令 t(y)=t(x)+f(e) ,以及 Sm+1=Sm{y} ,并且重复 b),其中 m:=m+1 .

(如果所有弧的权是 1, 那么可以应用关联矩阵 (参见第 541 页 5.8.2.1, 4.) 求出从顶点 v 到顶点 w 的最短有向链的长.)

如果 G 的顶点 v 未被加标号,那么不存在从 v1v 的有向路.

如果 v 有标号 t(v) ,那么 t(v) 是这样的有向链的长. 在由被加标号的弧和顶点给出的树中可以找到从 v1v 的最短有向路,即对于 v1 的距离树.

  • 在图 5.61 中,加标号的弧和顶点表示图中对于 v1 的距离树. 最短有向链的长是

v1v3:2 ,从 v1v6:7 ,

v1v7:3 ,从 v1v8:7 ,

v1v9:3 ,从 v1v14:8 ,

v1v2:4 ,从 v1v5:8 ,

v1v10:5 ,从 v1v12:9 ,

v1v4:6 ,从 v1v13:10 ,

v1v11:6 .

019363af-d8ae-7006-ac42-15a9aafbc2ce_191_594_491_452_439_0.jpg

注 在 G=(V,E,f) 有带负权的弧的情形,还有一个修饰的求最短有向链的算法.

version 1.24.0