我正在努力使用Dijkstra的算法在无向无环图中找到两个节点之间的最短路径。我想找到同一算法可能的最长路径。我也想避免一些边缘值为0的路线。如何使用Dijkstra的算法做到这一点?
现在,在搜索Stackoverflow之后,我遇到了一个给定的解决方案,该解决方案仅说明我们需要修改松弛部分以找到最长的路径。
赞:
date=$(date +%s) ### now
offset=300 #five minutes in seconds
newdate=$((date + offset)) ### added 300 seconds
date=$(date --date="@$newdate" "+%Y-%m-%d %T") ### got the new date in whatever format I chose.
但是我们不考虑添加if(distanceValueOfNodeA< EdgeValueofNodeBtoA )
{
distanceValueOfNodeA = EdgeValueofNodeBtoA;
}
但是对于最短路径,我们计算:
distanceValueOfNodeB
我们应该忽略distanceValueOfNodeA = distanceValueOfNodeB+EdgeValueofNodeBtoA
来计算distanceValueOfNodeB
吗?
答案 0 :(得分:1)
很抱歉让您失望,但是这个问题被称为Longest path in a graph,并且没有一种有效的算法可以解决该问题,因此可以对Djikstra算法进行任何修改。
它属于一类被称为NP-hard的问题,这些问题目前(目前)还没有一种算法能够以比指数更快的时间来解决。