Algorithm 最短路径的最大流算法?

Algorithm 最短路径的最大流算法?,algorithm,graph,Algorithm,Graph,有关于这种算法的资源吗 我有一个未加权图(更精确地说,所有边都是一个容量),我想找到源顶点和汇顶点之间的所有不同路径(所有可能的路径,没有一个顶点与另一个顶点共享),所以我考虑了最大流问题和算法,但问题是,我希望有一个algo,它允许我拥有所有最短的不同路径 由于最大流算法只是使用BFS或残差图中的某个东西进行搜索,它将随机增加我的流(由于权重为1,最大流算法的每次迭代将增加我的流1,这对应于找到新的不同路径),我将得到最大数量的不同路径,但我无法得到最大数量的不同最短路径。要获得最大数量的最短

有关于这种算法的资源吗

我有一个未加权图(更精确地说,所有边都是一个容量),我想找到源顶点和汇顶点之间的所有不同路径(所有可能的路径,没有一个顶点与另一个顶点共享),所以我考虑了最大流问题和算法,但问题是,我希望有一个algo,它允许我拥有所有最短的不同路径


由于最大流算法只是使用BFS或残差图中的某个东西进行搜索,它将随机增加我的流(由于权重为1,最大流算法的每次迭代将增加我的流1,这对应于找到新的不同路径),我将得到最大数量的不同路径,但我无法得到最大数量的不同最短路径。

要获得最大数量的最短路径,如何:

  • 首先执行BFS并为每个节点分配一个编号,这将 表示距震源的距离
  • 然后删除具有相同编号的节点之间的所有边
  • 引导边,使流不能从高值节点移回低值节点
  • 从源到汇运行最大流量

由于没有其他选项,最大流量始终只需在最短路径上向水槽靠近一步。更改后不可能有任何无法找到的最短路径,因为任何最短路径都必须在每个步骤中增加其下一个节点的值,否则会有另一条较短的路径。

要获得最大数量的最短路径,如何:

  • 首先执行BFS并为每个节点分配一个编号,这将 表示距震源的距离
  • 然后删除具有相同编号的节点之间的所有边
  • 引导边,使流不能从高值节点移回低值节点
  • 从源到汇运行最大流量

由于没有其他选项,最大流量始终只需在最短路径上向水槽靠近一步。更改后不可能有任何无法找到的最短路径,因为任何最短路径都必须在每一步中增加其下一个节点的值,否则会有另一条较短的路径。

我不知道是否完全理解您的答案,但问题是最短路径(例如,两条长度为15的路径,以及第一条路径的第一个顶点和第二条路径的最后一个顶点之间的链接),我对这个问题的直觉是,首先运行一个algo wich,它将找到所有最短的路径(使用快捷方式)路径,并在运行“最大流”问题后找到所有这些快捷方式,但在这里,我希望以良好的顺序反转它们(我需要首先找到这些快捷方式,因为有时它们可能对我的问题有价值)我想我不明白你到底是什么意思。也许你可以把问题和解决问题的方法分开写,这样你就更容易理解你所面临的问题。你也可以举一些例子(比如图的图片和你想从这些图中找到的东西)为了澄清,您是否需要找到特定长度的最大数量的不同路径(而不是尽可能最小的路径)?我试图找到一些例子来说明我的问题,但这是我之前关于这个问题的问题:我最后得出的想法是找到一个最大流算法,但有最短路径的概念。好的,我读了你的文章。你可以使用线性规划,因为你可以有分数流。例如,你可以有一个蚂蚁流,即spl它分为两条路径(50%向左,50%向右)。所以它很简单。1.你寻找如何在线性规划中形成最大流问题。2.你找到你想最大化和最小化的东西(在你的例子中,你想最小化时间,所以你必须找到一种基于蚂蚁数量计算时间的方法(时间=蚂蚁/流+“使用的所有边的权重”)约束条件(每个房间的最大流量为1)我不知道我是否完全理解你的答案,但问题是捷径(例如,两条长度为15的路径,以及第一条路径的第一个顶点和第二条路径的最后一个顶点之间的链接)现在,我对这个问题的直觉是,首先运行一个algo,它会找到所有最短的(有捷径的)路径,然后运行一个max flow问题,找到所有这些捷径,但在这里,我想以良好的顺序反转它们(我需要先找到这些捷径,因为有时它们对我的问题来说是值得的)我想我不明白你到底是什么意思。也许你可以把问题和解决问题的方法分开写,这样你就更容易理解你所面临的问题。你也可以举一些例子(比如图的图片和你想从这些图中找到的东西)为了澄清,您是否需要找到特定长度的最大数量的不同路径(而不是尽可能最小的路径)?我试图找到一些例子来说明我的问题,但这是我之前关于这个问题的问题:我最后得出的想法是找到一个最大流算法,但有最短路径的概念。好的,我读了你的文章。你可以使用线性规划,因为你可以有分数流。例如,你可以有一个蚂蚁流,即spl它分为两条路径(50%向左,50%向右)。所以它很简单。1.你寻找如何在线性规划中形成最大流问题。2.你找到你想最大化和最小化的东西(在你的例子中,你想最小化时间,所以你必须找到一种基于蚂蚁数量计算时间的方法(时间=蚂蚁/流+“使用的所有边的权重”),其中重量来自最初填充这些通道)3.限制(每个房间的最大流量为1)