在类似乘车票的情况下,给定一张图,必须建立一组路径将不同的目的地连接在一起。这与使总行驶距离最小化的问题(例如旅行商问题)相反。但是,此问题反而使所需路径的距离最小化,因此解决方案可能看起来像许多分支路径。
哪种算法可以实现这一目标?
答案 0 :(得分:0)
这听起来像Steiner tree problem的图形版本。已知Steiner树很难NP近似,但是实际上这并不是障碍。我能想到的最简单的算法在实践中会很好地起作用,是使用如下所示的整数程序求解器。从类似
的程序开始minimize sum_{e in edges} length(e) x(e)
subject
x(e) in {0, 1}
然后
e
与边x(e) = 1
组成的子图的连接部分。如果所有端子都属于同一连接的组件,请返回该子图。否则,对于包含至少一个端子的每个连接的组件S
,添加以下约束。返回步骤1。
sum_{e in edges such that one endpoint is in S and the other isn't} x(e) ≥ 1