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

                                      А. Куликов

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




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



1   Проверка перемножения матриц




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



1   Проверка перемножения матриц


2   Сравнение строк




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



1   Проверка перемножения матриц


2   Сравнение строк


3   Нулевой многочлен




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



1   Проверка перемножения матриц


2   Сравнение строк


3   Нулевой многочлен


4   Эквивалентность ветвящихся программ




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



1   Проверка перемножения матриц


2   Сравнение строк


3   Нулевой многочлен


4   Эквивалентность ветвящихся программ




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


Проверка перемножения матриц




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


Проверка перемножения матриц
      Даны три n × n матрицы A, B, C . Мы хотим проверить равенство
      A × B = C.




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


Проверка перемножения матриц
      Даны три n × n матрицы A, B, C . Мы хотим проверить равенство
      A × B = C.
      Простой детерминированный алгоритм перемножает матрицы A и
      B и сравнивает результат с C .




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


Проверка перемножения матриц
      Даны три n × n матрицы A, B, C . Мы хотим проверить равенство
      A × B = C.
      Простой детерминированный алгоритм перемножает матрицы A и
      B и сравнивает результат с C .
      Время работы такого алгоритма при использовании обычного
      перемножения матриц составляет O(n3 ), при использовании
      быстрого — O(n2.376 ).




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


Проверка перемножения матриц
      Даны три n × n матрицы A, B, C . Мы хотим проверить равенство
      A × B = C.
      Простой детерминированный алгоритм перемножает матрицы A и
      B и сравнивает результат с C .
      Время работы такого алгоритма при использовании обычного
      перемножения матриц составляет O(n3 ), при использовании
      быстрого — O(n2.376 ).
      Мы предъявим вероятностный алгоритм с односторонней
      ошибкой, который за время O(n2 ) проверяет равенство.




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

Алгоритм
Rand-Matrix-Equiv(A, B, C )




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

Алгоритм
Rand-Matrix-Equiv(A, B, C )
      взять случайный вектор x из {0, 1}n




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

Алгоритм
Rand-Matrix-Equiv(A, B, C )
      взять случайный вектор x из {0, 1}n
      посчитать y = B × x




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

Алгоритм
Rand-Matrix-Equiv(A, B, C )
      взять случайный вектор x из {0, 1}n
      посчитать y = B × x
      посчитать z = A × y




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

Алгоритм
Rand-Matrix-Equiv(A, B, C )
      взять случайный вектор x из {0, 1}n
      посчитать y = B × x
      посчитать z = A × y
      посичтать t = C × x




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

Алгоритм
Rand-Matrix-Equiv(A, B, C )
      взять случайный вектор x из {0, 1}n
      посчитать y = B × x
      посчитать z = A × y
      посичтать t = C × x
      вернуть “да”, если z = t




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

Алгоритм
Rand-Matrix-Equiv(A, B, C )
      взять случайный вектор x из {0, 1}n
      посчитать y = B × x
      посчитать z = A × y
      посичтать t = C × x
      вернуть “да”, если z = t
      вернуть “нет”




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

Алгоритм
Rand-Matrix-Equiv(A, B, C )
      взять случайный вектор x из {0, 1}n
      посчитать y = B × x
      посчитать z = A × y
      посичтать t = C × x
      вернуть “да”, если z = t
      вернуть “нет”

Неформально




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

Алгоритм
Rand-Matrix-Equiv(A, B, C )
      взять случайный вектор x из {0, 1}n
      посчитать y = B × x
      посчитать z = A × y
      посичтать t = C × x
      вернуть “да”, если z = t
      вернуть “нет”

Неформально
      Алгоритм просто проверяет равенство A × (B × x) = C × x.



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

Алгоритм
Rand-Matrix-Equiv(A, B, C )
      взять случайный вектор x из {0, 1}n
      посчитать y = B × x
      посчитать z = A × y
      посичтать t = C × x
      вернуть “да”, если z = t
      вернуть “нет”

Неформально
      Алгоритм просто проверяет равенство A × (B × x) = C × x.
      Матрицы могут быть над любым полем.


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

Лемма
Алгоритм Rand-Matrix-Equiv имеет время работы O(n2 ) и
вероятность ошибки не более 1/2. Причем ошибиться он может,
только если A × B ̸= C .

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




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

Лемма
Алгоритм Rand-Matrix-Equiv имеет время работы O(n2 ) и
вероятность ошибки не более 1/2. Причем ошибиться он может,
только если A × B ̸= C .

Доказательство
      Предположим, что A × B ̸= C .




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

Лемма
Алгоритм Rand-Matrix-Equiv имеет время работы O(n2 ) и
вероятность ошибки не более 1/2. Причем ошибиться он может,
только если A × B ̸= C .

Доказательство
      Предположим, что A × B ̸= C .
      Алгоритм ошибается, если для случайного вектора, который он
      выбрал, (A × B − C ) × x = 0.




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

Лемма
Алгоритм Rand-Matrix-Equiv имеет время работы O(n2 ) и
вероятность ошибки не более 1/2. Причем ошибиться он может,
только если A × B ̸= C .

Доказательство
      Предположим, что A × B ̸= C .
      Алгоритм ошибается, если для случайного вектора, который он
      выбрал, (A × B − C ) × x = 0.
      Рассмотрим ненулевую строчку d = (d1 , . . . , dn ) матрицы
      A × B − C (такая есть, поскольку A × B ̸= C ).




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

Лемма
Алгоритм Rand-Matrix-Equiv имеет время работы O(n2 ) и
вероятность ошибки не более 1/2. Причем ошибиться он может,
только если A × B ̸= C .

Доказательство
      Предположим, что A × B ̸= C .
      Алгоритм ошибается, если для случайного вектора, который он
      выбрал, (A × B − C ) × x = 0.
      Рассмотрим ненулевую строчку d = (d1 , . . . , dn ) матрицы
      A × B − C (такая есть, поскольку A × B ̸= C ).
      НУО, d1 ̸= 0.



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

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




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

Доказательство
                                                        ∑︀n
      Произведение этой строчки на x равно                   i=1 di xi .




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

Доказательство
                                                        ∑︀n
      Произведение этой строчки на x равно                   i=1 di xi .
      Это произведение равно 0 тогда и только тогда, когда
      x1 = h(x2 , . . . , xn ), где
                                                        ∑︀n
                                                               di xi
                                 h(x2 , . . . , xn ) = − i=2         .
                                                            d1




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

Доказательство
                                                        ∑︀n
      Произведение этой строчки на x равно                   i=1 di xi .
      Это произведение равно 0 тогда и только тогда, когда
      x1 = h(x2 , . . . , xn ), где
                                                        ∑︀n
                                                               di xi
                                 h(x2 , . . . , xn ) = − i=2         .
                                                            d1


      Отметим, что h может принимать значения, отличные от 0 и 1.




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

Доказательство
                                                        ∑︀n
      Произведение этой строчки на x равно                   i=1 di xi .
      Это произведение равно 0 тогда и только тогда, когда
      x1 = h(x2 , . . . , xn ), где
                                                        ∑︀n
                                                               di xi
                                 h(x2 , . . . , xn ) = − i=2         .
                                                            d1


      Отметим, что h может принимать значения, отличные от 0 и 1.
      С вероятностью хотя бы 1/2 x1 ̸= h(x2 , . . . , xn ).




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



1   Проверка перемножения матриц


2   Сравнение строк


3   Нулевой многочлен


4   Эквивалентность ветвящихся программ




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



Сравнение строк




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



Сравнение строк
      Даны две битовые строки a и b, которые необходимо сравнить на
      совпадение, затратив как можно меньше информации (к примеру,
      требуется сравнить файлы по сети).




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



Сравнение строк
      Даны две битовые строки a и b, которые необходимо сравнить на
      совпадение, затратив как можно меньше информации (к примеру,
      требуется сравнить файлы по сети).
      Основная идея: сравнивать не сами строки, а функции от них.




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



Сравнение строк
      Даны две битовые строки a и b, которые необходимо сравнить на
      совпадение, затратив как можно меньше информации (к примеру,
      требуется сравнить файлы по сети).
      Основная идея: сравнивать не сами строки, а функции от них.
      Будем сравнивать a mod p и b mod p.




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



Сравнение строк
      Даны две битовые строки a и b, которые необходимо сравнить на
      совпадение, затратив как можно меньше информации (к примеру,
      требуется сравнить файлы по сети).
      Основная идея: сравнивать не сами строки, а функции от них.
      Будем сравнивать a mod p и b mod p.
      Для такого сравнения достаточно передать 2 log2 p битов.




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


Определение
Функция распределения простых чисел (prime distribution function)
(n) определяется как количество простых чисел, не превосходящих n.




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


Определение
Функция распределения простых чисел (prime distribution function)
(n) определяется как количество простых чисел, не превосходящих n.

Факт
Асимптотический закон распределения простых чисел:

                                          (n)
                                   lim           = 1.
                                 n→∞     n/ ln n




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

Алгоритм
Rand-String-Equiv(a, b)




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

Алгоритм
Rand-String-Equiv(a, b)
      Пусть |a| = |b| = n, N = n2 log2 n2 .




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

Алгоритм
Rand-String-Equiv(a, b)
      Пусть |a| = |b| = n, N = n2 log2 n2 .
      Выберем случайно простое число p из интервала [2..N].




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

Алгоритм
Rand-String-Equiv(a, b)
      Пусть |a| = |b| = n, N = n2 log2 n2 .
      Выберем случайно простое число p из интервала [2..N].
      Выдать “да”, если a mod p = b mod p.




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

Алгоритм
Rand-String-Equiv(a, b)
      Пусть |a| = |b| = n, N = n2 log2 n2 .
      Выберем случайно простое число p из интервала [2..N].
      Выдать “да”, если a mod p = b mod p.
      Выдать “нет”.




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

Алгоритм
Rand-String-Equiv(a, b)
      Пусть |a| = |b| = n, N = n2 log2 n2 .
      Выберем случайно простое число p из интервала [2..N].
      Выдать “да”, если a mod p = b mod p.
      Выдать “нет”.

Лемма
Алгоритм Rand-String-Equiv является вероятностным алгоритмом
с односторонней ошибкой с вероятностью ошибки O(1/n) и требует
передачи O(log n) битов.



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




А. Куликов (CS клуб при ПОМИ)   6. Вероятностные алгоритмы   12 / 32
Доказательство
Доказательство
      Количество передаваемых битов:
      2 log2 p ≤ 2 log2 N = 2 log2 (n2 log2 n2 ) = O(log2 n).




