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

Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Embed Size (px)

Citation preview

Page 1: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

А. Куликов

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

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

Page 2: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

План лекции

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

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

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

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

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

Page 3: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

План лекции

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

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

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

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

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

Page 4: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

План лекции

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

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

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

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

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

Page 5: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

План лекции

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

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

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

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

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

Page 6: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

План лекции

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

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

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

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

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

Page 7: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

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

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

Page 8: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

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

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

Page 9: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

Время работы такого алгоритма при использовании обычногоперемножения матриц составляет O(n3), при использованиибыстрого — O(n2.376).Мы предъявим вероятностный алгоритм с одностороннейошибкой, который за время O(n2) проверяет равенство.

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

Page 10: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

Мы предъявим вероятностный алгоритм с одностороннейошибкой, который за время O(n2) проверяет равенство.

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

Page 11: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

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

Page 12: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Алгоритм

Алгоритм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

Page 13: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Алгоритм

Алгоритм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

Page 14: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Алгоритм

Алгоритм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

Page 15: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Алгоритм

Алгоритм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

Page 16: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Алгоритм

Алгоритм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

Page 17: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Алгоритм

Алгоритм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

Page 18: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Алгоритм

Алгоритм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

Page 19: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Алгоритм

Алгоритм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

Page 20: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Алгоритм

Алгоритм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

Page 21: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Алгоритм

Алгоритм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

Page 22: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

ЛеммаАлгоритм 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

Page 23: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

ЛеммаАлгоритм 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

Page 24: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

ЛеммаАлгоритм 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

Page 25: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

ЛеммаАлгоритм 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

Page 26: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

ЛеммаАлгоритм 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

Page 27: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Доказательство (продолжение)

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

Произведение этой строчки на x равно∑︀n

i=1 dixi .Это произведение равно 0 тогда и только тогда, когдаx1 = h(x2, . . . , xn), где

h(x2, . . . , xn) = −∑︀n

i=2 dixi

d1.

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

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

Page 28: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Доказательство (продолжение)

ДоказательствоПроизведение этой строчки на x равно

∑︀ni=1 dixi .

Это произведение равно 0 тогда и только тогда, когдаx1 = h(x2, . . . , xn), где

h(x2, . . . , xn) = −∑︀n

i=2 dixi

d1.

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

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

Page 29: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Доказательство (продолжение)

ДоказательствоПроизведение этой строчки на x равно

∑︀ni=1 dixi .

Это произведение равно 0 тогда и только тогда, когдаx1 = h(x2, . . . , xn), где

h(x2, . . . , xn) = −∑︀n

i=2 dixi

d1.

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

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

Page 30: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Доказательство (продолжение)

ДоказательствоПроизведение этой строчки на x равно

∑︀ni=1 dixi .

Это произведение равно 0 тогда и только тогда, когдаx1 = h(x2, . . . , xn), где

h(x2, . . . , xn) = −∑︀n

i=2 dixi

d1.

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

С вероятностью хотя бы 1/2 x1 ̸= h(x2, . . . , xn).

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

Page 31: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Доказательство (продолжение)

ДоказательствоПроизведение этой строчки на x равно

∑︀ni=1 dixi .

Это произведение равно 0 тогда и только тогда, когдаx1 = h(x2, . . . , xn), где

h(x2, . . . , xn) = −∑︀n

i=2 dixi

d1.

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

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

Page 32: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

План лекции

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

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

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

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

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

Page 33: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

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

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

Page 34: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

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

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

Page 35: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

Будем сравнивать a mod p и b mod p.Для такого сравнения достаточно передать 2 log2 p битов.

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

Page 36: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

Для такого сравнения достаточно передать 2 log2 p битов.

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

Page 37: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

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

Page 38: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

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

limn→∞

𝜋(n)

n/ ln n= 1.

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

Page 39: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

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

limn→∞

𝜋(n)

n/ ln n= 1.

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

Page 40: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Алгоритм

Алгоритм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

Page 41: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Алгоритм

Алгоритм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

Page 42: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Алгоритм

Алгоритм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

Page 43: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Алгоритм

Алгоритм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

