(* Computation of Transitive Closure by Warshall Algorithm *) tClosure[m_] := Sign[MatrixPower[m, Length[m]]] Warshall[mat_] := Module[{i, j, k, n, m}, m = mat; n = Length[m]; For[k = 1, k <= n, k++, For[i = 1, i <= n, i++, For[j = 1, j <= n, j++, If[m[[i, k]] == 1 && m[[k, j]] == 1, m[[i, j]] = 1]]]]; m] m = Table[Random[Integer, {0, 1}], {i, 1, 10}, {j, 1, 10}] Timing[Warshall[m]][[1]] Timing[tClosure[m]][[1]]