赞
踩
给定一个图,求解源点s到终点t的路径。
点弧关联矩阵定义如下:
列表示边,行表示一个顶点。
可以看到,每一列一定是-1和+1组成,其中-1表示入边,+1表示出边。
我们的目标是求解下列线性规划。
其中f表示选这条边还是不选,选为1,不选为-1,A表示上述的点弧关联矩阵。c表示费用,b表示流量守恒,即一个可行解(f1,f2…fn)必须构成一条路,而我们发现一条路上:除了s和t之外,其他路上的顶点都是一条边进入,一条边出去,即流量守恒。所以该顶点对应的行,比如是有一个+1对应的边选择了,一个-1对应的边选择了,如果该顶点还有一个+1的,也不能再选了,否则Af为1而不是0.
根据上面的原始线性规划,写出其对偶问题。
把上面矩阵形式展开,得到如下:
这里大家耐心展开验证一下即可,不多解释。
不多,需要指出的是,前面说过,对偶问题中的变量总是有其物理含义。那么其中
y
i
y_i
yi你可以理解为顶点
i
i
i到终点
t
t
t的最短路径长度。那么你再看看约束条件,其是说,对于任何一条边,边的左顶点的最短长度-右顶点的最短长度要比边上的长度相等或更小。这是当然的,否则如果
y
i
y_i
yi就不是最短路径长度了,还不如选择这条边呢。
上面
f
j
∗
f_j^*
fj∗理解成
f
i
j
∗
f_{ij}^*
fij∗比较好,表示(i,j)这条边选或不选。后面的
e
j
e_j
ej同理。下面同理。
在此之前,我们希望先对对偶问题再进行一个细微的处理。
我们发现点弧关联矩阵并不是行满秩的,而是行-1。你可以数学上证明,在物理上你可以理解为告诉了其他行(顶点)出入边情况,就知道剩下一个点的出入边情况。
这告诉我们,在原始线性规划中就可以减少一个约束,我们假设减少的是
t
t
t顶点那行。设顶点个数为m,边个数为n,那么其对偶规划中的
A
T
y
≤
c
A^Ty\le c
ATy≤c则形式如下:
即变量少了一个
y
t
y_t
yt,但是我们可以加上,并且和原来同解。
即加上一个对偶变量,但是令其为0,所以变量就变成了m个,从而A也不用截断t所在行,由于乘以
y
t
=
0
y_t=0
yt=0,其实这一行写什么都已经作废了。不过,其实这个加上去根本不为了别的,而是为了那个限制条件能够同意,否则没有
y
t
y_t
yt的话,对于(i,t)这样的边,限制条件需要单独写
y
i
≤
c
i
t
y_i\le c_{it}
yi≤cit,但是现在令
y
t
=
0
y_t=0
yt=0得到了统一。
从而得到如下:
原始对偶算法真正开始了。我们假设先得到了一个可行解
y
y
y,然后计算J:
再有:
这里我们在原规划中已经去掉了t行,所以就是如上了。不过注意一下符号,还是之前说的
f
j
f_j
fj写成
f
i
j
f_{ij}
fij比较好理解,同理,那个
j
∈
J
j\in J
j∈J写成
(
i
,
j
)
∈
J
(i,j)\in J
(i,j)∈J比较好。
这个写出对偶问题,慢慢写就行了。不过,此处可以提示一下:RP中的限制条件为:
注意是
n
′
n'
n′,因为你看RP中:
所以现在的
f
′
f'
f′是全部大于等于0的那些,等于0的对应的那些A列已经清除了得到
A
′
A'
A′。
那么其对偶为
A
T
y
≤
c
A^Ty\le c
ATy≤c:
从而可以知道:
就是:
同理:
就是:
解释完毕。从而我们现在得到了:
(P),(D),(RP),(DRP),接下来就是按照原始对偶算法的步骤来求解了,参看下篇。
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。