【发布时间】:2015-04-18 08:51:50
【问题描述】:
好的,首先我知道 Dijkstra 不适用于负权重,我们可以使用 Bellman-ford 代替它。但是在一个问题中,我得到了它指出所有边的权重从 0 到 1(不包括 0 和 1)。而路径的成本其实就是产品。
所以我的想法就是拿日志。现在所有的边都是负的。现在我知道 Dijkstra 不适用于负权重,但在这种情况下,所有边都是负的,所以我们不能做点什么让 Dijkstra 起作用。
我虽然将所有权重乘以 -1,但最短路径变成了最长路径。
那么在这种情况下我是否可以避免使用 Bellman-Ford 算法。
确切的问题是:“假设对于某些应用程序,路径的成本等于路径中所有边的权重的乘积。在这种情况下,您将如何使用 Dijkstra 算法?所有边的权重是从 0 到 1(不包括 0 和 1)。”
【问题讨论】:
-
首先我假设图是有向的。现在,如果权重在 0 和 1 之间,并且成本是通过权重的乘积来衡量的,那么您确实在寻找最长的路径。如果图中有任何循环,则相当于一个负成本循环。
-
所以 Dijkstra 可以工作。我只需要找到最长的路径。另外,没有额外的要求,因此这就是我感到困惑的原因。
-
您确定不想要最可能的路径吗?
-
我已经给了你确切的问题。请阅读最后 3 行。
-
是的,我在发表评论时已经阅读了这些内容。有些人非常精确地要求他们没有意识到自己不想要的东西。
标签: algorithm dijkstra shortest-path