整数规划图去环问题

最优化问题

最优化问题可以通过整数规划来求解。

寻路

问题定义
给定一个带权重的有向图G=(V,E),V为顶点集,E为有向边集,每一条有向边均有一个权重。对于给定的顶点s、t,以及V的子集V’,寻找从s到t的不成环有向路径P,使得P经过V’中所有的顶点(对经过V’中节点的顺序不做要求)。若不存在这样的有向路径P,则输出无解,程序运行时间越短,则视为结果越优;若存在这样的有向路径P,则输出所得到的路径,路径的权重越小,则视为结果越优,在输出路径权重一样的前提下,程序运行时间越短,则视为结果越优。
说明:
1)图中所有权重均为[1,20]内的整数;
2)任一有向边的起点不等于终点;
3)连接顶点A至顶点B的有向边可能超过一条,其权重可能一样,也可能不一样;
4)该有向图的顶点不会超过600个,每个顶点出度(以该点为起点的有向边的数量)不超过8;
5)V’中元素个数不超过50;
6)从s到t的不成环有向路径P是指,P为由一系列有向边组成的从s至t的有向连通路径,且不允许重复经过任一节点;
7)路径的权重是指所有组成该路径的所有有向边的权重之和。

样例

在这里插入图片描述
起始点:0,必经点:2,3,终点:1。
最优解:0->2->3->1。权重:4。

线性规划法

使用线性规划对该问题建模。
以边构造0,1变量。 x i j x_{ij} xij, 其中i,j表示顶点i到顶点j。
去环策略:
引入额外变量 u i u_i ui
公式为:
u i − u j + n x i j ≤ n − 1 1 &lt; i = ̸ j ≤ n u_i-u_j+nx_{ij} \le n - 1\\ 1&lt;i=\not j\le n uiuj+nxijn11<i≠jn
其中n可以设置成为顶点的数量。
x i j x_{ij} xij的取值只能为0或者1。
u i u_i ui为实数。

若i与j构成回路:
在这里插入图片描述
x i j = 1 , x j i = 1 x_{ij}=1,x_{ji}=1 xij=1,xji=1
带入到上式中
{ u i − u j + n ≤ n − 1 u j − u i + n ≤ n − 1 → { u i − u j ≤ − 1 u j − u i ≤ − 1 → 0 ≤ − 2 \begin{cases} u_i-u_j+n\le n - 1\\ u_j-u_i+n\le n - 1 \end{cases} \to \begin{cases} u_i-u_j\le-1\\ u_j-u_i\le-1\\ \end{cases}\\ \to 0\le-2 {uiuj+nn1ujui+nn1{uiuj1ujui102
不满足上面的约束。
同理对于
在这里插入图片描述

{ u i − u j + n ≤ n − 1 u j − u k + n ≤ n − 1 u k − u i + n ≤ n − 1 → { u i − u j ≤ − 1 u j − u k ≤ − 1 u k − u i ≤ − 1 → 0 ≤ − 3 \begin{cases} u_i-u_j+n\le n - 1\\ u_j-u_k+n\le n - 1\\ u_k-u_i+n\le n - 1 \end{cases} \to \begin{cases} u_i-u_j\le-1\\ u_j-u_k\le-1\\ u_k-u_i\le-1 \end{cases}\\ \to 0\le-3 uiuj+nn1ujuk+nn1ukui+nn1uiuj1ujuk1ukui103
这个公式应该是构造出来的。
具体的论文我找不到了,有人看到麻烦说下,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值