113
с/к “Эффективные алгоритмы” Лекция 8: Вероятностные алгоритмы А. Куликов Computer Science клуб при ПОМИ http://logic.pdmi.ras.ru/infclub/ А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 1 / 26

20071118 efficientalgorithms kulikov_lecture08

Embed Size (px)

Citation preview

Page 1: 20071118 efficientalgorithms kulikov_lecture08

с/к “Эффективные алгоритмы”Лекция 8: Вероятностные алгоритмы

А. Куликов

Computer Science клуб при ПОМИhttp://logic.pdmi.ras.ru/∼infclub/

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 1 / 26

Page 2: 20071118 efficientalgorithms kulikov_lecture08

План лекции

1 Нахождение матрицы расстояний

2 Поиск виновников в умножении булевых матриц

3 Поиск кратчайших путей

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 2 / 26

Page 3: 20071118 efficientalgorithms kulikov_lecture08

План лекции

1 Нахождение матрицы расстояний

2 Поиск виновников в умножении булевых матриц

3 Поиск кратчайших путей

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 2 / 26

Page 4: 20071118 efficientalgorithms kulikov_lecture08

План лекции

1 Нахождение матрицы расстояний

2 Поиск виновников в умножении булевых матриц

3 Поиск кратчайших путей

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 2 / 26

Page 5: 20071118 efficientalgorithms kulikov_lecture08

Кратчайшие пути в графе

Определение

Дан связный неориентированный граф G = (V , E ), вес каждогоребра равен 1.Матрицей расстояний (distance matrix) называется матрица D, вкоторой D[i , j ] равно длине кратчайшего пути из i в j .Матрицей кратчайших путей (shortest path matrix) называетсяматрица P , в которой P[i , j ] — первая вершина на кратчайшемпути из i в j .Задача нахождения кратчайших расстояний (all-pairs distancesproblem, ADP) и задача нахождения кратчайших путей (all-pairsshortest paths problem, APSP) заключаются в построениисоответствующих матриц.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 3 / 26

Page 6: 20071118 efficientalgorithms kulikov_lecture08

Кратчайшие пути в графе

ОпределениеДан связный неориентированный граф G = (V , E ), вес каждогоребра равен 1.

Матрицей расстояний (distance matrix) называется матрица D, вкоторой D[i , j ] равно длине кратчайшего пути из i в j .Матрицей кратчайших путей (shortest path matrix) называетсяматрица P , в которой P[i , j ] — первая вершина на кратчайшемпути из i в j .Задача нахождения кратчайших расстояний (all-pairs distancesproblem, ADP) и задача нахождения кратчайших путей (all-pairsshortest paths problem, APSP) заключаются в построениисоответствующих матриц.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 3 / 26

Page 7: 20071118 efficientalgorithms kulikov_lecture08

Кратчайшие пути в графе

ОпределениеДан связный неориентированный граф G = (V , E ), вес каждогоребра равен 1.Матрицей расстояний (distance matrix) называется матрица D, вкоторой D[i , j ] равно длине кратчайшего пути из i в j .

Матрицей кратчайших путей (shortest path matrix) называетсяматрица P , в которой P[i , j ] — первая вершина на кратчайшемпути из i в j .Задача нахождения кратчайших расстояний (all-pairs distancesproblem, ADP) и задача нахождения кратчайших путей (all-pairsshortest paths problem, APSP) заключаются в построениисоответствующих матриц.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 3 / 26

Page 8: 20071118 efficientalgorithms kulikov_lecture08

Кратчайшие пути в графе

ОпределениеДан связный неориентированный граф G = (V , E ), вес каждогоребра равен 1.Матрицей расстояний (distance matrix) называется матрица D, вкоторой D[i , j ] равно длине кратчайшего пути из i в j .Матрицей кратчайших путей (shortest path matrix) называетсяматрица P , в которой P[i , j ] — первая вершина на кратчайшемпути из i в j .

Задача нахождения кратчайших расстояний (all-pairs distancesproblem, ADP) и задача нахождения кратчайших путей (all-pairsshortest paths problem, APSP) заключаются в построениисоответствующих матриц.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 3 / 26

Page 9: 20071118 efficientalgorithms kulikov_lecture08

Кратчайшие пути в графе

ОпределениеДан связный неориентированный граф G = (V , E ), вес каждогоребра равен 1.Матрицей расстояний (distance matrix) называется матрица D, вкоторой D[i , j ] равно длине кратчайшего пути из i в j .Матрицей кратчайших путей (shortest path matrix) называетсяматрица P , в которой P[i , j ] — первая вершина на кратчайшемпути из i в j .Задача нахождения кратчайших расстояний (all-pairs distancesproblem, ADP) и задача нахождения кратчайших путей (all-pairsshortest paths problem, APSP) заключаются в построениисоответствующих матриц.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 3 / 26

Page 10: 20071118 efficientalgorithms kulikov_lecture08

План лекции

1 Нахождение матрицы расстояний

2 Поиск виновников в умножении булевых матриц

3 Поиск кратчайших путей

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 4 / 26

Page 11: 20071118 efficientalgorithms kulikov_lecture08

Матрица смежности и длины путей

Матрица смежности и длины путей

Вспомним, что если A — матрица смежности графа G , тоAk [i , j ] — количество путей длины k из i в j .Таким образом, посчитав все степени A от 1 до n, мы решимзадачу ADP, но это займет O(n3.376) времени.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 5 / 26

Page 12: 20071118 efficientalgorithms kulikov_lecture08

Матрица смежности и длины путей

Матрица смежности и длины путейВспомним, что если A — матрица смежности графа G , тоAk [i , j ] — количество путей длины k из i в j .

Таким образом, посчитав все степени A от 1 до n, мы решимзадачу ADP, но это займет O(n3.376) времени.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 5 / 26

Page 13: 20071118 efficientalgorithms kulikov_lecture08

Матрица смежности и длины путей

Матрица смежности и длины путейВспомним, что если A — матрица смежности графа G , тоAk [i , j ] — количество путей длины k из i в j .Таким образом, посчитав все степени A от 1 до n, мы решимзадачу ADP, но это займет O(n3.376) времени.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 5 / 26

Page 14: 20071118 efficientalgorithms kulikov_lecture08

Квадрат графа

ОпределениеКвадратом графа G = (V , E ) называется граф G = (V , E ′), гдеразличные i и j соединены ребром, если расстояние между ними в Gне более 2.

Матрица расстояний квадрата графа

Ясно, что по квадрату матрицы смежности A2 графа G легкопостроить матрицу смежности графа G ′.Если диаметр (то есть длина самого длинного кратчайшего пути)графа G не более 2, то граф G ′ — полный.В таком случае D = 2A′ − A.В общем же случае матрицу D можно строить рекурсивно.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 6 / 26

Page 15: 20071118 efficientalgorithms kulikov_lecture08

Квадрат графа

ОпределениеКвадратом графа G = (V , E ) называется граф G = (V , E ′), гдеразличные i и j соединены ребром, если расстояние между ними в Gне более 2.

Матрица расстояний квадрата графаЯсно, что по квадрату матрицы смежности A2 графа G легкопостроить матрицу смежности графа G ′.

Если диаметр (то есть длина самого длинного кратчайшего пути)графа G не более 2, то граф G ′ — полный.В таком случае D = 2A′ − A.В общем же случае матрицу D можно строить рекурсивно.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 6 / 26

Page 16: 20071118 efficientalgorithms kulikov_lecture08

Квадрат графа

ОпределениеКвадратом графа G = (V , E ) называется граф G = (V , E ′), гдеразличные i и j соединены ребром, если расстояние между ними в Gне более 2.

Матрица расстояний квадрата графаЯсно, что по квадрату матрицы смежности A2 графа G легкопостроить матрицу смежности графа G ′.Если диаметр (то есть длина самого длинного кратчайшего пути)графа G не более 2, то граф G ′ — полный.

В таком случае D = 2A′ − A.В общем же случае матрицу D можно строить рекурсивно.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 6 / 26

Page 17: 20071118 efficientalgorithms kulikov_lecture08

Квадрат графа

ОпределениеКвадратом графа G = (V , E ) называется граф G = (V , E ′), гдеразличные i и j соединены ребром, если расстояние между ними в Gне более 2.

Матрица расстояний квадрата графаЯсно, что по квадрату матрицы смежности A2 графа G легкопостроить матрицу смежности графа G ′.Если диаметр (то есть длина самого длинного кратчайшего пути)графа G не более 2, то граф G ′ — полный.В таком случае D = 2A′ − A.

В общем же случае матрицу D можно строить рекурсивно.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 6 / 26

Page 18: 20071118 efficientalgorithms kulikov_lecture08

Квадрат графа

ОпределениеКвадратом графа G = (V , E ) называется граф G = (V , E ′), гдеразличные i и j соединены ребром, если расстояние между ними в Gне более 2.

Матрица расстояний квадрата графаЯсно, что по квадрату матрицы смежности A2 графа G легкопостроить матрицу смежности графа G ′.Если диаметр (то есть длина самого длинного кратчайшего пути)графа G не более 2, то граф G ′ — полный.В таком случае D = 2A′ − A.В общем же случае матрицу D можно строить рекурсивно.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 6 / 26

