Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 位置间最短路径算法_C#_Algorithm - Fatal编程技术网

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,这是最短的距离。在这种形式下,

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

我得到一个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语言来解决这个问题,但我更倾向于寻找一种通用的方法,一种算法来解决这个问题。我意识到这可能有点关联,但我无法应用它


任何方向/帮助/代码示例都值得欣赏。

所描述的问题在算法上比问题简单,而问题是。这是一个问题,可以通过以下方法有效地解决。此算法要求距离为非负长度,这似乎适用于您的上下文,因为边权重是非负的。

所描述的问题在算法上比所描述的问题更容易。这是一个问题,可以通过以下方法有效地解决。该算法要求距离为非负长度,这似乎适用于您的上下文,因为边权重是非负的。

请看一看a*也许*_搜索算法你想要的是最短路径问题,而不是旅行商问题。最短路径问题和旅行商问题之间存在指数差异。这对你来说很幸运。看看a*也许*_搜索算法你想要的是最短路径问题,而不是旅行商问题。最短路径问题和旅行商问题之间存在指数差异。这对你来说很幸运。不,我错了。Dijkstra确实不接受负边缘。是的,迪克斯特拉是你想要的。这里是C-@JuanLopes中的一个实现,感谢您的澄清。事实上,如果允许负循环,那么优化问题的定义就有点不准确,因为可能存在任意小的负长度路径。克服负长度是很简单的。你可以找到最小的一条,即绝对值最大的负边,然后从所有边上减去它的长度。因此,如果最小边的长度为-100,则向所有边添加100。然后你坐下来运行算法。不,我错了。Dijkstra确实不接受负边缘。是的,迪克斯特拉是你想要的。这里是C-@JuanLopes中的一个实现,感谢您的澄清。事实上,如果允许负循环,那么优化问题的定义就有点不准确,因为可能存在任意小的负长度路径。克服负长度是很简单的。你可以找到最小的一条,即绝对值最大的负边,然后从所有边上减去它的长度。因此,如果最小边的长度为-100,则向所有边添加100。然后坐下来运行算法。