Page 44: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Алгоритм

Алгоритм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

Page 45: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Алгоритм

Алгоритм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

Page 46: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

Количество передаваемых битов: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.

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

O(︂

nN/ ln N

)︂= O

(︂n(log n2 + log log n2)

n2 log n2

)︂= O

(︂1n

)︂.

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

Page 47: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

Количество передаваемых битов: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.

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

O(︂

nN/ ln N

)︂= O

(︂n(log n2 + log log n2)

n2 log n2

)︂= O

(︂1n

)︂.

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

Page 48: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

Количество передаваемых битов: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.

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

O(︂

nN/ ln N

)︂= O

(︂n(log n2 + log log n2)

n2 log n2

)︂= O

(︂1n

)︂.

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

Page 49: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

Количество передаваемых битов: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.

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

O(︂

nN/ ln N

)︂= O

(︂n(log n2 + log log n2)

n2 log n2

)︂= O

(︂1n

)︂.

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

Page 50: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

Количество передаваемых битов: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.

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

O(︂

nN/ ln N

)︂= O

(︂n(log n2 + log log n2)

n2 log n2

)︂= O

(︂1n

)︂.

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

Page 51: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

План лекции

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

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

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

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

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

Page 52: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

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

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

Page 53: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

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

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

Page 54: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

Основная идея: подставить случайные значения переменным.Если полученное значение не равно 0, значит, и исходныймногочлен не равен 0.Если же значение равно 0, ты мы попали в корень этогомногочлена.

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

Page 55: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

Если полученное значение не равно 0, значит, и исходныймногочлен не равен 0.Если же значение равно 0, ты мы попали в корень этогомногочлена.

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

Page 56: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

Если же значение равно 0, ты мы попали в корень этогомногочлена.

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

Page 57: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

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

Page 58: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Более формально

Более формально

Пусть F — поле, а f (x1, . . . , xn) — многочлен от n переменных надэтим полем.Степенью f называется максимальная степень переменной взаписи f через сумму мономов (произведений переменных).Полной степенью называется максимальная степень монома.Например, многочлен f (x1, x2, x3) = x3

1 x2 + x1x22 x2

3 имеет степень 3и полную степень 5.Многочлен степени 1 называется полилинейным.

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

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

Page 59: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Более формально

Более формальноПусть F — поле, а f (x1, . . . , xn) — многочлен от n переменных надэтим полем.

Степенью f называется максимальная степень переменной взаписи f через сумму мономов (произведений переменных).Полной степенью называется максимальная степень монома.Например, многочлен f (x1, x2, x3) = x3

1 x2 + x1x22 x2

3 имеет степень 3и полную степень 5.Многочлен степени 1 называется полилинейным.

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

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

Page 60: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Более формально

Более формальноПусть F — поле, а f (x1, . . . , xn) — многочлен от n переменных надэтим полем.Степенью f называется максимальная степень переменной взаписи f через сумму мономов (произведений переменных).

Полной степенью называется максимальная степень монома.Например, многочлен f (x1, x2, x3) = x3

1 x2 + x1x22 x2

3 имеет степень 3и полную степень 5.Многочлен степени 1 называется полилинейным.

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

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

Page 61: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Более формально

Более формальноПусть F — поле, а f (x1, . . . , xn) — многочлен от n переменных надэтим полем.Степенью f называется максимальная степень переменной взаписи f через сумму мономов (произведений переменных).Полной степенью называется максимальная степень монома.

Например, многочлен f (x1, x2, x3) = x31 x2 + x1x2

2 x23 имеет степень 3

и полную степень 5.Многочлен степени 1 называется полилинейным.

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

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

Page 62: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Более формально

Более формальноПусть F — поле, а f (x1, . . . , xn) — многочлен от n переменных надэтим полем.Степенью f называется максимальная степень переменной взаписи f через сумму мономов (произведений переменных).Полной степенью называется максимальная степень монома.Например, многочлен f (x1, x2, x3) = x3

1 x2 + x1x22 x2

3 имеет степень 3и полную степень 5.

Многочлен степени 1 называется полилинейным.

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

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

