MATLAB学习2019-----7/13

图与网络模型及方法
 基本概念与数据结构中的概念相同。最短路问题,最小生成树问题已在数据结构中学过,不再写。

  • 网络最大流问题:
    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} 0fijcij
(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)Afijj:(vj,vi)Afji=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)Afsjj:(vj,vs)Afjs=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)Aftjj:(vj,vt)Afjt=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)Afijj:(vj,vi)Afji=v(f),i=sv(f),i=t0,i̸=s,t0fijcij,(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 &lt; c i j f_{ij}&lt;c_{ij} fij<cij的弧称为非饱和弧。
零流弧与非零流弧:
    f i j = 0 f_{ij}=0 fij=0的弧为零流弧;
    f i j &gt; 0 f_{ij}&gt;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} fxycxy时,令 δ y = min ⁡ { c x y − f x y , δ x } \delta_{y}=\min \{{c_{xy}-f_{xy},\delta_{x}}\} δy=min{cxyfxy,δ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 &gt; 0 f_{yx} &gt;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}) vyvxδ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}) vyvxδ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,)
  • &quot; m i n &quot; &quot;min&quot; "min"后加大括号是只打大括号标识时经常打不上:\{内容\}
    举例:$min \{1,2,3\}$ 显示: m i n { 1 , 2 , 3 } min \{1,2,3\} min{1,2,3}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值