【数学建模算法】(12)图的应用:最大流问题(上)

1.最大流问题的数学描述

1.1图中的流

定义 在以V为节点集,A为弧集的有向图G=(V, A)上定义如下的权函数:
1.L : A\rightarrow R为弧上的权函数,弧(i, j) \in A对应的权L(i, j)记为l_{i j},称为弧(i,j)容量下界
2.U : A \rightarrow R为弧上的权函数,弧(i, j) \in A对应的权U(i, j)记为u_{i j},称为弧(i,j)容量上界,或直接称为容量
3.D : V\rightarrow R为顶点上的权函数,节点i \in V对应的权D(i)记为d_{i},称为顶点i的供需量。
此时构成的网络称为流网络,可以记为:
N=(V, A, L, U, D)

由于我们只讨论V,A优先级和的情况,所以对于弧上的权函数L,U和顶点上的权函数D,可以直接用所有弧上对应的权和顶点上的权组成的有限维向量表示,因此L, U, D有时直接称为权向量,或简称权。由于给定有向图G=(V, A),我们总是可以在它的弧集合和顶点集合上定义各种权函数,所以流网络一般也直接简称为网络

在流网络中弧(i,j)的容量下界l_{i j}和容量上界u_{i j}表示的物理意义是:通过该弧发送某种“物质”时,必须发送最少数量为l_{i j},而发送的最大数量为u_{i j},顶点i \in V对应的供需量d_{i}则表示该顶点从网络外部获得的“物质”数量(d_{i}>0时),或从该顶点发送到网络外部的“物质数量”(d_{i}<0时)。下面我们给出严格定义。

定义:对于流网络N=(V, A, L, U, D)其上的一个流f是指从N的弧集A到R的一个函数,即对每条弧赋予一个实数f_{i j}(称为弧(i,j)的流量)。如果流f满足:
\sum_{j :(i, j) \in A} f_{i j}-\sum_{j :(j, i) \in A} f_{j i}=d_{i}, \quad \forall i \in V\quad(1)
l_{i j} \leq f_{i j} \leq u_{i j}, \quad \forall(i, j) \in A\quad(2)
则称f可行流,至少存在一个可行流的网络称为可行网络,约束(1)称为流量守恒条件(也称流量平衡条件),约束(2)称为容量约束。

可见,当d_{i}>0时,表示有d_{i}个单位的流量从该顶点流失到网络外部,因此顶点i称为供应点。同理d_{i}<0的点称为吸收点。特殊地,当d_{i}=0,改点称为转运点平衡点

一般来说,我们总是假设容量下界为0,所以约束2可改为:
0 \leq f_{i j} \leq u_{i j}, \quad \forall(i, j) \in A

1.2.饱和弧,非饱和弧和空弧

定义:在流网络N=(V, A, U, D)中,对于流f,如果
f_{i j}=0, \quad \forall(i, j) \in A
则称f零流,否则为非零流,如果某条弧(i,j)上的流量等于其容量\left(f_{i j}=u_{i j}\right),则称该弧为饱和弧;如果某条弧(i,j)上的流量小于其容量\left(f_{i j}<u_{i j}\right),则称该弧为非饱和弧;如果某条弧(i,j)上的流量为0\left(f_{i j}=0\right),则称该弧为空弧

2.最大流问题

2.1.问题的定义和辅助定理

考虑如下流网络N=(V, A, U, D);节点s为网络中唯一的源点,t为唯一的汇点,而其他节点为转运点。如果网络中存在可行流f,此时称流f的流量为d_{s}(自然也等于-d_{t}),通常记为vv(f),即
v=v(f)=d_{s}=-d_{t}
对于这种单源单汇的网路,如果我们并不给定d_{s}d_{t}(流量不给定),则网络一般记为N=(s, t, V, A, U)。最大流问题就是在N=(s, t, V, A, U)中找到流值最大的可行流(即最大流)。我们将会看到,最大流问题的许多算法也可以用来求解流量给定的网络中的可行流。也就是说,当我们解决了最大流问题以后,对于在流量给定的网络中寻找可行流的问题,通常也就可以解决了。

