最快的方法算法

时间:2015-02-18 05:25:45

标签: java algorithm permutation dijkstra

我需要弄清楚如何解决这个问题。我正在使用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 city的行程持续时间。

当用户输入" 4 2"这意味着从城市4到城市2,作为答案的输出应该是14

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

因此,选择的路线不需要是直接路线,可以在两个城市之间使用任何数量的路线,但速度最快。


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

我可能会找到4个城市的解决方案,但它不适用于100个城市。我也尝试过使用java的排列方法,但正如我所说,编译需要很长时间。然而,编译过程需要超过4秒。

抱歉我的这个漫长而无聊的问题,但我希望有人可以提出一个有用的建议。

1 个答案:

答案 0 :(得分:0)

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