【问题标题】:Which algorithm could I use for shortest path with distinct sets of must-pass nodes?对于具有不同必须通过节点集的最短路径,我可以使用哪种算法?
【发布时间】:2016-10-06 16:56:22
【问题描述】:

我不确定这个问题的名称,所以还没有真正能够研究它。我有一个完整的加权图,其中包含一个开始和结束节点以及 n 个不同的节点集(我们称它们为红色、蓝色和绿色),每个节点都有 m 个成员节点。

我需要找到从头到尾的最短路径,并且必须恰好经过一个红一蓝一绿节点;有这个算法吗?

一个扩展是我需要在首先访问蓝色时找到最短路径,然后是绿色,然后是红色(同样,每次只访问一次);有这个吗?

【问题讨论】:

  • 我认为没有特定的算法。最短路径算法倾向于探索所有路径,并且通过一些记忆,您可以跟踪哪些路径满足您必须通过的标准。在符合您标准的那些中,您将排序并选择最短的。

标签: algorithm graph set shortest-path


【解决方案1】:

扩展部分似乎更容易。

假设每个节点都有一种颜色(这是真的吗?),如果要删除会违反所需颜色序列的边缘,您需要做的就是全部。

例如,删除所有离开起点的边,除了那些到达蓝色节点的边。同样,删除所有离开蓝色节点的边,除了那些去绿色节点的边。

然后您可以简单地在简化图上运行标准最短路径算法(例如 Dijkstra)。

如果颜色的数量不是太多,那么你可以采用相同的算法来解决原来的问题。这个想法是为颜色的每个排列找到最短路径(使用上述算法)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-28
    • 2021-01-01
    • 1970-01-01
    • 2011-05-23
    • 2016-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多