用线性规划的方法,可将最大流问题描述如下:
\max v
\text { s.t. } \sum_{j :(i, j) \in A} f_{i j}-\sum_{j : j, i \in A} f_{j i}=\left\{\begin{array}{ll}{v,} & {i=s} \\ {-v,} & {i=t} \\ {0,} & {i \neq s, t}\end{array}\right.
0 \leq f_{i j} \leq u_{i j}, \quad \forall(i, j) \in A

为了解决这个问题,给出一些定义和定理:

全幺模矩阵(全单位模矩阵):如果一个矩阵A的任何子方阵的行列式的值都是0,1,-1,则称A是全幺模的,或称A是全幺模矩阵

整流定理:最大流问题所对应的约束矩阵是全幺模矩阵。若所有弧容量均为正整数,则问题的最优解为整数解。

最大流问题虽然是一个线性规划问题,但是其可以利用图的优点,解决这个问题的方法较之线性规划的一般方法要方便,直观得多。

2.2.单源和单汇运输网络

实际问题往往是多源多汇网络,为了计算的规格化,可将多源多汇网络G化成单源单汇网络G^{\prime}。设XG的源,YG的汇

具体转化方法如下:
1.在原图G中增加两个新的顶点xy,令为新图G^{\prime}中之单源和单汇,则G中所有顶点V成为G^{\prime}的中间顶点集。
2.用一条容量为\infty的弧把x连接到X的每个顶点。
3.用一条容量为\infty的弧把Y中的每个顶点连接到y

GG^{\prime}中的流以一个简单的方式相互对应。若fG中的流,则由:
f^{\prime}(a)=\left\{\begin{array}{l}{f(a)} ,若a是G的弧\\ {f^{+}(v)} ,若a=(x,v)\\ {f^{-}(v)},若a=(v,y)\end{array}\right.
所定义的函数f^{\prime}G^{\prime}中使得v\left(f^{\prime}\right)=v(f)的流,这里f^{+}(v)表示流出v的流量,f^{-}(v)表示流入v的流量(在G中)。

2.3.最大流和最小割关系

N=(s, t, V, A, U), S \subset V, s \in S, t \in V-S,则称(S, \overline{S})为网络的一个割,其中\overline{S}=V-S, \quad(S, \overline{S})为尾在S,头在\overline{S}的弧集,称
C(S, \overline{S})=\sum_{(i, j) \in A \atop i \in S, j \in \overline{S}} u_{i j}
为割(S, \overline{S})的容量。

定理f是最大流,(S, \overline{S})是容量最小的割的充要条件是
v(f)=C(S, \overline{S})

在网络N=(s, t, V, A, U)中,对于轨\left(s, v_{2}, \cdots, v_{n-1}, t\right)(此轨是无向的),若v_{i} v_{i+1} \in A,则称它为前向弧;若v_{i+1} v_{i} \in A,则称它为后向弧。

在网络N中,从st的轨P上,若对所有的前向弧(i,j)都有f_{i j}<u_{i j},对所有的后向弧(i,j)恒有f_{i j}>0,则称这条轨P为从st的关于f的可増广轨。


\delta_{i j}=\left\{\begin{array}{l}{u_{i j}-f_{i j}},当(i,j)为前向弧 \\ {f_{i j}},当(i,j)为后向弧\end{array}\right.
\delta=\min \left\{\delta_{i j}\right\}
则在这条可增广轨上每条前向弧的流都可以增加一个量\delta, 而相应的后向弧的流可减少\delta ,这样就可使得网络的流量获得增加,同时可以使每条弧的流量不超过它的容量,而且保持为正,也不影响其它弧的流量。总之,网络中f可增广轨的存在是有意义的,因为这意味着f不是最大流。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,928评论 6 509
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,748评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,282评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,065评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,101评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,855评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,521评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,414评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,931评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,053评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,191评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,873评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,529评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,074评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,188评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,491评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,173评论 2 357

推荐阅读更多精彩内容