А. Куликов (CS клуб при ПОМИ)   6. Вероятностные алгоритмы      12 / 32
Доказательство
Доказательство
      Количество передаваемых битов:
      2 log2 p ≤ 2 log2 N = 2 log2 (n2 log2 n2 ) = O(log2 n).
      Алгоритм ошибается, только если a ̸= b, но для выбранного
      простого числа p выполнено равенство (a − b) ≡ 0 mod p.




А. Куликов (CS клуб при ПОМИ)   6. Вероятностные алгоритмы        12 / 32
Доказательство
Доказательство
      Количество передаваемых битов:
      2 log2 p ≤ 2 log2 N = 2 log2 (n2 log2 n2 ) = O(log2 n).
      Алгоритм ошибается, только если a ̸= b, но для выбранного
      простого числа p выполнено равенство (a − b) ≡ 0 mod p.
      Количество таких простых чисел p есть

                           |{p ∈ P : (a − b) ≡ 0 mod p}| ≤ n.




А. Куликов (CS клуб при ПОМИ)   6. Вероятностные алгоритмы        12 / 32
Доказательство
Доказательство
      Количество передаваемых битов:
      2 log2 p ≤ 2 log2 N = 2 log2 (n2 log2 n2 ) = O(log2 n).
      Алгоритм ошибается, только если a ̸= b, но для выбранного
      простого числа p выполнено равенство (a − b) ≡ 0 mod p.
      Количество таких простых чисел p есть

                           |{p ∈ P : (a − b) ≡ 0 mod p}| ≤ n.


      Значит, вероятность ошибки есть

                                   n(log n2 + log log n2 )
               (︂         )︂    (︂                         )︂    (︂ )︂
                    n                                              1
            O                =O            2 log n2
                                                              =O       .
                  N/ ln N                n                         n



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



1   Проверка перемножения матриц


2   Сравнение строк


3   Нулевой многочлен


4   Эквивалентность ветвящихся программ




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

Нулевой многочлен




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

Нулевой многочлен
      Дан многочлен f (x1 , . . . , xn ), и мы хотим проверить равенство
      f = 0 (f равен 0 при любых значениях переменных).




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

Нулевой многочлен
      Дан многочлен f (x1 , . . . , xn ), и мы хотим проверить равенство
      f = 0 (f равен 0 при любых значениях переменных).
      Такая проверка может понадобиться, например, если у нас есть
      матрица, элементы которой являются многочленами, и нас
      интересует, равен ли 0 ее определитель. Вычислить определитель
      явно в такой ситуации трудно.




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

Нулевой многочлен
      Дан многочлен f (x1 , . . . , xn ), и мы хотим проверить равенство
      f = 0 (f равен 0 при любых значениях переменных).
      Такая проверка может понадобиться, например, если у нас есть
      матрица, элементы которой являются многочленами, и нас
      интересует, равен ли 0 ее определитель. Вычислить определитель
      явно в такой ситуации трудно.
      Основная идея: подставить случайные значения переменным.




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

Нулевой многочлен
      Дан многочлен f (x1 , . . . , xn ), и мы хотим проверить равенство
      f = 0 (f равен 0 при любых значениях переменных).
      Такая проверка может понадобиться, например, если у нас есть
      матрица, элементы которой являются многочленами, и нас
      интересует, равен ли 0 ее определитель. Вычислить определитель
      явно в такой ситуации трудно.
      Основная идея: подставить случайные значения переменным.
      Если полученное значение не равно 0, значит, и исходный
      многочлен не равен 0.




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

Нулевой многочлен
      Дан многочлен f (x1 , . . . , xn ), и мы хотим проверить равенство
      f = 0 (f равен 0 при любых значениях переменных).
      Такая проверка может понадобиться, например, если у нас есть
      матрица, элементы которой являются многочленами, и нас
      интересует, равен ли 0 ее определитель. Вычислить определитель
      явно в такой ситуации трудно.
      Основная идея: подставить случайные значения переменным.
      Если полученное значение не равно 0, значит, и исходный
      многочлен не равен 0.
      Если же значение равно 0, ты мы попали в корень этого
      многочлена.



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




А. Куликов (CS клуб при ПОМИ)   6. Вероятностные алгоритмы   15 / 32
Более формально
Более формально
      Пусть F — поле, а f (x1 , . . . , xn ) — многочлен от n переменных над
      этим полем.




А. Куликов (CS клуб при ПОМИ)   6. Вероятностные алгоритмы              15 / 32
Более формально
Более формально
      Пусть F — поле, а f (x1 , . . . , xn ) — многочлен от n переменных над
      этим полем.
      Степенью f называется максимальная степень переменной в
      записи f через сумму мономов (произведений переменных).




А. Куликов (CS клуб при ПОМИ)   6. Вероятностные алгоритмы              15 / 32
Более формально
Более формально
      Пусть F — поле, а f (x1 , . . . , xn ) — многочлен от n переменных над
      этим полем.
      Степенью f называется максимальная степень переменной в
      записи f через сумму мономов (произведений переменных).
      Полной степенью называется максимальная степень монома.




А. Куликов (CS клуб при ПОМИ)   6. Вероятностные алгоритмы              15 / 32
Более формально
Более формально
      Пусть F — поле, а f (x1 , . . . , xn ) — многочлен от n переменных над
      этим полем.
      Степенью f называется максимальная степень переменной в
      записи f через сумму мономов (произведений переменных).
      Полной степенью называется максимальная степень монома.
                                               3          2 2
      Например, многочлен f (x1 , x2 , x3 ) = x1 x2 + x1 x2 x3 имеет степень 3
      и полную степень 5.




А. Куликов (CS клуб при ПОМИ)   6. Вероятностные алгоритмы                15 / 32
Более формально
Более формально
      Пусть F — поле, а f (x1 , . . . , xn ) — многочлен от n переменных над
      этим полем.
      Степенью f называется максимальная степень переменной в
      записи f через сумму мономов (произведений переменных).
      Полной степенью называется максимальная степень монома.
                                               3          2 2
      Например, многочлен f (x1 , x2 , x3 ) = x1 x2 + x1 x2 x3 имеет степень 3
      и полную степень 5.
      Многочлен степени 1 называется полилинейным.




А. Куликов (CS клуб при ПОМИ)   6. Вероятностные алгоритмы                15 / 32
Более формально
Более формально
      Пусть F — поле, а f (x1 , . . . , xn ) — многочлен от n переменных над
      этим полем.
      Степенью f называется максимальная степень переменной в
      записи f через сумму мономов (произведений переменных).
      Полной степенью называется максимальная степень монома.
                                               3          2 2
      Например, многочлен f (x1 , x2 , x3 ) = x1 x2 + x1 x2 x3 имеет степень 3
      и полную степень 5.
      Многочлен степени 1 называется полилинейным.

Лемма
Пусть f (x1 , . . . , xn ) — ненулевой многочлен полной степени d над
полем F. Пусть также S ⊆ F и |S| ≥ d . Тогда есть хотя бы
|S|n − d · |S|n−1 точек (a1 , . . . , an ) ∈ S n , в которых f (a1 , . . . , an ) ̸= 0.

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


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




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


Доказательство
      Индукция по n.




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


Доказательство
      Индукция по n.
      База (n = 1) верна, поскольку у многочлена степени d не более d
      корней.




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


Доказательство
      Индукция по n.
      База (n = 1) верна, поскольку у многочлена степени d не более d
      корней.
      Разложим f по степеням xn :
                                                     2               t
                                f = f0 + f1 xn + f2 xn + · · · + ft xn ,

      где f0 , . . . , ft — многочлены от переменных x1 , . . . , xn−1 , ft ̸= 0,
      t ≤ d.




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




А. Куликов (CS клуб при ПОМИ)   6. Вероятностные алгоритмы   17 / 32
Доказательство (продолжение)
Доказательство
      Нам нужно оценить, для скольких точек (a, b) ∈ S n−1 × S
      выполняется f (a, b) = 0.




А. Куликов (CS клуб при ПОМИ)   6. Вероятностные алгоритмы       17 / 32
Доказательство (продолжение)
Доказательство
      Нам нужно оценить, для скольких точек (a, b) ∈ S n−1 × S
      выполняется f (a, b) = 0.
      Рассмотрим два случая:




А. Куликов (CS клуб при ПОМИ)   6. Вероятностные алгоритмы       17 / 32
Доказательство (продолжение)
Доказательство
      Нам нужно оценить, для скольких точек (a, b) ∈ S n−1 × S
      выполняется f (a, b) = 0.
      Рассмотрим два случая:
         1   ft (a) = 0. Поскольку ft — ненулевой многочлен полной степени не
             более d − t, то по индукционному предположению есть не более
             (d − t)|S|n−2 точек в S n−1 , на которых он обращается в 0. Значит,
             всего есть не более (d − t) · |S|n−1 точек (a, b) ∈ S n−1 × S, таких
             что f (a, b) = 0 и ft (a) = 0.




А. Куликов (CS клуб при ПОМИ)   6. Вероятностные алгоритмы                   17 / 32
Доказательство (продолжение)
Доказательство
      Нам нужно оценить, для скольких точек (a, b) ∈ S n−1 × S
      выполняется f (a, b) = 0.
      Рассмотрим два случая:
         1   ft (a) = 0. Поскольку ft — ненулевой многочлен полной степени не
             более d − t, то по индукционному предположению есть не более
             (d − t)|S|n−2 точек в S n−1 , на которых он обращается в 0. Значит,
             всего есть не более (d − t) · |S|n−1 точек (a, b) ∈ S n−1 × S, таких
             что f (a, b) = 0 и ft (a) = 0.
         2   ft (a) ̸= 0. Для каждой точки a ∈ S n−1 , для которой ft (a) ̸= 0,
             f (a, xn ) — ненулевой многочлен от одной переменной степени t. У
             такого многочлена не более t корней. Значит, всего есть не более
             t · |S|n−1 точек (a, b) ∈ S n−1 × S, таких что f (a, b) = 0 и ft (a) ̸= 0.




А. Куликов (CS клуб при ПОМИ)    6. Вероятностные алгоритмы                        17 / 32
Доказательство (продолжение)
Доказательство
      Нам нужно оценить, для скольких точек (a, b) ∈ S n−1 × S
      выполняется f (a, b) = 0.
      Рассмотрим два случая:
         1   ft (a) = 0. Поскольку ft — ненулевой многочлен полной степени не
             более d − t, то по индукционному предположению есть не более
             (d − t)|S|n−2 точек в S n−1 , на которых он обращается в 0. Значит,
             всего есть не более (d − t) · |S|n−1 точек (a, b) ∈ S n−1 × S, таких
             что f (a, b) = 0 и ft (a) = 0.
         2   ft (a) ̸= 0. Для каждой точки a ∈ S n−1 , для которой ft (a) ̸= 0,
             f (a, xn ) — ненулевой многочлен от одной переменной степени t. У
             такого многочлена не более t корней. Значит, всего есть не более
             t · |S|n−1 точек (a, b) ∈ S n−1 × S, таких что f (a, b) = 0 и ft (a) ̸= 0.
      Таким образом, всего точек (a, b) ∈ S n , на которых f обращается
      в 0, не более (d − t) · |S|n−1 + t · |S|n−1 = d · |S|n−1 .


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