Page 63: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Более формально

Более формальноПусть F — поле, а f (x1, . . . , xn) — многочлен от n переменных надэтим полем.Степенью f называется максимальная степень переменной взаписи f через сумму мономов (произведений переменных).Полной степенью называется максимальная степень монома.Например, многочлен f (x1, x2, x3) = x3

1 x2 + x1x22 x2

3 имеет степень 3и полную степень 5.Многочлен степени 1 называется полилинейным.

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

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

Page 64: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Более формально

Более формальноПусть F — поле, а f (x1, . . . , xn) — многочлен от n переменных надэтим полем.Степенью f называется максимальная степень переменной взаписи f через сумму мономов (произведений переменных).Полной степенью называется максимальная степень монома.Например, многочлен f (x1, x2, x3) = x3

1 x2 + x1x22 x2

3 имеет степень 3и полную степень 5.Многочлен степени 1 называется полилинейным.

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

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

Page 65: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

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

f = f0 + f1xn + f2x2n + · · ·+ ftx t

n,

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

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

Page 66: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

База (n = 1) верна, поскольку у многочлена степени d не более dкорней.Разложим f по степеням xn:

f = f0 + f1xn + f2x2n + · · ·+ ftx t

n,

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

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

Page 67: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

Разложим f по степеням xn:

f = f0 + f1xn + f2x2n + · · ·+ ftx t

n,

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

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

Page 68: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

f = f0 + f1xn + f2x2n + · · ·+ ftx t

n,

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

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

Page 69: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Доказательство (продолжение)

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

Нам нужно оценить, для скольких точек (a, b) ∈ Sn−1 × Sвыполняется f (a, b) = 0.Рассмотрим два случая:

1 ft(a) = 0. Поскольку ft — ненулевой многочлен полной степени неболее d − t, то по индукционному предположению есть не более(d − t)|S |n−2 точек в Sn−1, на которых он обращается в 0. Значит,всего есть не более (d − t) · |S |n−1 точек (a, b) ∈ Sn−1 × S , такихчто f (a, b) = 0 и ft(a) = 0.

2 ft(a) ̸= 0. Для каждой точки a ∈ Sn−1, для которой ft(a) ̸= 0,f (a, xn) — ненулевой многочлен от одной переменной степени t. Утакого многочлена не более t корней. Значит, всего есть не болееt · |S |n−1 точек (a, b) ∈ Sn−1 × S , таких что f (a, b) = 0 и ft(a) ̸= 0.

Таким образом, всего точек (a, b) ∈ Sn, на которых f обращаетсяв 0, не более (d − t) · |S |n−1 + t · |S |n−1 = d · |S |n−1.

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

Page 70: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Доказательство (продолжение)

ДоказательствоНам нужно оценить, для скольких точек (a, b) ∈ Sn−1 × Sвыполняется f (a, b) = 0.

Рассмотрим два случая:1 ft(a) = 0. Поскольку ft — ненулевой многочлен полной степени не

более d − t, то по индукционному предположению есть не более(d − t)|S |n−2 точек в Sn−1, на которых он обращается в 0. Значит,всего есть не более (d − t) · |S |n−1 точек (a, b) ∈ Sn−1 × S , такихчто f (a, b) = 0 и ft(a) = 0.

2 ft(a) ̸= 0. Для каждой точки a ∈ Sn−1, для которой ft(a) ̸= 0,f (a, xn) — ненулевой многочлен от одной переменной степени t. Утакого многочлена не более t корней. Значит, всего есть не болееt · |S |n−1 точек (a, b) ∈ Sn−1 × S , таких что f (a, b) = 0 и ft(a) ̸= 0.

Таким образом, всего точек (a, b) ∈ Sn, на которых f обращаетсяв 0, не более (d − t) · |S |n−1 + t · |S |n−1 = d · |S |n−1.

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

Page 71: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Доказательство (продолжение)

ДоказательствоНам нужно оценить, для скольких точек (a, b) ∈ Sn−1 × Sвыполняется f (a, b) = 0.Рассмотрим два случая:

