Dijkstra算法中选择最近节点有什么意义?

What is the point of choosing closest node in Dijkstra algorithm?

在我阅读的所有文章中,首先处理的邻居是"closest" 邻居。但最终需要访问所有节点以找出所有可能的路径。所以,问题是——我们为什么要这样做?我相信如果我们简单地以 BFS 方式遍历 Graph 并计算成本,也可以达到相同的结果。例如:

第一步 - 0,成本 table: 2 - 6 | 3 - 2 |

第二步- 2,费用table: 2 - 6 | 3 - 2 | 1 - 9 |

第三步- 3,费用table: 2 - 6 | 3 - 2 | 1 - 9 | 4 - 12 |

第四步- 1,费用table: 2 - 6 | 3 - 2 | 1 - 9 | 4 - 12 | 5 - 12 |

第五步- 4,费用table: 2 - 6 | 3 - 2 | 1 - 9 | 4 - 12 | 5 - 12 |

通过简单的 BFS 遍历找到了成本最低的方法。我错过了什么?

假设从ABBC的路径都是成本1,从A到[=的直达路线13=] 是成本 3。(在现实世界中,前两个是绕过一座山的高速公路,而第三个是穿过山口的小路。)

Dijkstra 将路由您 A -> B -> C,总成本为 2,而 BFS 将路由您 A -> C,总成本为 3。

因此您必须先处理最低成本才能获得正确答案。

在每一步,Dijkstra 算法都会扩展目前已知的成本最低的路径。因此,当你最终遇到目标状态时,你知道所有其他未完成的路径都有更大的成本。所以,你刚刚找到的那一条是最短路径。