换句话说,我想知道是否有一种已知算法可以找到节点之间移动次数最少的算法。例如,我可能有像
这样的树A - B - C - D
\ / \
E - F - G
我想要从A
到G
的最短路径。那可能是A->B->C->G
或A->E->F->F
。
更具体地说,我有一个
var nodes = new List<Node>
其中
class Node
{
// ... properties
List<Node> Neighbors;
}
并在Node start, end;
中给出了一些nodes
我想找到从start
到end
的最短路径。
我知道我可以在每个节点之间使用距离为1
的Djikstra算法,但我觉得这种情况有更好的方法吗?
答案 0 :(得分:1)
BFS 遍历是解决此问题的最快方法,因为它将解决线性时间O(m + n)中的问题。
BFS 是级别顺序遍历,这意味着它逐级遍历节点:( 首先遍历1个边缘处的所有节点并且在遍历2条边的距离,依此类推。)。
答案 1 :(得分:0)
距离为1或BFS的Dijkstra - 都可以应用。通过这两种方法可以解决这类问题。我不认为还有其他更好的方式。