最快的方法算法



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


问题是:

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

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

我有每条路所需的时间清单,总共16次。事实上,当程序启动时,用户会键入列表,但您可以假设我现在有列表。

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

示例:

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

这是一个行程持续时间表。i(行)x j(列),这些值显示了从i到j城市的旅行持续时间。

当用户输入"4 2",即从城市4到城市2时,作为答案的输出应该是14

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

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


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

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

很抱歉我的问题又长又无聊,但我希望有人能提出有用的建议。

我已经想好了如何做到这一点,所以我自己回答了这个问题。我已经设法通过编辑我在这里找到的代码使它工作。它真的很快而且完美无瑕。

最新更新