Java Dijkstra-在预算内找到目的地

Java Dijkstra-在预算内找到目的地,java,graph-algorithm,dijkstra,Java,Graph Algorithm,Dijkstra,我得到了一个图,包括一个起始顶点,其他顶点,以及表示从一个顶点到另一个顶点的成本的边。我需要找到一组目标顶点,我可以从开始顶点移动到这些顶点。预算为一定金额的美元,差旅总成本应在预算范围内。如何实现Dijkstra算法来解决这个问题?我认为我们以前通常使用Dijkstra来寻找两个固定顶点之间的最短路径。但我不知道如何在这个预算问题上实施Dijkstra。如果有人能提出一些想法,那真的很有帮助 根据我的理解,Dijkstra的算法解决了这个问题。这意味着生成的数据结构是根在起始节点的树。通常,实

我得到了一个图,包括一个起始顶点,其他顶点,以及表示从一个顶点到另一个顶点的成本的边。我需要找到一组目标顶点,我可以从开始顶点移动到这些顶点。预算为一定金额的美元,差旅总成本应在预算范围内。如何实现Dijkstra算法来解决这个问题?我认为我们以前通常使用Dijkstra来寻找两个固定顶点之间的最短路径。但我不知道如何在这个预算问题上实施Dijkstra。如果有人能提出一些想法,那真的很有帮助

根据我的理解,Dijkstra的算法解决了这个问题。这意味着生成的数据结构是根在起始节点的树。通常,实现将存储从起始节点到达每个节点的最小成本。总的来说,可以在预算内到达的顶点集是最短路径的成本不超过预算的顶点集。算法本身不需要修改;在另外一个步骤中,可以在budged内到达的节点必须作为输出返回。

如果使用Dijkstra算法,可能会出现以下情况:

假设预算为50,图中有4个节点(开始、节点1、节点2、节点3)

开始节点->节点1(15)->节点2(10):所以总成本是25

开始节点->节点3(15):总成本为15

那么现在你的预期结果是什么?您应该先转到节点1,然后再转到节点2,忽略节点3(因为您无法返回到开始,然后再转到节点3,返回也将花费30美元)。或者您应该转到节点1,返回开始,然后转到节点3(总成本为45,这是您可以使用的最大成本)


您需要的不是覆盖所有目的地的最短路径,而是Floyd Warshall算法–Warshall_算法

1。确定起点和每个其他顶点之间的最短路径。2.每次旅行的价格。3.确定哪些行程在预算内。