C编程语言,最短路径

时间:2012-06-11 18:04:35

标签: c algorithm shortest-path

我正在编写代码以找到两点之间的最短距离。我的代码到目前为止工作正常。我的意思是它找到了它们应该通过的距离和路径。我需要打印这些信息,但我应该打印一个打印功能。它的工作方式是这样的:例如,初始点为4,最终为13。

我应该想出一个检查其中间点的算法。让我们说4& 13有点:7

4--7--13现在我需要检查它们之间的每一点,如:

4--6--7--9--13更具体地说,它将检查4-6和6-7以及7-9和9-13之间是否存在点。因此,在下一次迭代中,可能会形成另一个列表,如:

4--2--6--7--5--9--17--13现在让我们说它们之间没有任何中间价值。这就是我应该打印的东西。我真的很感激任何帮助,建议你可以给我

2 个答案:

答案 0 :(得分:2)

Warshall-Floyd算法(由OP使用)有一个版本,除了图形节点之间的距离外,还能确定路径:

Floyd-Warshall algorithm with path-reconstruction

但是,必须注意,这不是解决shortest-path problem的最佳算法。

答案 1 :(得分:1)

这听起来像递归是最好的方法。如果它已经可以找到最短路径,我假设您已经编写了一个函数来找到2点之间的最短路径。也许你可以递归地分解列表,找到最短路径并将该点附加到列表中。

编辑,对不起,我误解了你的问题,你需要找到中点。将递归函数传递给整个点列表并找到一个中点。如果存在,请将其添加到列表中。如果没有中点不附加任何东西。继续调用此函数,直到找到基本情况,该情况应为列表中的1或2个点