首先我知道Dijkstra算法不能处理负权重,我们可以使用Bellman-Ford来代替它。但是在一个问题中,所有的边都有从0到1(不包括0和1)的权重,并且路径的成本实际上是乘积。
因此,我想的方法是将其取对数。现在所有的边都是负的。我知道Dijkstra算法不能处理负权重,但在这种情况下所有的边都是负的,所以我们不能做一些事情让Dijkstra能够处理吗?
我想过将所有的权重乘以-1,但最短路径会变成最长路径。
那么在这种情况下,有没有办法避免使用Bellman-Ford算法呢?
确切的问题是:“假设对于某些应用程序,路径的成本等于路径中所有边的权重的乘积。在这种情况下,您将如何使用Dijkstra算法?所有边的权重都在0到1之间(0和1不包括在内)。“
因此,我想的方法是将其取对数。现在所有的边都是负的。我知道Dijkstra算法不能处理负权重,但在这种情况下所有的边都是负的,所以我们不能做一些事情让Dijkstra能够处理吗?
我想过将所有的权重乘以-1,但最短路径会变成最长路径。
那么在这种情况下,有没有办法避免使用Bellman-Ford算法呢?
确切的问题是:“假设对于某些应用程序,路径的成本等于路径中所有边的权重的乘积。在这种情况下,您将如何使用Dijkstra算法?所有边的权重都在0到1之间(0和1不包括在内)。“