是否存在给定开始(v)和结束(u)的图算法将找到通过给定边集的最短路径,但是如果u是断开连接的顶点,它还将确定要添加的最短路径缺少边缘,直到你不再断开连接?
我有一个像素矩阵,其中的线由255(黑色)和0(白色)组成。线条(255)可以有断裂或刺激,我必须摆脱两者。我可以有一个像素矩阵森林,有7个左右的黑色像素树。我需要找到每棵树的真实终点,找到每棵树的单个最短路径,然后将所有倾斜树合并在一起形成1条单线(即,从原始矩阵中最远的2个端点开始的单条最短路径) 。所有边缘权重都可以被认为是1.
由于
答案 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:边可能是也可能不是负的