最短路径 floyd java_使用Floyd算法找到最短路径

我有一个包含数字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 ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值