algorithm - 给定一个以区间为边成本的图,检查 MST 有效性
问题描述
我真的很想弄清楚这个问题。给定一个无向和连通图 G ,G 中的所有边都有未知的成本,但已知每条边的每个成本的区间,例如边 e 的成本在闭区间 [i,j] 中,其中 i 和 j 是实数。我还得到了一个名为 T 的 G 生成树。我需要创建一个算法来检查 T 是否可以是 G 的最小生成树。我尝试将此问题连接到网络流,但我无法找到解决方案。是否有任何提示可以找到解决此类问题的方法?
解决方案
这个问题可以用线性规划来解决。检查 T 是否可以是最小生成树相当于检查一组线性约束对一组 |E| 的可行性。变量,一个用于图的每条边。变量 x(u,v) 对应于边 (u,v) 的权重。也就是说,线性规划的可行解决方案是将权重分配给图边,使得 T 是最小生成树。因此,首先,每个变量 x(u,v) 都被限制在指定的区间内。
我将很快指定的其他约束旨在满足当且仅当 T 是求解程序的分配下的最小生成树。
要理解为什么在满足以下约束 T 的每个分配下必须是最小生成树,您必须让自己相信最小生成树的以下属性:
生成树 T 是最小生成树当且仅当对于不在 T 中的每条边 (u,v) 以及在 Te
中从 u 到 v 的路径中的每条边w(u,v)>=w(e)
。此属性来自cut 属性。
因此,要检查 T 是否可以是最小生成树,应该检查由以下一组约束定义的线性规划的可行性。
- 对于图中的每条边,
i(u,v)<=x(u,v)<=j(u,v)
。 - 对于
(u,v)
不在 T 中的每条边和在 T中的从到e
路径中的每条边,.u
v
x(u,v)>=x(e)
推荐阅读
- sql - Oracle表中基于条件的随机记录
- c# - 有没有办法使用 [FromBody] 属性进行嵌套模型绑定?
- r - 理解 R 中的马尔可夫链源代码
- mysql - 视图是否需要更新任何操作,甚至需要一些时间来更新?
- java - 带有Java Play Eclipse项目的VSCode中的“类路径不完整。只会报告语法错误”
- html - 将 Slim 转换为 HTML
- node.js - Mongoose findOneAndUpdate 不会更新多个嵌套字段
- java - 如何动态地继续从 EditText 字段添加项目?
- function - 如何在 F# 中使用带有两个参数的函数,它们是二维整数数组
- php - 数组合并函数与重复值(保留键)