图论模型
基础理论
1.无向图与有向图
- 有向图的边称为弧,有向图一般记为 D = ( V , A ) D=(V,A) D=(V,A),其中 V V V 为顶点集, A A A 为弧集。
- 边的表示 ( v i , v j ) (v_i,v_j) (vi,vj),弧的表示 < v i , v j > <v_i,v_j> <vi,vj>。
2.简单图与完全图
- 无环且无重边的图称为简单图。
- 上图中, e 2 e_2 e2 和 e 3 e_3 e3 为重边, e 5 e_5 e5 为环。
- 任意两点均相邻的简单图称为完全图。含 n n n 个顶点的完全图记为 K n K_n Kn.
3.赋权图
- 赋权图中的权可以是距离、费用、时间、效益、成本等。
4.顶点的度
- 出度记为 d + ( v ) d^+(v) d+(v),入度记为 d − ( v ) d^-(v) d−(v).
- 度数为奇数的顶点称为奇顶点,度为偶数的顶点称为偶顶点。
定理 给定图
G
=
(
V
,
E
)
G=(V,E)
G=(V,E),所有顶点的度数之和是边数的2倍,即
∑
v
∈
V
d
(
v
)
=
2
∣
E
∣
\sum_{v \in V} d(v)=2|E|
v∈V∑d(v)=2∣E∣
5.子图
- 如果 G 1 G_1 G1 是 G 2 G_2 G2 的子图,且 V 1 = V 2 V_1=V_2 V1=V2,则称 G 1 G_1 G1 是 G 2 G_2 G2 的生成子图。
6.道路与回路
- 设 W = v 0 e 1 v 1 e 2 . . . e k v k W=v_0e_1v_1e_2...e_kv_k W=v0e1v1e2...ekvk,路长为边的个数 k k k
- 各边相异的道路称为迹,各顶点相异的道路称为轨道。
- 以顶点 u , v u,v u,v 分别为起点和终点的最短轨道之长为顶点 u , v u,v u,v 的距离。
7.连通图与非连通图
- 如果无向图 G G G 中任意两个顶点 u u u 和 v v v 之间是连通的,则称图 G G G 是连通图。
- 在有向图 G G G 中,如果对于任意两个顶点 u u u 和 v v v,从 u u u 到 v v v 和 从 v v v 到 u u u 都存在道路,则称图 G G G 是强连通图。
图的表示
1.关联矩阵
对于无向图,关联矩阵
M
=
(
m
i
j
)
n
×
m
\boldsymbol{M}=\left(m_{i j}\right)_{n \times m}
M=(mij)n×m:
m
i
j
=
{
1
,
v
i
与
e
j
相关联,
0
,
v
i
与
e
j
不关联.
m_{i j}=\left\{\begin{array}{ll} 1, & v_{i} \text { 与 } e_{j} \text { 相关联, } \\ 0, & v_{i} \text { 与 } e_{j} \text { 不关联. } \end{array}\right.
mij={1,0,vi 与 ej 相关联, vi 与 ej 不关联.
对于有向图,关联矩阵
M
=
(
m
i
j
)
n
×
m
\boldsymbol{M}=\left(m_{i j}\right)_{n \times m}
M=(mij)n×m:
m
i
j
=
{
1
,
v
i
是
e
j
的起点,
−
1
,
v
i
是
e
j
的终点,
0
,
v
i
与
e
j
不关联.
m_{i j}=\left\{\begin{array}{ll} 1, & v_{i} \text { 是 } e_{j} \text { 的起点, } \\ -1, & v_{i} \text { 是 } e_{j} \text { 的终点, } \\ 0, & v_{i} \text { 与 } e_{j} \text { 不关联. } \end{array}\right.
mij=⎩
⎨
⎧1,−1,0,vi 是 ej 的起点, vi 是 ej 的终点, vi 与 ej 不关联.
2.邻接矩阵
对于有向非赋权图,其邻接矩阵
W
=
(
w
i
j
)
n
×
n
\boldsymbol{W}=\left(w_{i j}\right)_{n \times n}
W=(wij)n×n:
w
i
j
=
{
1
,
⟨
v
i
,
v
j
⟩
∈
A
0
,
⟨
v
i
,
v
j
⟩
∉
A
w_{i j}=\left\{\begin{array}{ll} 1, & \left\langle v_{i}, v_{j}\right\rangle \in A \\ 0, & \left\langle v_{i}, v_{j}\right\rangle \notin A \end{array}\right.
wij={1,0,⟨vi,vj⟩∈A⟨vi,vj⟩∈/A
最大流问题
- 公路系统有车辆流、物资调配系统有物资流、金融系统有现金流,这些流问题都可归结为网络流问题,如何安排使流量最大,即最大流问题。
1.基本概念
- 网络上的流,是指定义为弧集合 A A A 上的一个函数 f = { f i j } = { f ( v i , v j ) } f=\left\{f_{ij}\right\}=\left\{f(v_i,v_j)\right\} f={fij}={f(vi,vj)}, f i j f_{ij} fij 为弧 ( v i , v j ) (v_i,v_j) (vi,vj) 上的流量。
- 满足下列条件的流
f
f
f 称为可行流:
(1)容量限制条件:对每条弧 ( v i , v j ) ∈ A , 0 ⩽ f i j ⩽ c i j \left(v_{i}, v_{j}\right) \in A, 0 \leqslant f_{i j} \leqslant c_{i j} (vi,vj)∈A,0⩽fij⩽cij
(2)平衡条件:对于中间点,流出量=流入量,即对于每个 i ( i ≠ s , t ) i(i \neq s, t) i(i=s,t)有
∑ j : ( v i , v j ) ∈ A f i j − ∑ j : ( v j , v i ) ∈ A f j i = 0 \sum_{j:\left(v_{i}, v_{j}\right) \in A} f_{i j}-\sum_{j:\left(v_{j}, v_{i}\right) \in A} f_{j i}=0 j:(vi,vj)∈A∑fij−j:(vj,vi)∈A∑fji=0
最大流问题可以写为如下线性规划模型:
max v s . t . { ∑ j : ( v i , v j ) ∈ A f i j − ∑ j : ( v j , v i ) ∈ A f j i = { v , i = s − v , i = t 0 , i ≠ s , t 0 ⩽ f i j ⩽ c i j , ∀ ( v i , v j ) ∈ A \begin{array}{l} \max v \\ s.t.\left\{\begin{array}{ll} \sum_{j:\left(v_{i}, v_{j}\right) \in A} f_{i j}-\sum_{j:\left(v_{j}, v_{i}\right) \in A} f_{j i}=\left\{\begin{array}{ll} v, & i=s \\ -v, & i=t \\ 0, & i \neq s, t \end{array}\right.\\ 0 \leqslant f_{i j} \leqslant c_{i j} , \forall \left(v_{i}, v_{j}\right) \in A \end{array} \right. \end{array} maxvs.t.⎩ ⎨ ⎧∑j:(vi,vj)∈Afij−∑j:(vj,vi)∈Afji=⎩ ⎨ ⎧v,−v,0,i=si=ti=s,t0⩽fij⩽cij,∀(vi,vj)∈A
最小费用流问题
- 在许多实际问题中,还需要考虑网络上流的费用问题。例如,在运输问题中,人们总是希望在完成运输任务的同时,寻求一个使总的运输费用最小的运输方案。
- 设
b
i
j
b_{ij}
bij 为弧上的单位费用,则最小费用流问题可用如下线性规划问题描述:
max ∑ ( v i , v j ) ∈ A b i j f i j s . t . { ∑ j : ( v i , v j ) ∈ A f i j − ∑ j : ( v j , v i ) ∈ A f j i = { v , i = s − v , i = t 0 , i ≠ s , t 0 ⩽ f i j ⩽ c i j , ∀ ( v i , v j ) ∈ A \begin{array}{l} \max \sum_{(v_i,v_j)\in A}^{} b_{ij}f{ij} \\ s.t.\left\{\begin{array}{ll} \sum_{j:\left(v_{i}, v_{j}\right) \in A} f_{i j}-\sum_{j:\left(v_{j}, v_{i}\right) \in A} f_{j i}=\left\{\begin{array}{ll} v, & i=s \\ -v, & i=t \\ 0, & i \neq s, t \end{array}\right.\\ 0 \leqslant f_{i j} \leqslant c_{i j} , \forall \left(v_{i}, v_{j}\right) \in A \end{array} \right. \end{array} max∑(vi,vj)∈Abijfijs.t.⎩ ⎨ ⎧∑j:(vi,vj)∈Afij−∑j:(vj,vi)∈Afji=⎩ ⎨ ⎧v,−v,0,i=si=ti=s,t0⩽fij⩽cij,∀(vi,vj)∈A - 当 v v v 是最大流 v m a x v_{max} vmax 时,本问题就是最小费用最大流问题。