博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
差分约束系统
阅读量:4516 次
发布时间:2019-06-08

本文共 897 字,大约阅读时间需要 2 分钟。

定义

在一个
差分约束系统(system of difference constraints)中,线性规划矩阵
A
每一行包含一个1和一个-1,A的其他所有元素都为0。因此,由
Ax
b给出的约束条件是m个差分约束集合,其中包含n个未知量,对应的线性规划矩阵
A为m行n列。
每个约束条件为如下形式的简单线性不等式:xj-xi≤bk。其中1≤i,j≤n,1≤k≤m。

建立约束图:数与图的结合

可以发现约束条件这个不等式和图的单源最短路径算法中的松弛操作极为类似,这样, 上述问题可以转换成n个结点m条边的有向图(图不一定连通),其中n个结点分别为n个未知数,m条有向边分别代表m个约束条件,对于条件 xj - xi <= k; 对应着弧<xi,xj>的权值为k。 另外,为保证图的连通,
在图中引入附加节点vs使图中每个顶点vi都能从vs可达,并设弧<vs,vi>的权w<vs,vi>=0。Bellman-Ford可以不用,因为它本身就是对所有点都松弛。但SPFA必须要加。

差分约束问题的求解

【定理】若图中存在负权回路,则该差分约束系统不存在可行解。 【
求最优解】在差分约束系统中,
如果题目要求是求最小值,就将约束条件转化为">="形式,然后利用松弛不等式dist[v] >= dist[u] + w[u][v]建图,再用Bellman_Ford\SPFA算法求解约束图的最长路径;如果题目要求的是最大值,就将约束条件转化为"<="形式,然后利用松弛不等式dist[v] <= dist[u] + w[u][v]建图,再用Bellman_Ford\SPFA算法求解约束图的最短路径。 【时间复杂度】关于n个未知量m个约束条件的一个差分约束系统产生出一个具有n+1个顶点和n+m条边的约束图。因此采用Bellman-Ford算法,可以再O((n+1)(n+m))=O(n^2+nm)时间内将系统解决。此外,可以用SPFA算法进行优化,复杂度为O(km),其中k 为常数。

转载于:https://www.cnblogs.com/AbandonZHANG/p/4114304.html

你可能感兴趣的文章
爬虫入门【10】Pyspider框架简介及安装说明
查看>>
android面试(4)---文件存储
查看>>
(转载) 标准C中的字符串操作函数
查看>>
如何提高android串口kernel log等级
查看>>
C#中值类型和引用类型的区别
查看>>
python学习笔记15-执行环境
查看>>
thinkphp 框架两种模式 两种模式:开发调试模式、线上生产模式
查看>>
iOS8中提示框的使用UIAlertController(UIAlertView和UIActionSheet二合一)
查看>>
Docker快速配置指南
查看>>
Python基础---OS模块 (二)
查看>>
【JS点滴】substring和substr以及slice和splice的用法和区别。
查看>>
awk多模式匹配
查看>>
线段树
查看>>
[javascript]实现登陆界面拖动窗口
查看>>
c++ queue类
查看>>
a span等行内元素加margin属性后无效果解决方案
查看>>
查看MySQL数据库大小
查看>>
2019面试题整理
查看>>
Linked List Cycle | & ||
查看>>
2、Jupyter Notebook 快速入门
查看>>