【问题标题】:Algorithm for routing in chosen vertexes选定顶点中的路由算法
【发布时间】:2016-08-31 13:36:06
【问题描述】:

我想选择我必须通过的起点、终点和顶点,算法应该找到路由的最短路径。我有一个存储 Routes Id|Name|StoreA|StoreB|Kilometers 的表,其中 StoreA 和 StoreB 是 Store 表中的 FK。我仅以一种方式保存数据。 示例:在表 Routes 1|Lidl-Kaufland|1|2|157 中,而不是返回,因为距离相同。我不确定我是使用 QuickGraph 库中的 BidirectionalGraph 还是 UndirectedGraph。

例如这个路网:1http://i.stack.imgur.com/mxcWe.png 首先我选择这 4 个顶点,然后我选择开始和结束一个。 我使用 QuickGraph 3.6,这里最大的问题是我应该使用什么图,是否有适合我目的的算法?谢谢大家,我希望我解释了一切必要的回答我。

【问题讨论】:

  • 冒着听起来令人讨厌的风险,您的问题是这样的:(en.wikipedia.org/wiki/Travelling_salesman_problem)?如果是这种情况,您可能会遇到一些性能问题,但如果搜索该问题的名称,您可能会更快地找到答案。
  • 非常感谢!如果你能帮助我,我会更高兴,再次感谢你!!!
  • 您的问题与 对称 TSP 非常相似(您的边缘成本在任何一个方向上都是相同的),但有一个复杂性。传统的TSP要求旅行者返回原点。这简化了问题,因为每个顶点都有到达和离开。如果顶点数量有限(permutation 来使用蛮力解决问题。对于较大的问题,请尝试分支定界方法。对于更大的问题,很难找到真正的最优解,因此请尝试启发式方法。

标签: c# asp.net-mvc algorithm graph-algorithm quickgraph


【解决方案1】:

听起来确实像一个旅行推销员问题。有两种方法可以解决这个问题。

  1. 如果您想将图修剪为图的总成本最低的树,请尝试 Prim 或 Kruskal 的最小生成树算法。这最终将为您提供现有图表中的最低总成本图表。
  2. 如果您想在最短的时间内遍历图表中的所有节点并使其回到起始节点,您可以尝试旅行商算法。
  3. 如果这是一个实际的道路网络,那么您可能需要使用有向图,有些道路是单向的,有些是双向的。所以你不能说你总是有同样的距离回来。
  4. 如果您需要开箱即用的解决方案,请尝试PostGisPostGreSqlPgRouting。由于您已经将数据保存在数据库中,因此您可以自行使用开箱即用的算法。

希望这会有所帮助。

【讨论】:

  • 非常感谢,我会搜索 Traveling Salesman 算法,然后将其实现到我的代码中,谢谢!!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-11
  • 2023-03-18
  • 2011-06-30
  • 1970-01-01
  • 2013-02-15
  • 1970-01-01
相关资源
最近更新 更多