图与网络模型及方法
基本概念与数据结构中的概念相同。最短路问题,最小生成树问题已在数据结构中学过,不再写。
- 网络最大流问题:
1. 定义:
▼ 什么是网络:
给一个有向图
D
=
(
V
,
A
)
D=(V,A)
D=(V,A),其中
A
A
A为弧集,在
V
V
V中指定了一点,称为发点(记为
v
s
v_{s}
vs),另一点称为收点(记为
v
t
v_{t}
vt),其余的点叫中间点,对应每一条弧
(
v
i
,
v
j
)
∈
A
(v_{i},v_{j})\in A
(vi,vj)∈A,对应有一个
c
(
v
i
,
v
j
)
≥
0
(
也
可
简
写
为
c
i
j
)
c(v_{i},v_{j})\geq 0(也可简写为c_{ij})
c(vi,vj)≥0(也可简写为cij),称为弧的容量。把这样的有向图
D
D
D叫做一个网络,记为
D
=
(
V
,
A
,
C
)
,
其
中
C
=
c
i
j
D=(V,A,C),其中C={c_{ij}}
D=(V,A,C),其中C=cij;
▼ 什么是网络上的流:
指定义在弧集合
A
A
A上的一个函数
f
=
f
i
j
=
f
(
v
i
,
v
j
)
f={f_{ij}}={f(v_{i},v_{j})}
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
(v_{i},v_{j})\in A
(vi,vj)∈A,
0
≤
f
i
j
≤
c
i
j
0 \leq f_{ij} \leq c_{ij}
0≤fij≤cij
(2)平衡条件:对应中间点,流出量=流入量,即对应每个
i
,
(
i
≠
s
,
t
)
i,(i ≠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:(v_{i},v_{j}) \in A}^{}{f_{ij}}-\sum_{j:(v_{j},v_{i}) \in A}^{}{f_{ji}}=0,
j:(vi,vj)∈A∑fij−j:(vj,vi)∈A∑fji=0,
对于发点
v
s
,
记
v_{s},记
vs,记
∑
j
:
(
v
s
,
v
j
)
∈
A
f
s
j
−
∑
j
:
(
v
j
,
v
s
)
∈
A
f
j
s
=
0
,
\sum_{j:(v_{s},v_{j}) \in A}^{}{f_{sj}}-\sum_{j:(v_{j},v_{s}) \in A}^{}{f_{js}}=0,
j:(vs,vj)∈A∑fsj−j:(vj,vs)∈A∑fjs=0,
对于收点
v
s
,
记
v_{s},记
vs,记
∑
j
:
(
v
t
,
v
j
)
∈
A
f
t
j
−
∑
j
:
(
v
j
,
v
t
)
∈
A
f
j
t
=
0
,
\sum_{j:(v_{t},v_{j}) \in A}^{}{f_{tj}}-\sum_{j:(v_{j},v_{t}) \in A}^{}{f_{jt}}=0,
j:(vt,vj)∈A∑ftj−j:(vj,vt)∈A∑fjt=0,
(3)最大流问题线性规划模型:
m
a
x
v
(
f
)
max \quad v(f)
maxv(f)
s
.
t
.
=
{
∑
j
:
(
v
i
,
v
j
)
∈
A
f
i
j
−
∑
j
:
(
v
j
,
v
i
)
∈
A
f
j
i
=
{
v
(
f
)
,
i
=
s
−
v
(
f
)
,
i
=
t
0
,
i
≠
s
,
t
0
≤
f
i
j
≤
c
i
j
,
∀
(
v
i
,
v
j
)
∈
A
s_{.}t_{.}=\left\{ \begin{aligned} \sum_{j:(v_{i},v_{j}) \in A}^{}{f_{ij}}-\sum_{j:(v_{j},v_{i}) \in A}^{}{f_{ji}}=\left\{ \begin{aligned} v(f),i=s \\ -v(f),i=t \\ 0,i \neq s,t \end{aligned} \right. \\ 0\leq f_{ij} \leq c_{ij},\forall (v_{i},v_{j}) \in A \end{aligned} \right.
s.t.=⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧j:(vi,vj)∈A∑fij−j:(vj,vi)∈A∑fji=⎩⎪⎨⎪⎧v(f),i=s−v(f),i=t0,i̸=s,t0≤fij≤cij,∀(vi,vj)∈A
▼ 饱和弧与非饱和弧:
给定一个可行流
f
=
f
i
j
,
把
网
络
中
使
f
i
j
=
c
i
j
f=f_{ij},把网络中使f_{ij}=c_{ij}
f=fij,把网络中使fij=cij的弧称为饱和弧,使
f
i
j
<
c
i
j
f_{ij}<c_{ij}
fij<cij的弧称为非饱和弧。
▼ 零流弧与非零流弧:
f
i
j
=
0
f_{ij}=0
fij=0的弧为零流弧;
f
i
j
>
0
f_{ij}>0
fij>0的弧为非零流弧;
▼ 前向弧,后向弧:
弧的方向与路的方向相同称为前向弧;
弧的方向与路的方向不同称为后向弧;
2.寻找最大流的标号法:
(1)标号过程:
Ⅰ 前提:每个顶点
v
x
v_{x}
vx的标号值有两个:(
V
x
V_{x}
Vx,
δ
x
\delta_{x}
δx)
V
x
V_{x}
Vx:在可能的增广路上
v
x
v_{x}
vx的前驱节点。
δ
x
\delta_{x}
δx:在可能的增广路上可以调整的流量。
Ⅱ 初始化:发点
v
s
v_{s}
vs标号为(0,
∞
\infty
∞)
Ⅲ标号规则:
若顶点
v
x
v_{x}
vx已标号,则对
v
x
v_{x}
vx所有为标号的邻接顶点
v
y
:
v_{y}:
vy:
❶ 若
(
v
x
,
v
y
)
∈
A
(v_{x},v_{y}) \in A
(vx,vy)∈A,且
f
x
y
≤
c
x
y
f_{xy} \leq c_{xy}
fxy≤cxy时,令
δ
y
=
min
{
c
x
y
−
f
x
y
,
δ
x
}
\delta_{y}=\min \{{c_{xy}-f_{xy},\delta_{x}}\}
δy=min{cxy−fxy,δx},顶点
v
y
标
号
为
(
v
x
,
δ
y
)
v_{y}标号为(v_{x},\delta_{y})
vy标号为(vx,δy)
❷ 若
(
v
y
,
v
x
)
∈
A
(v_{y},v_{x}) \in A
(vy,vx)∈A,且
f
y
x
>
0
f_{yx} >0
fyx>0时,令
δ
y
=
min
{
f
y
x
,
δ
x
}
\delta_{y}=\min \{{f_{yx},\delta_{x}}\}
δy=min{fyx,δx},顶点
v
y
标
号
为
(
−
v
x
,
δ
y
v_{y}标号为(-v_{x},\delta_{y}
vy标号为(−vx,δy,
−
v
x
-v_{x}
−vx表示在可能的增广路上
(
v
y
,
v
x
)
(v_{y},v_{x})
(vy,vx)为反向弧;若
f
y
x
=
0
f_{yx}=0
fyx=0,则不给
v
y
v_{y}
vy标号。
Ⅳ 不断重复 步骤 “Ⅲ”直至收点
v
t
v_{t}
vt被标号,或不再有顶点可以标号为止。当
v
t
v_{t}
vt不能被标号,表明不存在从
v
s
v_{s}
vs到
v
t
v_{t}
vt的增光路,算法结束,此时的流即为最大流。
(2)增流过程:
Ⅰ 令
v
y
=
v
t
v_{y}=v_{t}
vy=vt
Ⅱ 若
v
y
的
标
号
为
(
v
x
,
δ
t
)
v_{y}的标号为(v_{x},\delta_{t})
vy的标号为(vx,δt),则
f
x
y
=
f
x
y
+
δ
t
f_{xy}=f_{xy}+\delta_{t}
fxy=fxy+δt;
若
v
y
的
标
号
为
(
−
v
x
,
δ
t
)
v_{y}的标号为(-v_{x},\delta_{t})
vy的标号为(−vx,δt),则
f
y
x
=
f
y
x
−
δ
t
f_{yx}=f_{yx}-\delta_{t}
fyx=fyx−δt;
Ⅲ 若
v
y
=
v
s
,
v_{y}=v_{s},
vy=vs,把全部标号去掉,并回到标号过程。否则,令
v
y
=
v
x
v_{y}=v_{x}
vy=vx,并回到增流过程
新LATex知识:
- "任意"符号:
\forall
举例: $\forall x \in (0,5)$
显示: ∀ x ∈ ( 0 , 5 ) \forall x \in (0,5) ∀x∈(0,5) - "存在"符号:
\exists
举例: $\exists x \in (0,5)$
显示: ∃ x ∈ ( 0 , 5 ) \exists x \in (0,5) ∃x∈(0,5) - "无穷"符号:
\infty
举例: $\exists x \in (0,\infty)$
显示: ∃ x ∈ ( 0 , ∞ ) \exists x \in (0,\infty) ∃x∈(0,∞) -
"
m
i
n
"
"min"
"min"后加大括号是只打大括号标识时经常打不上:
\{内容\}
举例: $min \{1,2,3\}$
显示: m i n { 1 , 2 , 3 } min \{1,2,3\} min{1,2,3}