1 ft(a) = 0. Поскольку ft — ненулевой многочлен полной степени неболее d − t, то по индукционному предположению есть не более(d − t)|S |n−2 точек в Sn−1, на которых он обращается в 0. Значит,всего есть не более (d − t) · |S |n−1 точек (a, b) ∈ Sn−1 × S , такихчто f (a, b) = 0 и ft(a) = 0.

2 ft(a) ̸= 0. Для каждой точки a ∈ Sn−1, для которой ft(a) ̸= 0,f (a, xn) — ненулевой многочлен от одной переменной степени t. Утакого многочлена не более t корней. Значит, всего есть не болееt · |S |n−1 точек (a, b) ∈ Sn−1 × S , таких что f (a, b) = 0 и ft(a) ̸= 0.

Таким образом, всего точек (a, b) ∈ Sn, на которых f обращаетсяв 0, не более (d − t) · |S |n−1 + t · |S |n−1 = d · |S |n−1.

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

Page 72: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Доказательство (продолжение)

ДоказательствоНам нужно оценить, для скольких точек (a, b) ∈ Sn−1 × Sвыполняется f (a, b) = 0.Рассмотрим два случая:

1 ft(a) = 0. Поскольку ft — ненулевой многочлен полной степени неболее d − t, то по индукционному предположению есть не более(d − t)|S |n−2 точек в Sn−1, на которых он обращается в 0. Значит,всего есть не более (d − t) · |S |n−1 точек (a, b) ∈ Sn−1 × S , такихчто f (a, b) = 0 и ft(a) = 0.

2 ft(a) ̸= 0. Для каждой точки a ∈ Sn−1, для которой ft(a) ̸= 0,f (a, xn) — ненулевой многочлен от одной переменной степени t. Утакого многочлена не более t корней. Значит, всего есть не болееt · |S |n−1 точек (a, b) ∈ Sn−1 × S , таких что f (a, b) = 0 и ft(a) ̸= 0.

Таким образом, всего точек (a, b) ∈ Sn, на которых f обращаетсяв 0, не более (d − t) · |S |n−1 + t · |S |n−1 = d · |S |n−1.

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

Page 73: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Доказательство (продолжение)

ДоказательствоНам нужно оценить, для скольких точек (a, b) ∈ Sn−1 × Sвыполняется f (a, b) = 0.Рассмотрим два случая:

1 ft(a) = 0. Поскольку ft — ненулевой многочлен полной степени неболее d − t, то по индукционному предположению есть не более(d − t)|S |n−2 точек в Sn−1, на которых он обращается в 0. Значит,всего есть не более (d − t) · |S |n−1 точек (a, b) ∈ Sn−1 × S , такихчто f (a, b) = 0 и ft(a) = 0.

2 ft(a) ̸= 0. Для каждой точки a ∈ Sn−1, для которой ft(a) ̸= 0,f (a, xn) — ненулевой многочлен от одной переменной степени t. Утакого многочлена не более t корней. Значит, всего есть не болееt · |S |n−1 точек (a, b) ∈ Sn−1 × S , таких что f (a, b) = 0 и ft(a) ̸= 0.

Таким образом, всего точек (a, b) ∈ Sn, на которых f обращаетсяв 0, не более (d − t) · |S |n−1 + t · |S |n−1 = d · |S |n−1.

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

Page 74: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Доказательство (продолжение)

ДоказательствоНам нужно оценить, для скольких точек (a, b) ∈ Sn−1 × Sвыполняется f (a, b) = 0.Рассмотрим два случая:

1 ft(a) = 0. Поскольку ft — ненулевой многочлен полной степени неболее d − t, то по индукционному предположению есть не более(d − t)|S |n−2 точек в Sn−1, на которых он обращается в 0. Значит,всего есть не более (d − t) · |S |n−1 точек (a, b) ∈ Sn−1 × S , такихчто f (a, b) = 0 и ft(a) = 0.

2 ft(a) ̸= 0. Для каждой точки a ∈ Sn−1, для которой ft(a) ̸= 0,f (a, xn) — ненулевой многочлен от одной переменной степени t. Утакого многочлена не более t корней. Значит, всего есть не болееt · |S |n−1 точек (a, b) ∈ Sn−1 × S , таких что f (a, b) = 0 и ft(a) ̸= 0.

