我有一个邻接矩阵,其中包含许多0和1。如果一个节点之间没有边,则该字段为0,否则该字段标记为1。
然后,如果邻接矩阵中的一个字段为0,则节点之间没有边,否则存在一条权重为1的边。
现在,我已经应用了Floyd算法来找出从任何一个节点到其他每个节点的最短路径。但是我得不到正确的解决方案。
以下是我的Floyd算法实现。
我已将0设置为
此外,这是我的矩阵示例:
然后,如果邻接矩阵中的一个字段为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或1,但我却得到了意外的值,如-2712323...