

57.Алгоритм Воршалла.
G=(V,E)Транзитивное замыкание ориентированного графа с n вершинами можно определить как булиеву матрицу Т размера n*n, в кот. Элемент на пересечении i-той строки и j-того столбца равен 1, если существует ориентированный путь положительной длины из вершины I в вершину j.В противном случае это
значение равно 0. А-матрица смежности.
|
0 |
1 |
0 |
0 |
|
1 |
1 |
1 |
1 |
А |
0 |
0 |
0 |
1 |
Т |
1 |
1 |
1 |
1 |
|
0 |
0 |
0 |
0 |
|
0 |
0 |
0 |
0 |
|
1 |
0 |
1 |
0 |
|
1 |
1 |
1 |
1 |
Воршалл предложил строить транзитивное замыкание как последовательность матриц размера n*n
–элемент матрицы содержит 1, если есть путь из I в j, причем все
промежуточные вершины не превышают номера k. Матрица содержит информацию о путях между вершинами графа, в которой в качестве промежуточной вершины может использоваться только вершина 1.
.
Если существует путь от I до j и от k до j, то существует путь от k до i-появл.1.
|
|
|
0 |
1 |
0 |
0 |
|
|
|
0 |
1 |
0 |
1 |
|
|
0 |
1 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
R |
(1) |
|
0 |
0 |
0 |
1 |
R |
(2) |
|
0 |
0 |
0 |
1 |
(3) |
|
0 |
0 |
0 |
1 |
|
0 |
0 |
0 |
1 |
|
0 |
0 |
0 |
0 R |
|
0 |
0 |
0 |
0 |
|||||
|
|
|
1 |
0 |
1 |
0 |
|
|
|
1 |
1 |
1 |
1 |
|
|
1 |
1 |
1 |
1 |
Алгоритм Wavshell(A[1..n]*A[1..n])
1.R(0)A;
2.for k=1 to n do 3.for i=1 to n do 4.for j=1 to n do
5.R(k)[I,j]R(k-1)[I,j] or (R(k-1)[I,k] and R(k-1)[k,j] 6.end for
7.end for; 8.end for; 9.retirn R(n)
Вычислит.сложность=О(n3)
|
1 |
1 |
1 |
1 |
|
R(4) |
1 |
1 |
1 |
1 |
T |
|
0 |
0 |
0 |
0 |
|
|
1 |
1 |
1 |
1 |
|
|
0 |
1 |
0 |
0 |
R(0) |
0 |
0 |
0 |
1 |
|
0 |
0 |
0 |
0 |
|
1 |
0 |
1 |
0 |