【问题标题】:How to use Dijkstra's Algorithm for finding shortest path with vertex constraint如何使用 Dijkstra 算法找到具有顶点约束的最短路径
【发布时间】:2020-09-26 07:33:56
【问题描述】:

我已经在这个问题上卡了两天了,仍然没有进展。基本上问题如下: 给定一个无向简单加权和连通图,我们必须找到从给定源到给定目的地的最短步行路程,同时访问给定集合 A 中的至少一个顶点和集合 B 中的至少一个顶点,并添加约束:集合 B 的顶点应该总是在访问集合 A 的顶点之后出现。 集合 A 和 B 不相交,图中可以有既不属于 A 也不属于 B 的顶点。源顶点和目的顶点只有一个。

我尝试将最短路径分解为一个访问顶点的路径,即从源访问 A 中的 v,然后从 v 到 B 中的另一个 w,然后从 w 到目的地。这可以分别使用具有不同起始顶点的 3 次 Dijkstra 通道来完成。但是,我必须选择这样的最小值 v 导致 O(VElog(V)) 复杂度,其中 V = 顶点数和 E = 边数。 我非常坚持如何在 O(E*log(V)) 中执行此操作,因为问题是这样问的,即仅使用 O(1) Dijkstra 运行。有人可以帮帮我吗?

编辑:我们不能像某些人建议的那样构建新图或修改它,以构建水平图。 我必须以某种方式修改 Dijkstra 例程来解决这个问题。 Graph. Blue vertices are the set A, purple ones set B. Home is 0 and Destination is 8 例如,在这个图中(见链接),最短的步行应该是:0 -> 1 -> 0 -> 3 -> 6 -> 7 -> 8 总成本 = 6

【问题讨论】:

标签: algorithm graph dijkstra


【解决方案1】:

作为@n.'代词' m。指出,我们可以通过图分层来解决这个问题。 特别是对于我的情况,只需添加一个新的源顶点并将该源顶点的边添加到属于原始图 A 的顶点的所有边。这些边的权重将与原始图中从原始源到该顶点的最短路径相同。 类似地,您添加一个新的目标顶点并将所有 B 顶点的边添加到这个新顶点,边的权重再次是原始图中从 B 顶点到原始目标顶点的最短路径。 现在,如果您从新源到新目的地运行 Dijkstra,您会看到在 B 顶点最终在新目的地结束之前将访问至少一个 A 顶点。这条路径确实是最短路径。

【讨论】:

    【解决方案2】:

    解决此类问题的最简单(对我而言)方法是将图形顶点分成“层级”(如建筑物中的故事),并可能在多个层级之间复制一些顶点。

    在您的情况下,将有 5 个级别,级别 1、3 和 5 包含所有顶点,而级别 2 只有 A 顶点,级别 4 只有 B。起始顶点在级别 1,结束在级别 5 . 在每一层内和相邻层之间复制原始边缘。

    修改后的图中的任何路径都经过一个 A 顶点,然后再经过一个 B 顶点,因为任何路径都必须依次经过所有 5 个级别。

    这种安排不关心是否有额外的 A 和 B 顶点在任何顺序中,除了所需顺序中的强制对(因此 x-x-x-A-B-A-B-x-x-x 是允许的)。如果需要排除这些,请删除级别 1 和 3 中的所有 B 顶点,以及级别 3 和 5 中的所有 A 顶点。

    【讨论】:

    • 此级别排序如何确保源和目标之间的最佳路径。例如,可能是我首先从源到 B,然后从 B 到 A,然后再从 A 到 B。不清楚如何使用此级别排序?您能否评论一下我们如何修改 Dijkstra 来解决这个约束问题?
    • 不清楚您关心的是什么。原始图中满足 A-then-B 要求的每条路径在修改后的图中都有对应的路径。相反,修改后的图中的每条路径在原始图中都有一条满足 A-then-B 要求的对应路径。因此这里的最短路径就是那里的最短路径。
    • 我理解了你的新级别有序图,但问题是我无法修改或构建新图,你看。我只能写一个新的例程来解决这个问题。那么关于如何修改 Dijkstra 以确保遵循约束的任何想法?
    • 无论这意味着什么,您都不需要“创建新图表”。在 Dijkstra 中,您有一个顶点队列。只需将每个顶点的多个副本添加到队列中,并带有适当的标签。
    • @MohammadWasih 我也有类似的问题,你是如何实现这个的?
    猜你喜欢
    • 1970-01-01
    • 2018-05-23
    • 1970-01-01
    • 2016-07-30
    • 1970-01-01
    • 2011-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多