gpt4 book ai didi

algorithm - 链接图中的最短路径

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:24:59 25 4
gpt4 key购买 nike

我正在将图形算法应用于可能的非标准应用程序。我有链接在一起的图,并试图找到通过它们的前 K 个最短节点不相交路径。希望我能解释一下:举个例子,假设我有两个相当简单的图表,带有开始和结束。在我的例子中,这些图表经历了阶段(从左到右)并且都具有相同数量的阶段。我可以使用 Dijkstra 或其他东西在每个图中找到最短路径,但它们链接在一起,使得第一个图中的一些节点链接到第二个图中的匹配节点。选择一个需要选择另一个。我的第一个想法是将两个图合并为一个,所有可能的组合都得到一个节点。因此,如果在图一的某个阶段,节点是 A、B、C,图二有 D、E、F,如果 C 和 F 链接,则选项是 AD、AE、BD、BE、CF。这可以很好地找到单一的最佳路径。当我应用 Suurballe 算法来查找 K 个最佳节点不相交路径时,问题就出现了,因为两个节点不相交路径可以选择 AD 和 AE。这些是组合图中的节点不相交,但在原始问题中不是(它们共享 A)。这类问题是否有任何现有技术,或者任何人都可以想到一个简单的解决方案?

图片示例:在以下约束下通过这两个图找到 K 个最小成本路径(两条路径的总和),如果您在一个图中选择彩色节点,则必须在另一个图中选择相同的颜色节点。即使未显示,边缘也会被加权。

enter image description here

响应以下答案的另一个示例(示例2):
enter image description here

最佳答案

我不确定这个领域的“现有技术”,但我想我可以想到一个“直截了当的解决方案”。

  • 在图 1(第一张图)中找到最佳路径
    分别,如“图片示例”所示。计算成本
    此路径的功能,例如 CF1。
  • 在图 1 的最佳路径中找到彩色节点的数量。
  • 对于图 1 中的所有彩色节点,删除所有备用连接
    来自图 2,即确保图 2 中的路径必须经过
    图 1 中使用的彩色节点。
  • 在图 2 中找到最优路径并计算其成本函数,例如
    CF2。
  • 计算 CF1 + CF2
  • 重复步骤 1 到 5,但这次从图 2 开始,然后匹配
    图 1 的彩色节点与图 2 的初始最优路径。

  • CF1+CF2 的最小值将为您提供一组可行路径。

    基本上,您计划其中一个图的路径并让另一个图符合其链接节点集并检查组合成本函数。然后重复另一个图表。找到最有效的组合。

    一般来说,对于 n 个图,您必须执行 n^2 次最短路径计算,这显然非常糟糕。但它应该工作,作为一个天真的想法。

    ++++++++++++++++++++++

    这是我对之前加权图算法的修改版本:

    假设:我们正在使用“n”个图,它们都被加权,并且它们都包含相等且固定数量的“阶段”。

    所有的起始节点都被描述为 S1、S2、S3……。锡。
    所有的终端节点都被描述为 e1, e2, e3….. en。
  • 启动一个空的优先级队列 (PQ) [最好使用二进制/斐波那契最小堆],它将包含路径(节点集合),并且它们的相应优先级将由它们的 的累积总和表示路径权重 ]
  • 插入所有起始节点 - S1、S2、S3……。 Sn变成PQ,每个单独节点的优先级设置为零。
  • 弹出权重最小的路径(比如它属于图形编号“k”)并展开它的子节点。让有'p'个子节点。 [如果没有更多阶段可以扩展,请从优先级队列中删除该路径。这样,如果队列的总大小变为零,则 S 和 e 之间没有可行路径]
  • 对于所有 i 不等于 k ​​的 i = 1 到 n,重复:

    4a。检查哪些 p 路径是 可行在剩余的 (n-1) 图中。

    4b。插入所有 可行到 PQ 的路径(在计算它们的优先级之后)。

    4c。如果 之一可行路径以 ek 结尾:然后将该路径标记为“PathOptimal”并转到 5。
    其他:转至3。
  • 对于 i = 1 到 n 对于所有 i 不等于 k ​​:在每个图中针对 'PathOptimal' 找到相应的路径并将它们报告为输出。

  • 在这里, 的概念路径权重 必须正确实现。
    路径权重将等于:该路径中包含的边的权重之和 + 剩余 (n-1) 图中所有兄弟路径中包含的边的权重之和。

    的概念可行性 将是您的业务规则,即如果子节点是彩色节点,则所有其他 (n-1) 图中先前路径的相应子节点必须具有相同的颜色。如果它不是彩色节点,那么它的兄弟节点必须是非彩色的。

    [如果你发现算法中有任何明显的缺陷,请告诉我,因为我只是编造的。另外,由于这是从 Dijkstra's 大量借来的,如果你能想出一个加快速度的方法,请告诉我。]

    PS:-但是,我必须提到,鉴于您的问题的范围,我宁愿使用遗传算法来解决这个问题,而不是采用确定性方法。

    关于algorithm - 链接图中的最短路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18620821/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com