SlideShare uma empresa Scribd logo
1 de 113
Baixar para ler offline
с/к “Эффективные алгоритмы”
                Лекция 8: Вероятностные алгоритмы

                                      А. Куликов

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




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



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




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



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


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




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



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


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


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




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

Определение




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

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




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

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




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

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




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

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



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



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


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


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




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




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




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




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




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




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




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

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

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




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

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

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




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

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

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




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

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

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




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

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

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



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

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




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

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



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




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

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



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

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

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

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




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

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




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

Лемма
Для любых двух вершин 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.




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

Лемма
Для любых двух вершин 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




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

Лемма
Для любых двух вершин 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;




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

Лемма
Для любых двух вершин 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 вершины i
       D ′ [k, j] < D ′ [i, j].


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

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




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

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




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

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




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

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




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

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




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

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




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

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




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

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




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

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




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

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




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



Следствие
Пусть Γ(i) — множество соседей вершины i. Пусть также
                       ∑︁
                  Δ=        D ′ [k, j] ≥ |Γ(i)|D ′ [i, j].
                                k∈Γ(i)

Тогда




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



Следствие
Пусть Γ(i) — множество соседей вершины i. Пусть также
                       ∑︁
                  Δ=        D ′ [k, j] ≥ |Γ(i)|D ′ [i, j].
                                k∈Γ(i)

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




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



Следствие
Пусть Γ(i) — множество соседей вершины i. Пусть также
                       ∑︁
                  Δ=        D ′ [k, j] ≥ |Γ(i)|D ′ [i, j].
                                k∈Γ(i)

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




А. Куликов (CS клуб при ПОМИ)    8. Вероятностные алгоритмы   10 / 26
Алгоритм
Алгоритм
APD-Alg(матрица смежности A графа G (V , E ))




А. Куликов (CS клуб при ПОМИ)   8. Вероятностные алгоритмы   11 / 26
Алгоритм
Алгоритм
APD-Alg(матрица смежности A графа G (V , E ))
      Z = A2




А. Куликов (CS клуб при ПОМИ)   8. Вероятностные алгоритмы   11 / 26
Алгоритм
Алгоритм
APD-Alg(матрица смежности A графа G (V , E ))
      Z = A2
      построим матрицу A′ : A′ [i, j] = 1, если и только если i ̸= j, а
      также либо A[i, j] = 1, либо Z [i, j] > 0




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




А. Куликов (CS клуб при ПОМИ)   8. Вероятностные алгоритмы                11 / 26
Алгоритм
Алгоритм
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′ )




А. Куликов (CS клуб при ПОМИ)   8. Вероятностные алгоритмы                11 / 26
Алгоритм
Алгоритм
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 ′




