C# 位置间最短路径算法
我需要找到两个地点之间的最短路线。详细说明: 我得到一个excel文件,其中包含3列:city1、city2、它们之间的距离。条件是,如果在1号城市和2号城市之间有一条路线,那么在2号城市和1号城市之间就有一条路线 该文件有多行,任务是读取它并根据城市X和城市Y之间的距离确定最短路径。但是,在表中,路径可能如下所示: 十、 N,100 十、 M,200 U、 Y,50岁 十、 U,20岁 即。没有从X到Y的直接路径,问题的答案是X->U->Y=20+50=70,这是最短的距离。在这种形式下,在请求的出发点和到达点之间可能有许多位置 用户界面询问出发地点和目的地,并输出两者之间的最短路径 我希望我解释得足够好,能够理解这个想法。我试图用C语言来解决这个问题,但我更倾向于寻找一种通用的方法,一种算法来解决这个问题。我意识到这可能有点关联,但我无法应用它C# 位置间最短路径算法,c#,algorithm,C#,Algorithm,我需要找到两个地点之间的最短路线。详细说明: 我得到一个excel文件,其中包含3列:city1、city2、它们之间的距离。条件是,如果在1号城市和2号城市之间有一条路线,那么在2号城市和1号城市之间就有一条路线 该文件有多行,任务是读取它并根据城市X和城市Y之间的距离确定最短路径。但是,在表中,路径可能如下所示: 十、 N,100 十、 M,200 U、 Y,50岁 十、 U,20岁 即。没有从X到Y的直接路径,问题的答案是X->U->Y=20+50=70,这是最短的距离。在这种形式下,
任何方向/帮助/代码示例都值得欣赏。所描述的问题在算法上比问题简单,而问题是。这是一个问题,可以通过以下方法有效地解决。此算法要求距离为非负长度,这似乎适用于您的上下文,因为边权重是非负的。所描述的问题在算法上比所描述的问题更容易。这是一个问题,可以通过以下方法有效地解决。该算法要求距离为非负长度,这似乎适用于您的上下文,因为边权重是非负的。请看一看a*也许*_搜索算法你想要的是最短路径问题,而不是旅行商问题。最短路径问题和旅行商问题之间存在指数差异。这对你来说很幸运。看看a*也许*_搜索算法你想要的是最短路径问题,而不是旅行商问题。最短路径问题和旅行商问题之间存在指数差异。这对你来说很幸运。不,我错了。Dijkstra确实不接受负边缘。是的,迪克斯特拉是你想要的。这里是C-@JuanLopes中的一个实现,感谢您的澄清。事实上,如果允许负循环,那么优化问题的定义就有点不准确,因为可能存在任意小的负长度路径。克服负长度是很简单的。你可以找到最小的一条,即绝对值最大的负边,然后从所有边上减去它的长度。因此,如果最小边的长度为-100,则向所有边添加100。然后你坐下来运行算法。不,我错了。Dijkstra确实不接受负边缘。是的,迪克斯特拉是你想要的。这里是C-@JuanLopes中的一个实现,感谢您的澄清。事实上,如果允许负循环,那么优化问题的定义就有点不准确,因为可能存在任意小的负长度路径。克服负长度是很简单的。你可以找到最小的一条,即绝对值最大的负边,然后从所有边上减去它的长度。因此,如果最小边的长度为-100,则向所有边添加100。然后坐下来运行算法。