Таким образом, всего точек (a, b) ∈ Sn, на которых f обращаетсяв 0, не более (d − t) · |S |n−1 + t · |S |n−1 = d · |S |n−1.

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

Page 75: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

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

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

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

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

Page 76: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

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

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

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

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

Page 77: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

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

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

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

Page 78: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

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

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

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

Page 79: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Еще одна лемма

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

ДоказательствоИндукция по n.База (n = 1) верна, поскольку многочлен от одной переменнойстепени d не может иметь более n корней.Рассмотрим точку (a1, . . . , an) ∈ Sn, в которой 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

Page 80: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Еще одна лемма

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

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

Индукция по n.База (n = 1) верна, поскольку многочлен от одной переменнойстепени d не может иметь более n корней.Рассмотрим точку (a1, . . . , an) ∈ Sn, в которой 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

Page 81: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Еще одна лемма

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

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

База (n = 1) верна, поскольку многочлен от одной переменнойстепени d не может иметь более n корней.Рассмотрим точку (a1, . . . , an) ∈ Sn, в которой 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

Page 82: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Еще одна лемма

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

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

Рассмотрим точку (a1, . . . , an) ∈ Sn, в которой 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

Page 83: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Еще одна лемма

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

ДоказательствоИндукция по n.База (n = 1) верна, поскольку многочлен от одной переменнойстепени d не может иметь более n корней.Рассмотрим точку (a1, . . . , an) ∈ Sn, в которой 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

Page 84: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Еще одна лемма

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

ДоказательствоИндукция по n.База (n = 1) верна, поскольку многочлен от одной переменнойстепени d не может иметь более n корней.Рассмотрим точку (a1, . . . , an) ∈ Sn, в которой 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

Page 85: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Еще одна лемма

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

ДоказательствоИндукция по n.База (n = 1) верна, поскольку многочлен от одной переменнойстепени d не может иметь более n корней.Рассмотрим точку (a1, . . . , an) ∈ Sn, в которой 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

Page 86: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Доказательство (продолжение)

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

Многочлен f0 зависит от (n − 1)-й переменной, поэтому имеетхотя бы (|S | − d)n−1 ненулевых точек в Sn−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

Page 87: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Доказательство (продолжение)

ДоказательствоМногочлен f0 зависит от (n − 1)-й переменной, поэтому имеетхотя бы (|S | − d)n−1 ненулевых точек в Sn−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

Page 88: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Доказательство (продолжение)

ДоказательствоМногочлен f0 зависит от (n − 1)-й переменной, поэтому имеетхотя бы (|S | − d)n−1 ненулевых точек в Sn−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

Page 89: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Доказательство (продолжение)

ДоказательствоМногочлен f0 зависит от (n − 1)-й переменной, поэтому имеетхотя бы (|S | − d)n−1 ненулевых точек в Sn−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

Page 90: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Доказательство (продолжение)

ДоказательствоМногочлен f0 зависит от (n − 1)-й переменной, поэтому имеетхотя бы (|S | − d)n−1 ненулевых точек в Sn−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

Page 91: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Важное следствие

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

Prob (f (x1, . . . , xn) ̸= 0) ≥(︂

1− d|S |

)︂n

.

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

Page 92: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Алгоритм

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

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

I случайно выбрать x1, . . . , xn из SI если f (x1, . . . , xn) ̸= 0, выдать “ненулевой”

выдать “нулевой”

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

Page 93: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Алгоритм

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

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

Повторить c раз:I случайно выбрать x1, . . . , xn из SI если f (x1, . . . , xn) ̸= 0, выдать “ненулевой”

выдать “нулевой”

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

Page 94: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Алгоритм

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

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

I случайно выбрать x1, . . . , xn из SI если f (x1, . . . , xn) ̸= 0, выдать “ненулевой”

выдать “нулевой”

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

Page 95: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Алгоритм

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

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

I случайно выбрать x1, . . . , xn из S

I если f (x1, . . . , xn) ̸= 0, выдать “ненулевой”

