2

假设我有一个加权图,其中权重代表距离(以英里为单位)。我要找到从某个顶点 S 到某个顶点 T 的最短路径。此外,假设每个顶点都有相关的货币成本。现在,一开始我有 $M(即 M 美元)。我的工作是在不产生任何债务的情况下找到最短路径。

我的尝试:

我使用 Dijkstra 的算法,但我的解决方案仅适用于某些情况,但并非全部。有谁知道如何解决这个问题,所以它可以工作——请不要简单,除非你完全实现它。非常感谢 Java 工作代码。我已经看过顶级编码器Upper-Intermediate上的示例,但我不知道如何实现他们的伪代码。

我尝试了许多不同的代码/方法,但它们都有太多的错误。我的尝试太多,无法发布,仅发布一个没有多大意义。

4

1 回答 1

0

你说得对,Dijkstra 的算法只在某些情况下有效,因为它只选择成本较低的边,而你必须验证两个条件的存在:

  • 以美元计的路径总成本在美元的预算范围内M
  • 里程数最少。

这是一种保证正确但运行速度可能非常慢的方法。你做了两个步骤:

  • 找出以美元为单位的所有可能路径,并将它们放入数组或列表中;
  • 对于每条路径计算英里数并选择具有最小英里数的路径或路径。

这种方法的问题是生成的列表可能非常大。所以也许有更好的方法来解决这个问题。

于 2012-05-18T18:07:32.493 回答