Я пытаюсь реализовать алгоритм Варшалла, чтобы найти транзитивное замыкание матрицы смежности. Это то, что у меня есть для функции:Что мне недостает в моем алгоритме 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
Я не приближаясь к этому. Может ли кто-нибудь с легкостью увидеть то, что мне не хватает?
Спасибо за любые советы или предложения.
Я не вижу какой-либо часть этого кода пересекает вершины или ребра. Кроме того, что такое 'n'? Он не определен нигде в этом блоке кода. – Makoto
Граф также может быть представлен как матрица –