Слабая оценка




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


Слабая оценка
      Если f имеет степень d , тогда его полная степень может быть
      равна dn.




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


Слабая оценка
      Если f имеет степень d , тогда его полная степень может быть
      равна dn.
      Значит, даже для полилинейного многочлена оценка из только
      что доказанной леммы будет тривиальна, если |S| ≤ n:

                                  |S|n − n · |S|n−1 ≤ 0.




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


Слабая оценка
      Если f имеет степень d , тогда его полная степень может быть
      равна dn.
      Значит, даже для полилинейного многочлена оценка из только
      что доказанной леммы будет тривиальна, если |S| ≤ n:

                                  |S|n − n · |S|n−1 ≤ 0.


      Поэтому сейчас мы докажем другую лемму.




А. Куликов (CS клуб при ПОМИ)   6. Вероятностные алгоритмы           18 / 32
Еще одна лемма
Лемма
Пусть f (x1 , . . . , xn ) — ненулевой многочлен степени d над полем F.
Пусть также S ⊆ F и |S| ≥ d . Тогда есть хотя бы (|S| − d )n точек
(a1 , . . . , an ) ∈ S n , в которых f (a1 , . . . , an ) ̸= 0.




А. Куликов (CS клуб при ПОМИ)   6. Вероятностные алгоритмы                19 / 32
Еще одна лемма
Лемма
Пусть f (x1 , . . . , xn ) — ненулевой многочлен степени d над полем F.
Пусть также S ⊆ F и |S| ≥ d . Тогда есть хотя бы (|S| − d )n точек
(a1 , . . . , an ) ∈ S n , в которых f (a1 , . . . , an ) ̸= 0.

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




А. Куликов (CS клуб при ПОМИ)   6. Вероятностные алгоритмы                19 / 32
Еще одна лемма
Лемма
Пусть f (x1 , . . . , xn ) — ненулевой многочлен степени d над полем F.
Пусть также S ⊆ F и |S| ≥ d . Тогда есть хотя бы (|S| − d )n точек
(a1 , . . . , an ) ∈ S n , в которых f (a1 , . . . , an ) ̸= 0.

Доказательство
      Индукция по n.




А. Куликов (CS клуб при ПОМИ)   6. Вероятностные алгоритмы                19 / 32
Еще одна лемма
Лемма
Пусть f (x1 , . . . , xn ) — ненулевой многочлен степени d над полем F.
Пусть также S ⊆ F и |S| ≥ d . Тогда есть хотя бы (|S| − d )n точек
(a1 , . . . , an ) ∈ S n , в которых f (a1 , . . . , an ) ̸= 0.

Доказательство
      Индукция по n.
      База (n = 1) верна, поскольку многочлен от одной переменной
      степени d не может иметь более n корней.




А. Куликов (CS клуб при ПОМИ)   6. Вероятностные алгоритмы                19 / 32
Еще одна лемма
Лемма
Пусть f (x1 , . . . , xn ) — ненулевой многочлен степени d над полем F.
Пусть также S ⊆ F и |S| ≥ d . Тогда есть хотя бы (|S| − d )n точек
(a1 , . . . , an ) ∈ S n , в которых f (a1 , . . . , an ) ̸= 0.

Доказательство
      Индукция по n.
      База (n = 1) верна, поскольку многочлен от одной переменной
      степени d не может иметь более n корней.
      Рассмотрим точку (a1 , . . . , an ) ∈ S n , в которой f (a1 , . . . , an ) ̸= 0.




А. Куликов (CS клуб при ПОМИ)   6. Вероятностные алгоритмы                          19 / 32
Еще одна лемма
Лемма
Пусть f (x1 , . . . , xn ) — ненулевой многочлен степени d над полем F.
Пусть также S ⊆ F и |S| ≥ d . Тогда есть хотя бы (|S| − d )n точек
(a1 , . . . , an ) ∈ S n , в которых f (a1 , . . . , an ) ̸= 0.

Доказательство
      Индукция по n.
      База (n = 1) верна, поскольку многочлен от одной переменной
      степени d не может иметь более n корней.
      Рассмотрим точку (a1 , . . . , an ) ∈ S n , в которой f (a1 , . . . , an ) ̸= 0.
      Рассмотрим следующие два многочлена:
                          f0 (x1 , . . . , xn−1 )    = f (x1 , . . . , xn−1 , an )
                                          f1 (xn )   = f (a1 , . . . , an−1 , xn )


А. Куликов (CS клуб при ПОМИ)        6. Вероятностные алгоритмы                      19 / 32
Еще одна лемма
Лемма
Пусть f (x1 , . . . , xn ) — ненулевой многочлен степени d над полем F.
Пусть также S ⊆ F и |S| ≥ d . Тогда есть хотя бы (|S| − d )n точек
(a1 , . . . , an ) ∈ S n , в которых f (a1 , . . . , an ) ̸= 0.

Доказательство
      Индукция по n.
      База (n = 1) верна, поскольку многочлен от одной переменной
      степени d не может иметь более n корней.
      Рассмотрим точку (a1 , . . . , an ) ∈ S n , в которой f (a1 , . . . , an ) ̸= 0.
      Рассмотрим следующие два многочлена:
                          f0 (x1 , . . . , xn−1 )    = f (x1 , . . . , xn−1 , an )
                                          f1 (xn )   = f (a1 , . . . , an−1 , xn )
      Оба этих многочлена ненулевые и степени не более d .

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

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




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

Доказательство
      Многочлен f0 зависит от (n − 1)-й переменной, поэтому имеет
      хотя бы (|S| − d )n−1 ненулевых точек в S n−1 (по индукционному
      преподложению).




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

Доказательство
      Многочлен f0 зависит от (n − 1)-й переменной, поэтому имеет
      хотя бы (|S| − d )n−1 ненулевых точек в S n−1 (по индукционному
      преподложению).
      Аналогично многочлен f1 зависит от одной переменной и,
      следовательно, имеет не менее |S| − d ненулевых точек.




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

Доказательство
      Многочлен f0 зависит от (n − 1)-й переменной, поэтому имеет
      хотя бы (|S| − d )n−1 ненулевых точек в S n−1 (по индукционному
      преподложению).
      Аналогично многочлен f1 зависит от одной переменной и,
      следовательно, имеет не менее |S| − d ненулевых точек.
      Таким образом, для каждого из |S| − d значений an , для которых
      f1 ̸= 0, соответствующий многочлен f0 имеет хотя бы (|S| − d )n−1
      ненулевых точек.




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

Доказательство
      Многочлен f0 зависит от (n − 1)-й переменной, поэтому имеет
      хотя бы (|S| − d )n−1 ненулевых точек в S n−1 (по индукционному
      преподложению).
      Аналогично многочлен f1 зависит от одной переменной и,
      следовательно, имеет не менее |S| − d ненулевых точек.
      Таким образом, для каждого из |S| − d значений an , для которых
      f1 ̸= 0, соответствующий многочлен f0 имеет хотя бы (|S| − d )n−1
      ненулевых точек.
      Значит, всего ненулевых точек у многочлена f есть хотя бы
      (|S| − d )n−1 (|S| − d ) = (|S| − d )n .




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



Следствие
Пусть f (x1 , . . . , xn ) — ненулевой многочлен степени d от n переменных,
S ⊆ F — конечное множество. Тогда для случайно выбранных
x1 , . . . , xn из S

                                                              d n
                                                        (︂       )︂
                      Prob (f (x1 , . . . , xn ) ̸= 0) ≥ 1 −        .
                                                             |S|




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



Алгоритм
Rand-Null-Polynomial(f )




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



Алгоритм
Rand-Null-Polynomial(f )
      Зафиксировать множество S ⊆ F размера 2dn (d — степень f ,
      n — кол-во переменных).




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



Алгоритм
Rand-Null-Polynomial(f )
      Зафиксировать множество S ⊆ F размера 2dn (d — степень f ,
      n — кол-во переменных).
      Повторить c раз:




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



Алгоритм
Rand-Null-Polynomial(f )
      Зафиксировать множество S ⊆ F размера 2dn (d — степень f ,
      n — кол-во переменных).
      Повторить c раз:
            случайно выбрать x1 , . . . , xn из S




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



Алгоритм
Rand-Null-Polynomial(f )
      Зафиксировать множество S ⊆ F размера 2dn (d — степень f ,
      n — кол-во переменных).
      Повторить c раз:
            случайно выбрать x1 , . . . , xn из S
            если f (x1 , . . . , xn ) ̸= 0, выдать “ненулевой”




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



Алгоритм
Rand-Null-Polynomial(f )
      Зафиксировать множество S ⊆ F размера 2dn (d — степень f ,
      n — кол-во переменных).
      Повторить c раз:
            случайно выбрать x1 , . . . , xn из S
            если f (x1 , . . . , xn ) ̸= 0, выдать “ненулевой”
      выдать “нулевой”




А. Куликов (CS клуб при ПОМИ)    6. Вероятностные алгоритмы        22 / 32
Анализ алгоритма
Лемма
Алгоритм Rand-Null-Polynomial ошибается с вероятностью не
более 2−c , причем только в случае, если f — ненулевой.

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




А. Куликов (CS клуб при ПОМИ)   6. Вероятностные алгоритмы   23 / 32
Анализ алгоритма
Лемма
Алгоритм Rand-Null-Polynomial ошибается с вероятностью не
более 2−c , причем только в случае, если f — ненулевой.

Доказательство
                        2
      1 − t > e −t−t , 0 < t ≤ 1/2




А. Куликов (CS клуб при ПОМИ)   6. Вероятностные алгоритмы   23 / 32
Анализ алгоритма
Лемма
Алгоритм Rand-Null-Polynomial ошибается с вероятностью не
более 2−c , причем только в случае, если f — ненулевой.

Доказательство
                            2
      1 − t > e −t−t , 0 < t ≤ 1/2
                        1       1
      1−     1
            2n   > e − 2n − 4n2




А. Куликов (CS клуб при ПОМИ)       6. Вероятностные алгоритмы   23 / 32
Анализ алгоритма
Лемма
Алгоритм Rand-Null-Polynomial ошибается с вероятностью не
более 2−c , причем только в случае, если f — ненулевой.

