位置算法之间的最短路径

时间:2015-01-13 15:13:08

标签: c# algorithm

我需要找到两个地点之间的最短路线。详细说明:

我获得了一个包含3列的excel文件:city1,city2,它们之间的距离。条件是如果city1和city2之间有路由,则city2和city1之间有一条路由。

该文件有多行,任务是读取它并根据城市X和城市Y之间的距离确定最短路径。但是,在表格中,路径可能如下所示:

...

X,N,100

X,M,200

U,Y,50

X,U,20

...

予。即没有从X到Y的直接路径,问题的答案是X - > U - > Y = 20 + 50 = 70,这是最短距离。在这种形式中,在要求出发和到达点之间可能存在许多位置。

用户界面要求离开,目的地并输出它们之间的最短路径。

我希望我能够很好地解释这个想法。我试图在C#中解决这个问题,但我更希望找到一种通用的方法,一种算法来解决这个问题。我意识到它可能与Travelling salesman problem有些相关,但我无法应用它。

任何方向/帮助/代码样本都很受欢迎。

1 个答案:

答案 0 :(得分:5)

所描述的问题在算法上比Travelling Salesman问题更容易,NP-hard问题是Shortest Path。这是Dijkstra's algorithm问题,可以使用{{3}}有效解决。此算法要求距离为非负长度,这似乎是您的上下文的情况,因为边权重是非负的。