最快的方式算法

Posted

技术标签:

【中文标题】最快的方式算法【英文标题】:The Fastest Way Algorithm 【发布时间】:2015-02-18 05:25:45 【问题描述】:

我需要弄清楚如何解决这个问题。我正在使用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(row) x j(column) 和值显示从 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 秒。

对不起,我的问题又长又无聊,但我希望有人能提出有用的建议。

【问题讨论】:

这是纯粹的经典en.wikipedia.org/wiki/Shortest_path_problem。 使用Dijkstra's算法 我试过 Dijkstra 的,但由于数字太大,编译需要很长时间。查看我问题的最后一部分,该算法必须适用于 100 个城市。 如果算法一直持续下去,则说明您执行错误。效率很高。 找到 Dijkstra 算法。找到最短路径和成本的最佳方法 【参考方案1】:

我已经想出了如何做到这一点,所以我自己回答这个问题。我设法通过编辑我找到的代码here 使其工作。它运行得非常快而且完美无瑕。

【讨论】:

以上是关于最快的方式算法的主要内容,如果未能解决你的问题,请参考以下文章

数百万 UINT64 RGBZ 图形像素的最快排序算法

在各类算法中那种算法排序是最快的?

世界上最快的排序算法

找到素数最快的算法是啥?

贪心算法之过河问题

大型数据集最快的分类算法是啥? [关闭]