差分约束与最短路径

版权声明: https://blog.csdn.net/leelitian3/article/details/82952495

差分约束问题(Difference constraints)

一类特殊的线性规划(Linear Program)问题,例如求一个可行n维解向量X,使得其满足以下m个式子:

利用“最短路径”解决差分约束问题

①建立一个图,包含n个结点,m条边;且对Xj - Xi ≤ Wij,edge(Vi, Vj) = Wij

②增加结点V0,从V0出发引入n条权重为0的边链接到各个原有结点

③以V0为源结点,利用Bellman-Ford算法求V0到每个结点的最短路径δ(V0, Vi)

若存在负权环,则解不存在;若Bellman-Ford运行良好,则Xi = δ(V0, Vi)

*⑤若要求Xi ≤ 0,则此方法求得的∑Xi最大(解的最大化)

*⑥此方法求的的max{Xi} - min{Xi}最小(L1范数跨度最小)

算法的证明

分为两部分证明:

①证明:存在负权环时解不存在

反证法。假设X使得其成立,则约束条件Xj - Xi ≤ Wij的左边相加为0,右边相加为负数,则0 ≤ 负数,矛盾

扫描二维码关注公众号,回复: 3458742 查看本文章

②证明:不存在负权环时解存在

δ(V0, Vj) ≤ δ(V0, Vi)​​​ + Wij     <=>     Xj - Xi ≤ Wij

算法的优化

优化前,算法的运行时间(n+1个结点,m+n条边):O(n²+mn)

优化:没有必要引入结点V0,只需要将所有结点的初始值由+∞改为0即可

优化后:O(mn) 

猜你喜欢

转载自blog.csdn.net/leelitian3/article/details/82952495