А. Куликов (CS клуб при ПОМИ)   8. Вероятностные алгоритмы                11 / 26
Алгоритм
Алгоритм
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, где
                       {︃
                         2D ′ [i, j],     если S[i, j] ≥ D ′ [i, j]Z [i, i],
             D[i, j] =
                         2D ′ [i, j] − 1, если S[i, j] < D ′ [i, j]Z [i, i].


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




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




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



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


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


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




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




А. Куликов (CS клуб при ПОМИ)   8. Вероятностные алгоритмы   14 / 26
Виновники в умножении булевых матриц
Виновники в умножении булевых матриц
      Пусть P — булево произведение матриц A и B, то есть
                                ⋁︁
                      P[i, j] =    (A[i, k] ∧ B[k, j]).
                                      1≤k≤n




А. Куликов (CS клуб при ПОМИ)   8. Вероятностные алгоритмы   14 / 26
Виновники в умножении булевых матриц
Виновники в умножении булевых матриц
      Пусть P — булево произведение матриц A и B, то есть
                                ⋁︁
                      P[i, j] =    (A[i, k] ∧ B[k, j]).
                                      1≤k≤n


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




А. Куликов (CS клуб при ПОМИ)   8. Вероятностные алгоритмы         14 / 26
Виновники в умножении булевых матриц
Виновники в умножении булевых матриц
      Пусть P — булево произведение матриц A и B, то есть
                                ⋁︁
                      P[i, j] =    (A[i, k] ∧ B[k, j]).
                                      1≤k≤n


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




А. Куликов (CS клуб при ПОМИ)   8. Вероятностные алгоритмы             14 / 26
Виновники в умножении булевых матриц
Виновники в умножении булевых матриц
      Пусть P — булево произведение матриц A и B, то есть
                                ⋁︁
                      P[i, j] =    (A[i, k] ∧ B[k, j]).
                                      1≤k≤n


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


А. Куликов (CS клуб при ПОМИ)   8. Вероятностные алгоритмы             14 / 26
Виновники в умножении булевых матриц
Виновники в умножении булевых матриц
      Пусть P — булево произведение матриц A и B, то есть
                                ⋁︁
                      P[i, j] =    (A[i, k] ∧ B[k, j]).
                                      1≤k≤n


      Виновником (witness) элемента P[i, j] называется такой индекс k,
      что A[i, k] = B[k, j] = 1.
      Ясно, что P[i, j] = 1 тогда и только тогда, когда для элемента
      P[i, j] есть виновник.
      Матрицей виновников произведения матриц (Boolean product
      witness matrix, BPWM) называется матрица W , такая что
      W [i, j] —виновников элемента P[i, j], если хотя бы один виновник
      есть, и W [i, j] = 0 в противном случае.
      Заметим, что целочисленное произведение булевых матриц A и B
      есть в точности матрица виновников.
А. Куликов (CS клуб при ПОМИ)   8. Вероятностные алгоритмы             14 / 26
Виновники в графе
Виновники в графе




А. Куликов (CS клуб при ПОМИ)   8. Вероятностные алгоритмы   15 / 26
Виновники в графе
Виновники в графе
      Если A = B — матрица смежности графа G , то P[i, j] = 1, если и
      только если существует путь из i в j длины 2.




А. Куликов (CS клуб при ПОМИ)   8. Вероятностные алгоритмы        15 / 26
Виновники в графе
Виновники в графе
      Если A = B — матрица смежности графа G , то P[i, j] = 1, если и
      только если существует путь из i в j длины 2.
      Тогда C [i, j] — количество таких путей, а виновник k элмента
      P[i, j] — это просто вершина на пути длины 2 из i в j.




А. Куликов (CS клуб при ПОМИ)   8. Вероятностные алгоритмы            15 / 26
Виновники в графе
Виновники в графе
      Если A = B — матрица смежности графа G , то P[i, j] = 1, если и
      только если существует путь из i в j длины 2.
      Тогда C [i, j] — количество таких путей, а виновник k элмента
      P[i, j] — это просто вершина на пути длины 2 из i в j.
      Таким образом, нахождение виновников может помочь превратить
      алгоритм нахождения расстояний в алгоритм нахождения
      кратчайших путей.




А. Куликов (CS клуб при ПОМИ)   8. Вероятностные алгоритмы            15 / 26
Виновники в графе
Виновники в графе
      Если 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
Угадывание виновников



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




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



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




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



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




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



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




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



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




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

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




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

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

Доказательство
                (︀w )︀(︀n−w )︀
                  1        −1         r ! (n − w )!       (n − r )!
                      (︀nr)︀  =w
                       r
                                   (r − 1)!    n!     (n − w − r + 1)!
                              (︃w −1       )︃ ⎛w −2            ⎞
                                ∏︁ 1            ∏︁
                         = wr                 ⎝     (n − r − j)⎠
                                      n−i
                                 i=0               j=0




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

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




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

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




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

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




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

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




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

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




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

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

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


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

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




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

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




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

Алгоритм
BMPW-Alg(A, B ∈ {0, 1}n×n )
      W = −AB
      для t от 1 до log n повторять




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

Алгоритм
BMPW-Alg(A, B ∈ {0, 1}n×n )
      W = −AB
      для t от 1 до log n повторять
            r = 2t




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

Алгоритм
BMPW-Alg(A, B ∈ {0, 1}n×n )
      W = −AB
      для t от 1 до log n повторять
            r = 2t
            повторять 4 log n раз




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

Алгоритм
BMPW-Alg(A, B ∈ {0, 1}n×n )
      W = −AB
      для t от 1 до log n повторять
            r = 2t
            повторять 4 log n раз
                  выбрать случайное множество R ⊆ {1, . . . , n} размера r




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

Алгоритм
BMPW-Alg(A, B ∈ {0, 1}n×n )
      W = −AB
      для t от 1 до log n повторять
            r = 2t
            повторять 4 log n раз
                  выбрать случайное множество R ⊆ {1, . . . , n} размера r
                  Z = AR B R




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

Алгоритм
BMPW-Alg(A, B ∈ {0, 1}n×n )
      W = −AB
      для t от 1 до log n повторять
            r = 2t
            повторять 4 log n раз
                  выбрать случайное множество R ⊆ {1, . . . , n} размера r
                  Z = AR B R
                  для всех (i, j): если W [i, j] < 0 и Z [i, j] является виновником, то
                  W [i, j] = Z [i, j]




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

Алгоритм
BMPW-Alg(A, B ∈ {0, 1}n×n )
      W = −AB
      для t от 1 до log n повторять
            r = 2t
            повторять 4 log n раз
                  выбрать случайное множество R ⊆ {1, . . . , n} размера r
                  Z = AR B R
                  для всех (i, j): если W [i, j] < 0 и Z [i, j] является виновником, то
                  W [i, j] = Z [i, j]
      для всех (i, j): если W [i, j] < 0, то найти виновника перебором




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

Алгоритм
BMPW-Alg(A, B ∈ {0, 1}n×n )
      W = −AB
      для t от 1 до log n повторять
            r = 2t
            повторять 4 log n раз
                  выбрать случайное множество R ⊆ {1, . . . , n} размера r
                  Z = AR B R
                  для всех (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
Анализ алгоритма


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




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


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

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




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


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

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




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


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

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




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



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


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


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




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




А. Куликов (CS клуб при ПОМИ)   8. Вероятностные алгоритмы   22 / 26
Поиск кратчайших путей
Поиск кратчайших путей
      Пусть S — матрица кратчайших путей графа G , то сеть S[i, j] —
      первая вершина на кратчайшем пути из i в j.




А. Куликов (CS клуб при ПОМИ)   8. Вероятностные алгоритмы        22 / 26
Поиск кратчайших путей
Поиск кратчайших путей
      Пусть S — матрица кратчайших путей графа G , то сеть S[i, j] —
      первая вершина на кратчайшем пути из i в j.
      S[i, j] = k, если и только если D[i, j] = d , D[k, j] = d − 1 и
      D[i, k] = 1.




А. Куликов (CS клуб при ПОМИ)   8. Вероятностные алгоритмы              22 / 26
Поиск кратчайших путей
Поиск кратчайших путей
      Пусть 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-матрица B d задается следующим образом: B d [k, j] = 1,
      если и только если D[k, j] = d − 1.




А. Куликов (CS клуб при ПОМИ)   8. Вероятностные алгоритмы              22 / 26
Поиск кратчайших путей
Поиск кратчайших путей
      Пусть 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-матрица B d задается следующим образом: B d [k, j] = 1,
      если и только если D[k, j] = d − 1.
      Ясно, что B d легко вычислить, зная D.




А. Куликов (CS клуб при ПОМИ)   8. Вероятностные алгоритмы              22 / 26
Поиск кратчайших путей
Поиск кратчайших путей
      Пусть 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-матрица B d задается следующим образом: B d [k, j] = 1,
      если и только если D[k, j] = d − 1.
      Ясно, что B d легко вычислить, зная D.
      Более того, зная B d легко вычислить первую вершину на пути
      между вершинами i и j, расстояние между которыми равно d .




А. Куликов (CS клуб при ПОМИ)   8. Вероятностные алгоритмы              22 / 26
Поиск кратчайших путей
Поиск кратчайших путей
      Пусть 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-матрица B d задается следующим образом: B d [k, j] = 1,
      если и только если D[k, j] = d − 1.
      Ясно, что B d легко вычислить, зная D.
      Более того, зная B d легко вычислить первую вершину на пути
      между вершинами i и j, расстояние между которыми равно d .

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

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


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




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


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




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


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




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


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




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


Улучшение идеи
      Итак, мы умеем находить первые вершины на путях длины 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.




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


Улучшение идеи
      Итак, мы умеем находить первые вершины на путях длины 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
Алгоритм



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




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



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




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



Алгоритм
APSP-Alg(матрица смежности A графа G )
      D = APD-Alg(A)
      для s ∈ {0, 1, 2} повторять




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



Алгоритм
APSP-Alg(матрица смежности A графа G )
      D = APD-Alg(A)
      для s ∈ {0, 1, 2} повторять
            вычислить 0/1-матрицу D s : D s [k, j] = 1, если и только если
            D[k, j] + 1 ≡ s mod 3




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



Алгоритм
APSP-Alg(матрица смежности A графа G )
      D = APD-Alg(A)
      для s ∈ {0, 1, 2} повторять
            вычислить 0/1-матрицу D s : D s [k, j] = 1, если и только если
            D[k, j] + 1 ≡ s mod 3
            W s = BPWM-Alg(A, D s )




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



Алгоритм
APSP-Alg(матрица смежности A графа G )
      D = APD-Alg(A)
      для s ∈ {0, 1, 2} повторять
            вычислить 0/1-матрицу D s : D s [k, j] = 1, если и только если
            D[k, j] + 1 ≡ s mod 3
            W s = BPWM-Alg(A, D s )
      вернуть S, такую что S[i, j] = W D[i,j]         mod 3 [i, j]




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


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




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


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




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


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




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


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




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


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




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




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

Mais conteúdo relacionado

Mais procurados

чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.
sharikdp
 
20091129 algorithmsfornphardproblems kulikov_lecture10
20091129 algorithmsfornphardproblems kulikov_lecture1020091129 algorithmsfornphardproblems kulikov_lecture10
20091129 algorithmsfornphardproblems kulikov_lecture10
Computer Science Club
 
20090913 algorithmsfornphardproblems kulikov_lecture02
20090913 algorithmsfornphardproblems kulikov_lecture0220090913 algorithmsfornphardproblems kulikov_lecture02
20090913 algorithmsfornphardproblems kulikov_lecture02
Computer Science Club
 
20111023 circuit complexity_seminar_lecture04_mihajlin
20111023 circuit complexity_seminar_lecture04_mihajlin20111023 circuit complexity_seminar_lecture04_mihajlin
20111023 circuit complexity_seminar_lecture04_mihajlin
Computer Science Club
 
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
Nikolay Grebenshikov
 
20071014 efficientalgorithms kulikov_lecture04
20071014 efficientalgorithms kulikov_lecture0420071014 efficientalgorithms kulikov_lecture04
20071014 efficientalgorithms kulikov_lecture04
Computer Science Club
 
20071118 efficientalgorithms kulikov_lecture07
20071118 efficientalgorithms kulikov_lecture0720071118 efficientalgorithms kulikov_lecture07
20071118 efficientalgorithms kulikov_lecture07
Computer Science Club
 
Лекция 12: Методы разработки алгоритмов. Динамическое программирование. Жадны...
Лекция 12: Методы разработки алгоритмов. Динамическое программирование. Жадны...Лекция 12: Методы разработки алгоритмов. Динамическое программирование. Жадны...
Лекция 12: Методы разработки алгоритмов. Динамическое программирование. Жадны...
Mikhail Kurnosov
 
Григорий Анатольевич Кабатянский - Конечные алгебры, геометрии и коды
Григорий Анатольевич Кабатянский - Конечные алгебры, геометрии и кодыГригорий Анатольевич Кабатянский - Конечные алгебры, геометрии и коды
Григорий Анатольевич Кабатянский - Конечные алгебры, геометрии и коды
Yandex
 
Лекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовЛекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмов
Mikhail Kurnosov
 
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
Nikolay Grebenshikov
 
ледовое побоище
ледовое побоищеледовое побоище
ледовое побоище
mamaeva80
 
20110522 systems of typed lambda_calculi_moskvin_lecture11
20110522 systems of typed lambda_calculi_moskvin_lecture1120110522 systems of typed lambda_calculi_moskvin_lecture11
20110522 systems of typed lambda_calculi_moskvin_lecture11
Computer Science Club
 
экспертные системы
экспертные системыэкспертные системы
экспертные системы
sokol_klinik
 

Mais procurados (20)

чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.
 
Лекция 8. Графы. Обходы графов
Лекция 8. Графы. Обходы графовЛекция 8. Графы. Обходы графов
Лекция 8. Графы. Обходы графов
 
20091129 algorithmsfornphardproblems kulikov_lecture10
20091129 algorithmsfornphardproblems kulikov_lecture1020091129 algorithmsfornphardproblems kulikov_lecture10
20091129 algorithmsfornphardproblems kulikov_lecture10
 
20090913 algorithmsfornphardproblems kulikov_lecture02
20090913 algorithmsfornphardproblems kulikov_lecture0220090913 algorithmsfornphardproblems kulikov_lecture02
20090913 algorithmsfornphardproblems kulikov_lecture02
 
20111023 circuit complexity_seminar_lecture04_mihajlin
20111023 circuit complexity_seminar_lecture04_mihajlin20111023 circuit complexity_seminar_lecture04_mihajlin
20111023 circuit complexity_seminar_lecture04_mihajlin
 
proverochnie-raboti-po-algebre
proverochnie-raboti-po-algebreproverochnie-raboti-po-algebre
proverochnie-raboti-po-algebre
 
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
 
20071014 efficientalgorithms kulikov_lecture04
20071014 efficientalgorithms kulikov_lecture0420071014 efficientalgorithms kulikov_lecture04
20071014 efficientalgorithms kulikov_lecture04
 
20071118 efficientalgorithms kulikov_lecture07
20071118 efficientalgorithms kulikov_lecture0720071118 efficientalgorithms kulikov_lecture07
20071118 efficientalgorithms kulikov_lecture07
 
ДОПОЛНИТЕЛЬНЫЕ САМОСТОЯТЕЛЬНЫЕ РАБОТЫ ПО АЛГЕБРЕ
ДОПОЛНИТЕЛЬНЫЕ САМОСТОЯТЕЛЬНЫЕ РАБОТЫ ПО АЛГЕБРЕДОПОЛНИТЕЛЬНЫЕ САМОСТОЯТЕЛЬНЫЕ РАБОТЫ ПО АЛГЕБРЕ
ДОПОЛНИТЕЛЬНЫЕ САМОСТОЯТЕЛЬНЫЕ РАБОТЫ ПО АЛГЕБРЕ
 
Лекция 12: Методы разработки алгоритмов. Динамическое программирование. Жадны...
Лекция 12: Методы разработки алгоритмов. Динамическое программирование. Жадны...Лекция 12: Методы разработки алгоритмов. Динамическое программирование. Жадны...
Лекция 12: Методы разработки алгоритмов. Динамическое программирование. Жадны...
 
Григорий Анатольевич Кабатянский - Конечные алгебры, геометрии и коды
Григорий Анатольевич Кабатянский - Конечные алгебры, геометрии и кодыГригорий Анатольевич Кабатянский - Конечные алгебры, геометрии и коды
Григорий Анатольевич Кабатянский - Конечные алгебры, геометрии и коды
 
Лекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовЛекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмов
 
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
 
ледовое побоище
ледовое побоищеледовое побоище
ледовое побоище
 
Разбор задач модуля Комбинаторика l
Разбор задач модуля Комбинаторика lРазбор задач модуля Комбинаторика l
Разбор задач модуля Комбинаторика l
 
Opredelennyj integral
Opredelennyj integralOpredelennyj integral
Opredelennyj integral
 
20110522 systems of typed lambda_calculi_moskvin_lecture11
20110522 systems of typed lambda_calculi_moskvin_lecture1120110522 systems of typed lambda_calculi_moskvin_lecture11
20110522 systems of typed lambda_calculi_moskvin_lecture11
 
экспертные системы
экспертные системыэкспертные системы
экспертные системы
 
Use of eliptic curves for generating digital signature
Use of eliptic curves for generating digital signatureUse of eliptic curves for generating digital signature
Use of eliptic curves for generating digital signature
 

Destaque

Clipping Anima 21/11/11 @ IED Barcelona
Clipping Anima 21/11/11 @ IED BarcelonaClipping Anima 21/11/11 @ IED Barcelona
Clipping Anima 21/11/11 @ IED Barcelona
IED Barcelona
 
sueldos y salarios
sueldos y salariossueldos y salarios
sueldos y salarios
ignacio91
 
Waterproofing v4.1
Waterproofing v4.1Waterproofing v4.1
Waterproofing v4.1
Eli Mayo
 
M.Koziskova_19.3.2009_FFMU_Brno
M.Koziskova_19.3.2009_FFMU_BrnoM.Koziskova_19.3.2009_FFMU_Brno
M.Koziskova_19.3.2009_FFMU_Brno
KISK FF MU
 
Evaluation of the media music magazine
Evaluation of the media music magazineEvaluation of the media music magazine
Evaluation of the media music magazine
Jacob Burman
 
prof. Milan Konvit: Nove medium a clovek
prof. Milan Konvit: Nove medium a clovekprof. Milan Konvit: Nove medium a clovek
prof. Milan Konvit: Nove medium a clovek
KISK FF MU
 
Cert-Buss-Sys-Analysis
Cert-Buss-Sys-AnalysisCert-Buss-Sys-Analysis
Cert-Buss-Sys-Analysis
Chris Ferreira
 
Funções inorgânicas ácidos
Funções inorgânicas   ácidosFunções inorgânicas   ácidos
Funções inorgânicas ácidos
Rafael Nishikawa
 
Reações de esterificação e saponificação
Reações de esterificação e saponificaçãoReações de esterificação e saponificação
Reações de esterificação e saponificação
Rafael Nishikawa
 

Destaque (20)

Packman
PackmanPackman
Packman
 
3.5.dinâmica dinâmica do movimento circular
3.5.dinâmica dinâmica do movimento circular3.5.dinâmica dinâmica do movimento circular
3.5.dinâmica dinâmica do movimento circular
 
TIMINGS for the MEDIA GCSE Exam
TIMINGS for the MEDIA GCSE ExamTIMINGS for the MEDIA GCSE Exam
TIMINGS for the MEDIA GCSE Exam
 
Milan Regec: Využívanie sociálnych sietí vybranými knižnicami v SR
Milan Regec: Využívanie sociálnych sietí vybranými knižnicami v SRMilan Regec: Využívanie sociálnych sietí vybranými knižnicami v SR
Milan Regec: Využívanie sociálnych sietí vybranými knižnicami v SR
 
ASI TE AMARE
ASI TE AMAREASI TE AMARE
ASI TE AMARE
 
Clipping Anima 21/11/11 @ IED Barcelona
Clipping Anima 21/11/11 @ IED BarcelonaClipping Anima 21/11/11 @ IED Barcelona
Clipping Anima 21/11/11 @ IED Barcelona
 
4.1. trabalho de uma força
4.1. trabalho de uma força4.1. trabalho de uma força
4.1. trabalho de uma força
 
Packman
PackmanPackman
Packman
 
Exercícios de química
Exercícios de químicaExercícios de química
Exercícios de química
 
sueldos y salarios
sueldos y salariossueldos y salarios
sueldos y salarios
 
Programação+seminário+pnrs+recife
Programação+seminário+pnrs+recifeProgramação+seminário+pnrs+recife
Programação+seminário+pnrs+recife
 
Waterproofing v4.1
Waterproofing v4.1Waterproofing v4.1
Waterproofing v4.1
 
M.Koziskova_19.3.2009_FFMU_Brno
M.Koziskova_19.3.2009_FFMU_BrnoM.Koziskova_19.3.2009_FFMU_Brno
M.Koziskova_19.3.2009_FFMU_Brno
 
первые романовы.
первые романовы.первые романовы.
первые романовы.
 
Evaluation of the media music magazine
Evaluation of the media music magazineEvaluation of the media music magazine
Evaluation of the media music magazine
 
prof. Milan Konvit: Nove medium a clovek
prof. Milan Konvit: Nove medium a clovekprof. Milan Konvit: Nove medium a clovek
prof. Milan Konvit: Nove medium a clovek
 
Operating System Support for Ubiquitous Computing
Operating System Support for Ubiquitous ComputingOperating System Support for Ubiquitous Computing
Operating System Support for Ubiquitous Computing
 
Cert-Buss-Sys-Analysis
Cert-Buss-Sys-AnalysisCert-Buss-Sys-Analysis
Cert-Buss-Sys-Analysis
 
Funções inorgânicas ácidos
Funções inorgânicas   ácidosFunções inorgânicas   ácidos
Funções inorgânicas ácidos
 
Reações de esterificação e saponificação
Reações de esterificação e saponificaçãoReações de esterificação e saponificação
Reações de esterificação e saponificação
 

Semelhante a 20071118 efficientalgorithms kulikov_lecture08

20070930 efficientalgorithms kulikov_lecture02
20070930 efficientalgorithms kulikov_lecture0220070930 efficientalgorithms kulikov_lecture02
20070930 efficientalgorithms kulikov_lecture02
Computer Science Club
 
20071007 efficientalgorithms kulikov_lecture03
20071007 efficientalgorithms kulikov_lecture0320071007 efficientalgorithms kulikov_lecture03
20071007 efficientalgorithms kulikov_lecture03
Computer Science Club
 
20091101 algorithmsfornphardproblems kulikov_lecture06
20091101 algorithmsfornphardproblems kulikov_lecture0620091101 algorithmsfornphardproblems kulikov_lecture06
20091101 algorithmsfornphardproblems kulikov_lecture06
Computer Science Club
 
20091025 algorithmsfornphardproblems kulikov_lecture04
20091025 algorithmsfornphardproblems kulikov_lecture0420091025 algorithmsfornphardproblems kulikov_lecture04
20091025 algorithmsfornphardproblems kulikov_lecture04
Computer Science Club
 
алгоритмизация
алгоритмизацияалгоритмизация
алгоритмизация
isva69
 
Разбор задач областного этапа всероссийской олимпиады школьников по информати...
Разбор задач областного этапа всероссийской олимпиады школьников по информати...Разбор задач областного этапа всероссийской олимпиады школьников по информати...
Разбор задач областного этапа всероссийской олимпиады школьников по информати...
Олег Стрекаловский
 
Лекция 10: Графы. Остовные деревья
Лекция 10: Графы. Остовные деревьяЛекция 10: Графы. Остовные деревья
Лекция 10: Графы. Остовные деревья
Mikhail Kurnosov
 
Геометрический метод
Геометрический методГеометрический метод
Геометрический метод
guest848b08
 
20080309 efficientalgorithms kulikov_lecture15
20080309 efficientalgorithms kulikov_lecture1520080309 efficientalgorithms kulikov_lecture15
20080309 efficientalgorithms kulikov_lecture15
Computer Science Club
 
20080309 efficientalgorithms kulikov_lecture15
20080309 efficientalgorithms kulikov_lecture1520080309 efficientalgorithms kulikov_lecture15
20080309 efficientalgorithms kulikov_lecture15
Computer Science Club
 
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
Nikolay Grebenshikov
 

Semelhante a 20071118 efficientalgorithms kulikov_lecture08 (20)

20070930 efficientalgorithms kulikov_lecture02
20070930 efficientalgorithms kulikov_lecture0220070930 efficientalgorithms kulikov_lecture02
20070930 efficientalgorithms kulikov_lecture02
 
Лекция 9. Поиск кратчайшего пути в графе
Лекция 9. Поиск кратчайшего пути в графеЛекция 9. Поиск кратчайшего пути в графе
Лекция 9. Поиск кратчайшего пути в графе
 
Факторизационные модели в рекомендательных системах
Факторизационные модели в рекомендательных системахФакторизационные модели в рекомендательных системах
Факторизационные модели в рекомендательных системах
 
Разведочный анализ данных: создание графиков в системе R
Разведочный анализ данных: создание графиков в системе RРазведочный анализ данных: создание графиков в системе R
Разведочный анализ данных: создание графиков в системе R
 
20071007 efficientalgorithms kulikov_lecture03
20071007 efficientalgorithms kulikov_lecture0320071007 efficientalgorithms kulikov_lecture03
20071007 efficientalgorithms kulikov_lecture03
 
20091101 algorithmsfornphardproblems kulikov_lecture06
20091101 algorithmsfornphardproblems kulikov_lecture0620091101 algorithmsfornphardproblems kulikov_lecture06
20091101 algorithmsfornphardproblems kulikov_lecture06
 
20091025 algorithmsfornphardproblems kulikov_lecture04
20091025 algorithmsfornphardproblems kulikov_lecture0420091025 algorithmsfornphardproblems kulikov_lecture04
20091025 algorithmsfornphardproblems kulikov_lecture04
 
алгоритмизация
алгоритмизацияалгоритмизация
алгоритмизация
 
Разбор задач областного этапа всероссийской олимпиады школьников по информати...
Разбор задач областного этапа всероссийской олимпиады школьников по информати...Разбор задач областного этапа всероссийской олимпиады школьников по информати...
Разбор задач областного этапа всероссийской олимпиады школьников по информати...
 
07 - Hadoop. Решение задач с помощью MapReduce
07 - Hadoop. Решение задач с помощью MapReduce07 - Hadoop. Решение задач с помощью MapReduce
07 - Hadoop. Решение задач с помощью MapReduce
 
Лекция 10: Графы. Остовные деревья
Лекция 10: Графы. Остовные деревьяЛекция 10: Графы. Остовные деревья
Лекция 10: Графы. Остовные деревья
 
Геометрический метод
Геометрический методГеометрический метод
Геометрический метод
 
ITMO RecSys course. Autumn 2014. Lecture 6
ITMO RecSys course. Autumn 2014. Lecture 6ITMO RecSys course. Autumn 2014. Lecture 6
ITMO RecSys course. Autumn 2014. Lecture 6
 
аппроксимация функции нескольких переменных
аппроксимация функции нескольких переменныхаппроксимация функции нескольких переменных
аппроксимация функции нескольких переменных
 
Лекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимостиЛекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимости
 
Коды Адамара. Каскадные коды Форни.
Коды Адамара. Каскадные коды Форни.Коды Адамара. Каскадные коды Форни.
Коды Адамара. Каскадные коды Форни.
 
Синтез функциональных программ при помощи метода дедуктивных таблиц
Синтез функциональных программ при помощи метода дедуктивных таблицСинтез функциональных программ при помощи метода дедуктивных таблиц
Синтез функциональных программ при помощи метода дедуктивных таблиц
 
20080309 efficientalgorithms kulikov_lecture15
20080309 efficientalgorithms kulikov_lecture1520080309 efficientalgorithms kulikov_lecture15
20080309 efficientalgorithms kulikov_lecture15
 
20080309 efficientalgorithms kulikov_lecture15
20080309 efficientalgorithms kulikov_lecture1520080309 efficientalgorithms kulikov_lecture15
20080309 efficientalgorithms kulikov_lecture15
 
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
 

Mais de Computer Science Club

20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
Computer Science Club
 
20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs
Computer Science Club
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
Computer Science Club
 
20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12
Computer Science Club
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11
Computer Science Club
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10
Computer Science Club
 
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09
Computer Science Club
 
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02
Computer Science Club
 
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01
Computer Science Club
 
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04
Computer Science Club
 
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01
Computer Science Club
 

Mais de Computer Science Club (20)

20141223 kuznetsov distributed
20141223 kuznetsov distributed20141223 kuznetsov distributed
20141223 kuznetsov distributed
 
Computer Vision
Computer VisionComputer Vision
Computer Vision
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
 
20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
 
20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10
 
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09
 
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02
 
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01
 
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04
 
20140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-0320140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-03
 
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01
 
20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich
 
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
 
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
 

20071118 efficientalgorithms kulikov_lecture08

  • 1. с/к “Эффективные алгоритмы” Лекция 8: Вероятностные алгоритмы А. Куликов Computer Science клуб при ПОМИ http://logic.pdmi.ras.ru/∼infclub/ А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 1 / 26
  • 2. План лекции 1 Нахождение матрицы расстояний А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 2 / 26
  • 3. План лекции 1 Нахождение матрицы расстояний 2 Поиск виновников в умножении булевых матриц А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 2 / 26
  • 4. План лекции 1 Нахождение матрицы расстояний 2 Поиск виновников в умножении булевых матриц 3 Поиск кратчайших путей А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 2 / 26
  • 5. Кратчайшие пути в графе Определение А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 3 / 26
  • 6. Кратчайшие пути в графе Определение Дан связный неориентированный граф G = (V , E ), вес каждого ребра равен 1. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 3 / 26
  • 7. Кратчайшие пути в графе Определение Дан связный неориентированный граф G = (V , E ), вес каждого ребра равен 1. Матрицей расстояний (distance matrix) называется матрица D, в которой D[i, j] равно длине кратчайшего пути из i в j. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 3 / 26
  • 8. Кратчайшие пути в графе Определение Дан связный неориентированный граф G = (V , E ), вес каждого ребра равен 1. Матрицей расстояний (distance matrix) называется матрица D, в которой D[i, j] равно длине кратчайшего пути из i в j. Матрицей кратчайших путей (shortest path matrix) называется матрица P, в которой P[i, j] — первая вершина на кратчайшем пути из i в j. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 3 / 26
  • 9. Кратчайшие пути в графе Определение Дан связный неориентированный граф G = (V , E ), вес каждого ребра равен 1. Матрицей расстояний (distance matrix) называется матрица D, в которой D[i, j] равно длине кратчайшего пути из i в j. Матрицей кратчайших путей (shortest path matrix) называется матрица P, в которой P[i, j] — первая вершина на кратчайшем пути из i в j. Задача нахождения кратчайших расстояний (all-pairs distances problem, ADP) и задача нахождения кратчайших путей (all-pairs shortest paths problem, APSP) заключаются в построении соответствующих матриц. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 3 / 26
  • 10. План лекции 1 Нахождение матрицы расстояний 2 Поиск виновников в умножении булевых матриц 3 Поиск кратчайших путей А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 4 / 26
  • 11. Матрица смежности и длины путей Матрица смежности и длины путей А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 5 / 26
  • 12. Матрица смежности и длины путей Матрица смежности и длины путей Вспомним, что если A — матрица смежности графа G , то Ak [i, j] — количество путей длины k из i в j. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 5 / 26
  • 13. Матрица смежности и длины путей Матрица смежности и длины путей Вспомним, что если A — матрица смежности графа G , то Ak [i, j] — количество путей длины k из i в j. Таким образом, посчитав все степени A от 1 до n, мы решим задачу ADP, но это займет O(n3.376 ) времени. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 5 / 26
  • 14. Квадрат графа Определение Квадратом графа G = (V , E ) называется граф G = (V , E ′ ), где различные i и j соединены ребром, если расстояние между ними в G не более 2. Матрица расстояний квадрата графа А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 6 / 26
  • 15. Квадрат графа Определение Квадратом графа G = (V , E ) называется граф G = (V , E ′ ), где различные i и j соединены ребром, если расстояние между ними в G не более 2. Матрица расстояний квадрата графа Ясно, что по квадрату матрицы смежности A2 графа G легко построить матрицу смежности графа G ′ . А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 6 / 26
  • 16. Квадрат графа Определение Квадратом графа G = (V , E ) называется граф G = (V , E ′ ), где различные i и j соединены ребром, если расстояние между ними в G не более 2. Матрица расстояний квадрата графа Ясно, что по квадрату матрицы смежности A2 графа G легко построить матрицу смежности графа G ′ . Если диаметр (то есть длина самого длинного кратчайшего пути) графа G не более 2, то граф G ′ — полный. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 6 / 26
  • 17. Квадрат графа Определение Квадратом графа G = (V , E ) называется граф G = (V , E ′ ), где различные i и j соединены ребром, если расстояние между ними в G не более 2. Матрица расстояний квадрата графа Ясно, что по квадрату матрицы смежности A2 графа G легко построить матрицу смежности графа G ′ . Если диаметр (то есть длина самого длинного кратчайшего пути) графа G не более 2, то граф G ′ — полный. В таком случае D = 2A′ − A. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 6 / 26
  • 18. Квадрат графа Определение Квадратом графа G = (V , E ) называется граф G = (V , E ′ ), где различные i и j соединены ребром, если расстояние между ними в G не более 2. Матрица расстояний квадрата графа Ясно, что по квадрату матрицы смежности A2 графа G легко построить матрицу смежности графа G ′ . Если диаметр (то есть длина самого длинного кратчайшего пути) графа G не более 2, то граф G ′ — полный. В таком случае D = 2A′ − A. В общем же случае матрицу D можно строить рекурсивно. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 6 / 26
  • 19. Рекурсивное вычисление матрицы расстояний Лемма Пусть D — матрица кратчайших расстояний графа G , G ′ — квадрат графа G , D ′ — матрица кратчайших расстояний графа G ′ . Тогда для любых двух вершин i, j {︃ 2D ′ [i, j], если D[i, j] четно, D[i, j] = ′ [i, j] − 1, если D[i, j] нечетно. 2D А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 7 / 26
  • 20. Рекурсивное вычисление матрицы расстояний Лемма Пусть D — матрица кратчайших расстояний графа G , G ′ — квадрат графа G , D ′ — матрица кратчайших расстояний графа G ′ . Тогда для любых двух вершин i, j {︃ 2D ′ [i, j], если D[i, j] четно, D[i, j] = ′ [i, j] − 1, если D[i, j] нечетно. 2D Упражнение Доказать эту лемму. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 7 / 26
  • 21. Рекурсивное вычисление матрицы расстояний Лемма Пусть D — матрица кратчайших расстояний графа G , G ′ — квадрат графа G , D ′ — матрица кратчайших расстояний графа G ′ . Тогда для любых двух вершин i, j {︃ 2D ′ [i, j], если D[i, j] четно, D[i, j] = ′ [i, j] − 1, если D[i, j] нечетно. 2D Упражнение Доказать эту лемму. Итак, мы могли бы рекурсивно вычислять матрицу D, если бы заранее знали четность ее элементов. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 7 / 26
  • 22. Нахождение четности крачтайшего пути Лемма Для любых двух вершин i и j графа G А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 8 / 26
  • 23. Нахождение четности крачтайшего пути Лемма Для любых двух вершин i и j графа G 1 D[i, j] − 1 ≤ D[k, j] ≤ D[i, j] + 1 для любого соседа k вершины i; А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 8 / 26
  • 24. Нахождение четности крачтайшего пути Лемма Для любых двух вершин 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. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 8 / 26
  • 25. Нахождение четности крачтайшего пути Лемма Для любых двух вершин 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 А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 8 / 26
  • 26. Нахождение четности крачтайшего пути Лемма Для любых двух вершин 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; А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 8 / 26
  • 27. Нахождение четности крачтайшего пути Лемма Для любых двух вершин 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 вершины i D ′ [k, j] < D ′ [i, j]. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 8 / 26
  • 28. Доказательство Доказательство А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 9 / 26
  • 29. Доказательство Доказательство 1 Пусть D[i, j] = 2l . А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 9 / 26
  • 30. Доказательство Доказательство 1 Пусть D[i, j] = 2l . D ′ [i, j] = l А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 9 / 26
  • 31. Доказательство Доказательство 1 Пусть D[i, j] = 2l . D ′ [i, j] = l D[k, j] ≥ 2l − 1 для любого соседа k вершины i А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 9 / 26
  • 32. Доказательство Доказательство 1 Пусть D[i, j] = 2l . D ′ [i, j] = l D[k, j] ≥ 2l − 1 для любого соседа k вершины i D ′ [k, j] ≥ D[k, j]/2 ≥ l − 1/2, а следовательно, D ′ [k, j] ≥ l = D ′ [i, j] А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 9 / 26
  • 33. Доказательство Доказательство 1 Пусть D[i, j] = 2l . D ′ [i, j] = l D[k, j] ≥ 2l − 1 для любого соседа k вершины i D ′ [k, j] ≥ D[k, j]/2 ≥ l − 1/2, а следовательно, D ′ [k, j] ≥ l = D ′ [i, j] 2 Пусть D[i, j] = 2l − 1. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 9 / 26
  • 34. Доказательство Доказательство 1 Пусть D[i, j] = 2l . D ′ [i, j] = l D[k, j] ≥ 2l − 1 для любого соседа k вершины i D ′ [k, j] ≥ D[k, j]/2 ≥ l − 1/2, а следовательно, D ′ [k, j] ≥ l = D ′ [i, j] 2 Пусть D[i, j] = 2l − 1. D ′ [i, j] = l А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 9 / 26
  • 35. Доказательство Доказательство 1 Пусть D[i, j] = 2l . D ′ [i, j] = l D[k, j] ≥ 2l − 1 для любого соседа k вершины i D ′ [k, j] ≥ D[k, j]/2 ≥ l − 1/2, а следовательно, D ′ [k, j] ≥ l = D ′ [i, j] 2 Пусть D[i, j] = 2l − 1. D ′ [i, j] = l D[k, j] ≤ 2l для любого соседа k вершины i А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 9 / 26
  • 36. Доказательство Доказательство 1 Пусть D[i, j] = 2l . D ′ [i, j] = l D[k, j] ≥ 2l − 1 для любого соседа k вершины i D ′ [k, j] ≥ D[k, j]/2 ≥ l − 1/2, а следовательно, D ′ [k, j] ≥ l = D ′ [i, j] 2 Пусть D[i, j] = 2l − 1. D ′ [i, j] = l D[k, j] ≤ 2l для любого соседа k вершины i D ′ [k, j] ≤ (D[k, j] + 1)/2 ≤ l + 1/2, а следовательно, D ′ [k, j] ≤ l = D ′ [i, j] А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 9 / 26
  • 37. Доказательство Доказательство 1 Пусть D[i, j] = 2l . D ′ [i, j] = l D[k, j] ≥ 2l − 1 для любого соседа k вершины i D ′ [k, j] ≥ D[k, j]/2 ≥ l − 1/2, а следовательно, D ′ [k, j] ≥ l = D ′ [i, j] 2 Пусть D[i, j] = 2l − 1. D ′ [i, j] = l D[k, j] ≤ 2l для любого соседа k вершины i D ′ [k, j] ≤ (D[k, j] + 1)/2 ≤ l + 1/2, а следовательно, D ′ [k, j] ≤ l = D ′ [i, j] для какого-то соседа k вершины i D[k, j] = D[i, j] − 1 = 2l − 2 и D ′ [k, j] = l − 1 < l = D ′ [i, j] А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 9 / 26
  • 38. Полезное следствие Следствие Пусть Γ(i) — множество соседей вершины i. Пусть также ∑︁ Δ= D ′ [k, j] ≥ |Γ(i)|D ′ [i, j]. k∈Γ(i) Тогда А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 10 / 26
  • 39. Полезное следствие Следствие Пусть Γ(i) — множество соседей вершины i. Пусть также ∑︁ Δ= D ′ [k, j] ≥ |Γ(i)|D ′ [i, j]. k∈Γ(i) Тогда 1 D[i, j] четно тогда и только тогда, когда Δ ≥ 0. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 10 / 26
  • 40. Полезное следствие Следствие Пусть Γ(i) — множество соседей вершины i. Пусть также ∑︁ Δ= D ′ [k, j] ≥ |Γ(i)|D ′ [i, j]. k∈Γ(i) Тогда 1 D[i, j] четно тогда и только тогда, когда Δ ≥ 0. 2 D[i, j] нечетно тогда и только тогда, когда Δ < 0. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 10 / 26
  • 41. Алгоритм Алгоритм APD-Alg(матрица смежности A графа G (V , E )) А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 11 / 26
  • 42. Алгоритм Алгоритм APD-Alg(матрица смежности A графа G (V , E )) Z = A2 А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 11 / 26
  • 43. Алгоритм Алгоритм APD-Alg(матрица смежности A графа G (V , E )) Z = A2 построим матрицу A′ : A′ [i, j] = 1, если и только если i ̸= j, а также либо A[i, j] = 1, либо Z [i, j] > 0 А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 11 / 26
  • 44. Алгоритм Алгоритм 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 А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 11 / 26
  • 45. Алгоритм Алгоритм 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′ ) А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 11 / 26
  • 46. Алгоритм Алгоритм 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 ′ А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 11 / 26
  • 47. Алгоритм Алгоритм 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, где {︃ 2D ′ [i, j], если S[i, j] ≥ D ′ [i, j]Z [i, i], D[i, j] = 2D ′ [i, j] − 1, если S[i, j] < D ′ [i, j]Z [i, i]. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 11 / 26
  • 48. Анализ Теорема Алгоритм APD-Alg корректно находит матрицу кратчайших расстояний за время O(n2.376 log n). А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 12 / 26
  • 49. План лекции 1 Нахождение матрицы расстояний 2 Поиск виновников в умножении булевых матриц 3 Поиск кратчайших путей А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 13 / 26
  • 50. Виновники в умножении булевых матриц Виновники в умножении булевых матриц А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 14 / 26
  • 51. Виновники в умножении булевых матриц Виновники в умножении булевых матриц Пусть P — булево произведение матриц A и B, то есть ⋁︁ P[i, j] = (A[i, k] ∧ B[k, j]). 1≤k≤n А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 14 / 26
  • 52. Виновники в умножении булевых матриц Виновники в умножении булевых матриц Пусть P — булево произведение матриц A и B, то есть ⋁︁ P[i, j] = (A[i, k] ∧ B[k, j]). 1≤k≤n Виновником (witness) элемента P[i, j] называется такой индекс k, что A[i, k] = B[k, j] = 1. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 14 / 26
  • 53. Виновники в умножении булевых матриц Виновники в умножении булевых матриц Пусть P — булево произведение матриц A и B, то есть ⋁︁ P[i, j] = (A[i, k] ∧ B[k, j]). 1≤k≤n Виновником (witness) элемента P[i, j] называется такой индекс k, что A[i, k] = B[k, j] = 1. Ясно, что P[i, j] = 1 тогда и только тогда, когда для элемента P[i, j] есть виновник. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 14 / 26
  • 54. Виновники в умножении булевых матриц Виновники в умножении булевых матриц Пусть P — булево произведение матриц A и B, то есть ⋁︁ P[i, j] = (A[i, k] ∧ B[k, j]). 1≤k≤n Виновником (witness) элемента P[i, j] называется такой индекс k, что A[i, k] = B[k, j] = 1. Ясно, что P[i, j] = 1 тогда и только тогда, когда для элемента P[i, j] есть виновник. Матрицей виновников произведения матриц (Boolean product witness matrix, BPWM) называется матрица W , такая что W [i, j] —виновников элемента P[i, j], если хотя бы один виновник есть, и W [i, j] = 0 в противном случае. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 14 / 26
  • 55. Виновники в умножении булевых матриц Виновники в умножении булевых матриц Пусть P — булево произведение матриц A и B, то есть ⋁︁ P[i, j] = (A[i, k] ∧ B[k, j]). 1≤k≤n Виновником (witness) элемента P[i, j] называется такой индекс k, что A[i, k] = B[k, j] = 1. Ясно, что P[i, j] = 1 тогда и только тогда, когда для элемента P[i, j] есть виновник. Матрицей виновников произведения матриц (Boolean product witness matrix, BPWM) называется матрица W , такая что W [i, j] —виновников элемента P[i, j], если хотя бы один виновник есть, и W [i, j] = 0 в противном случае. Заметим, что целочисленное произведение булевых матриц A и B есть в точности матрица виновников. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 14 / 26
  • 56. Виновники в графе Виновники в графе А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 15 / 26
  • 57. Виновники в графе Виновники в графе Если A = B — матрица смежности графа G , то P[i, j] = 1, если и только если существует путь из i в j длины 2. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 15 / 26
  • 58. Виновники в графе Виновники в графе Если A = B — матрица смежности графа G , то P[i, j] = 1, если и только если существует путь из i в j длины 2. Тогда C [i, j] — количество таких путей, а виновник k элмента P[i, j] — это просто вершина на пути длины 2 из i в j. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 15 / 26
  • 59. Виновники в графе Виновники в графе Если A = B — матрица смежности графа G , то P[i, j] = 1, если и только если существует путь из i в j длины 2. Тогда C [i, j] — количество таких путей, а виновник k элмента P[i, j] — это просто вершина на пути длины 2 из i в j. Таким образом, нахождение виновников может помочь превратить алгоритм нахождения расстояний в алгоритм нахождения кратчайших путей. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 15 / 26
  • 60. Виновники в графе Виновники в графе Если 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
  • 61. Угадывание виновников Угадывание виновников А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 16 / 26
  • 62. Угадывание виновников Угадывание виновников Конечно, бывают и элементы, для которых есть больше одного виновника. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 16 / 26
  • 63. Угадывание виновников Угадывание виновников Конечно, бывают и элементы, для которых есть больше одного виновника. Пусть число виновников элемента P[i, j] равно w ≥ 2. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 16 / 26
  • 64. Угадывание виновников Угадывание виновников Конечно, бывают и элементы, для которых есть больше одного виновника. Пусть число виновников элемента P[i, j] равно w ≥ 2. Рассмотрим целое число r , для которого n/2 ≤ wr ≤ n. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 16 / 26
  • 65. Угадывание виновников Угадывание виновников Конечно, бывают и элементы, для которых есть больше одного виновника. Пусть число виновников элемента P[i, j] равно w ≥ 2. Рассмотрим целое число r , для которого n/2 ≤ wr ≤ n. С большой вероятностью случайное подмножество размера r множества {1, . . . , n} содержит ровно одного виновника. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 16 / 26
  • 66. Оценка вероятности Лемма В корзине имеется n шаров, w из которых белого цвета, n − w — черного. Для r , удовлетворяющего n/2 ≤ wr ≤ n, вероятность того, что среди случайно выбранных r шаров будет ровно один белый, хотя 1 бы 2e . А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 17 / 26
  • 67. Оценка вероятности Лемма В корзине имеется n шаров, w из которых белого цвета, n − w — черного. Для r , удовлетворяющего n/2 ≤ wr ≤ n, вероятность того, что среди случайно выбранных r шаров будет ровно один белый, хотя 1 бы 2e . Доказательство (︀w )︀(︀n−w )︀ 1 −1 r ! (n − w )! (n − r )! (︀nr)︀ =w r (r − 1)! n! (n − w − r + 1)! (︃w −1 )︃ ⎛w −2 ⎞ ∏︁ 1 ∏︁ = wr ⎝ (n − r − j)⎠ n−i i=0 j=0 А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 17 / 26
  • 68. Угадывание уникальных виновников Угадывание уникальных виновников А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 18 / 26
  • 69. Угадывание уникальных виновников Угадывание уникальных виновников Зная множество R, содержащее ровно одного виновника для P[i, j], самого это виновника найти легко. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 18 / 26
  • 70. Угадывание уникальных виновников Угадывание уникальных виновников Зная множество R, содержащее ровно одного виновника для P[i, j], самого это виновника найти легко. Пусть R задано характеристическим вектором (R[k] = 1, если k ∈ R, и R[k] = 0 в противном случае). А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 18 / 26
  • 71. Угадывание уникальных виновников Угадывание уникальных виновников Зная множество R, содержащее ровно одного виновника для P[i, j], самого это виновника найти легко. Пусть R задано характеристическим вектором (R[k] = 1, если k ∈ R, и R[k] = 0 в противном случае). Пусть матрицы AR , B R задаются следующим образом: AR [i, k] = kR[k]A[i, k], B R [k, j] = R[k]B[k, j]. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 18 / 26
  • 72. Угадывание уникальных виновников Угадывание уникальных виновников Зная множество R, содержащее ровно одного виновника для P[i, j], самого это виновника найти легко. Пусть R задано характеристическим вектором (R[k] = 1, если k ∈ R, и R[k] = 0 в противном случае). Пусть матрицы AR , B R задаются следующим образом: AR [i, k] = kR[k]A[i, k], B R [k, j] = R[k]B[k, j]. В частности, все столбцы A и строчки B, для которых нет соответствующего элемента в R, обнуляются. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 18 / 26
  • 73. Угадывание уникальных виновников Угадывание уникальных виновников Зная множество R, содержащее ровно одного виновника для P[i, j], самого это виновника найти легко. Пусть R задано характеристическим вектором (R[k] = 1, если k ∈ R, и R[k] = 0 в противном случае). Пусть матрицы AR , B R задаются следующим образом: AR [i, k] = kR[k]A[i, k], B R [k, j] = R[k]B[k, j]. В частности, все столбцы A и строчки B, для которых нет соответствующего элемента в R, обнуляются. Упражнение Пусть множество R содержит ровно одного виновника элемента P[i, j]. Показать, что этот виновник равен (AR B R )[i, j]. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 18 / 26
  • 74. Алгоритм Алгоритм BMPW-Alg(A, B ∈ {0, 1}n×n ) А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 19 / 26
  • 75. Алгоритм Алгоритм BMPW-Alg(A, B ∈ {0, 1}n×n ) W = −AB А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 19 / 26
  • 76. Алгоритм Алгоритм BMPW-Alg(A, B ∈ {0, 1}n×n ) W = −AB для t от 1 до log n повторять А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 19 / 26
  • 77. Алгоритм Алгоритм BMPW-Alg(A, B ∈ {0, 1}n×n ) W = −AB для t от 1 до log n повторять r = 2t А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 19 / 26
  • 78. Алгоритм Алгоритм BMPW-Alg(A, B ∈ {0, 1}n×n ) W = −AB для t от 1 до log n повторять r = 2t повторять 4 log n раз А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 19 / 26
  • 79. Алгоритм Алгоритм BMPW-Alg(A, B ∈ {0, 1}n×n ) W = −AB для t от 1 до log n повторять r = 2t повторять 4 log n раз выбрать случайное множество R ⊆ {1, . . . , n} размера r А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 19 / 26
  • 80. Алгоритм Алгоритм BMPW-Alg(A, B ∈ {0, 1}n×n ) W = −AB для t от 1 до log n повторять r = 2t повторять 4 log n раз выбрать случайное множество R ⊆ {1, . . . , n} размера r Z = AR B R А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 19 / 26
  • 81. Алгоритм Алгоритм BMPW-Alg(A, B ∈ {0, 1}n×n ) W = −AB для t от 1 до log n повторять r = 2t повторять 4 log n раз выбрать случайное множество R ⊆ {1, . . . , n} размера r Z = AR B R для всех (i, j): если W [i, j] < 0 и Z [i, j] является виновником, то W [i, j] = Z [i, j] А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 19 / 26
  • 82. Алгоритм Алгоритм BMPW-Alg(A, B ∈ {0, 1}n×n ) W = −AB для t от 1 до log n повторять r = 2t повторять 4 log n раз выбрать случайное множество R ⊆ {1, . . . , n} размера r Z = AR B R для всех (i, j): если W [i, j] < 0 и Z [i, j] является виновником, то W [i, j] = Z [i, j] для всех (i, j): если W [i, j] < 0, то найти виновника перебором А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 19 / 26
  • 83. Алгоритм Алгоритм BMPW-Alg(A, B ∈ {0, 1}n×n ) W = −AB для t от 1 до log n повторять r = 2t повторять 4 log n раз выбрать случайное множество R ⊆ {1, . . . , n} размера r Z = AR B R для всех (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
  • 84. Анализ алгоритма Теорема Мат. ожидание времени работы алгоритма BMPW-Alg равно O(n2.376 log2 n). А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 20 / 26
  • 85. Анализ алгоритма Теорема Мат. ожидание времени работы алгоритма BMPW-Alg равно O(n2.376 log2 n). Доказательство А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 20 / 26
  • 86. Анализ алгоритма Теорема Мат. ожидание времени работы алгоритма BMPW-Alg равно O(n2.376 log2 n). Доказательство Вероятность того, что для элемента P[i, j] не найдется виновник в цикле хотя бы (1 − 1/2e)4 log n ≤ 1/n. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 20 / 26
  • 87. Анализ алгоритма Теорема Мат. ожидание времени работы алгоритма BMPW-Alg равно O(n2.376 log2 n). Доказательство Вероятность того, что для элемента P[i, j] не найдется виновник в цикле хотя бы (1 − 1/2e)4 log n ≤ 1/n. Значит, мат. ожидание кол-ва элементов, для которых виновников придется искать перебором, не более n. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 20 / 26
  • 88. План лекции 1 Нахождение матрицы расстояний 2 Поиск виновников в умножении булевых матриц 3 Поиск кратчайших путей А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 21 / 26
  • 89. Поиск кратчайших путей Поиск кратчайших путей А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 22 / 26
  • 90. Поиск кратчайших путей Поиск кратчайших путей Пусть S — матрица кратчайших путей графа G , то сеть S[i, j] — первая вершина на кратчайшем пути из i в j. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 22 / 26
  • 91. Поиск кратчайших путей Поиск кратчайших путей Пусть S — матрица кратчайших путей графа G , то сеть S[i, j] — первая вершина на кратчайшем пути из i в j. S[i, j] = k, если и только если D[i, j] = d , D[k, j] = d − 1 и D[i, k] = 1. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 22 / 26
  • 92. Поиск кратчайших путей Поиск кратчайших путей Пусть 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-матрица B d задается следующим образом: B d [k, j] = 1, если и только если D[k, j] = d − 1. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 22 / 26
  • 93. Поиск кратчайших путей Поиск кратчайших путей Пусть 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-матрица B d задается следующим образом: B d [k, j] = 1, если и только если D[k, j] = d − 1. Ясно, что B d легко вычислить, зная D. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 22 / 26
  • 94. Поиск кратчайших путей Поиск кратчайших путей Пусть 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-матрица B d задается следующим образом: B d [k, j] = 1, если и только если D[k, j] = d − 1. Ясно, что B d легко вычислить, зная D. Более того, зная B d легко вычислить первую вершину на пути между вершинами i и j, расстояние между которыми равно d . А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 22 / 26
  • 95. Поиск кратчайших путей Поиск кратчайших путей Пусть 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-матрица B d задается следующим образом: B d [k, j] = 1, если и только если D[k, j] = d − 1. Ясно, что B d легко вычислить, зная D. Более того, зная B d легко вычислить первую вершину на пути между вершинами i и j, расстояние между которыми равно d . Упражнение Показать, что, используя алгоритм BMPW-Alg для матриц A и B d , можно найти все первые вершины на кратчайших путях длины d . А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 22 / 26
  • 96. Улучшение идеи Улучшение идеи А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 23 / 26
  • 97. Улучшение идеи Улучшение идеи Итак, мы умеем находить первые вершины на путях длины d . А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 23 / 26
  • 98. Улучшение идеи Улучшение идеи Итак, мы умеем находить первые вершины на путях длины d . Но перебирать все значения d мы не можем. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 23 / 26
  • 99. Улучшение идеи Улучшение идеи Итак, мы умеем находить первые вершины на путях длины d . Но перебирать все значения d мы не можем. Вспомним, что для любых двух вершин i и j и для любого соседа k ∈ Γ(i) выполнено D[i, j] − 1 ≤ D[k, j] ≤ D[i, j] + 1. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 23 / 26
  • 100. Улучшение идеи Улучшение идеи Итак, мы умеем находить первые вершины на путях длины 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. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 23 / 26
  • 101. Улучшение идеи Улучшение идеи Итак, мы умеем находить первые вершины на путях длины 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
  • 102. Алгоритм Алгоритм APSP-Alg(матрица смежности A графа G ) А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 24 / 26
  • 103. Алгоритм Алгоритм APSP-Alg(матрица смежности A графа G ) D = APD-Alg(A) А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 24 / 26
  • 104. Алгоритм Алгоритм APSP-Alg(матрица смежности A графа G ) D = APD-Alg(A) для s ∈ {0, 1, 2} повторять А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 24 / 26
  • 105. Алгоритм Алгоритм APSP-Alg(матрица смежности A графа G ) D = APD-Alg(A) для s ∈ {0, 1, 2} повторять вычислить 0/1-матрицу D s : D s [k, j] = 1, если и только если D[k, j] + 1 ≡ s mod 3 А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 24 / 26
  • 106. Алгоритм Алгоритм APSP-Alg(матрица смежности A графа G ) D = APD-Alg(A) для s ∈ {0, 1, 2} повторять вычислить 0/1-матрицу D s : D s [k, j] = 1, если и только если D[k, j] + 1 ≡ s mod 3 W s = BPWM-Alg(A, D s ) А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 24 / 26
  • 107. Алгоритм Алгоритм APSP-Alg(матрица смежности A графа G ) D = APD-Alg(A) для s ∈ {0, 1, 2} повторять вычислить 0/1-матрицу D s : D s [k, j] = 1, если и только если D[k, j] + 1 ≡ s mod 3 W s = BPWM-Alg(A, D s ) вернуть S, такую что S[i, j] = W D[i,j] mod 3 [i, j] А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 24 / 26
  • 108. Что мы узнали за сегодня? Что мы узнали за сегодня? А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 25 / 26
  • 109. Что мы узнали за сегодня? Что мы узнали за сегодня? Детерминированный алгоритм поиска расстояний между всеми парами вершин графа. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 25 / 26
  • 110. Что мы узнали за сегодня? Что мы узнали за сегодня? Детерминированный алгоритм поиска расстояний между всеми парами вершин графа. Вероятностный алгоритм поиска виновников в умножении булевых матриц. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 25 / 26
  • 111. Что мы узнали за сегодня? Что мы узнали за сегодня? Детерминированный алгоритм поиска расстояний между всеми парами вершин графа. Вероятностный алгоритм поиска виновников в умножении булевых матриц. Вероятностный алгоритм поиска кратчайших путей между всеми парами вершин графа. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 25 / 26
  • 112. Что мы узнали за сегодня? Что мы узнали за сегодня? Детерминированный алгоритм поиска расстояний между всеми парами вершин графа. Вероятностный алгоритм поиска виновников в умножении булевых матриц. Вероятностный алгоритм поиска кратчайших путей между всеми парами вершин графа. Все алгоритмы работают примерно столько же, сколько алгоритм перемножния матриц. А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 25 / 26
  • 113. Спасибо за внимание! А. Куликов (CS клуб при ПОМИ) 8. Вероятностные алгоритмы 26 / 26