выдать “нулевой”

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

Page 96: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Алгоритм

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

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

I случайно выбрать x1, . . . , xn из SI если f (x1, . . . , xn) ̸= 0, выдать “ненулевой”

выдать “нулевой”

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

Page 97: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Алгоритм

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

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

I случайно выбрать x1, . . . , xn из SI если f (x1, . . . , xn) ̸= 0, выдать “ненулевой”

выдать “нулевой”

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

Page 98: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

ЛеммаАлгоритм Rand-Null-Polynomial ошибается с вероятностью неболее 2−c , причем только в случае, если f — ненулевой.

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

1− t > e−t−t2 , 0 < t ≤ 1/2

1− 12n > e−

12n−

14n2

Случайно выбранный набор значений переменным x1, . . . , xnявляется корнем с вероятностью не более

1−(︂

1− 12n

)︂n

< 1− e−12−

14n <

12.

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

Page 99: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

ЛеммаАлгоритм Rand-Null-Polynomial ошибается с вероятностью неболее 2−c , причем только в случае, если f — ненулевой.

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

1− t > e−t−t2 , 0 < t ≤ 1/2

1− 12n > e−

12n−

14n2

Случайно выбранный набор значений переменным x1, . . . , xnявляется корнем с вероятностью не более

1−(︂

1− 12n

)︂n

< 1− e−12−

14n <

12.

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

Page 100: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

ЛеммаАлгоритм Rand-Null-Polynomial ошибается с вероятностью неболее 2−c , причем только в случае, если f — ненулевой.

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

1− t > e−t−t2 , 0 < t ≤ 1/2

1− 12n > e−

12n−

14n2

Случайно выбранный набор значений переменным x1, . . . , xnявляется корнем с вероятностью не более

1−(︂

1− 12n

)︂n

< 1− e−12−

14n <

12.

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

Page 101: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

ЛеммаАлгоритм Rand-Null-Polynomial ошибается с вероятностью неболее 2−c , причем только в случае, если f — ненулевой.

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

1− t > e−t−t2 , 0 < t ≤ 1/2

1− 12n > e−

12n−

14n2

Случайно выбранный набор значений переменным x1, . . . , xnявляется корнем с вероятностью не более

1−(︂

1− 12n

)︂n

< 1− e−12−

14n <

12.

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

Page 102: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

План лекции

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

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

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

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

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

Page 103: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Пример

x

¬x

y

¬y

y

¬y

z

¬z

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

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

Page 104: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Ветвящиеся программы

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

есть две выделенные вершины — начальная и конечная;исходящая степень каждой вершины равна 0, 1 или 2;каждое ребро помечено переменной xi или ее отрицанием ¬xi ;более того, если из вершины выходят два ребра, то ониобязательно помечены xi и ¬xi ;

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

Page 105: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Ветвящиеся программы

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

есть две выделенные вершины — начальная и конечная;

исходящая степень каждой вершины равна 0, 1 или 2;каждое ребро помечено переменной xi или ее отрицанием ¬xi ;более того, если из вершины выходят два ребра, то ониобязательно помечены xi и ¬xi ;

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

Page 106: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Ветвящиеся программы

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

есть две выделенные вершины — начальная и конечная;исходящая степень каждой вершины равна 0, 1 или 2;

каждое ребро помечено переменной xi или ее отрицанием ¬xi ;более того, если из вершины выходят два ребра, то ониобязательно помечены xi и ¬xi ;

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

Page 107: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Ветвящиеся программы

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

есть две выделенные вершины — начальная и конечная;исходящая степень каждой вершины равна 0, 1 или 2;каждое ребро помечено переменной xi или ее отрицанием ¬xi ;более того, если из вершины выходят два ребра, то ониобязательно помечены xi и ¬xi ;

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

Page 108: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Функция

Определение

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

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

Page 109: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Функция

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

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

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

Page 110: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Функция

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

Ветвящаяся программа имеет первую степень (read-once), еслиникакая переменная не встречается ни на каком пути более одногораза.

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

Page 111: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Функция

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

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

Page 112: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

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