Доказательство
                            2
      1 − t > e −t−t , 0 < t ≤ 1/2
                        1       1
      1−     1
            2n   > e − 2n − 4n2
      Случайно выбранный набор значений переменным x1 , . . . , xn
      является корнем с вероятностью не более

                               1 n
                         (︂      )︂
                                              1    1  1
                     1− 1−          < 1 − e − 2 − 4n < .
                              2n                      2




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



1   Проверка перемножения матриц


2   Сравнение строк


3   Нулевой многочлен


4   Эквивалентность ветвящихся программ




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


                                                y

                         x                                             z

                                            ¬y ¬y

                                ¬x                                ¬z

                                                y

Рис.: Ветвящаяся программа степени 1, вычисляющая функцию четности
x ⊕ y ⊕ z.




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



Определение
Ветвящаяся программа (branching program) представляет собой
ориентированный граф P = (V , E ) со следующими свойствами:




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



Определение
Ветвящаяся программа (branching program) представляет собой
ориентированный граф P = (V , E ) со следующими свойствами:
      есть две выделенные вершины — начальная и конечная;




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



Определение
Ветвящаяся программа (branching program) представляет собой
ориентированный граф P = (V , E ) со следующими свойствами:
      есть две выделенные вершины — начальная и конечная;
      исходящая степень каждой вершины равна 0, 1 или 2;




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



Определение
Ветвящаяся программа (branching program) представляет собой
ориентированный граф P = (V , E ) со следующими свойствами:
      есть две выделенные вершины — начальная и конечная;
      исходящая степень каждой вершины равна 0, 1 или 2;
      каждое ребро помечено переменной xi или ее отрицанием ¬xi ;
      более того, если из вершины выходят два ребра, то они
      обязательно помечены xi и ¬xi ;




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


Определение




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


Определение
      Мономом (product term) называется конъюнкция всех пометок на
      пути, ведущем из начальной в конечную вершину (если такой путь
      содержит одновременно и переменную, и ее отриацние, то моном
      равен 0).




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


Определение
      Мономом (product term) называется конъюнкция всех пометок на
      пути, ведущем из начальной в конечную вершину (если такой путь
      содержит одновременно и переменную, и ее отриацние, то моном
      равен 0).
      Функция fP , вычисляемая программой P, определяется как
      дизъюнкция всех мономов.




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


Определение
      Мономом (product term) называется конъюнкция всех пометок на
      пути, ведущем из начальной в конечную вершину (если такой путь
      содержит одновременно и переменную, и ее отриацние, то моном
      равен 0).
      Функция fP , вычисляемая программой P, определяется как
      дизъюнкция всех мономов.
      Ветвящаяся программа имеет первую степень (read-once), если
      никакая переменная не встречается ни на каком пути более одного
      раза.




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

Эквивалентность программ




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

Эквивалентность программ
      Мы хотим проверить по данным двум ветвящимся программам P
      и Q, эквивалентны ли они.




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

Эквивалентность программ
      Мы хотим проверить по данным двум ветвящимся программам P
      и Q, эквивалентны ли они.
      Программе P можно сопоставить многочлен fP (над любым
      полем F, содержащим хотя бы два элемента).




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

Эквивалентность программ
      Мы хотим проверить по данным двум ветвящимся программам P
      и Q, эквивалентны ли они.
      Программе P можно сопоставить многочлен fP (над любым
      полем F, содержащим хотя бы два элемента).
            Для этого каждому ребру e поставим в соответствие многочлен
            fe = xi или fe = 1 − xi , если оно помечено переменной xi или ее
            отрицанием ¬xi , соответственно.




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

Эквивалентность программ
      Мы хотим проверить по данным двум ветвящимся программам P
      и Q, эквивалентны ли они.
      Программе P можно сопоставить многочлен fP (над любым
      полем F, содержащим хотя бы два элемента).
            Для этого каждому ребру e поставим в соответствие многочлен
            fe = xi или fe = 1 − xi , если оно помечено переменной xi или ее
            отрицанием ¬xi , соответственно.
            Каждому пути поставим в соответствие произведение многочленов
            ребер этого пути.




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

Эквивалентность программ
      Мы хотим проверить по данным двум ветвящимся программам P
      и Q, эквивалентны ли они.
      Программе P можно сопоставить многочлен fP (над любым
      полем F, содержащим хотя бы два элемента).
            Для этого каждому ребру e поставим в соответствие многочлен
            fe = xi или fe = 1 − xi , если оно помечено переменной xi или ее
            отрицанием ¬xi , соответственно.
            Каждому пути поставим в соответствие произведение многочленов
            ребер этого пути.
            Программе сопоставим многочлен, равный сумме многочленов
            всех ее путей.




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

Эквивалентность программ
      Мы хотим проверить по данным двум ветвящимся программам P
      и Q, эквивалентны ли они.
      Программе P можно сопоставить многочлен fP (над любым
      полем F, содержащим хотя бы два элемента).
            Для этого каждому ребру e поставим в соответствие многочлен
            fe = xi или fe = 1 − xi , если оно помечено переменной xi или ее
            отрицанием ¬xi , соответственно.
            Каждому пути поставим в соответствие произведение многочленов
            ребер этого пути.
            Программе сопоставим многочлен, равный сумме многочленов
            всех ее путей.
      Полученный многочлен вычисляет функцию из Fn в F.




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

Эквивалентность программ
      Мы хотим проверить по данным двум ветвящимся программам P
      и Q, эквивалентны ли они.
      Программе P можно сопоставить многочлен fP (над любым
      полем F, содержащим хотя бы два элемента).
            Для этого каждому ребру e поставим в соответствие многочлен
            fe = xi или fe = 1 − xi , если оно помечено переменной xi или ее
            отрицанием ¬xi , соответственно.
            Каждому пути поставим в соответствие произведение многочленов
            ребер этого пути.
            Программе сопоставим многочлен, равный сумме многочленов
            всех ее путей.
      Полученный многочлен вычисляет функцию из Fn в F.
      Ясно, что fP и P эквивалентны.


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


Эквивалентность многочленов




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


Эквивалентность многочленов
      Допустим теперь, что ветвящиеся программы P и Q являются
      программами степени 1.




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


Эквивалентность многочленов
      Допустим теперь, что ветвящиеся программы P и Q являются
      программами степени 1.
      Тогда многочлен fP − fQ полилинеен.




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


Эквивалентность многочленов
      Допустим теперь, что ветвящиеся программы P и Q являются
      программами степени 1.
      Тогда многочлен fP − fQ полилинеен.
      Если выбрать S ⊆ F, |S| ≥ 2n, то в предположении, что
      fP − fQ ̸= 0, для случайно выбранных r1 , . . . , rn

                                                                         1 n
                                                                   (︂       )︂
         Prob (fP (r1 , . . . , rn ) = fQ (r1 , . . . , rn )) ≤ 1 − 1 −        < 1/2.
                                                                        |S|




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

Однако




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

Однако
      Мы должны научиться быстро вычислять значение многочлена fP
      на любом входе.




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

Однако
      Мы должны научиться быстро вычислять значение многочлена fP
      на любом входе.
      Размер входа исходной задачи — это количество вершин в графе
      программы. Размер соответствующего многочлена может быть
      экспоненциален от размера входа.




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

Однако
      Мы должны научиться быстро вычислять значение многочлена fP
      на любом входе.
      Размер входа исходной задачи — это количество вершин в графе
      программы. Размер соответствующего многочлена может быть
      экспоненциален от размера входа.
      Для входа (r1 , . . . , rn ) ∈ Fn мы можем вычислить fP следующим
      образом:




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

Однако
      Мы должны научиться быстро вычислять значение многочлена fP
      на любом входе.
      Размер входа исходной задачи — это количество вершин в графе
      программы. Размер соответствующего многочлена может быть
      экспоненциален от размера входа.
      Для входа (r1 , . . . , rn ) ∈ Fn мы можем вычислить fP следующим
      образом:
            присвоим начальной вершине значение 1;




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

Однако
      Мы должны научиться быстро вычислять значение многочлена fP
      на любом входе.
      Размер входа исходной задачи — это количество вершин в графе
      программы. Размер соответствующего многочлена может быть
      экспоненциален от размера входа.
      Для входа (r1 , . . . , rn ) ∈ Fn мы можем вычислить fP следующим
      образом:
            присвоим начальной вершине значение 1;
            каждому ребру присвоим значение его многочлена (то есть
            каждому ребру будет присвоено значение ri или 1 − ri );




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

Однако
      Мы должны научиться быстро вычислять значение многочлена fP
      на любом входе.
      Размер входа исходной задачи — это количество вершин в графе
      программы. Размер соответствующего многочлена может быть
      экспоненциален от размера входа.
      Для входа (r1 , . . . , rn ) ∈ Fn мы можем вычислить fP следующим
      образом:
            присвоим начальной вершине значение 1;
            каждому ребру присвоим значение его многочлена (то есть
            каждому ребру будет присвоено значение ri или 1 − ri );
            каждой вершине присвоим сумму по всем входящим в нее ребрам
            произведений значения ребра на значение ребра на другом конце.



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


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




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


Что мы узнали за сегодня?
проверка результата перемножения матриц (домножить на случайный
            булев вектор)




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


Что мы узнали за сегодня?
проверка результата перемножения матриц (домножить на случайный
            булев вектор)
сравнение строк (представить строки как числа и проверять равенство
            по случайно выбранному простому модулю)




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


Что мы узнали за сегодня?
проверка результата перемножения матриц (домножить на случайный
            булев вектор)
сравнение строк (представить строки как числа и проверять равенство
            по случайно выбранному простому модулю)
нулевой многочлен (взять случайную точку и посчитать в ней
            значение)




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


Что мы узнали за сегодня?
проверка результата перемножения матриц (домножить на случайный
            булев вектор)
сравнение строк (представить строки как числа и проверять равенство
            по случайно выбранному простому модулю)
нулевой многочлен (взять случайную точку и посчитать в ней
            значение)
эквивалентность ветвящихся программ (сопоставить программе
            многочлен и воспользоваться предыдущим алгоритмом)




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




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