Page 19: 20071118 efficientalgorithms kulikov_lecture08

Рекурсивное вычисление матрицы расстояний

ЛеммаПусть D — матрица кратчайших расстояний графа G , G ′ — квадратграфа G , D ′ — матрица кратчайших расстояний графа G ′. Тогда длялюбых двух вершин i , j

D[i , j ] =

{2D ′[i , j ], если D[i , j ] четно,2D ′[i , j ]− 1, если D[i , j ] нечетно.

УпражнениеДоказать эту лемму.

Итак, мы могли бы рекурсивно вычислять матрицу D, если бы заранеезнали четность ее элементов.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 7 / 26

Page 20: 20071118 efficientalgorithms kulikov_lecture08

Рекурсивное вычисление матрицы расстояний

ЛеммаПусть D — матрица кратчайших расстояний графа G , G ′ — квадратграфа G , D ′ — матрица кратчайших расстояний графа G ′. Тогда длялюбых двух вершин i , j

D[i , j ] =

{2D ′[i , j ], если D[i , j ] четно,2D ′[i , j ]− 1, если D[i , j ] нечетно.

УпражнениеДоказать эту лемму.

Итак, мы могли бы рекурсивно вычислять матрицу D, если бы заранеезнали четность ее элементов.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 7 / 26

Page 21: 20071118 efficientalgorithms kulikov_lecture08

Рекурсивное вычисление матрицы расстояний

ЛеммаПусть D — матрица кратчайших расстояний графа G , G ′ — квадратграфа G , D ′ — матрица кратчайших расстояний графа G ′. Тогда длялюбых двух вершин i , j

D[i , j ] =

{2D ′[i , j ], если D[i , j ] четно,2D ′[i , j ]− 1, если D[i , j ] нечетно.

УпражнениеДоказать эту лемму.

Итак, мы могли бы рекурсивно вычислять матрицу D, если бы заранеезнали четность ее элементов.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 7 / 26

Page 22: 20071118 efficientalgorithms kulikov_lecture08

Нахождение четности крачтайшего пути

ЛеммаДля любых двух вершин i и j графа G

1 D[i , j ]− 1 ≤ D[k , j ] ≤ D[i , j ] + 1 для любого соседа k вершины i ;2 D[k , j ] = D[i , j ]− 1 для некоторого соседа k вершины i .

ЛеммаДля любых двух вершин i и j графа G

1 если D[i , j ] четно, то D ′[k , j ] ≥ D ′[i , j ] для любого соседа kвершины i ;

2 если D[i , j ] нечетно, то D ′[k , j ] ≤ D ′[i , j ] для любого соседа kвершины i ; более того, для какого-то соседа k вершины iD ′[k , j ] < D ′[i , j ].

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 8 / 26

Page 23: 20071118 efficientalgorithms kulikov_lecture08

Нахождение четности крачтайшего пути

ЛеммаДля любых двух вершин i и j графа G

1 D[i , j ]− 1 ≤ D[k , j ] ≤ D[i , j ] + 1 для любого соседа k вершины i ;

2 D[k , j ] = D[i , j ]− 1 для некоторого соседа k вершины i .

ЛеммаДля любых двух вершин i и j графа G

1 если D[i , j ] четно, то D ′[k , j ] ≥ D ′[i , j ] для любого соседа kвершины i ;

2 если D[i , j ] нечетно, то D ′[k , j ] ≤ D ′[i , j ] для любого соседа kвершины i ; более того, для какого-то соседа k вершины iD ′[k , j ] < D ′[i , j ].

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 8 / 26

Page 24: 20071118 efficientalgorithms kulikov_lecture08

Нахождение четности крачтайшего пути

ЛеммаДля любых двух вершин i и j графа G

1 D[i , j ]− 1 ≤ D[k , j ] ≤ D[i , j ] + 1 для любого соседа k вершины i ;2 D[k , j ] = D[i , j ]− 1 для некоторого соседа k вершины i .

ЛеммаДля любых двух вершин i и j графа G

1 если D[i , j ] четно, то D ′[k , j ] ≥ D ′[i , j ] для любого соседа kвершины i ;

2 если D[i , j ] нечетно, то D ′[k , j ] ≤ D ′[i , j ] для любого соседа kвершины i ; более того, для какого-то соседа k вершины iD ′[k , j ] < D ′[i , j ].

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 8 / 26

Page 25: 20071118 efficientalgorithms kulikov_lecture08

Нахождение четности крачтайшего пути

ЛеммаДля любых двух вершин i и j графа G

1 D[i , j ]− 1 ≤ D[k , j ] ≤ D[i , j ] + 1 для любого соседа k вершины i ;2 D[k , j ] = D[i , j ]− 1 для некоторого соседа k вершины i .

ЛеммаДля любых двух вершин i и j графа G

1 если D[i , j ] четно, то D ′[k , j ] ≥ D ′[i , j ] для любого соседа kвершины i ;

2 если D[i , j ] нечетно, то D ′[k , j ] ≤ D ′[i , j ] для любого соседа kвершины i ; более того, для какого-то соседа k вершины iD ′[k , j ] < D ′[i , j ].

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 8 / 26

Page 26: 20071118 efficientalgorithms kulikov_lecture08

Нахождение четности крачтайшего пути

ЛеммаДля любых двух вершин i и j графа G

1 D[i , j ]− 1 ≤ D[k , j ] ≤ D[i , j ] + 1 для любого соседа k вершины i ;2 D[k , j ] = D[i , j ]− 1 для некоторого соседа k вершины i .

ЛеммаДля любых двух вершин i и j графа G

1 если D[i , j ] четно, то D ′[k , j ] ≥ D ′[i , j ] для любого соседа kвершины i ;

2 если D[i , j ] нечетно, то D ′[k , j ] ≤ D ′[i , j ] для любого соседа kвершины i ; более того, для какого-то соседа k вершины iD ′[k , j ] < D ′[i , j ].

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 8 / 26

Page 27: 20071118 efficientalgorithms kulikov_lecture08

Нахождение четности крачтайшего пути

ЛеммаДля любых двух вершин i и j графа G

1 D[i , j ]− 1 ≤ D[k , j ] ≤ D[i , j ] + 1 для любого соседа k вершины i ;2 D[k , j ] = D[i , j ]− 1 для некоторого соседа k вершины i .

ЛеммаДля любых двух вершин i и j графа G

1 если D[i , j ] четно, то D ′[k , j ] ≥ D ′[i , j ] для любого соседа kвершины i ;

2 если D[i , j ] нечетно, то D ′[k , j ] ≤ D ′[i , j ] для любого соседа kвершины i ; более того, для какого-то соседа k вершины iD ′[k , j ] < D ′[i , j ].

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 8 / 26

Page 28: 20071118 efficientalgorithms kulikov_lecture08

Доказательство

Доказательство

1 Пусть D[i , j ] = 2l .I D ′[i , j ] = lI D[k, j ] ≥ 2l − 1 для любого соседа k вершины iI D ′[k, j ] ≥ D[k, j ]/2 ≥ l − 1/2, а следовательно, D ′[k, j ] ≥ l = D ′[i , j ]

2 Пусть D[i , j ] = 2l − 1.I D ′[i , j ] = lI D[k, j ] ≤ 2l для любого соседа k вершины iI D ′[k, j ] ≤ (D[k, j ] + 1)/2 ≤ l + 1/2, а следовательно,

D ′[k, j ] ≤ l = D ′[i , j ]I для какого-то соседа k вершины i D[k, j ] = D[i , j ]− 1 = 2l − 2 и

D ′[k, j ] = l − 1 < l = D ′[i , j ]

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 9 / 26

Page 29: 20071118 efficientalgorithms kulikov_lecture08

Доказательство

Доказательство1 Пусть D[i , j ] = 2l .

I D ′[i , j ] = lI D[k, j ] ≥ 2l − 1 для любого соседа k вершины iI D ′[k, j ] ≥ D[k, j ]/2 ≥ l − 1/2, а следовательно, D ′[k, j ] ≥ l = D ′[i , j ]

2 Пусть D[i , j ] = 2l − 1.I D ′[i , j ] = lI D[k, j ] ≤ 2l для любого соседа k вершины iI D ′[k, j ] ≤ (D[k, j ] + 1)/2 ≤ l + 1/2, а следовательно,

D ′[k, j ] ≤ l = D ′[i , j ]I для какого-то соседа k вершины i D[k, j ] = D[i , j ]− 1 = 2l − 2 и

D ′[k, j ] = l − 1 < l = D ′[i , j ]

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 9 / 26

Page 30: 20071118 efficientalgorithms kulikov_lecture08

Доказательство

Доказательство1 Пусть D[i , j ] = 2l .

I D ′[i , j ] = l

I D[k, j ] ≥ 2l − 1 для любого соседа k вершины iI D ′[k, j ] ≥ D[k, j ]/2 ≥ l − 1/2, а следовательно, D ′[k, j ] ≥ l = D ′[i , j ]

2 Пусть D[i , j ] = 2l − 1.I D ′[i , j ] = lI D[k, j ] ≤ 2l для любого соседа k вершины iI D ′[k, j ] ≤ (D[k, j ] + 1)/2 ≤ l + 1/2, а следовательно,

D ′[k, j ] ≤ l = D ′[i , j ]I для какого-то соседа k вершины i D[k, j ] = D[i , j ]− 1 = 2l − 2 и

D ′[k, j ] = l − 1 < l = D ′[i , j ]

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 9 / 26

Page 31: 20071118 efficientalgorithms kulikov_lecture08

Доказательство

Доказательство1 Пусть D[i , j ] = 2l .

I D ′[i , j ] = lI D[k, j ] ≥ 2l − 1 для любого соседа k вершины i

I D ′[k, j ] ≥ D[k, j ]/2 ≥ l − 1/2, а следовательно, D ′[k, j ] ≥ l = D ′[i , j ]2 Пусть D[i , j ] = 2l − 1.

I D ′[i , j ] = lI D[k, j ] ≤ 2l для любого соседа k вершины iI D ′[k, j ] ≤ (D[k, j ] + 1)/2 ≤ l + 1/2, а следовательно,

D ′[k, j ] ≤ l = D ′[i , j ]I для какого-то соседа k вершины i D[k, j ] = D[i , j ]− 1 = 2l − 2 и

D ′[k, j ] = l − 1 < l = D ′[i , j ]

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 9 / 26

Page 32: 20071118 efficientalgorithms kulikov_lecture08

Доказательство

Доказательство1 Пусть D[i , j ] = 2l .

I D ′[i , j ] = lI D[k, j ] ≥ 2l − 1 для любого соседа k вершины iI D ′[k, j ] ≥ D[k, j ]/2 ≥ l − 1/2, а следовательно, D ′[k, j ] ≥ l = D ′[i , j ]

2 Пусть D[i , j ] = 2l − 1.I D ′[i , j ] = lI D[k, j ] ≤ 2l для любого соседа k вершины iI D ′[k, j ] ≤ (D[k, j ] + 1)/2 ≤ l + 1/2, а следовательно,

D ′[k, j ] ≤ l = D ′[i , j ]I для какого-то соседа k вершины i D[k, j ] = D[i , j ]− 1 = 2l − 2 и

D ′[k, j ] = l − 1 < l = D ′[i , j ]

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 9 / 26

Page 33: 20071118 efficientalgorithms kulikov_lecture08

Доказательство

Доказательство1 Пусть D[i , j ] = 2l .

I D ′[i , j ] = lI D[k, j ] ≥ 2l − 1 для любого соседа k вершины iI D ′[k, j ] ≥ D[k, j ]/2 ≥ l − 1/2, а следовательно, D ′[k, j ] ≥ l = D ′[i , j ]

2 Пусть D[i , j ] = 2l − 1.

I D ′[i , j ] = lI D[k, j ] ≤ 2l для любого соседа k вершины iI D ′[k, j ] ≤ (D[k, j ] + 1)/2 ≤ l + 1/2, а следовательно,

D ′[k, j ] ≤ l = D ′[i , j ]I для какого-то соседа k вершины i D[k, j ] = D[i , j ]− 1 = 2l − 2 и

D ′[k, j ] = l − 1 < l = D ′[i , j ]

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 9 / 26

Page 34: 20071118 efficientalgorithms kulikov_lecture08

Доказательство

Доказательство1 Пусть D[i , j ] = 2l .

I D ′[i , j ] = lI D[k, j ] ≥ 2l − 1 для любого соседа k вершины iI D ′[k, j ] ≥ D[k, j ]/2 ≥ l − 1/2, а следовательно, D ′[k, j ] ≥ l = D ′[i , j ]

2 Пусть D[i , j ] = 2l − 1.I D ′[i , j ] = l

I D[k, j ] ≤ 2l для любого соседа k вершины iI D ′[k, j ] ≤ (D[k, j ] + 1)/2 ≤ l + 1/2, а следовательно,

D ′[k, j ] ≤ l = D ′[i , j ]I для какого-то соседа k вершины i D[k, j ] = D[i , j ]− 1 = 2l − 2 и

D ′[k, j ] = l − 1 < l = D ′[i , j ]

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 9 / 26

Page 35: 20071118 efficientalgorithms kulikov_lecture08

Доказательство

Доказательство1 Пусть D[i , j ] = 2l .

I D ′[i , j ] = lI D[k, j ] ≥ 2l − 1 для любого соседа k вершины iI D ′[k, j ] ≥ D[k, j ]/2 ≥ l − 1/2, а следовательно, D ′[k, j ] ≥ l = D ′[i , j ]

2 Пусть D[i , j ] = 2l − 1.I D ′[i , j ] = lI D[k, j ] ≤ 2l для любого соседа k вершины i

I D ′[k, j ] ≤ (D[k, j ] + 1)/2 ≤ l + 1/2, а следовательно,D ′[k, j ] ≤ l = D ′[i , j ]

I для какого-то соседа k вершины i D[k, j ] = D[i , j ]− 1 = 2l − 2 иD ′[k, j ] = l − 1 < l = D ′[i , j ]

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 9 / 26

Page 36: 20071118 efficientalgorithms kulikov_lecture08

Доказательство

Доказательство1 Пусть D[i , j ] = 2l .

I D ′[i , j ] = lI D[k, j ] ≥ 2l − 1 для любого соседа k вершины iI D ′[k, j ] ≥ D[k, j ]/2 ≥ l − 1/2, а следовательно, D ′[k, j ] ≥ l = D ′[i , j ]

2 Пусть D[i , j ] = 2l − 1.I D ′[i , j ] = lI D[k, j ] ≤ 2l для любого соседа k вершины iI D ′[k, j ] ≤ (D[k, j ] + 1)/2 ≤ l + 1/2, а следовательно,

D ′[k, j ] ≤ l = D ′[i , j ]

I для какого-то соседа k вершины i D[k, j ] = D[i , j ]− 1 = 2l − 2 иD ′[k, j ] = l − 1 < l = D ′[i , j ]

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 9 / 26

Page 37: 20071118 efficientalgorithms kulikov_lecture08

Доказательство

Доказательство1 Пусть D[i , j ] = 2l .

I D ′[i , j ] = lI D[k, j ] ≥ 2l − 1 для любого соседа k вершины iI D ′[k, j ] ≥ D[k, j ]/2 ≥ l − 1/2, а следовательно, D ′[k, j ] ≥ l = D ′[i , j ]

2 Пусть D[i , j ] = 2l − 1.I D ′[i , j ] = lI D[k, j ] ≤ 2l для любого соседа k вершины iI D ′[k, j ] ≤ (D[k, j ] + 1)/2 ≤ l + 1/2, а следовательно,

D ′[k, j ] ≤ l = D ′[i , j ]I для какого-то соседа k вершины i D[k, j ] = D[i , j ]− 1 = 2l − 2 и

D ′[k, j ] = l − 1 < l = D ′[i , j ]

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 9 / 26

Page 38: 20071118 efficientalgorithms kulikov_lecture08

Полезное следствие

СледствиеПусть Γ(i) — множество соседей вершины i . Пусть также

Δ =∑

k∈Γ(i)

D ′[k , j ] ≥ |Γ(i)|D ′[i , j ].

Тогда

1 D[i , j ] четно тогда и только тогда, когда Δ ≥ 0.2 D[i , j ] нечетно тогда и только тогда, когда Δ < 0.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 10 / 26

Page 39: 20071118 efficientalgorithms kulikov_lecture08

Полезное следствие

СледствиеПусть Γ(i) — множество соседей вершины i . Пусть также

Δ =∑

k∈Γ(i)

D ′[k , j ] ≥ |Γ(i)|D ′[i , j ].

Тогда1 D[i , j ] четно тогда и только тогда, когда Δ ≥ 0.

2 D[i , j ] нечетно тогда и только тогда, когда Δ < 0.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 10 / 26

Page 40: 20071118 efficientalgorithms kulikov_lecture08

Полезное следствие

СледствиеПусть Γ(i) — множество соседей вершины i . Пусть также

Δ =∑

k∈Γ(i)

D ′[k , j ] ≥ |Γ(i)|D ′[i , j ].

Тогда1 D[i , j ] четно тогда и только тогда, когда Δ ≥ 0.2 D[i , j ] нечетно тогда и только тогда, когда Δ < 0.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 10 / 26

Page 41: 20071118 efficientalgorithms kulikov_lecture08

Алгоритм

АлгоритмAPD-Alg(матрица смежности A графа G (V , E ))

Z = A2

построим матрицу A′: A′[i , j ] = 1, если и только если i = j , атакже либо A[i , j ] = 1, либо Z [i , j ] > 0если в A′ единицы стоят везде, кроме диагонали, вернутьD = 2A′ − AD ′ = APD-Alg(A′)S = AD ′

вернуть матрицу D, где

D[i , j ] =

{2D ′[i , j ], если S [i , j ] ≥ D ′[i , j ]Z [i , i ],2D ′[i , j ]− 1, если S [i , j ] < D ′[i , j ]Z [i , i ].

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 11 / 26

Page 42: 20071118 efficientalgorithms kulikov_lecture08

Алгоритм

АлгоритмAPD-Alg(матрица смежности A графа G (V , E ))

Z = A2

построим матрицу A′: A′[i , j ] = 1, если и только если i = j , атакже либо A[i , j ] = 1, либо Z [i , j ] > 0если в A′ единицы стоят везде, кроме диагонали, вернутьD = 2A′ − AD ′ = APD-Alg(A′)S = AD ′

вернуть матрицу D, где

D[i , j ] =

{2D ′[i , j ], если S [i , j ] ≥ D ′[i , j ]Z [i , i ],2D ′[i , j ]− 1, если S [i , j ] < D ′[i , j ]Z [i , i ].

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 11 / 26

Page 43: 20071118 efficientalgorithms kulikov_lecture08

Алгоритм

АлгоритмAPD-Alg(матрица смежности A графа G (V , E ))

Z = A2

построим матрицу A′: A′[i , j ] = 1, если и только если i = j , атакже либо A[i , j ] = 1, либо Z [i , j ] > 0

если в A′ единицы стоят везде, кроме диагонали, вернутьD = 2A′ − AD ′ = APD-Alg(A′)S = AD ′

вернуть матрицу D, где

D[i , j ] =

{2D ′[i , j ], если S [i , j ] ≥ D ′[i , j ]Z [i , i ],2D ′[i , j ]− 1, если S [i , j ] < D ′[i , j ]Z [i , i ].

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 11 / 26

Page 44: 20071118 efficientalgorithms kulikov_lecture08

Алгоритм

АлгоритмAPD-Alg(матрица смежности A графа G (V , E ))

Z = A2

построим матрицу A′: A′[i , j ] = 1, если и только если i = j , атакже либо A[i , j ] = 1, либо Z [i , j ] > 0если в A′ единицы стоят везде, кроме диагонали, вернутьD = 2A′ − A

D ′ = APD-Alg(A′)S = AD ′

вернуть матрицу D, где

D[i , j ] =

{2D ′[i , j ], если S [i , j ] ≥ D ′[i , j ]Z [i , i ],2D ′[i , j ]− 1, если S [i , j ] < D ′[i , j ]Z [i , i ].

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 11 / 26

Page 45: 20071118 efficientalgorithms kulikov_lecture08

Алгоритм

АлгоритмAPD-Alg(матрица смежности A графа G (V , E ))

Z = A2

построим матрицу A′: A′[i , j ] = 1, если и только если i = j , атакже либо A[i , j ] = 1, либо Z [i , j ] > 0если в A′ единицы стоят везде, кроме диагонали, вернутьD = 2A′ − AD ′ = APD-Alg(A′)

S = AD ′

вернуть матрицу D, где

D[i , j ] =

{2D ′[i , j ], если S [i , j ] ≥ D ′[i , j ]Z [i , i ],2D ′[i , j ]− 1, если S [i , j ] < D ′[i , j ]Z [i , i ].

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 11 / 26

Page 46: 20071118 efficientalgorithms kulikov_lecture08

Алгоритм

АлгоритмAPD-Alg(матрица смежности A графа G (V , E ))

Z = A2

построим матрицу A′: A′[i , j ] = 1, если и только если i = j , атакже либо A[i , j ] = 1, либо Z [i , j ] > 0если в A′ единицы стоят везде, кроме диагонали, вернутьD = 2A′ − AD ′ = APD-Alg(A′)S = AD ′

вернуть матрицу D, где

D[i , j ] =

{2D ′[i , j ], если S [i , j ] ≥ D ′[i , j ]Z [i , i ],2D ′[i , j ]− 1, если S [i , j ] < D ′[i , j ]Z [i , i ].

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 11 / 26

Page 47: 20071118 efficientalgorithms kulikov_lecture08

Алгоритм

АлгоритмAPD-Alg(матрица смежности A графа G (V , E ))

Z = A2

построим матрицу A′: A′[i , j ] = 1, если и только если i = j , атакже либо A[i , j ] = 1, либо Z [i , j ] > 0если в A′ единицы стоят везде, кроме диагонали, вернутьD = 2A′ − AD ′ = APD-Alg(A′)S = AD ′

вернуть матрицу D, где

D[i , j ] =

{2D ′[i , j ], если S [i , j ] ≥ D ′[i , j ]Z [i , i ],2D ′[i , j ]− 1, если S [i , j ] < D ′[i , j ]Z [i , i ].

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 11 / 26

Page 48: 20071118 efficientalgorithms kulikov_lecture08

Анализ

ТеоремаАлгоритм APD-Alg корректно находит матрицу кратчайшихрасстояний за время O(n2.376 log n).

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 12 / 26

Page 49: 20071118 efficientalgorithms kulikov_lecture08

План лекции

1 Нахождение матрицы расстояний

2 Поиск виновников в умножении булевых матриц

3 Поиск кратчайших путей

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 13 / 26

Page 50: 20071118 efficientalgorithms kulikov_lecture08

Виновники в умножении булевых матрицВиновники в умножении булевых матриц

Пусть P — булево произведение матриц A и B , то есть

P[i , j ] =⋁

1≤k≤n

(A[i , k] ∧ B[k , j ]).

Виновником (witness) элемента P[i , j ] называется такой индекс k ,что A[i , k] = B[k , j ] = 1.Ясно, что P[i , j ] = 1 тогда и только тогда, когда для элементаP[i , j ] есть виновник.Матрицей виновников произведения матриц (Boolean productwitness matrix, BPWM) называется матрица W , такая чтоW [i , j ] —виновников элемента P[i , j ], если хотя бы один виновникесть, и W [i , j ] = 0 в противном случае.Заметим, что целочисленное произведение булевых матриц A и Bесть в точности матрица виновников.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 14 / 26

Page 51: 20071118 efficientalgorithms kulikov_lecture08

Виновники в умножении булевых матрицВиновники в умножении булевых матриц

Пусть P — булево произведение матриц A и B , то есть

P[i , j ] =⋁

1≤k≤n

(A[i , k] ∧ B[k , j ]).

Виновником (witness) элемента P[i , j ] называется такой индекс k ,что A[i , k] = B[k , j ] = 1.Ясно, что P[i , j ] = 1 тогда и только тогда, когда для элементаP[i , j ] есть виновник.Матрицей виновников произведения матриц (Boolean productwitness matrix, BPWM) называется матрица W , такая чтоW [i , j ] —виновников элемента P[i , j ], если хотя бы один виновникесть, и W [i , j ] = 0 в противном случае.Заметим, что целочисленное произведение булевых матриц A и Bесть в точности матрица виновников.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 14 / 26

Page 52: 20071118 efficientalgorithms kulikov_lecture08

Виновники в умножении булевых матрицВиновники в умножении булевых матриц

Пусть P — булево произведение матриц A и B , то есть

P[i , j ] =⋁

1≤k≤n

(A[i , k] ∧ B[k , j ]).

Виновником (witness) элемента P[i , j ] называется такой индекс k ,что A[i , k] = B[k , j ] = 1.

Ясно, что P[i , j ] = 1 тогда и только тогда, когда для элементаP[i , j ] есть виновник.Матрицей виновников произведения матриц (Boolean productwitness matrix, BPWM) называется матрица W , такая чтоW [i , j ] —виновников элемента P[i , j ], если хотя бы один виновникесть, и W [i , j ] = 0 в противном случае.Заметим, что целочисленное произведение булевых матриц A и Bесть в точности матрица виновников.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 14 / 26

Page 53: 20071118 efficientalgorithms kulikov_lecture08

Виновники в умножении булевых матрицВиновники в умножении булевых матриц

Пусть P — булево произведение матриц A и B , то есть

P[i , j ] =⋁

1≤k≤n

(A[i , k] ∧ B[k , j ]).

Виновником (witness) элемента P[i , j ] называется такой индекс k ,что A[i , k] = B[k , j ] = 1.Ясно, что P[i , j ] = 1 тогда и только тогда, когда для элементаP[i , j ] есть виновник.

Матрицей виновников произведения матриц (Boolean productwitness matrix, BPWM) называется матрица W , такая чтоW [i , j ] —виновников элемента P[i , j ], если хотя бы один виновникесть, и W [i , j ] = 0 в противном случае.Заметим, что целочисленное произведение булевых матриц A и Bесть в точности матрица виновников.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 14 / 26

Page 54: 20071118 efficientalgorithms kulikov_lecture08

Виновники в умножении булевых матрицВиновники в умножении булевых матриц

Пусть P — булево произведение матриц A и B , то есть

P[i , j ] =⋁

1≤k≤n

(A[i , k] ∧ B[k , j ]).

Виновником (witness) элемента P[i , j ] называется такой индекс k ,что A[i , k] = B[k , j ] = 1.Ясно, что P[i , j ] = 1 тогда и только тогда, когда для элементаP[i , j ] есть виновник.Матрицей виновников произведения матриц (Boolean productwitness matrix, BPWM) называется матрица W , такая чтоW [i , j ] —виновников элемента P[i , j ], если хотя бы один виновникесть, и W [i , j ] = 0 в противном случае.

Заметим, что целочисленное произведение булевых матриц A и Bесть в точности матрица виновников.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 14 / 26

Page 55: 20071118 efficientalgorithms kulikov_lecture08

Виновники в умножении булевых матрицВиновники в умножении булевых матриц

Пусть P — булево произведение матриц A и B , то есть

P[i , j ] =⋁

1≤k≤n

(A[i , k] ∧ B[k , j ]).

Виновником (witness) элемента P[i , j ] называется такой индекс k ,что A[i , k] = B[k , j ] = 1.Ясно, что P[i , j ] = 1 тогда и только тогда, когда для элементаP[i , j ] есть виновник.Матрицей виновников произведения матриц (Boolean productwitness matrix, BPWM) называется матрица W , такая чтоW [i , j ] —виновников элемента P[i , j ], если хотя бы один виновникесть, и W [i , j ] = 0 в противном случае.Заметим, что целочисленное произведение булевых матриц A и Bесть в точности матрица виновников.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 14 / 26

Page 56: 20071118 efficientalgorithms kulikov_lecture08

Виновники в графе

Виновники в графе

Если A = B — матрица смежности графа G , то P[i , j ] = 1, если итолько если существует путь из i в j длины 2.Тогда C [i , j ] — количество таких путей, а виновник k элментаP[i , j ] — это просто вершина на пути длины 2 из i в j .Таким образом, нахождение виновников может помочь превратитьалгоритм нахождения расстояний в алгоритм нахождениякратчайших путей.

Упражнение

Пусть матрица A получена из A умножением каждого элемента наномер его столбца: A[i , k] = kA[i , k]. Покажите, что при умноженииматриц A и B получается матрица, содержащяя количсетвовиновников для всех элементов, для которых это количество равно 1.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 15 / 26

Page 57: 20071118 efficientalgorithms kulikov_lecture08

Виновники в графе

Виновники в графеЕсли A = B — матрица смежности графа G , то P[i , j ] = 1, если итолько если существует путь из i в j длины 2.

Тогда C [i , j ] — количество таких путей, а виновник k элментаP[i , j ] — это просто вершина на пути длины 2 из i в j .Таким образом, нахождение виновников может помочь превратитьалгоритм нахождения расстояний в алгоритм нахождениякратчайших путей.

Упражнение

Пусть матрица A получена из A умножением каждого элемента наномер его столбца: A[i , k] = kA[i , k]. Покажите, что при умноженииматриц A и B получается матрица, содержащяя количсетвовиновников для всех элементов, для которых это количество равно 1.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 15 / 26

Page 58: 20071118 efficientalgorithms kulikov_lecture08

Виновники в графе

Виновники в графеЕсли A = B — матрица смежности графа G , то P[i , j ] = 1, если итолько если существует путь из i в j длины 2.Тогда C [i , j ] — количество таких путей, а виновник k элментаP[i , j ] — это просто вершина на пути длины 2 из i в j .

Таким образом, нахождение виновников может помочь превратитьалгоритм нахождения расстояний в алгоритм нахождениякратчайших путей.

Упражнение

Пусть матрица A получена из A умножением каждого элемента наномер его столбца: A[i , k] = kA[i , k]. Покажите, что при умноженииматриц A и B получается матрица, содержащяя количсетвовиновников для всех элементов, для которых это количество равно 1.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 15 / 26

Page 59: 20071118 efficientalgorithms kulikov_lecture08

Виновники в графе

Виновники в графеЕсли A = B — матрица смежности графа G , то P[i , j ] = 1, если итолько если существует путь из i в j длины 2.Тогда C [i , j ] — количество таких путей, а виновник k элментаP[i , j ] — это просто вершина на пути длины 2 из i в j .Таким образом, нахождение виновников может помочь превратитьалгоритм нахождения расстояний в алгоритм нахождениякратчайших путей.

Упражнение

Пусть матрица A получена из A умножением каждого элемента наномер его столбца: A[i , k] = kA[i , k]. Покажите, что при умноженииматриц A и B получается матрица, содержащяя количсетвовиновников для всех элементов, для которых это количество равно 1.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 15 / 26

Page 60: 20071118 efficientalgorithms kulikov_lecture08

Виновники в графе

Виновники в графеЕсли A = B — матрица смежности графа G , то P[i , j ] = 1, если итолько если существует путь из i в j длины 2.Тогда C [i , j ] — количество таких путей, а виновник k элментаP[i , j ] — это просто вершина на пути длины 2 из i в j .Таким образом, нахождение виновников может помочь превратитьалгоритм нахождения расстояний в алгоритм нахождениякратчайших путей.

Упражнение

Пусть матрица A получена из A умножением каждого элемента наномер его столбца: A[i , k] = kA[i , k]. Покажите, что при умноженииматриц A и B получается матрица, содержащяя количсетвовиновников для всех элементов, для которых это количество равно 1.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 15 / 26

Page 61: 20071118 efficientalgorithms kulikov_lecture08

Угадывание виновников

Угадывание виновников

Конечно, бывают и элементы, для которых есть больше одноговиновника.Пусть число виновников элемента P[i , j ] равно w ≥ 2.Рассмотрим целое число r , для которого n/2 ≤ wr ≤ n.С большой вероятностью случайное подмножество размера rмножества {1, . . . , n} содержит ровно одного виновника.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 16 / 26

Page 62: 20071118 efficientalgorithms kulikov_lecture08

Угадывание виновников

Угадывание виновниковКонечно, бывают и элементы, для которых есть больше одноговиновника.

Пусть число виновников элемента P[i , j ] равно w ≥ 2.Рассмотрим целое число r , для которого n/2 ≤ wr ≤ n.С большой вероятностью случайное подмножество размера rмножества {1, . . . , n} содержит ровно одного виновника.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 16 / 26

Page 63: 20071118 efficientalgorithms kulikov_lecture08

Угадывание виновников

Угадывание виновниковКонечно, бывают и элементы, для которых есть больше одноговиновника.Пусть число виновников элемента P[i , j ] равно w ≥ 2.

Рассмотрим целое число r , для которого n/2 ≤ wr ≤ n.С большой вероятностью случайное подмножество размера rмножества {1, . . . , n} содержит ровно одного виновника.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 16 / 26

Page 64: 20071118 efficientalgorithms kulikov_lecture08

Угадывание виновников

Угадывание виновниковКонечно, бывают и элементы, для которых есть больше одноговиновника.Пусть число виновников элемента P[i , j ] равно w ≥ 2.Рассмотрим целое число r , для которого n/2 ≤ wr ≤ n.

С большой вероятностью случайное подмножество размера rмножества {1, . . . , n} содержит ровно одного виновника.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 16 / 26

Page 65: 20071118 efficientalgorithms kulikov_lecture08

Угадывание виновников

Угадывание виновниковКонечно, бывают и элементы, для которых есть больше одноговиновника.Пусть число виновников элемента P[i , j ] равно w ≥ 2.Рассмотрим целое число r , для которого n/2 ≤ wr ≤ n.С большой вероятностью случайное подмножество размера rмножества {1, . . . , n} содержит ровно одного виновника.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 16 / 26

Page 66: 20071118 efficientalgorithms kulikov_lecture08

Оценка вероятности

ЛеммаВ корзине имеется n шаров, w из которых белого цвета, n − w —черного. Для r , удовлетворяющего n/2 ≤ wr ≤ n, вероятность того,что среди случайно выбранных r шаров будет ровно один белый, хотябы 1

2e .

Доказательство(w1

)(n−wr−1

)(nr

) = wr !

(r − 1)!(n − w)!

n!

(n − r)!(n − w − r + 1)!

= wr

(w−1∏i=0

1n − i

)⎛⎝w−2∏j=0

(n − r − j)

⎞⎠

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 17 / 26

Page 67: 20071118 efficientalgorithms kulikov_lecture08

Оценка вероятности

ЛеммаВ корзине имеется n шаров, w из которых белого цвета, n − w —черного. Для r , удовлетворяющего n/2 ≤ wr ≤ n, вероятность того,что среди случайно выбранных r шаров будет ровно один белый, хотябы 1

2e .

Доказательство(w1

)(n−wr−1

)(nr

) = wr !

(r − 1)!(n − w)!

n!

(n − r)!(n − w − r + 1)!

= wr

(w−1∏i=0

1n − i

)⎛⎝w−2∏j=0

(n − r − j)

⎞⎠

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 17 / 26

Page 68: 20071118 efficientalgorithms kulikov_lecture08

Угадывание уникальных виновников

Угадывание уникальных виновников

Зная множество R , содержащее ровно одного виновника дляP[i , j ], самого это виновника найти легко.Пусть R задано характеристическим вектором (R[k] = 1, еслиk ∈ R , и R[k] = 0 в противном случае).Пусть матрицы AR , BR задаются следующим образом:

AR [i , k] = kR[k]A[i , k], BR [k , j ] = R[k]B[k , j ].В частности, все столбцы A и строчки B , для которых нетсоответствующего элемента в R , обнуляются.

УпражнениеПусть множество R содержит ровно одного виновника элемента P[i , j ].Показать, что этот виновник равен (ARBR)[i , j ].

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 18 / 26

Page 69: 20071118 efficientalgorithms kulikov_lecture08

Угадывание уникальных виновников

Угадывание уникальных виновниковЗная множество R , содержащее ровно одного виновника дляP[i , j ], самого это виновника найти легко.

Пусть R задано характеристическим вектором (R[k] = 1, еслиk ∈ R , и R[k] = 0 в противном случае).Пусть матрицы AR , BR задаются следующим образом:

AR [i , k] = kR[k]A[i , k], BR [k , j ] = R[k]B[k , j ].В частности, все столбцы A и строчки B , для которых нетсоответствующего элемента в R , обнуляются.

УпражнениеПусть множество R содержит ровно одного виновника элемента P[i , j ].Показать, что этот виновник равен (ARBR)[i , j ].

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 18 / 26

Page 70: 20071118 efficientalgorithms kulikov_lecture08

Угадывание уникальных виновников

Угадывание уникальных виновниковЗная множество R , содержащее ровно одного виновника дляP[i , j ], самого это виновника найти легко.Пусть R задано характеристическим вектором (R[k] = 1, еслиk ∈ R , и R[k] = 0 в противном случае).

Пусть матрицы AR , BR задаются следующим образом:AR [i , k] = kR[k]A[i , k], BR [k , j ] = R[k]B[k , j ].

В частности, все столбцы A и строчки B , для которых нетсоответствующего элемента в R , обнуляются.

УпражнениеПусть множество R содержит ровно одного виновника элемента P[i , j ].Показать, что этот виновник равен (ARBR)[i , j ].

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 18 / 26

Page 71: 20071118 efficientalgorithms kulikov_lecture08

Угадывание уникальных виновников

Угадывание уникальных виновниковЗная множество R , содержащее ровно одного виновника дляP[i , j ], самого это виновника найти легко.Пусть R задано характеристическим вектором (R[k] = 1, еслиk ∈ R , и R[k] = 0 в противном случае).Пусть матрицы AR , BR задаются следующим образом:

AR [i , k] = kR[k]A[i , k], BR [k , j ] = R[k]B[k , j ].

В частности, все столбцы A и строчки B , для которых нетсоответствующего элемента в R , обнуляются.

УпражнениеПусть множество R содержит ровно одного виновника элемента P[i , j ].Показать, что этот виновник равен (ARBR)[i , j ].

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 18 / 26

Page 72: 20071118 efficientalgorithms kulikov_lecture08

Угадывание уникальных виновников

Угадывание уникальных виновниковЗная множество R , содержащее ровно одного виновника дляP[i , j ], самого это виновника найти легко.Пусть R задано характеристическим вектором (R[k] = 1, еслиk ∈ R , и R[k] = 0 в противном случае).Пусть матрицы AR , BR задаются следующим образом:

AR [i , k] = kR[k]A[i , k], BR [k , j ] = R[k]B[k , j ].В частности, все столбцы A и строчки B , для которых нетсоответствующего элемента в R , обнуляются.

УпражнениеПусть множество R содержит ровно одного виновника элемента P[i , j ].Показать, что этот виновник равен (ARBR)[i , j ].

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 18 / 26

Page 73: 20071118 efficientalgorithms kulikov_lecture08

Угадывание уникальных виновников

Угадывание уникальных виновниковЗная множество R , содержащее ровно одного виновника дляP[i , j ], самого это виновника найти легко.Пусть R задано характеристическим вектором (R[k] = 1, еслиk ∈ R , и R[k] = 0 в противном случае).Пусть матрицы AR , BR задаются следующим образом:

AR [i , k] = kR[k]A[i , k], BR [k , j ] = R[k]B[k , j ].В частности, все столбцы A и строчки B , для которых нетсоответствующего элемента в R , обнуляются.

УпражнениеПусть множество R содержит ровно одного виновника элемента P[i , j ].Показать, что этот виновник равен (ARBR)[i , j ].

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 18 / 26

Page 74: 20071118 efficientalgorithms kulikov_lecture08

Алгоритм

АлгоритмBMPW-Alg(A, B ∈ {0, 1}n×n)

W = −ABдля t от 1 до log n повторять

I r = 2t

I повторять 4 log n разF выбрать случайное множество R ⊆ {1, . . . , n} размера rF Z = ARBR

F для всех (i , j): если W [i , j ] < 0 и Z [i , j ] является виновником, тоW [i , j ] = Z [i , j ]

для всех (i , j): если W [i , j ] < 0, то найти виновника переборомвернуть W

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 19 / 26

Page 75: 20071118 efficientalgorithms kulikov_lecture08

Алгоритм

АлгоритмBMPW-Alg(A, B ∈ {0, 1}n×n)

W = −AB

для t от 1 до log n повторятьI r = 2t

I повторять 4 log n разF выбрать случайное множество R ⊆ {1, . . . , n} размера rF Z = ARBR

F для всех (i , j): если W [i , j ] < 0 и Z [i , j ] является виновником, тоW [i , j ] = Z [i , j ]

для всех (i , j): если W [i , j ] < 0, то найти виновника переборомвернуть W

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 19 / 26

Page 76: 20071118 efficientalgorithms kulikov_lecture08

Алгоритм

АлгоритмBMPW-Alg(A, B ∈ {0, 1}n×n)

W = −ABдля t от 1 до log n повторять

I r = 2t

I повторять 4 log n разF выбрать случайное множество R ⊆ {1, . . . , n} размера rF Z = ARBR

F для всех (i , j): если W [i , j ] < 0 и Z [i , j ] является виновником, тоW [i , j ] = Z [i , j ]

для всех (i , j): если W [i , j ] < 0, то найти виновника переборомвернуть W

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 19 / 26

Page 77: 20071118 efficientalgorithms kulikov_lecture08

Алгоритм

АлгоритмBMPW-Alg(A, B ∈ {0, 1}n×n)

W = −ABдля t от 1 до log n повторять

I r = 2t

I повторять 4 log n разF выбрать случайное множество R ⊆ {1, . . . , n} размера rF Z = ARBR

F для всех (i , j): если W [i , j ] < 0 и Z [i , j ] является виновником, тоW [i , j ] = Z [i , j ]

для всех (i , j): если W [i , j ] < 0, то найти виновника переборомвернуть W

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 19 / 26

Page 78: 20071118 efficientalgorithms kulikov_lecture08

Алгоритм

АлгоритмBMPW-Alg(A, B ∈ {0, 1}n×n)

W = −ABдля t от 1 до log n повторять

I r = 2t

I повторять 4 log n раз

F выбрать случайное множество R ⊆ {1, . . . , n} размера rF Z = ARBR

F для всех (i , j): если W [i , j ] < 0 и Z [i , j ] является виновником, тоW [i , j ] = Z [i , j ]

для всех (i , j): если W [i , j ] < 0, то найти виновника переборомвернуть W

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 19 / 26

Page 79: 20071118 efficientalgorithms kulikov_lecture08

Алгоритм

АлгоритмBMPW-Alg(A, B ∈ {0, 1}n×n)

W = −ABдля t от 1 до log n повторять

I r = 2t

I повторять 4 log n разF выбрать случайное множество R ⊆ {1, . . . , n} размера r

F Z = ARBR

F для всех (i , j): если W [i , j ] < 0 и Z [i , j ] является виновником, тоW [i , j ] = Z [i , j ]

для всех (i , j): если W [i , j ] < 0, то найти виновника переборомвернуть W

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 19 / 26

Page 80: 20071118 efficientalgorithms kulikov_lecture08

Алгоритм

АлгоритмBMPW-Alg(A, B ∈ {0, 1}n×n)

W = −ABдля t от 1 до log n повторять

I r = 2t

I повторять 4 log n разF выбрать случайное множество R ⊆ {1, . . . , n} размера rF Z = ARBR

F для всех (i , j): если W [i , j ] < 0 и Z [i , j ] является виновником, тоW [i , j ] = Z [i , j ]

для всех (i , j): если W [i , j ] < 0, то найти виновника переборомвернуть W

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 19 / 26

Page 81: 20071118 efficientalgorithms kulikov_lecture08

Алгоритм

АлгоритмBMPW-Alg(A, B ∈ {0, 1}n×n)

W = −ABдля t от 1 до log n повторять

I r = 2t

I повторять 4 log n разF выбрать случайное множество R ⊆ {1, . . . , n} размера rF Z = ARBR

F для всех (i , j): если W [i , j ] < 0 и Z [i , j ] является виновником, тоW [i , j ] = Z [i , j ]

для всех (i , j): если W [i , j ] < 0, то найти виновника переборомвернуть W

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 19 / 26

Page 82: 20071118 efficientalgorithms kulikov_lecture08

Алгоритм

АлгоритмBMPW-Alg(A, B ∈ {0, 1}n×n)

W = −ABдля t от 1 до log n повторять

I r = 2t

I повторять 4 log n разF выбрать случайное множество R ⊆ {1, . . . , n} размера rF Z = ARBR

F для всех (i , j): если W [i , j ] < 0 и Z [i , j ] является виновником, тоW [i , j ] = Z [i , j ]

для всех (i , j): если W [i , j ] < 0, то найти виновника перебором

вернуть W

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 19 / 26

Page 83: 20071118 efficientalgorithms kulikov_lecture08

Алгоритм

АлгоритмBMPW-Alg(A, B ∈ {0, 1}n×n)

W = −ABдля t от 1 до log n повторять

I r = 2t

I повторять 4 log n разF выбрать случайное множество R ⊆ {1, . . . , n} размера rF Z = ARBR

F для всех (i , j): если W [i , j ] < 0 и Z [i , j ] является виновником, тоW [i , j ] = Z [i , j ]

для всех (i , j): если W [i , j ] < 0, то найти виновника переборомвернуть W

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 19 / 26

Page 84: 20071118 efficientalgorithms kulikov_lecture08

Анализ алгоритма

ТеоремаМат. ожидание времени работы алгоритма BMPW-Alg равноO(n2.376 log2 n).

ДоказательствоВероятность того, что для элемента P[i , j ] не найдется виновник вцикле хотя бы (1− 1/2e)4 log n ≤ 1/n.Значит, мат. ожидание кол-ва элементов, для которых виновниковпридется искать перебором, не более n.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 20 / 26

Page 85: 20071118 efficientalgorithms kulikov_lecture08

Анализ алгоритма

ТеоремаМат. ожидание времени работы алгоритма BMPW-Alg равноO(n2.376 log2 n).

Доказательство

Вероятность того, что для элемента P[i , j ] не найдется виновник вцикле хотя бы (1− 1/2e)4 log n ≤ 1/n.Значит, мат. ожидание кол-ва элементов, для которых виновниковпридется искать перебором, не более n.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 20 / 26

Page 86: 20071118 efficientalgorithms kulikov_lecture08

Анализ алгоритма

ТеоремаМат. ожидание времени работы алгоритма BMPW-Alg равноO(n2.376 log2 n).

ДоказательствоВероятность того, что для элемента P[i , j ] не найдется виновник вцикле хотя бы (1− 1/2e)4 log n ≤ 1/n.

Значит, мат. ожидание кол-ва элементов, для которых виновниковпридется искать перебором, не более n.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 20 / 26

Page 87: 20071118 efficientalgorithms kulikov_lecture08

Анализ алгоритма

ТеоремаМат. ожидание времени работы алгоритма BMPW-Alg равноO(n2.376 log2 n).

ДоказательствоВероятность того, что для элемента P[i , j ] не найдется виновник вцикле хотя бы (1− 1/2e)4 log n ≤ 1/n.Значит, мат. ожидание кол-ва элементов, для которых виновниковпридется искать перебором, не более n.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 20 / 26

Page 88: 20071118 efficientalgorithms kulikov_lecture08

План лекции

1 Нахождение матрицы расстояний

2 Поиск виновников в умножении булевых матриц

3 Поиск кратчайших путей

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 21 / 26

Page 89: 20071118 efficientalgorithms kulikov_lecture08

Поиск кратчайших путей

Поиск кратчайших путей

Пусть S — матрица кратчайших путей графа G , то сеть S [i , j ] —первая вершина на кратчайшем пути из i в j .S [i , j ] = k , если и только если D[i , j ] = d , D[k , j ] = d − 1 иD[i , k] = 1.Пусть 0/1-матрица Bd задается следующим образом: Bd [k , j ] = 1,если и только если D[k , j ] = d − 1.Ясно, что Bd легко вычислить, зная D.Более того, зная Bd легко вычислить первую вершину на путимежду вершинами i и j , расстояние между которыми равно d .

Упражнение

Показать, что, используя алгоритм BMPW-Alg для матриц A и Bd ,можно найти все первые вершины на кратчайших путях длины d .

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 22 / 26

Page 90: 20071118 efficientalgorithms kulikov_lecture08

Поиск кратчайших путей

Поиск кратчайших путейПусть S — матрица кратчайших путей графа G , то сеть S [i , j ] —первая вершина на кратчайшем пути из i в j .

S [i , j ] = k , если и только если D[i , j ] = d , D[k , j ] = d − 1 иD[i , k] = 1.Пусть 0/1-матрица Bd задается следующим образом: Bd [k , j ] = 1,если и только если D[k , j ] = d − 1.Ясно, что Bd легко вычислить, зная D.Более того, зная Bd легко вычислить первую вершину на путимежду вершинами i и j , расстояние между которыми равно d .

Упражнение

Показать, что, используя алгоритм BMPW-Alg для матриц A и Bd ,можно найти все первые вершины на кратчайших путях длины d .

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 22 / 26

Page 91: 20071118 efficientalgorithms kulikov_lecture08

Поиск кратчайших путей

Поиск кратчайших путейПусть S — матрица кратчайших путей графа G , то сеть S [i , j ] —первая вершина на кратчайшем пути из i в j .S [i , j ] = k , если и только если D[i , j ] = d , D[k , j ] = d − 1 иD[i , k] = 1.

Пусть 0/1-матрица Bd задается следующим образом: Bd [k , j ] = 1,если и только если D[k , j ] = d − 1.Ясно, что Bd легко вычислить, зная D.Более того, зная Bd легко вычислить первую вершину на путимежду вершинами i и j , расстояние между которыми равно d .

Упражнение

Показать, что, используя алгоритм BMPW-Alg для матриц A и Bd ,можно найти все первые вершины на кратчайших путях длины d .

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 22 / 26

Page 92: 20071118 efficientalgorithms kulikov_lecture08

Поиск кратчайших путей

Поиск кратчайших путейПусть S — матрица кратчайших путей графа G , то сеть S [i , j ] —первая вершина на кратчайшем пути из i в j .S [i , j ] = k , если и только если D[i , j ] = d , D[k , j ] = d − 1 иD[i , k] = 1.Пусть 0/1-матрица Bd задается следующим образом: Bd [k , j ] = 1,если и только если D[k , j ] = d − 1.

Ясно, что Bd легко вычислить, зная D.Более того, зная Bd легко вычислить первую вершину на путимежду вершинами i и j , расстояние между которыми равно d .

Упражнение

Показать, что, используя алгоритм BMPW-Alg для матриц A и Bd ,можно найти все первые вершины на кратчайших путях длины d .

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 22 / 26

Page 93: 20071118 efficientalgorithms kulikov_lecture08

Поиск кратчайших путей

Поиск кратчайших путейПусть S — матрица кратчайших путей графа G , то сеть S [i , j ] —первая вершина на кратчайшем пути из i в j .S [i , j ] = k , если и только если D[i , j ] = d , D[k , j ] = d − 1 иD[i , k] = 1.Пусть 0/1-матрица Bd задается следующим образом: Bd [k , j ] = 1,если и только если D[k , j ] = d − 1.Ясно, что Bd легко вычислить, зная D.

Более того, зная Bd легко вычислить первую вершину на путимежду вершинами i и j , расстояние между которыми равно d .

Упражнение

Показать, что, используя алгоритм BMPW-Alg для матриц A и Bd ,можно найти все первые вершины на кратчайших путях длины d .

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 22 / 26

Page 94: 20071118 efficientalgorithms kulikov_lecture08

Поиск кратчайших путей

Поиск кратчайших путейПусть S — матрица кратчайших путей графа G , то сеть S [i , j ] —первая вершина на кратчайшем пути из i в j .S [i , j ] = k , если и только если D[i , j ] = d , D[k , j ] = d − 1 иD[i , k] = 1.Пусть 0/1-матрица Bd задается следующим образом: Bd [k , j ] = 1,если и только если D[k , j ] = d − 1.Ясно, что Bd легко вычислить, зная D.Более того, зная Bd легко вычислить первую вершину на путимежду вершинами i и j , расстояние между которыми равно d .

Упражнение

Показать, что, используя алгоритм BMPW-Alg для матриц A и Bd ,можно найти все первые вершины на кратчайших путях длины d .

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 22 / 26

Page 95: 20071118 efficientalgorithms kulikov_lecture08

Поиск кратчайших путей

Поиск кратчайших путейПусть S — матрица кратчайших путей графа G , то сеть S [i , j ] —первая вершина на кратчайшем пути из i в j .S [i , j ] = k , если и только если D[i , j ] = d , D[k , j ] = d − 1 иD[i , k] = 1.Пусть 0/1-матрица Bd задается следующим образом: Bd [k , j ] = 1,если и только если D[k , j ] = d − 1.Ясно, что Bd легко вычислить, зная D.Более того, зная Bd легко вычислить первую вершину на путимежду вершинами i и j , расстояние между которыми равно d .

Упражнение

Показать, что, используя алгоритм BMPW-Alg для матриц A и Bd ,можно найти все первые вершины на кратчайших путях длины d .

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 22 / 26

Page 96: 20071118 efficientalgorithms kulikov_lecture08

Улучшение идеи

Улучшение идеи

Итак, мы умеем находить первые вершины на путях длины d .Но перебирать все значения d мы не можем.Вспомним, что для любых двух вершин i и j и для любого соседаk ∈ Γ(i) выполнено D[i , j ]− 1 ≤ D[k , j ] ≤ D[i , j ] + 1.Более того, если D[i , j ]− 1 ≤ D[k , j ], то k — первая вершина на(каком-то) кратчайшем пути из i в j .Значит, нам достаточно найти такое k , что A[i , k] = 1 иD[k , j ] ≡ D[i , j ]− 1 mod 3.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 23 / 26

Page 97: 20071118 efficientalgorithms kulikov_lecture08

Улучшение идеи

Улучшение идеиИтак, мы умеем находить первые вершины на путях длины d .

Но перебирать все значения d мы не можем.Вспомним, что для любых двух вершин i и j и для любого соседаk ∈ Γ(i) выполнено D[i , j ]− 1 ≤ D[k , j ] ≤ D[i , j ] + 1.Более того, если D[i , j ]− 1 ≤ D[k , j ], то k — первая вершина на(каком-то) кратчайшем пути из i в j .Значит, нам достаточно найти такое k , что A[i , k] = 1 иD[k , j ] ≡ D[i , j ]− 1 mod 3.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 23 / 26

Page 98: 20071118 efficientalgorithms kulikov_lecture08

Улучшение идеи

Улучшение идеиИтак, мы умеем находить первые вершины на путях длины d .Но перебирать все значения d мы не можем.

Вспомним, что для любых двух вершин i и j и для любого соседаk ∈ Γ(i) выполнено D[i , j ]− 1 ≤ D[k , j ] ≤ D[i , j ] + 1.Более того, если D[i , j ]− 1 ≤ D[k , j ], то k — первая вершина на(каком-то) кратчайшем пути из i в j .Значит, нам достаточно найти такое k , что A[i , k] = 1 иD[k , j ] ≡ D[i , j ]− 1 mod 3.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 23 / 26

Page 99: 20071118 efficientalgorithms kulikov_lecture08

Улучшение идеи

Улучшение идеиИтак, мы умеем находить первые вершины на путях длины d .Но перебирать все значения d мы не можем.Вспомним, что для любых двух вершин i и j и для любого соседаk ∈ Γ(i) выполнено D[i , j ]− 1 ≤ D[k , j ] ≤ D[i , j ] + 1.

Более того, если D[i , j ]− 1 ≤ D[k , j ], то k — первая вершина на(каком-то) кратчайшем пути из i в j .Значит, нам достаточно найти такое k , что A[i , k] = 1 иD[k , j ] ≡ D[i , j ]− 1 mod 3.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 23 / 26

Page 100: 20071118 efficientalgorithms kulikov_lecture08

Улучшение идеи

Улучшение идеиИтак, мы умеем находить первые вершины на путях длины d .Но перебирать все значения d мы не можем.Вспомним, что для любых двух вершин i и j и для любого соседаk ∈ Γ(i) выполнено D[i , j ]− 1 ≤ D[k , j ] ≤ D[i , j ] + 1.Более того, если D[i , j ]− 1 ≤ D[k , j ], то k — первая вершина на(каком-то) кратчайшем пути из i в j .

Значит, нам достаточно найти такое k , что A[i , k] = 1 иD[k , j ] ≡ D[i , j ]− 1 mod 3.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 23 / 26

Page 101: 20071118 efficientalgorithms kulikov_lecture08

Улучшение идеи

Улучшение идеиИтак, мы умеем находить первые вершины на путях длины d .Но перебирать все значения d мы не можем.Вспомним, что для любых двух вершин i и j и для любого соседаk ∈ Γ(i) выполнено D[i , j ]− 1 ≤ D[k , j ] ≤ D[i , j ] + 1.Более того, если D[i , j ]− 1 ≤ D[k , j ], то k — первая вершина на(каком-то) кратчайшем пути из i в j .Значит, нам достаточно найти такое k , что A[i , k] = 1 иD[k , j ] ≡ D[i , j ]− 1 mod 3.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 23 / 26

Page 102: 20071118 efficientalgorithms kulikov_lecture08

Алгоритм

АлгоритмAPSP-Alg(матрица смежности A графа G )

D = APD-Alg(A)

для s ∈ {0, 1, 2} повторятьI вычислить 0/1-матрицу Ds : Ds [k, j ] = 1, если и только если

D[k, j ] + 1 ≡ s mod 3I W s = BPWM-Alg(A, Ds)

вернуть S , такую что S [i , j ] = W D[i ,j] mod 3[i , j ]

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 24 / 26

Page 103: 20071118 efficientalgorithms kulikov_lecture08

Алгоритм

АлгоритмAPSP-Alg(матрица смежности A графа G )

D = APD-Alg(A)

для s ∈ {0, 1, 2} повторятьI вычислить 0/1-матрицу Ds : Ds [k, j ] = 1, если и только если

D[k, j ] + 1 ≡ s mod 3I W s = BPWM-Alg(A, Ds)

вернуть S , такую что S [i , j ] = W D[i ,j] mod 3[i , j ]

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 24 / 26

Page 104: 20071118 efficientalgorithms kulikov_lecture08

Алгоритм

АлгоритмAPSP-Alg(матрица смежности A графа G )

D = APD-Alg(A)

для s ∈ {0, 1, 2} повторять

I вычислить 0/1-матрицу Ds : Ds [k, j ] = 1, если и только еслиD[k, j ] + 1 ≡ s mod 3

I W s = BPWM-Alg(A, Ds)

вернуть S , такую что S [i , j ] = W D[i ,j] mod 3[i , j ]

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 24 / 26

Page 105: 20071118 efficientalgorithms kulikov_lecture08

Алгоритм

АлгоритмAPSP-Alg(матрица смежности A графа G )

D = APD-Alg(A)

для s ∈ {0, 1, 2} повторятьI вычислить 0/1-матрицу Ds : Ds [k, j ] = 1, если и только если

D[k, j ] + 1 ≡ s mod 3

I W s = BPWM-Alg(A, Ds)

вернуть S , такую что S [i , j ] = W D[i ,j] mod 3[i , j ]

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 24 / 26

Page 106: 20071118 efficientalgorithms kulikov_lecture08

Алгоритм

АлгоритмAPSP-Alg(матрица смежности A графа G )

D = APD-Alg(A)

для s ∈ {0, 1, 2} повторятьI вычислить 0/1-матрицу Ds : Ds [k, j ] = 1, если и только если

D[k, j ] + 1 ≡ s mod 3I W s = BPWM-Alg(A, Ds)

вернуть S , такую что S [i , j ] = W D[i ,j] mod 3[i , j ]

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 24 / 26

Page 107: 20071118 efficientalgorithms kulikov_lecture08

Алгоритм

АлгоритмAPSP-Alg(матрица смежности A графа G )

D = APD-Alg(A)

для s ∈ {0, 1, 2} повторятьI вычислить 0/1-матрицу Ds : Ds [k, j ] = 1, если и только если

D[k, j ] + 1 ≡ s mod 3I W s = BPWM-Alg(A, Ds)

вернуть S , такую что S [i , j ] = W D[i ,j] mod 3[i , j ]

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 24 / 26

Page 108: 20071118 efficientalgorithms kulikov_lecture08

Что мы узнали за сегодня?

Что мы узнали за сегодня?

Детерминированный алгоритм поиска расстояний между всемипарами вершин графа.Вероятностный алгоритм поиска виновников в умножении булевыхматриц.Вероятностный алгоритм поиска кратчайших путей между всемипарами вершин графа.Все алгоритмы работают примерно столько же, сколько алгоритмперемножния матриц.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 25 / 26

Page 109: 20071118 efficientalgorithms kulikov_lecture08

Что мы узнали за сегодня?

Что мы узнали за сегодня?Детерминированный алгоритм поиска расстояний между всемипарами вершин графа.

Вероятностный алгоритм поиска виновников в умножении булевыхматриц.Вероятностный алгоритм поиска кратчайших путей между всемипарами вершин графа.Все алгоритмы работают примерно столько же, сколько алгоритмперемножния матриц.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 25 / 26

Page 110: 20071118 efficientalgorithms kulikov_lecture08

Что мы узнали за сегодня?

Что мы узнали за сегодня?Детерминированный алгоритм поиска расстояний между всемипарами вершин графа.Вероятностный алгоритм поиска виновников в умножении булевыхматриц.

Вероятностный алгоритм поиска кратчайших путей между всемипарами вершин графа.Все алгоритмы работают примерно столько же, сколько алгоритмперемножния матриц.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 25 / 26

Page 111: 20071118 efficientalgorithms kulikov_lecture08

Что мы узнали за сегодня?

Что мы узнали за сегодня?Детерминированный алгоритм поиска расстояний между всемипарами вершин графа.Вероятностный алгоритм поиска виновников в умножении булевыхматриц.Вероятностный алгоритм поиска кратчайших путей между всемипарами вершин графа.

Все алгоритмы работают примерно столько же, сколько алгоритмперемножния матриц.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 25 / 26

Page 112: 20071118 efficientalgorithms kulikov_lecture08

Что мы узнали за сегодня?

Что мы узнали за сегодня?Детерминированный алгоритм поиска расстояний между всемипарами вершин графа.Вероятностный алгоритм поиска виновников в умножении булевыхматриц.Вероятностный алгоритм поиска кратчайших путей между всемипарами вершин графа.Все алгоритмы работают примерно столько же, сколько алгоритмперемножния матриц.

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 25 / 26

Page 113: 20071118 efficientalgorithms kulikov_lecture08

Спасибо за внимание!

А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 26 / 26