如何计算具有加权顶点的图的最短路径?
作者:互联网
我想弄清楚,如何计算具有加权顶点的图的最短路径.像Dijkstra和Floyd-Warshall这样的经典算法通常使用加权边缘,我没有看到如何将它们应用到我的情况(加权顶点)的方法:
我的一个想法是将图形转换为具有加权边缘的更经典的视图.这是我收到的:
这里我们有单向和双向加权边,但我仍然不确定哪种算法会处理这个以找到最短路径.
解决方法:
你当然可以通过转换图表来做到这一点.最简单的方法是将每个边缘转换为顶点,并将新顶点与边缘连接在一起,边缘的成本与用于连接它们的顶点相同.
但是你真的不需要为此而烦恼……
Dijkstra的算法很容易适应顶点成本而不使用任何此类转换.当您遍历边缘而不是new_vertex_cost = old_vertex_cost edge_weight时,您只需执行new_vertex_cost = old_vertex_cost new_vertex_weight.
标签:java,algorithm,graph-theory,graph-algorithm 来源: https://codeday.me/bug/20190827/1745684.html