Find the shortest Path between two nodes (vertices)

北战南征 提交于 2019-12-24 02:16:28

问题


I have a list of interconnected edges (E), how can I find the shortest path connecting from one vertex to another?

I am thinking about using lowest common ancestors, but the edges don't have a clearly defined root, so I don't think the solution works.

Shortest path is defined by the minimum number of vertexes traversed.

Note: There could be a multi-path connecting two vertices, so obviously breadth first search won't work


回答1:


I'm not sure if you need a path between every pair of nodes or between two particular nodes. Since someone has already given an answer addressing the former, I will address the latter.

If you don't have any prior knowledge about the graph (if you do, you can use a heuristic-based search such as A*) then you should use a breadth-first search.




回答2:


Dijkstra's algorithm will do this for you.




回答3:


The Floyd-Warshall algorithm would be a possible solution to your problem, but there are also other solutions to solve the all-pairs shortest path problem.




回答4:


Shortest path is defined by the minimum number of vertexes treversed

it is same as minimum number of edges plus one.

you can use standard breadth first search and it will work fine. If you have more than one path connecting two vertices just save one of them it will not affect anything, because weight of every edge is 1.




回答5:


Additional 2 cents. Take a look at networkx. There are interesting algos already implemented for what you need, and you can choose the best suited.



来源:https://stackoverflow.com/questions/1659553/find-the-shortest-path-between-two-nodes-vertices

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!