我有一个包含数字0和1的邻接矩阵 . 如果从一个节点到另一个节点没有边缘,则该字段将为0,否则该字段将标记为1 .
然后,如果邻接矩阵中的字段为0,则节点之间没有边缘,否则存在权重为1的边缘 .
现在,我已应用Floyd算法来找出从任何节点到每个其他节点的最短路径 . 但我没有得到正确的解决方案 .
这是我的Floyd算法实现 .
void Floyd_Warshal(int graph[Nodes][Nodes], int D[Nodes][Nodes])
{
for (int i = 0; i < Nodes; i++)
{
for (int j = 0; j < Nodes; j++)
{
if (graph[i][j] == 0) { graph[i][j] = INT_MAX; }
D[i][j] = graph[i][j];
}
}
for (int k = 0; k < Nodes; k++) {
for (int i = 0; i < Nodes; i++)
{
for (int j = 0; j < Nodes; j++)
{
if (D[i][j] > D[i][k] + D[k][j]) {
D[i][j] = D[i][k] + D[k][j];
}
}
}
}
}
我已将0设置为 INT_MAX ,以便为算法构建标准矩阵,但我没有得到正确的解决方案 .
另外,这是我的矩阵的一个例子:
A B C D
A 0 0 1 0
B 1 1 0 1
C 0 0 1 0
D 1 0 0 0
将矩阵应用于算法后,矩阵中的任何0都将转换为 INT_MAX . 我希望得到的重量为2 's or 1',但我得到了意想不到的值,如-2712323 ...