【发布时间】:2016-04-10 21:10:08
【问题描述】:
我正在尝试实现 Dijkstra 的算法,并且我非常了解如何在基本层面上做到这一点,但让我感到困惑的一件事是 INT_MAX。这是我正在遵循的算法:
Dijkstra(start, end)
startV = search(start)
endV = search(end)
startV.solved = true
startV.distance = 0
solved = {startV} //list of solved vertices
while (!endV.solved)
minDistance = INT_MAX
solvedV = NULL
for s in solved
for y in s.adjacent
if(!y.solved)
dist = s.distance + y.distance
if(dist < minDistance)
solvedV = y
minDistance = dist
parent = s
solvedV.distance = minDistance
solvedV.parent = parent
solvedV.solved = true
solved.add(solvedV)
如果您试图找到最短路径,为什么要使用称为 INT_MAX 的东西来计算称为 minDistance 的东西?你如何找到INT_MAX?如果它完全影响答案,我正在使用 C++,我的顶点是结构。但它是家庭作业,所以没有答案的代码。
【问题讨论】:
-
INT_MAX表示可能的最大整数。 -
为什么不把这个名字打进谷歌呢?
-
@The Paramagnetic Croissant 我做了,但我没有发现任何有用的东西。 @harold,你的意思是说
minDistance是一种边界,只是一个任意大的数字? -
这只是
minDistance跟踪到目前为止找到的最小值,所以你用不能 的最小值来初始化它,以确保它得到适当的更新。 -
您“没有找到任何有用的东西”?谷歌搜索
INT_MAXliterally tells you the answer。来吧。