【问题标题】:Dijkstra algorithm under constraint约束下的 Dijkstra 算法
【发布时间】:2017-05-20 20:52:53
【问题描述】:

我有 N 个顶点,其中一个是源。我想找到将 所有 顶点连接在一起的最短路径(因此是 N 步路径),并具有在任何一步都不能访问所有顶点的约束。

一个网络由 N 个顶点数、源、每对顶点之间的旅行成本以及每一步可以访问的顶点列表定义

例如,如果 N=5 并且顶点是 1(源)、2、3、4 和 5,则列表 [[2, 3, 4], [2, 3, 4, 5], [ 2, 3, 4, 5], [3, 4, 5]] 表示第 2 步只能访问顶点 2,3 和 4,依此类推...

我不知道如何使 Dijkstra 算法适应我的问题。我真的很想要一些想法或者更好的解决方案是找到别的东西,还有其他算法可以处理这个问题吗?

注意:我在 math.stackexchange 上发布了同样的问题,如果它被认为是重复的,我深表歉意

【问题讨论】:

    标签: graph-algorithm shortest-path dijkstra


    【解决方案1】:

    您不需要任何适应。 Dijkstra 算法将在这些约束下正常工作。

    按照您的示例: 从顶点 1 开始,我们可以到达 2(假设距离 d = 2)、3(d = 7)和 4(d = 11) - 当前距离值为 [0, 2, 7, 11, N/A ]

    接下来,选择距离最短的顶点(顶点 2)——我们可以从它再次得到 2(不应计算)、3(d = 3)、4(d = 4)或 5(d = 9)。我们看到,我们可以以 2 + 3 = 5

    标记我们访问过的所有顶点,然后按照算法,直到所有顶点都被选中。

    【讨论】:

    • 感谢您的回答,但有些地方我不明白。在我的情况下,路径必须包含每个顶点,我不明白为什么 Dijkstra 会这样做
    • @Jkev 如果所有顶点都应该在路径中,请参阅en.wikipedia.org/wiki/Travelling_salesman_problem - Dijkstra 在这里不起作用
    猜你喜欢
    • 2020-09-26
    • 1970-01-01
    • 1970-01-01
    • 2021-03-13
    • 2011-06-27
    • 2021-07-10
    • 1970-01-01
    相关资源
    最近更新 更多