# 图的矩阵表示
# 邻接矩阵 (adjacency matrix 或 connection matrix)
设 G=(V,E) 是一简单图 (有向或无向),|V|=n ,并且设V={v1,v2...vn} 已被强行命名。则定义 n 阶方阵
A=(aij)n×n, 其中:
aij={1,0,若(vi,vj)∈E若(vi,vj)∈/E
为图 G 的邻接矩阵。
图 G 是无向图⟺ 其邻接矩阵是对称矩阵。
结论:
- 每个简单 (有向或无向) 图都与一 个主角线元素全为零的 0~1 方阵对应;每个主角线元素全为零的 0~1 方阵都与一 个简单图对应;
- 对于一个(n,m)− 图来说,由于 n 个结点有n! 种强行命名法,故应有n! 个邻接矩阵。从《线性代数》的知识可知:矩阵的行与列顺序对调,是对矩阵进行了所谓的基本初等变换。而对矩阵施行基本初等变换,不会改变矩阵的本质性质 —— 即这n! 个主角线元素全为零的 0~1 方阵都表示同一个图
- 两个简单图同构⟺ 其邻接矩阵经过行与列的顺序对调后,相同;
- 一图 G 是零图⟺ 其邻接矩阵 A 是全 0 矩阵;
- 图 G 是完全图⟺ 其邻接矩阵 A 除主对角线外均是 1
- 在有向图 G 的邻接矩阵 A 中
其行和等于对应结点的出度。即k=1∑naik=dev(vi)
其列和等于对应结点的进度。即k=1∑naki=dev(vi)
同一编号的行和列的和相加等于对应结点的度。即
k=1∑naik+k=1∑naki=k=1∑n(aki+aik)=dev(vi)
全部 1 的个数等于边数。即j=1∑ni=1∑naij=m
- 在无向图 G 的邻接矩阵 A 中
其行和等于对应结点的度。即k=1∑naik=dev(vi)
其列和等于对应结点的度。即k=1∑naik=dev(vi)
全部 1 的个数等于边数的 2 倍。即j=1∑ni=1∑naij=2m
# 关联矩阵 (incidence matrix)
设 G=(V,E) 是一简单图 ( 有向或无向 ),|V|=n,|E|=m , 并且设V={v1,v2,...,vn} , E={e1,e2,...,em} 已被强行命名。则 定义n×m 阶矩阵B=(bij)n×m 为图 G 的关联矩阵。其中:(1) 若 G 是有向图,则
bij=⎩⎪⎪⎨⎪⎪⎧1,0,−1,如果结点vi是边ej的起点如果结点vi与边ej的不关联如果结点vi是边ej的终点
(2) 若 G 是无向图,则
bij={1,0,如果结点vi与边ej的关联如果结点vi与边ej的不关联
有向图的关联矩阵的特点是每列一个正 1,一个负 1。这正好对应相应边的起点和终点。
# 可达矩阵 (reachable matrix)
设 G=(V,E) 是一简单图 (有向或无向),|V|=n ,并且设V={v1,v2...vn} 已被强行命名。则定义 n 阶方阵
R=(rij)n×n, 其中:
rij={1,0,若从结点vi可达结点vj若从结点vi不可达结点vj
为图 G 的可达矩阵
- 对于有向图
从结点vi 可达结点vj⟺ 从结点vi 到结点vj 至少有一条有向路
从结点vi 不可达结点vj⟺ 从结点vi 到结点vj 没有有向路
- 对于无向图
从结点vi 可达结点vj⟺ 从结点vi 到结点vj 至少有一条路
从结点vi 不可达结点vj⟺ 从结点vi 到结点vj 没有路
# 邻接矩阵的布尔幂
设 G=(V,E) 是一简单图 (有向或无向),n 阶方阵 A 是图 G 的邻接矩阵。则递归的定义邻接矩阵 A 的布尔幂
- A(1)=A
- A(m+1)=A(m)∧A
其中:a(m+1)=k=1⋁n(aik(m)∧aki)(1⩽i⩽n,1⩽j⩽n)
这里∧ 和∨ 都是二元布尔运算:布尔乘和布尔和
可达矩阵的计算方法一:(矩阵幂算法)
可达矩阵
R=A∨A(2)∨A(3)∨A(4)⋯∨A(n)
这里∨ 是布尔和
# 可达矩阵与图的连通性
- 有向图 G 强连通⟺ 可达矩阵 R 是全 1 矩阵;
- 有向图 G 单向连通⟺R∧RT 除主对角线外均是 1;
- 有向图 G 弱连通⟺ 由矩阵A1=A∧AT 所确定的可达矩阵 R 是全 1 矩阵;
- 有向图 G 中有有向圈⟺ 可达矩阵 R 的某些主对角线元素rii=1
# 带权图的最短路径
# 带权图 (weighted digraph)
设G=(V,E) 是一简单图。称一元函数 $ w:E\to R^+$ 为图 G 的权函数,使得对于每一条边e∈E,均有一正实数w(e)∈R+ 与之对应,称图 G 为带有权 w 的图,简称为带权图。并记为G=(V,E,w)。
带权图有时也称为网络 (network)。
# 最短路 (shortest path)
设G=(V,E) 是一带权图。
- 设P=(ei1,ei2,...,eik) 是 G 中的一条路。则路 P 的路长定义为:
w(p)=j=1∑kw(eij)
- 从结点 u 到结点 v 的最短路P0 是满足下述条件的路
$w (P_0)=min {w§ |P 为从 u 到 v 的路} $。
当带权图中各边的权值都为 1 时,则路长的定义就退化为 §3 一般图的路长定义了。
# Dijkstra 算法
略