G = (V,E) - A :
A[i][j] = 1 (V[i],V[j]) is in E
0 otherwise
k:
(A^k)[i][j] > 0 if and only if there is a path from v[i] to v[j] of length exactly k.
, , , , .
, O(M(n)^log(k)), M(n) nXn.
.
- :
: A^1 = A A A[i][j]=1 , (V[i],V[j]) E
: , l<k
A^k = A^(k-1)*A. A^(k-1)[i][j] > 0, k-1 V[i] V[j].
v1,v2 i j.
k, v1->...->u->v2. u m.
i.h. A^(k-1)[i][m] > 0, . , A[m][j] = 1, (u,v2) = (V[m],V[j]) - .
A^k[i][j] = A^(k-1)*A[i][j] = A^(k-1)[i][1]A[1][j] + ... + A^(k-1)[i][m]A[m][j] + ... + A^(k-1)[i][n]A[n][j]
A[m][j] > 0 A^(k-1)[i][m] > 0, A^(k-1)*A[i][j] > 0
, u , (u, v2) , k-1 v u (otherweise v1->..->u->v2 - k).
, , , A^(k-1)[i][m] > 0, A[m][j] = 0, m.
, A^k[i][j], , A^k[i][j] = 0
QED
: A^k[i][j] - i j k. , .
( M(n), ), , 0/1, boolean - 0/1 - .