I Для этого каждому ребру e поставим в соответствие многочленfe = xi или fe = 1− xi , если оно помечено переменной xi или ееотрицанием ¬xi , соответственно.

I Каждому пути поставим в соответствие произведение многочленовребер этого пути.

I Программе сопоставим многочлен, равный сумме многочленоввсех ее путей.

Полученный многочлен вычисляет функцию из Fn в F.Ясно, что fP и P эквивалентны.

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

Page 113: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

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

I Для этого каждому ребру e поставим в соответствие многочленfe = xi или fe = 1− xi , если оно помечено переменной xi или ееотрицанием ¬xi , соответственно.

I Каждому пути поставим в соответствие произведение многочленовребер этого пути.

I Программе сопоставим многочлен, равный сумме многочленоввсех ее путей.

Полученный многочлен вычисляет функцию из Fn в F.Ясно, что fP и P эквивалентны.

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

Page 114: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

I Для этого каждому ребру e поставим в соответствие многочленfe = xi или fe = 1− xi , если оно помечено переменной xi или ееотрицанием ¬xi , соответственно.

I Каждому пути поставим в соответствие произведение многочленовребер этого пути.

I Программе сопоставим многочлен, равный сумме многочленоввсех ее путей.

Полученный многочлен вычисляет функцию из Fn в F.Ясно, что fP и P эквивалентны.

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

Page 115: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

I Для этого каждому ребру e поставим в соответствие многочленfe = xi или fe = 1− xi , если оно помечено переменной xi или ееотрицанием ¬xi , соответственно.

I Каждому пути поставим в соответствие произведение многочленовребер этого пути.

I Программе сопоставим многочлен, равный сумме многочленоввсех ее путей.

Полученный многочлен вычисляет функцию из Fn в F.Ясно, что fP и P эквивалентны.

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

Page 116: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

I Для этого каждому ребру e поставим в соответствие многочленfe = xi или fe = 1− xi , если оно помечено переменной xi или ееотрицанием ¬xi , соответственно.

I Каждому пути поставим в соответствие произведение многочленовребер этого пути.

I Программе сопоставим многочлен, равный сумме многочленоввсех ее путей.

Полученный многочлен вычисляет функцию из Fn в F.Ясно, что fP и P эквивалентны.

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

Page 117: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

I Для этого каждому ребру e поставим в соответствие многочленfe = xi или fe = 1− xi , если оно помечено переменной xi или ееотрицанием ¬xi , соответственно.

I Каждому пути поставим в соответствие произведение многочленовребер этого пути.

I Программе сопоставим многочлен, равный сумме многочленоввсех ее путей.

Полученный многочлен вычисляет функцию из Fn в F.Ясно, что fP и P эквивалентны.

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

Page 118: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

I Для этого каждому ребру e поставим в соответствие многочленfe = xi или fe = 1− xi , если оно помечено переменной xi или ееотрицанием ¬xi , соответственно.

I Каждому пути поставим в соответствие произведение многочленовребер этого пути.

I Программе сопоставим многочлен, равный сумме многочленоввсех ее путей.

Полученный многочлен вычисляет функцию из Fn в F.

Ясно, что fP и P эквивалентны.

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

Page 119: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

I Для этого каждому ребру e поставим в соответствие многочленfe = xi или fe = 1− xi , если оно помечено переменной xi или ееотрицанием ¬xi , соответственно.

I Каждому пути поставим в соответствие произведение многочленовребер этого пути.

I Программе сопоставим многочлен, равный сумме многочленоввсех ее путей.

Полученный многочлен вычисляет функцию из Fn в F.Ясно, что fP и P эквивалентны.

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

Page 120: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

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

Prob (fP(r1, . . . , rn) = fQ(r1, . . . , rn)) ≤ 1−(︂

1− 1|S |

)︂n

< 1/2.

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

Page 121: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

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

Prob (fP(r1, . . . , rn) = fQ(r1, . . . , rn)) ≤ 1−(︂

1− 1|S |

)︂n

< 1/2.

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

Page 122: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