20071111 efficientalgorithms kulikov_lecture06

  • 1.
    с/к “Эффективные алгоритмы” Лекция 6: Вероятностные алгоритмы А. Куликов Computer Science клуб при ПОМИ http://logic.pdmi.ras.ru/∼infclub/ А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 1 / 32
  • 2.
    План лекции 1 Проверка перемножения матриц А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 2 / 32
  • 3.
    План лекции 1 Проверка перемножения матриц 2 Сравнение строк А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 2 / 32
  • 4.
    План лекции 1 Проверка перемножения матриц 2 Сравнение строк 3 Нулевой многочлен А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 2 / 32
  • 5.
    План лекции 1 Проверка перемножения матриц 2 Сравнение строк 3 Нулевой многочлен 4 Эквивалентность ветвящихся программ А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 2 / 32
  • 6.
    План лекции 1 Проверка перемножения матриц 2 Сравнение строк 3 Нулевой многочлен 4 Эквивалентность ветвящихся программ А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 3 / 32
  • 7.
    Проверка перемножения матриц Проверкаперемножения матриц А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 4 / 32
  • 8.
    Проверка перемножения матриц Проверкаперемножения матриц Даны три n × n матрицы A, B, C . Мы хотим проверить равенство A × B = C. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 4 / 32
  • 9.
    Проверка перемножения матриц Проверкаперемножения матриц Даны три n × n матрицы A, B, C . Мы хотим проверить равенство A × B = C. Простой детерминированный алгоритм перемножает матрицы A и B и сравнивает результат с C . А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 4 / 32
  • 10.
    Проверка перемножения матриц Проверкаперемножения матриц Даны три n × n матрицы A, B, C . Мы хотим проверить равенство A × B = C. Простой детерминированный алгоритм перемножает матрицы A и B и сравнивает результат с C . Время работы такого алгоритма при использовании обычного перемножения матриц составляет O(n3 ), при использовании быстрого — O(n2.376 ). А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 4 / 32
  • 11.
    Проверка перемножения матриц Проверкаперемножения матриц Даны три n × n матрицы A, B, C . Мы хотим проверить равенство A × B = C. Простой детерминированный алгоритм перемножает матрицы A и B и сравнивает результат с C . Время работы такого алгоритма при использовании обычного перемножения матриц составляет O(n3 ), при использовании быстрого — O(n2.376 ). Мы предъявим вероятностный алгоритм с односторонней ошибкой, который за время O(n2 ) проверяет равенство. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 4 / 32
  • 12.
    Алгоритм Алгоритм Rand-Matrix-Equiv(A, B, C) А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 5 / 32
  • 13.
    Алгоритм Алгоритм Rand-Matrix-Equiv(A, B, C) взять случайный вектор x из {0, 1}n А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 5 / 32
  • 14.
    Алгоритм Алгоритм Rand-Matrix-Equiv(A, B, C) взять случайный вектор x из {0, 1}n посчитать y = B × x А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 5 / 32
  • 15.
    Алгоритм Алгоритм Rand-Matrix-Equiv(A, B, C) взять случайный вектор x из {0, 1}n посчитать y = B × x посчитать z = A × y А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 5 / 32
  • 16.
    Алгоритм Алгоритм Rand-Matrix-Equiv(A, B, C) взять случайный вектор x из {0, 1}n посчитать y = B × x посчитать z = A × y посичтать t = C × x А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 5 / 32
  • 17.
    Алгоритм Алгоритм Rand-Matrix-Equiv(A, B, C) взять случайный вектор x из {0, 1}n посчитать y = B × x посчитать z = A × y посичтать t = C × x вернуть “да”, если z = t А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 5 / 32
  • 18.
    Алгоритм Алгоритм Rand-Matrix-Equiv(A, B, C) взять случайный вектор x из {0, 1}n посчитать y = B × x посчитать z = A × y посичтать t = C × x вернуть “да”, если z = t вернуть “нет” А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 5 / 32
  • 19.
    Алгоритм Алгоритм Rand-Matrix-Equiv(A, B, C) взять случайный вектор x из {0, 1}n посчитать y = B × x посчитать z = A × y посичтать t = C × x вернуть “да”, если z = t вернуть “нет” Неформально А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 5 / 32
  • 20.
    Алгоритм Алгоритм Rand-Matrix-Equiv(A, B, C) взять случайный вектор x из {0, 1}n посчитать y = B × x посчитать z = A × y посичтать t = C × x вернуть “да”, если z = t вернуть “нет” Неформально Алгоритм просто проверяет равенство A × (B × x) = C × x. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 5 / 32
  • 21.
    Алгоритм Алгоритм Rand-Matrix-Equiv(A, B, C) взять случайный вектор x из {0, 1}n посчитать y = B × x посчитать z = A × y посичтать t = C × x вернуть “да”, если z = t вернуть “нет” Неформально Алгоритм просто проверяет равенство A × (B × x) = C × x. Матрицы могут быть над любым полем. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 5 / 32
  • 22.
    Анализ алгоритма Лемма Алгоритм Rand-Matrix-Equivимеет время работы O(n2 ) и вероятность ошибки не более 1/2. Причем ошибиться он может, только если A × B ̸= C . Доказательство А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 6 / 32
  • 23.
    Анализ алгоритма Лемма Алгоритм Rand-Matrix-Equivимеет время работы O(n2 ) и вероятность ошибки не более 1/2. Причем ошибиться он может, только если A × B ̸= C . Доказательство Предположим, что A × B ̸= C . А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 6 / 32
  • 24.
    Анализ алгоритма Лемма Алгоритм Rand-Matrix-Equivимеет время работы O(n2 ) и вероятность ошибки не более 1/2. Причем ошибиться он может, только если A × B ̸= C . Доказательство Предположим, что A × B ̸= C . Алгоритм ошибается, если для случайного вектора, который он выбрал, (A × B − C ) × x = 0. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 6 / 32
  • 25.
    Анализ алгоритма Лемма Алгоритм Rand-Matrix-Equivимеет время работы O(n2 ) и вероятность ошибки не более 1/2. Причем ошибиться он может, только если A × B ̸= C . Доказательство Предположим, что A × B ̸= C . Алгоритм ошибается, если для случайного вектора, который он выбрал, (A × B − C ) × x = 0. Рассмотрим ненулевую строчку d = (d1 , . . . , dn ) матрицы A × B − C (такая есть, поскольку A × B ̸= C ). А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 6 / 32
  • 26.
    Анализ алгоритма Лемма Алгоритм Rand-Matrix-Equivимеет время работы O(n2 ) и вероятность ошибки не более 1/2. Причем ошибиться он может, только если A × B ̸= C . Доказательство Предположим, что A × B ̸= C . Алгоритм ошибается, если для случайного вектора, который он выбрал, (A × B − C ) × x = 0. Рассмотрим ненулевую строчку d = (d1 , . . . , dn ) матрицы A × B − C (такая есть, поскольку A × B ̸= C ). НУО, d1 ̸= 0. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 6 / 32
  • 27.
    Доказательство (продолжение) Доказательство А. Куликов(CS клуб при ПОМИ) 6. Вероятностные алгоритмы 7 / 32
  • 28.
    Доказательство (продолжение) Доказательство ∑︀n Произведение этой строчки на x равно i=1 di xi . А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 7 / 32
  • 29.
    Доказательство (продолжение) Доказательство ∑︀n Произведение этой строчки на x равно i=1 di xi . Это произведение равно 0 тогда и только тогда, когда x1 = h(x2 , . . . , xn ), где ∑︀n di xi h(x2 , . . . , xn ) = − i=2 . d1 А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 7 / 32
  • 30.
    Доказательство (продолжение) Доказательство ∑︀n Произведение этой строчки на x равно i=1 di xi . Это произведение равно 0 тогда и только тогда, когда x1 = h(x2 , . . . , xn ), где ∑︀n di xi h(x2 , . . . , xn ) = − i=2 . d1 Отметим, что h может принимать значения, отличные от 0 и 1. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 7 / 32
  • 31.
    Доказательство (продолжение) Доказательство ∑︀n Произведение этой строчки на x равно i=1 di xi . Это произведение равно 0 тогда и только тогда, когда x1 = h(x2 , . . . , xn ), где ∑︀n di xi h(x2 , . . . , xn ) = − i=2 . d1 Отметим, что h может принимать значения, отличные от 0 и 1. С вероятностью хотя бы 1/2 x1 ̸= h(x2 , . . . , xn ). А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 7 / 32
  • 32.
    План лекции 1 Проверка перемножения матриц 2 Сравнение строк 3 Нулевой многочлен 4 Эквивалентность ветвящихся программ А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 8 / 32
  • 33.
    Сравнение строк Сравнение строк А.Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 9 / 32
  • 34.
    Сравнение строк Сравнение строк Даны две битовые строки a и b, которые необходимо сравнить на совпадение, затратив как можно меньше информации (к примеру, требуется сравнить файлы по сети). А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 9 / 32
  • 35.
    Сравнение строк Сравнение строк Даны две битовые строки a и b, которые необходимо сравнить на совпадение, затратив как можно меньше информации (к примеру, требуется сравнить файлы по сети). Основная идея: сравнивать не сами строки, а функции от них. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 9 / 32
  • 36.
    Сравнение строк Сравнение строк Даны две битовые строки a и b, которые необходимо сравнить на совпадение, затратив как можно меньше информации (к примеру, требуется сравнить файлы по сети). Основная идея: сравнивать не сами строки, а функции от них. Будем сравнивать a mod p и b mod p. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 9 / 32
  • 37.
    Сравнение строк Сравнение строк Даны две битовые строки a и b, которые необходимо сравнить на совпадение, затратив как можно меньше информации (к примеру, требуется сравнить файлы по сети). Основная идея: сравнивать не сами строки, а функции от них. Будем сравнивать a mod p и b mod p. Для такого сравнения достаточно передать 2 log2 p битов. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 9 / 32
  • 38.
    Асимптотический закон распределенияпростых чисел Определение Функция распределения простых чисел (prime distribution function) (n) определяется как количество простых чисел, не превосходящих n. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 10 / 32
  • 39.
    Асимптотический закон распределенияпростых чисел Определение Функция распределения простых чисел (prime distribution function) (n) определяется как количество простых чисел, не превосходящих n. Факт Асимптотический закон распределения простых чисел: (n) lim = 1. n→∞ n/ ln n А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 10 / 32
  • 40.
    Алгоритм Алгоритм Rand-String-Equiv(a, b) А. Куликов(CS клуб при ПОМИ) 6. Вероятностные алгоритмы 11 / 32
  • 41.
    Алгоритм Алгоритм Rand-String-Equiv(a, b) Пусть |a| = |b| = n, N = n2 log2 n2 . А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 11 / 32
  • 42.
    Алгоритм Алгоритм Rand-String-Equiv(a, b) Пусть |a| = |b| = n, N = n2 log2 n2 . Выберем случайно простое число p из интервала [2..N]. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 11 / 32
  • 43.
    Алгоритм Алгоритм Rand-String-Equiv(a, b) Пусть |a| = |b| = n, N = n2 log2 n2 . Выберем случайно простое число p из интервала [2..N]. Выдать “да”, если a mod p = b mod p. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 11 / 32
  • 44.
    Алгоритм Алгоритм Rand-String-Equiv(a, b) Пусть |a| = |b| = n, N = n2 log2 n2 . Выберем случайно простое число p из интервала [2..N]. Выдать “да”, если a mod p = b mod p. Выдать “нет”. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 11 / 32
  • 45.
    Алгоритм Алгоритм Rand-String-Equiv(a, b) Пусть |a| = |b| = n, N = n2 log2 n2 . Выберем случайно простое число p из интервала [2..N]. Выдать “да”, если a mod p = b mod p. Выдать “нет”. Лемма Алгоритм Rand-String-Equiv является вероятностным алгоритмом с односторонней ошибкой с вероятностью ошибки O(1/n) и требует передачи O(log n) битов. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 11 / 32
  • 46.
    Доказательство Доказательство А. Куликов (CSклуб при ПОМИ) 6. Вероятностные алгоритмы 12 / 32
  • 47.
    Доказательство Доказательство Количество передаваемых битов: 2 log2 p ≤ 2 log2 N = 2 log2 (n2 log2 n2 ) = O(log2 n). А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 12 / 32
  • 48.
    Доказательство Доказательство Количество передаваемых битов: 2 log2 p ≤ 2 log2 N = 2 log2 (n2 log2 n2 ) = O(log2 n). Алгоритм ошибается, только если a ̸= b, но для выбранного простого числа p выполнено равенство (a − b) ≡ 0 mod p. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 12 / 32
  • 49.
    Доказательство Доказательство Количество передаваемых битов: 2 log2 p ≤ 2 log2 N = 2 log2 (n2 log2 n2 ) = O(log2 n). Алгоритм ошибается, только если a ̸= b, но для выбранного простого числа p выполнено равенство (a − b) ≡ 0 mod p. Количество таких простых чисел p есть |{p ∈ P : (a − b) ≡ 0 mod p}| ≤ n. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 12 / 32
  • 50.
    Доказательство Доказательство Количество передаваемых битов: 2 log2 p ≤ 2 log2 N = 2 log2 (n2 log2 n2 ) = O(log2 n). Алгоритм ошибается, только если a ̸= b, но для выбранного простого числа p выполнено равенство (a − b) ≡ 0 mod p. Количество таких простых чисел p есть |{p ∈ P : (a − b) ≡ 0 mod p}| ≤ n. Значит, вероятность ошибки есть n(log n2 + log log n2 ) (︂ )︂ (︂ )︂ (︂ )︂ n 1 O =O 2 log n2 =O . N/ ln N n n А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 12 / 32
  • 51.
    План лекции 1 Проверка перемножения матриц 2 Сравнение строк 3 Нулевой многочлен 4 Эквивалентность ветвящихся программ А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 13 / 32
  • 52.
    Нулевой многочлен Нулевой многочлен А.Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 14 / 32
  • 53.
    Нулевой многочлен Нулевой многочлен Дан многочлен f (x1 , . . . , xn ), и мы хотим проверить равенство f = 0 (f равен 0 при любых значениях переменных). А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 14 / 32
  • 54.
    Нулевой многочлен Нулевой многочлен Дан многочлен f (x1 , . . . , xn ), и мы хотим проверить равенство f = 0 (f равен 0 при любых значениях переменных). Такая проверка может понадобиться, например, если у нас есть матрица, элементы которой являются многочленами, и нас интересует, равен ли 0 ее определитель. Вычислить определитель явно в такой ситуации трудно. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 14 / 32
  • 55.
    Нулевой многочлен Нулевой многочлен Дан многочлен f (x1 , . . . , xn ), и мы хотим проверить равенство f = 0 (f равен 0 при любых значениях переменных). Такая проверка может понадобиться, например, если у нас есть матрица, элементы которой являются многочленами, и нас интересует, равен ли 0 ее определитель. Вычислить определитель явно в такой ситуации трудно. Основная идея: подставить случайные значения переменным. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 14 / 32
  • 56.
    Нулевой многочлен Нулевой многочлен Дан многочлен f (x1 , . . . , xn ), и мы хотим проверить равенство f = 0 (f равен 0 при любых значениях переменных). Такая проверка может понадобиться, например, если у нас есть матрица, элементы которой являются многочленами, и нас интересует, равен ли 0 ее определитель. Вычислить определитель явно в такой ситуации трудно. Основная идея: подставить случайные значения переменным. Если полученное значение не равно 0, значит, и исходный многочлен не равен 0. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 14 / 32
  • 57.
    Нулевой многочлен Нулевой многочлен Дан многочлен f (x1 , . . . , xn ), и мы хотим проверить равенство f = 0 (f равен 0 при любых значениях переменных). Такая проверка может понадобиться, например, если у нас есть матрица, элементы которой являются многочленами, и нас интересует, равен ли 0 ее определитель. Вычислить определитель явно в такой ситуации трудно. Основная идея: подставить случайные значения переменным. Если полученное значение не равно 0, значит, и исходный многочлен не равен 0. Если же значение равно 0, ты мы попали в корень этого многочлена. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 14 / 32
  • 58.
    Более формально Более формально А.Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 15 / 32
  • 59.
    Более формально Более формально Пусть F — поле, а f (x1 , . . . , xn ) — многочлен от n переменных над этим полем. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 15 / 32
  • 60.
    Более формально Более формально Пусть F — поле, а f (x1 , . . . , xn ) — многочлен от n переменных над этим полем. Степенью f называется максимальная степень переменной в записи f через сумму мономов (произведений переменных). А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 15 / 32
  • 61.
    Более формально Более формально Пусть F — поле, а f (x1 , . . . , xn ) — многочлен от n переменных над этим полем. Степенью f называется максимальная степень переменной в записи f через сумму мономов (произведений переменных). Полной степенью называется максимальная степень монома. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 15 / 32
  • 62.
    Более формально Более формально Пусть F — поле, а f (x1 , . . . , xn ) — многочлен от n переменных над этим полем. Степенью f называется максимальная степень переменной в записи f через сумму мономов (произведений переменных). Полной степенью называется максимальная степень монома. 3 2 2 Например, многочлен f (x1 , x2 , x3 ) = x1 x2 + x1 x2 x3 имеет степень 3 и полную степень 5. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 15 / 32
  • 63.
    Более формально Более формально Пусть F — поле, а f (x1 , . . . , xn ) — многочлен от n переменных над этим полем. Степенью f называется максимальная степень переменной в записи f через сумму мономов (произведений переменных). Полной степенью называется максимальная степень монома. 3 2 2 Например, многочлен f (x1 , x2 , x3 ) = x1 x2 + x1 x2 x3 имеет степень 3 и полную степень 5. Многочлен степени 1 называется полилинейным. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 15 / 32
  • 64.
    Более формально Более формально Пусть F — поле, а f (x1 , . . . , xn ) — многочлен от n переменных над этим полем. Степенью f называется максимальная степень переменной в записи f через сумму мономов (произведений переменных). Полной степенью называется максимальная степень монома. 3 2 2 Например, многочлен f (x1 , x2 , x3 ) = x1 x2 + x1 x2 x3 имеет степень 3 и полную степень 5. Многочлен степени 1 называется полилинейным. Лемма Пусть f (x1 , . . . , xn ) — ненулевой многочлен полной степени d над полем F. Пусть также S ⊆ F и |S| ≥ d . Тогда есть хотя бы |S|n − d · |S|n−1 точек (a1 , . . . , an ) ∈ S n , в которых f (a1 , . . . , an ) ̸= 0. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 15 / 32
  • 65.
    Доказательство Доказательство А. Куликов (CSклуб при ПОМИ) 6. Вероятностные алгоритмы 16 / 32
  • 66.
    Доказательство Доказательство Индукция по n. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 16 / 32
  • 67.
    Доказательство Доказательство Индукция по n. База (n = 1) верна, поскольку у многочлена степени d не более d корней. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 16 / 32
  • 68.
    Доказательство Доказательство Индукция по n. База (n = 1) верна, поскольку у многочлена степени d не более d корней. Разложим f по степеням xn : 2 t f = f0 + f1 xn + f2 xn + · · · + ft xn , где f0 , . . . , ft — многочлены от переменных x1 , . . . , xn−1 , ft ̸= 0, t ≤ d. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 16 / 32
  • 69.
    Доказательство (продолжение) Доказательство А. Куликов(CS клуб при ПОМИ) 6. Вероятностные алгоритмы 17 / 32
  • 70.
    Доказательство (продолжение) Доказательство Нам нужно оценить, для скольких точек (a, b) ∈ S n−1 × S выполняется f (a, b) = 0. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 17 / 32
  • 71.
    Доказательство (продолжение) Доказательство Нам нужно оценить, для скольких точек (a, b) ∈ S n−1 × S выполняется f (a, b) = 0. Рассмотрим два случая: А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 17 / 32
  • 72.
    Доказательство (продолжение) Доказательство Нам нужно оценить, для скольких точек (a, b) ∈ S n−1 × S выполняется f (a, b) = 0. Рассмотрим два случая: 1 ft (a) = 0. Поскольку ft — ненулевой многочлен полной степени не более d − t, то по индукционному предположению есть не более (d − t)|S|n−2 точек в S n−1 , на которых он обращается в 0. Значит, всего есть не более (d − t) · |S|n−1 точек (a, b) ∈ S n−1 × S, таких что f (a, b) = 0 и ft (a) = 0. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 17 / 32
  • 73.
    Доказательство (продолжение) Доказательство Нам нужно оценить, для скольких точек (a, b) ∈ S n−1 × S выполняется f (a, b) = 0. Рассмотрим два случая: 1 ft (a) = 0. Поскольку ft — ненулевой многочлен полной степени не более d − t, то по индукционному предположению есть не более (d − t)|S|n−2 точек в S n−1 , на которых он обращается в 0. Значит, всего есть не более (d − t) · |S|n−1 точек (a, b) ∈ S n−1 × S, таких что f (a, b) = 0 и ft (a) = 0. 2 ft (a) ̸= 0. Для каждой точки a ∈ S n−1 , для которой ft (a) ̸= 0, f (a, xn ) — ненулевой многочлен от одной переменной степени t. У такого многочлена не более t корней. Значит, всего есть не более t · |S|n−1 точек (a, b) ∈ S n−1 × S, таких что f (a, b) = 0 и ft (a) ̸= 0. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 17 / 32
  • 74.
    Доказательство (продолжение) Доказательство Нам нужно оценить, для скольких точек (a, b) ∈ S n−1 × S выполняется f (a, b) = 0. Рассмотрим два случая: 1 ft (a) = 0. Поскольку ft — ненулевой многочлен полной степени не более d − t, то по индукционному предположению есть не более (d − t)|S|n−2 точек в S n−1 , на которых он обращается в 0. Значит, всего есть не более (d − t) · |S|n−1 точек (a, b) ∈ S n−1 × S, таких что f (a, b) = 0 и ft (a) = 0. 2 ft (a) ̸= 0. Для каждой точки a ∈ S n−1 , для которой ft (a) ̸= 0, f (a, xn ) — ненулевой многочлен от одной переменной степени t. У такого многочлена не более t корней. Значит, всего есть не более t · |S|n−1 точек (a, b) ∈ S n−1 × S, таких что f (a, b) = 0 и ft (a) ̸= 0. Таким образом, всего точек (a, b) ∈ S n , на которых f обращается в 0, не более (d − t) · |S|n−1 + t · |S|n−1 = d · |S|n−1 . А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 17 / 32
  • 75.
    Слабая оценка Слабая оценка А.Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 18 / 32
  • 76.
    Слабая оценка Слабая оценка Если f имеет степень d , тогда его полная степень может быть равна dn. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 18 / 32
  • 77.
    Слабая оценка Слабая оценка Если f имеет степень d , тогда его полная степень может быть равна dn. Значит, даже для полилинейного многочлена оценка из только что доказанной леммы будет тривиальна, если |S| ≤ n: |S|n − n · |S|n−1 ≤ 0. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 18 / 32
  • 78.
    Слабая оценка Слабая оценка Если f имеет степень d , тогда его полная степень может быть равна dn. Значит, даже для полилинейного многочлена оценка из только что доказанной леммы будет тривиальна, если |S| ≤ n: |S|n − n · |S|n−1 ≤ 0. Поэтому сейчас мы докажем другую лемму. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 18 / 32
  • 79.
    Еще одна лемма Лемма Пустьf (x1 , . . . , xn ) — ненулевой многочлен степени d над полем F. Пусть также S ⊆ F и |S| ≥ d . Тогда есть хотя бы (|S| − d )n точек (a1 , . . . , an ) ∈ S n , в которых f (a1 , . . . , an ) ̸= 0. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 19 / 32
  • 80.
    Еще одна лемма Лемма Пустьf (x1 , . . . , xn ) — ненулевой многочлен степени d над полем F. Пусть также S ⊆ F и |S| ≥ d . Тогда есть хотя бы (|S| − d )n точек (a1 , . . . , an ) ∈ S n , в которых f (a1 , . . . , an ) ̸= 0. Доказательство А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 19 / 32
  • 81.
    Еще одна лемма Лемма Пустьf (x1 , . . . , xn ) — ненулевой многочлен степени d над полем F. Пусть также S ⊆ F и |S| ≥ d . Тогда есть хотя бы (|S| − d )n точек (a1 , . . . , an ) ∈ S n , в которых f (a1 , . . . , an ) ̸= 0. Доказательство Индукция по n. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 19 / 32
  • 82.
    Еще одна лемма Лемма Пустьf (x1 , . . . , xn ) — ненулевой многочлен степени d над полем F. Пусть также S ⊆ F и |S| ≥ d . Тогда есть хотя бы (|S| − d )n точек (a1 , . . . , an ) ∈ S n , в которых f (a1 , . . . , an ) ̸= 0. Доказательство Индукция по n. База (n = 1) верна, поскольку многочлен от одной переменной степени d не может иметь более n корней. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 19 / 32
  • 83.
    Еще одна лемма Лемма Пустьf (x1 , . . . , xn ) — ненулевой многочлен степени d над полем F. Пусть также S ⊆ F и |S| ≥ d . Тогда есть хотя бы (|S| − d )n точек (a1 , . . . , an ) ∈ S n , в которых f (a1 , . . . , an ) ̸= 0. Доказательство Индукция по n. База (n = 1) верна, поскольку многочлен от одной переменной степени d не может иметь более n корней. Рассмотрим точку (a1 , . . . , an ) ∈ S n , в которой f (a1 , . . . , an ) ̸= 0. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 19 / 32
  • 84.
    Еще одна лемма Лемма Пустьf (x1 , . . . , xn ) — ненулевой многочлен степени d над полем F. Пусть также S ⊆ F и |S| ≥ d . Тогда есть хотя бы (|S| − d )n точек (a1 , . . . , an ) ∈ S n , в которых f (a1 , . . . , an ) ̸= 0. Доказательство Индукция по n. База (n = 1) верна, поскольку многочлен от одной переменной степени d не может иметь более n корней. Рассмотрим точку (a1 , . . . , an ) ∈ S n , в которой f (a1 , . . . , an ) ̸= 0. Рассмотрим следующие два многочлена: f0 (x1 , . . . , xn−1 ) = f (x1 , . . . , xn−1 , an ) f1 (xn ) = f (a1 , . . . , an−1 , xn ) А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 19 / 32
  • 85.
    Еще одна лемма Лемма Пустьf (x1 , . . . , xn ) — ненулевой многочлен степени d над полем F. Пусть также S ⊆ F и |S| ≥ d . Тогда есть хотя бы (|S| − d )n точек (a1 , . . . , an ) ∈ S n , в которых f (a1 , . . . , an ) ̸= 0. Доказательство Индукция по n. База (n = 1) верна, поскольку многочлен от одной переменной степени d не может иметь более n корней. Рассмотрим точку (a1 , . . . , an ) ∈ S n , в которой f (a1 , . . . , an ) ̸= 0. Рассмотрим следующие два многочлена: f0 (x1 , . . . , xn−1 ) = f (x1 , . . . , xn−1 , an ) f1 (xn ) = f (a1 , . . . , an−1 , xn ) Оба этих многочлена ненулевые и степени не более d . А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 19 / 32
  • 86.
    Доказательство (продолжение) Доказательство А. Куликов(CS клуб при ПОМИ) 6. Вероятностные алгоритмы 20 / 32
  • 87.
    Доказательство (продолжение) Доказательство Многочлен f0 зависит от (n − 1)-й переменной, поэтому имеет хотя бы (|S| − d )n−1 ненулевых точек в S n−1 (по индукционному преподложению). А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 20 / 32
  • 88.
    Доказательство (продолжение) Доказательство Многочлен f0 зависит от (n − 1)-й переменной, поэтому имеет хотя бы (|S| − d )n−1 ненулевых точек в S n−1 (по индукционному преподложению). Аналогично многочлен f1 зависит от одной переменной и, следовательно, имеет не менее |S| − d ненулевых точек. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 20 / 32
  • 89.
    Доказательство (продолжение) Доказательство Многочлен f0 зависит от (n − 1)-й переменной, поэтому имеет хотя бы (|S| − d )n−1 ненулевых точек в S n−1 (по индукционному преподложению). Аналогично многочлен f1 зависит от одной переменной и, следовательно, имеет не менее |S| − d ненулевых точек. Таким образом, для каждого из |S| − d значений an , для которых f1 ̸= 0, соответствующий многочлен f0 имеет хотя бы (|S| − d )n−1 ненулевых точек. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 20 / 32
  • 90.
    Доказательство (продолжение) Доказательство Многочлен f0 зависит от (n − 1)-й переменной, поэтому имеет хотя бы (|S| − d )n−1 ненулевых точек в S n−1 (по индукционному преподложению). Аналогично многочлен f1 зависит от одной переменной и, следовательно, имеет не менее |S| − d ненулевых точек. Таким образом, для каждого из |S| − d значений an , для которых f1 ̸= 0, соответствующий многочлен f0 имеет хотя бы (|S| − d )n−1 ненулевых точек. Значит, всего ненулевых точек у многочлена f есть хотя бы (|S| − d )n−1 (|S| − d ) = (|S| − d )n . А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 20 / 32
  • 91.
    Важное следствие Следствие Пусть f(x1 , . . . , xn ) — ненулевой многочлен степени d от n переменных, S ⊆ F — конечное множество. Тогда для случайно выбранных x1 , . . . , xn из S d n (︂ )︂ Prob (f (x1 , . . . , xn ) ̸= 0) ≥ 1 − . |S| А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 21 / 32
  • 92.
    Алгоритм Алгоритм Rand-Null-Polynomial(f ) А. Куликов(CS клуб при ПОМИ) 6. Вероятностные алгоритмы 22 / 32
  • 93.
    Алгоритм Алгоритм Rand-Null-Polynomial(f ) Зафиксировать множество S ⊆ F размера 2dn (d — степень f , n — кол-во переменных). А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 22 / 32
  • 94.
    Алгоритм Алгоритм Rand-Null-Polynomial(f ) Зафиксировать множество S ⊆ F размера 2dn (d — степень f , n — кол-во переменных). Повторить c раз: А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 22 / 32
  • 95.
    Алгоритм Алгоритм Rand-Null-Polynomial(f ) Зафиксировать множество S ⊆ F размера 2dn (d — степень f , n — кол-во переменных). Повторить c раз: случайно выбрать x1 , . . . , xn из S А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 22 / 32
  • 96.
    Алгоритм Алгоритм Rand-Null-Polynomial(f ) Зафиксировать множество S ⊆ F размера 2dn (d — степень f , n — кол-во переменных). Повторить c раз: случайно выбрать x1 , . . . , xn из S если f (x1 , . . . , xn ) ̸= 0, выдать “ненулевой” А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 22 / 32
  • 97.
    Алгоритм Алгоритм Rand-Null-Polynomial(f ) Зафиксировать множество S ⊆ F размера 2dn (d — степень f , n — кол-во переменных). Повторить c раз: случайно выбрать x1 , . . . , xn из S если f (x1 , . . . , xn ) ̸= 0, выдать “ненулевой” выдать “нулевой” А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 22 / 32
  • 98.
    Анализ алгоритма Лемма Алгоритм Rand-Null-Polynomialошибается с вероятностью не более 2−c , причем только в случае, если f — ненулевой. Доказательство А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 23 / 32
  • 99.
    Анализ алгоритма Лемма Алгоритм Rand-Null-Polynomialошибается с вероятностью не более 2−c , причем только в случае, если f — ненулевой. Доказательство 2 1 − t > e −t−t , 0 < t ≤ 1/2 А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 23 / 32
  • 100.
    Анализ алгоритма Лемма Алгоритм Rand-Null-Polynomialошибается с вероятностью не более 2−c , причем только в случае, если f — ненулевой. Доказательство 2 1 − t > e −t−t , 0 < t ≤ 1/2 1 1 1− 1 2n > e − 2n − 4n2 А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 23 / 32
  • 101.
    Анализ алгоритма Лемма Алгоритм Rand-Null-Polynomialошибается с вероятностью не более 2−c , причем только в случае, если f — ненулевой. Доказательство 2 1 − t > e −t−t , 0 < t ≤ 1/2 1 1 1− 1 2n > e − 2n − 4n2 Случайно выбранный набор значений переменным x1 , . . . , xn является корнем с вероятностью не более 1 n (︂ )︂ 1 1 1 1− 1− < 1 − e − 2 − 4n < . 2n 2 А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 23 / 32
  • 102.
    План лекции 1 Проверка перемножения матриц 2 Сравнение строк 3 Нулевой многочлен 4 Эквивалентность ветвящихся программ А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 24 / 32
  • 103.
    Пример y x z ¬y ¬y ¬x ¬z y Рис.: Ветвящаяся программа степени 1, вычисляющая функцию четности x ⊕ y ⊕ z. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 25 / 32
  • 104.
    Ветвящиеся программы Определение Ветвящаяся программа(branching program) представляет собой ориентированный граф P = (V , E ) со следующими свойствами: А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 26 / 32
  • 105.
    Ветвящиеся программы Определение Ветвящаяся программа(branching program) представляет собой ориентированный граф P = (V , E ) со следующими свойствами: есть две выделенные вершины — начальная и конечная; А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 26 / 32
  • 106.
    Ветвящиеся программы Определение Ветвящаяся программа(branching program) представляет собой ориентированный граф P = (V , E ) со следующими свойствами: есть две выделенные вершины — начальная и конечная; исходящая степень каждой вершины равна 0, 1 или 2; А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 26 / 32
  • 107.
    Ветвящиеся программы Определение Ветвящаяся программа(branching program) представляет собой ориентированный граф P = (V , E ) со следующими свойствами: есть две выделенные вершины — начальная и конечная; исходящая степень каждой вершины равна 0, 1 или 2; каждое ребро помечено переменной xi или ее отрицанием ¬xi ; более того, если из вершины выходят два ребра, то они обязательно помечены xi и ¬xi ; А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 26 / 32
  • 108.
    Функция Определение А. Куликов (CSклуб при ПОМИ) 6. Вероятностные алгоритмы 27 / 32
  • 109.
    Функция Определение Мономом (product term) называется конъюнкция всех пометок на пути, ведущем из начальной в конечную вершину (если такой путь содержит одновременно и переменную, и ее отриацние, то моном равен 0). А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 27 / 32
  • 110.
    Функция Определение Мономом (product term) называется конъюнкция всех пометок на пути, ведущем из начальной в конечную вершину (если такой путь содержит одновременно и переменную, и ее отриацние, то моном равен 0). Функция fP , вычисляемая программой P, определяется как дизъюнкция всех мономов. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 27 / 32
  • 111.
    Функция Определение Мономом (product term) называется конъюнкция всех пометок на пути, ведущем из начальной в конечную вершину (если такой путь содержит одновременно и переменную, и ее отриацние, то моном равен 0). Функция fP , вычисляемая программой P, определяется как дизъюнкция всех мономов. Ветвящаяся программа имеет первую степень (read-once), если никакая переменная не встречается ни на каком пути более одного раза. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 27 / 32
  • 112.
    Эквивалентность программ Эквивалентность программ А.Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 28 / 32
  • 113.
    Эквивалентность программ Эквивалентность программ Мы хотим проверить по данным двум ветвящимся программам P и Q, эквивалентны ли они. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 28 / 32
  • 114.
    Эквивалентность программ Эквивалентность программ Мы хотим проверить по данным двум ветвящимся программам P и Q, эквивалентны ли они. Программе P можно сопоставить многочлен fP (над любым полем F, содержащим хотя бы два элемента). А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 28 / 32
  • 115.
    Эквивалентность программ Эквивалентность программ Мы хотим проверить по данным двум ветвящимся программам P и Q, эквивалентны ли они. Программе P можно сопоставить многочлен fP (над любым полем F, содержащим хотя бы два элемента). Для этого каждому ребру e поставим в соответствие многочлен fe = xi или fe = 1 − xi , если оно помечено переменной xi или ее отрицанием ¬xi , соответственно. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 28 / 32
  • 116.
    Эквивалентность программ Эквивалентность программ Мы хотим проверить по данным двум ветвящимся программам P и Q, эквивалентны ли они. Программе P можно сопоставить многочлен fP (над любым полем F, содержащим хотя бы два элемента). Для этого каждому ребру e поставим в соответствие многочлен fe = xi или fe = 1 − xi , если оно помечено переменной xi или ее отрицанием ¬xi , соответственно. Каждому пути поставим в соответствие произведение многочленов ребер этого пути. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 28 / 32
  • 117.
    Эквивалентность программ Эквивалентность программ Мы хотим проверить по данным двум ветвящимся программам P и Q, эквивалентны ли они. Программе P можно сопоставить многочлен fP (над любым полем F, содержащим хотя бы два элемента). Для этого каждому ребру e поставим в соответствие многочлен fe = xi или fe = 1 − xi , если оно помечено переменной xi или ее отрицанием ¬xi , соответственно. Каждому пути поставим в соответствие произведение многочленов ребер этого пути. Программе сопоставим многочлен, равный сумме многочленов всех ее путей. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 28 / 32
  • 118.
    Эквивалентность программ Эквивалентность программ Мы хотим проверить по данным двум ветвящимся программам P и Q, эквивалентны ли они. Программе P можно сопоставить многочлен fP (над любым полем F, содержащим хотя бы два элемента). Для этого каждому ребру e поставим в соответствие многочлен fe = xi или fe = 1 − xi , если оно помечено переменной xi или ее отрицанием ¬xi , соответственно. Каждому пути поставим в соответствие произведение многочленов ребер этого пути. Программе сопоставим многочлен, равный сумме многочленов всех ее путей. Полученный многочлен вычисляет функцию из Fn в F. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 28 / 32
  • 119.
    Эквивалентность программ Эквивалентность программ Мы хотим проверить по данным двум ветвящимся программам P и Q, эквивалентны ли они. Программе P можно сопоставить многочлен fP (над любым полем F, содержащим хотя бы два элемента). Для этого каждому ребру e поставим в соответствие многочлен fe = xi или fe = 1 − xi , если оно помечено переменной xi или ее отрицанием ¬xi , соответственно. Каждому пути поставим в соответствие произведение многочленов ребер этого пути. Программе сопоставим многочлен, равный сумме многочленов всех ее путей. Полученный многочлен вычисляет функцию из Fn в F. Ясно, что fP и P эквивалентны. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 28 / 32
  • 120.
    Эквивалентность многочленов Эквивалентность многочленов А.Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 29 / 32
  • 121.
    Эквивалентность многочленов Эквивалентность многочленов Допустим теперь, что ветвящиеся программы P и Q являются программами степени 1. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 29 / 32
  • 122.
    Эквивалентность многочленов Эквивалентность многочленов Допустим теперь, что ветвящиеся программы P и Q являются программами степени 1. Тогда многочлен fP − fQ полилинеен. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 29 / 32
  • 123.
    Эквивалентность многочленов Эквивалентность многочленов Допустим теперь, что ветвящиеся программы P и Q являются программами степени 1. Тогда многочлен fP − fQ полилинеен. Если выбрать S ⊆ F, |S| ≥ 2n, то в предположении, что fP − fQ ̸= 0, для случайно выбранных r1 , . . . , rn 1 n (︂ )︂ Prob (fP (r1 , . . . , rn ) = fQ (r1 , . . . , rn )) ≤ 1 − 1 − < 1/2. |S| А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 29 / 32
  • 124.
    Однако Однако А. Куликов (CSклуб при ПОМИ) 6. Вероятностные алгоритмы 30 / 32
  • 125.
    Однако Однако Мы должны научиться быстро вычислять значение многочлена fP на любом входе. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 30 / 32
  • 126.
    Однако Однако Мы должны научиться быстро вычислять значение многочлена fP на любом входе. Размер входа исходной задачи — это количество вершин в графе программы. Размер соответствующего многочлена может быть экспоненциален от размера входа. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 30 / 32
  • 127.
    Однако Однако Мы должны научиться быстро вычислять значение многочлена fP на любом входе. Размер входа исходной задачи — это количество вершин в графе программы. Размер соответствующего многочлена может быть экспоненциален от размера входа. Для входа (r1 , . . . , rn ) ∈ Fn мы можем вычислить fP следующим образом: А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 30 / 32
  • 128.
    Однако Однако Мы должны научиться быстро вычислять значение многочлена fP на любом входе. Размер входа исходной задачи — это количество вершин в графе программы. Размер соответствующего многочлена может быть экспоненциален от размера входа. Для входа (r1 , . . . , rn ) ∈ Fn мы можем вычислить fP следующим образом: присвоим начальной вершине значение 1; А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 30 / 32
  • 129.
    Однако Однако Мы должны научиться быстро вычислять значение многочлена fP на любом входе. Размер входа исходной задачи — это количество вершин в графе программы. Размер соответствующего многочлена может быть экспоненциален от размера входа. Для входа (r1 , . . . , rn ) ∈ Fn мы можем вычислить fP следующим образом: присвоим начальной вершине значение 1; каждому ребру присвоим значение его многочлена (то есть каждому ребру будет присвоено значение ri или 1 − ri ); А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 30 / 32
  • 130.
    Однако Однако Мы должны научиться быстро вычислять значение многочлена fP на любом входе. Размер входа исходной задачи — это количество вершин в графе программы. Размер соответствующего многочлена может быть экспоненциален от размера входа. Для входа (r1 , . . . , rn ) ∈ Fn мы можем вычислить fP следующим образом: присвоим начальной вершине значение 1; каждому ребру присвоим значение его многочлена (то есть каждому ребру будет присвоено значение ri или 1 − ri ); каждой вершине присвоим сумму по всем входящим в нее ребрам произведений значения ребра на значение ребра на другом конце. А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 30 / 32
  • 131.
    Что мы узнализа сегодня? Что мы узнали за сегодня? А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 31 / 32
  • 132.
    Что мы узнализа сегодня? Что мы узнали за сегодня? проверка результата перемножения матриц (домножить на случайный булев вектор) А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 31 / 32
  • 133.
    Что мы узнализа сегодня? Что мы узнали за сегодня? проверка результата перемножения матриц (домножить на случайный булев вектор) сравнение строк (представить строки как числа и проверять равенство по случайно выбранному простому модулю) А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 31 / 32
  • 134.
    Что мы узнализа сегодня? Что мы узнали за сегодня? проверка результата перемножения матриц (домножить на случайный булев вектор) сравнение строк (представить строки как числа и проверять равенство по случайно выбранному простому модулю) нулевой многочлен (взять случайную точку и посчитать в ней значение) А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 31 / 32
  • 135.
    Что мы узнализа сегодня? Что мы узнали за сегодня? проверка результата перемножения матриц (домножить на случайный булев вектор) сравнение строк (представить строки как числа и проверять равенство по случайно выбранному простому модулю) нулевой многочлен (взять случайную точку и посчитать в ней значение) эквивалентность ветвящихся программ (сопоставить программе многочлен и воспользоваться предыдущим алгоритмом) А. Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 31 / 32
  • 136.
    Спасибо за внимание! А.Куликов (CS клуб при ПОМИ) 6. Вероятностные алгоритмы 32 / 32