[Algo]最短路径搜索

- 从有向带权的图中获取某个源点到剩余的其他节点的最短路径的算法,权表示的是路径长度。

- 维护一个长度数组v[n],n就是节点个数,每个数组都存储源点到对应的节点的长度,一开始初始化的时候,由于都不知道,所以都初始化成无穷大,然后开始算法:

- 首先是源点到源点的,初始化成0。

- 然后看所有和源点相连的所有其他节点路径,这些路径是已知的了,发现比数组中当前的无穷大小,所以更新到数组中,即第一步是【更新】。

- 完成后,从v数组中选择最小的路径长度对应的节点,这个就是新选择的节点,这个节点的路径和对应的长度就确定了,可以做一个标志,表示这个节点已找到最短路径,即第二步是【贪婪寻找】。

- 由于新加入了一个新节点,又有与之相邻的节点路径是已知的了,可以再次尝试更新,即重复再次运用【更新】这个步骤,更新完毕后,再次运用【寻找】如此反复,直到所有的节点都标记成路径已经找到了,从而找到了一颗最短路径生成树。(树上的每一条唯一路径,从源点到节点x,就是最短路径。注意:这个方法在使用前需要先清除环路,这个对于小图比较简单,对于大型的图,可能先要检查并且清除环路,(环路的存在对于最短路径计算没有意义)会增加计算量。最短路径是一定不可能经过环路的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章