是否有一种已知的算法可以找到每对之间距离相同的节点之间的最短距离?

时间:2016-09-26 03:07:59

标签: c# algorithm optimization data-structures

换句话说,我想知道是否有一种已知算法可以找到节点之间移动次数最少的算法。例如,我可能有像

这样的树
A - B - C - D
 \     /  \
  E - F -  G

我想要从AG的最短路径。那可能是A->B->C->GA->E->F->F

更具体地说,我有一个

var nodes = new List<Node> 

其中

class Node
{
    // ... properties

    List<Node> Neighbors;
}

并在Node start, end;中给出了一些nodes我想找到从startend的最短路径。

我知道我可以在每个节点之间使用距离为1的Djikstra算法,但我觉得这种情况有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

BFS 遍历是解决此问题的最快方法,因为它将解决线性时间O(m + n)中的问题。

BFS 级别顺序遍历,这意味着它逐级遍历节点:( 首先遍历1个边缘处的所有节点并且在遍历2条边的距离,依此类推。)。

答案 1 :(得分:0)

距离为1或BFS的Dijkstra - 都可以应用。通过这两种方法可以解决这类问题。我不认为还有其他更好的方式。