非循环无向断开图的单个最短路径

时间:2009-08-23 05:53:40

标签: algorithm graph

是否存在给定开始(v)和结束(u)的图算法将找到通过给定边集的最短路径,但是如果u是断开连接的顶点,它还将确定要添加的最短路径缺少边缘,直到你不再断开连接?

我有一个像素矩阵,其中的线由255(黑色)和0(白色)组成。线条(255)可以有断裂或刺激,我必须摆脱两者。我可以有一个像素矩阵森林,有7个左右的黑色像素树。我需要找到每棵树的真实终点,找到每棵树的单个最短路径,然后将所有倾斜树合并在一起形成1条单线(即,从原始矩阵中最远的2个端点开始的单条最短路径) 。所有边缘权重都可以被认为是1.

由于

3 个答案:

答案 0 :(得分:5)

如何运行Dijkstra's algorithm,如果断开连接,请连接v和u?您对“添加缺失边缘的最佳位置”的标准是什么?边缘是否有重量(如距离)?

修改: 对于“最佳位置”的一个想法,您可以尝试在所有连接对之间具有最小最短路径总和的路径。 Floyd–Warshall algorithm可用于查找所有对之间的最短路径。因此,对v的树和u中的每个节点运行Floyd-Warshall。

答案 1 :(得分:3)

您的问题没有明确定义断开连接的图表。我总能在v和你之间添加和优化。

如果你的意思是给定一个非循环的无向断开图,实际上称为森林,并给出一个边缘子集作为子图,你能找到顶点之间的最短路径,这个问题是微不足道的,因为如果有一条路径在完整图表中,只有一条路径。

如果这是一般图G,并且您正在谈论森林子图G',那么我们需要更多信息。加权了吗?它只是正重量吗?如果没有加权,请做一些Dijksta的变种。将树的直径定义为两个叶子之间最长路径的长度(这在树中很明确,因为只有一条这样的路径)。设S是G'中所有树的直径之和,然后将G'的所有边的权重设置为2S,然后Dijkstra的算法将自动更喜欢逐步通过G',只有在没有G'时才进入G'选择,因为走过G'总是会更便宜。

答案 2 :(得分:0)

这里有以下场景: 情况1。 (所有边>0)

case2:边可能是也可能不是负的

  • 为此阅读 Floyd–Warshall 算法