如果这些是正确的,我需要在有向图中对Dijktra's algorithm
vs breath first search
进行一些澄清和输入。
Dijktra's
算法会在A
图表中找到从节点F
到节点weighted
的最短路径,无论是否存在周期(只要有一个周期)没有负面的重量)
但为此,所有路径均来自A to all other Nodes in the graph are calculated and we grab the path from
A to
F by reversing the sequences of nodes in
prev`。
BFS:在非加权图中找到从Node A
到Node F
的最短路径,但如果检测到周期则失败。
但是,BFS
只计算从节点A到节点F的路径,而不一定是从节点A的所有路径。
如果提前到达节点F,它只返回路径。
答案 0 :(得分:1)
Dijkstra不会搜索图表的所有节点。当它找到从A到F的路径并且确定没有较短的路径(因为已经访问过的节点的外边界更远),它就会停止。这是可能的,没有负面的重量。
所以回答你的问题“如果这些是正确的”:它们不是。
答案 1 :(得分:0)
这些算法在执行方面有很大不同。
BFS是一种遵循“静态执行模式”的强力算法 另一方面,Dijkstra更具活力,并且始终以最低的成本继续搜索。
dijkstra的目的是找到最短的路径。因此,如果您正在寻找最短的路径使用dijkstra。