【问题标题】:Boost Graph: Shortest path that pass through a set of pointsBoost Graph:通过一组点的最短路径
【发布时间】:2020-03-04 00:31:05
【问题描述】:

我有一个图,其中每个节点都是一个 3D 点,边表示 3D 空间中这些点之间的距离。该图未完全连接。这意味着在 A 点和 B 点之间,可能存在单条直接路径或多阶段路径(例如A->C->D->E->B)。

我想找到通过一组给定点的最短闭合路径(所有点都应该位于路径上)。

Boost Graph 库中是否有现成的实现?

附:路径应该从同一个顶点开始和结束(循环)

【问题讨论】:

  • 如果有必要,可以多次访问航路点吗?
  • @Albjenow 最佳情况,不。但由于我的航路点中的噪音,这是可能的。

标签: c++ boost graph boost-graph


【解决方案1】:

这是旅行推销员问题,是 NP 难的。

BGL 中有一种最优解的近似算法:https://www.boost.org/doc/libs/1_71_0/libs/graph/doc/metric_tsp_approx.html

假设距离有一些metric properties:

TSP 的一个非常自然的限制是要求城市之间的距离形成一个度量来满足三角不等式;也就是说,从 A 到 B 的直接连接永远不会比通过中间 C 的路线更远:

这适合您的问题,因为您的图形模型点在 3D 空间中

【讨论】:

  • 您应该补充一点,因为他对循环不感兴趣,而只对路径感兴趣,所以他必须添加一个虚拟节点,如 here 所述。这当然会使三角不等式无效。
  • @Albjenow 实际上,我需要一个循环,但没有正确表达自己。谢谢大家!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-25
  • 2015-05-19
  • 1970-01-01
  • 2020-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多