线性规划问题中的差分约束与最短路径

先给一个线性规划的定义:

在通用的线性规划问题中,我们通常给定一个m*n的矩阵A,一个m维的向量和一个n维向量(权值函数)。我们希望找到一个n维向量x,使得在由Ax<=b给定的m个约束条件下优化目标函数ci*xi,这里的优化是指目标函数的取值最大。

根据矩阵乘法,我们大概脑补出这样一幅图

ps:上图中<号应为<=号(我会告诉你是我懒得改 )

通过化简我们得到 x1-x3<=b1;x3<=b2;x2-x3<=b3;

这跟我们的最短路径有什么关系呢?

在最短路径的三角不等式中,有dist[v]<=dist[u]+map[u][v];

貌似有点像!

上氏可以化简为x1<=x3+b1

所以可以看成在一张图内,x3到x1连了一条长为b1的边

为了方便求出其他几个点的解值,我们定义一个超原点为0,算出与其他点之间的最短距离,其他几个原点的其中一个解就是这个距离的数值(我们的差分关系都是建立在差的关系上,可以全部数加减一个值)

这是我们有问题了:如果算不出最短路径,怎么办?

恰巧的是,如果算不出最短路径,那么就是有负权环,然而这个线性约束就无解——没有一个实数符合这些约束。因为如果我们有一个环路(v1->v2->...->vn)

v1<=v2+map[v1][v2]

v2<=v3+map[v2][v3]

........

vn-1<=vn+map[vn-1][vn]

vn<=v1+map[1][n]

对于左右两边求和,得到0<=map[v1][v2]+map[v2][v3]+...+map[vn][1]

因为是负权环路,所以我们就有0<=一个负数

所以这个线性约束就无解啦。

时间: 2025-01-01 21:30:46

线性规划问题中的差分约束与最短路径的相关文章

最短路径之差分约束

一.前言 本文的目的是探讨最短路径与差分约束之间的关系.为了方便理解,本文将从存储图的数据结构,最短路径的算法,以及最短路径算法和差分约束之间的相互转换关系来讨论.而基于最短路径的有一个著名的三角形不等式,即两边之和大于第三边或者两边只差小于第三边,a+b>c和a-b<c. 图的存储结构 工欲善其事必先利其器,为了更好的理解最短路径,必须先了解存储图的数据结构. 一般而言,图的存储方式,有按节点存储按边存储两种方式. 传统来说,按节点存储的是临接矩阵存储方式,优点是实现简单,一个二维数组就能实

【转载】差分约束

一直不知道差分约束是什么类型题目,最近在写最短路问题就顺带看了下,原来就是给出一些形如x-y<=b不等式的约束,问你是否满足有解的问题 好神奇的是这类问题竟然可以转换成图论里的最短路径问题,下面开始详细介绍下 比如给出三个不等式,b-a<=k1,c-b<=k2,c-a<=k3,求出c-a的最大值,我们可以把a,b,c转换成三个点,k1,k2,k3是边上的权,如图 由题我们可以得知,这个有向图中,由题b-a<=k1,c-b<=k2,得出c-a<=k1+k2,因此比较

POJ 1201 Intervals(图论-差分约束)

Intervals Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 20779   Accepted: 7863 Description You are given n closed, integer intervals [ai, bi] and n integers c1, ..., cn. Write a program that: reads the number of intervals, their end po

POJ1201 Intervals【SPFA】【差分约束】

Intervals Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 22307 Accepted: 8413 Description You are given n closed, integer intervals [ai, bi] and n integers c1, ..., cn. Write a program that: reads the number of intervals, their end points

zoj2770 差分约束问题

总的开说差分约束问题就是给出一系列不等式然后求问某一式子的最大值或者最小值. 差分约束问题详解: 比如有这样一组不等式: X1 - X2 <= 0 X1 - X5 <= -1 X2 - X5 <= 1 X3 - X1 <= 5                   不等式组(1) X4 - X1 <= 4 X4 - X3 <= -1 X5 - X3 <= -3 X5 - X4 <= -3 全都是两个未知数的差小于等于某个常数(大于等于也可以,因为左右乘以-1就

POJ 1364 King(非连通图的差分约束,经典好题)

King Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 11103   Accepted: 4068 Description Once, in one kingdom, there was a queen and that queen was expecting a baby. The queen prayed: ``If my child was a son and if only he was a sound kin

【转载】夜深人静写算法(四)——差分约束

[转载]夜深人静写算法(四) - 差分约束  目录     一.引例       1.一类不等式组的解   二.最短路       1.Dijkstra       2.图的存储       3.链式前向星       4.Dijkstra + 优先队列       5.Bellman-Ford       6.SPFA       7.Floyd-Warshall   三.差分约束        1.数形结合        2.三角不等式        3.解的存在性        4.最大值

Candies---hdu3159(spfa+差分约束)

题目链接:http://poj.org/problem?id=3159 题意:有n个小孩,m个关系格式是A B C 表示小孩 B 的糖果数最多比小孩A多C个,相当于B-A<=C; 有m个这样的关系最后求小孩n比小孩1最多多几个糖果: 差分约束: 比如给出三个不等式,b-a<=k1,c-b<=k2,c-a<=k3,求出c-a的最大值, 我们可以把a,b,c转换成三个点,k1,k2,k3是边上的权,如图   由题我们可以得知,这个有向图中,由题b-a<=k1,c-b<=k2

差分约束小结

ZOJ 2770 Burn the Linked Camp /* ZOJ 2770 Burn the Linked Camp 差分约束 */ #include <iostream> #include <cstring> #include <cstdio> #include <queue> using namespace std; const int MAXN = 1009; struct Edge { int v, ne, c; } G[MAXN*MAXN]