Если выбрать S ⊆ F, |S | ≥ 2n, то в предположении, чтоfP − fQ ̸= 0, для случайно выбранных r1, . . . , rn

Prob (fP(r1, . . . , rn) = fQ(r1, . . . , rn)) ≤ 1−(︂

1− 1|S |

)︂n

< 1/2.

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

Page 123: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

Prob (fP(r1, . . . , rn) = fQ(r1, . . . , rn)) ≤ 1−(︂

1− 1|S |

)︂n

< 1/2.

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

Page 124: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Однако

Однако

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

I присвоим начальной вершине значение 1;I каждому ребру присвоим значение его многочлена (то есть

каждому ребру будет присвоено значение ri или 1− ri );I каждой вершине присвоим сумму по всем входящим в нее ребрам

произведений значения ребра на значение ребра на другом конце.

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

Page 125: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Однако

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

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

I присвоим начальной вершине значение 1;I каждому ребру присвоим значение его многочлена (то есть

каждому ребру будет присвоено значение ri или 1− ri );I каждой вершине присвоим сумму по всем входящим в нее ребрам

произведений значения ребра на значение ребра на другом конце.

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

Page 126: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Однако

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

Для входа (r1, . . . , rn) ∈ Fn мы можем вычислить fP следующимобразом:

I присвоим начальной вершине значение 1;I каждому ребру присвоим значение его многочлена (то есть

каждому ребру будет присвоено значение ri или 1− ri );I каждой вершине присвоим сумму по всем входящим в нее ребрам

произведений значения ребра на значение ребра на другом конце.

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

Page 127: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Однако

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

I присвоим начальной вершине значение 1;I каждому ребру присвоим значение его многочлена (то есть

каждому ребру будет присвоено значение ri или 1− ri );I каждой вершине присвоим сумму по всем входящим в нее ребрам

произведений значения ребра на значение ребра на другом конце.

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

Page 128: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Однако

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

I присвоим начальной вершине значение 1;

I каждому ребру присвоим значение его многочлена (то естькаждому ребру будет присвоено значение ri или 1− ri );

I каждой вершине присвоим сумму по всем входящим в нее ребрампроизведений значения ребра на значение ребра на другом конце.

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

Page 129: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Однако

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

I присвоим начальной вершине значение 1;I каждому ребру присвоим значение его многочлена (то есть

каждому ребру будет присвоено значение ri или 1− ri );

I каждой вершине присвоим сумму по всем входящим в нее ребрампроизведений значения ребра на значение ребра на другом конце.

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

Page 130: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

Однако

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

I присвоим начальной вершине значение 1;I каждому ребру присвоим значение его многочлена (то есть

каждому ребру будет присвоено значение ri или 1− ri );I каждой вершине присвоим сумму по всем входящим в нее ребрам

произведений значения ребра на значение ребра на другом конце.

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

Page 131: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

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

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

нулевой многочлен (взять случайную точку и посчитать в нейзначение)

эквивалентность ветвящихся программ (сопоставить программемногочлен и воспользоваться предыдущим алгоритмом)

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

Page 132: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

булев вектор)

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

нулевой многочлен (взять случайную точку и посчитать в нейзначение)

эквивалентность ветвящихся программ (сопоставить программемногочлен и воспользоваться предыдущим алгоритмом)

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

Page 133: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

булев вектор)сравнение строк (представить строки как числа и проверять равенство

по случайно выбранному простому модулю)

нулевой многочлен (взять случайную точку и посчитать в нейзначение)

эквивалентность ветвящихся программ (сопоставить программемногочлен и воспользоваться предыдущим алгоритмом)

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

Page 134: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

булев вектор)сравнение строк (представить строки как числа и проверять равенство

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

значение)

эквивалентность ветвящихся программ (сопоставить программемногочлен и воспользоваться предыдущим алгоритмом)

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

Page 135: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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

булев вектор)сравнение строк (представить строки как числа и проверять равенство

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

значение)эквивалентность ветвящихся программ (сопоставить программе

многочлен и воспользоваться предыдущим алгоритмом)

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

Page 136: Эффективные алгоритмы, осень 2007: Вероятностные алгоритмы

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

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