这是一个非常讨厌的问题。这是一条最短哈密顿路径,但是您有很多边(所有边 (u, v),其中 u 是某条线的端点,v 是另一条线的起点),并且距离不对称。我认为 TAOCP 4A 中描述的基于 ZDD 的优雅方式并不适用——它会淹没在所有这些边缘。
这是一个从 TSP 借来的想法(不是最优的,但无论如何这似乎是一个相当不错的想法):
For every line s
Schedule = empty sequence
For every line n
insert n in the optimal position in Schedule
Apply 2-opt (see TSP) to the Schedule
Take the best Schedule.
小心那个 2-opt。它经常被描述为对称距离的情况,它可以让您优化“距离变化”计算。你不能在这里做。
这是另一个想法,大量借鉴了 TSP:
解决大量 ILP 问题。对于每个节点s
和t
(不等于):
- 每个边的布尔变量。
- 权重是这些边的长度。
- 每个节点
n
不是s
或给出“与== 2t
相邻的所有边的总和”形式的约束n
- 对于节点
s
和t
,该和等于 1
- 懒惰地添加整个事物必须是单个连接组件的约束,即:
- 检测连接的组件。如果有1,这是一个解决方案。
- 如果有超过 1 个,对于每个连接的组件:
- 如果它包含
s
or t
,则添加与该连通分量相邻的所有边的总和必须为 1 的约束。
- 否则,该总和必须为 2。
充分利用所有这些解决方案。这可能需要一段时间。