最快的算法

The Fastest Way Algorithm

我需要弄清楚如何解决这个问题。我正在使用 Java 但现在没关系。我不需要任何代码,因为我必须自己做我只需要一些关于算法的建议,因为我找不到任何快速的方法来做到这一点。(我的解决方案在编译时花了太长时间)


问题是:

有4个城市。每个都有不同的路线(总共16条路线)

从城市 1 到城市 4 与从城市 4 到城市 1 不同(所有路线都是单向的),这就是它们具有不同值的原因。

我有每条路的所需时间列表,总共 16 个。实际上,该列表将在程序启动时由用户键入,但您可以假设我现在有该列表。

在我们获得所需时间后,用户选择起点和终点城市,程序必须找到该旅行的最短持续时间。

示例:

0  18 15 8
18 0  7  3
7  16 0  19
10 14 19 0

这是 table 的旅行时间。 i(row) x j(column) 和值表示从 i 到 j 城市的旅行时间。

当用户输入“4 2”表示从城市 4 到城市 2 时,输出的答案应该是 14

但是当用户输入“2 1”时,作为答案的输出应该是 13(3+10)。首先从城市 2 到城市 4 需要 3 小时,然后从城市 4 到城市 1 需要 10 小时,总共需要 13 小时。

所以选择的路线不需要是直达路线任何数量的路线都可以在两个城市之间使用,但最快的方式。


这个 4x4 table 只是 4 个城市的一个例子。 (这也是我所拥有的)。该算法应该适用于最多 100 个城市。用户将在为每个城市之间的旅行持续时间填写 table 之前键入城市数量。

我可能会找到适用于 4 个城市的解决方案,但它不适用于 100 个城市。我还尝试了 java 的排列方法,但正如我所说,编译时间太长。但是编译过程不能超过 4 秒。

很抱歉我的问题冗长乏味,但我希望有人能提出有用的建议。

我已经想出了怎么做,所以我自己回答这个问题。我设法通过编辑我找到的代码 here 使其工作。它工作得非常快速和完美。