我的Warshall算法中缺少什么?

时间:2014-11-02 05:48:53

标签: java algorithm

我正在尝试使用Warshall算法来查找邻接矩阵的传递闭包。这就是我对该功能所具有的:

public static int[][] warshall(int A[][]){
    int R[][] = A;
    for (int k = 1; k < n; k++) {
        for (int i = 1; i < n; i++) {
            for (int j = 1; j < n; j++) {
                if ((R[i][j] == 1) || ((R[i][k] == 1) && (R[k][j] == 1))) {
                    A[i][j] = 1;
                }
            }
        }
        R = A.clone();
    }
    return A;
}

我使用以下邻接矩阵进行测试:

0100
0001
0000
1010

哪个应该导致:

1111
1111
0000
1111

我没有接近这个。任何人都可以随时看到我错过的东西吗?

感谢您的任何提示或建议。

1 个答案:

答案 0 :(得分:2)

我不熟悉这个特殊的算法,但是在Java和许多其他语言中(实际上大部分都是这样),你应该始终开始你的for循环,索引为0而不是1。