Формулировка
Пусть задан полином [math] q(x_1, ..., x_n) \not\equiv 0 [/math] степени [math] d [/math] над полем [math] F [/math], а также произвольное множество [math] S \subset F: |S| \lt \infty [/math]. Пусть также [math] \{r_i\}_{i=1}^n [/math] — набор независимых случайных величин, равномерно распределенных в [math] S [/math]. Тогда [math] p(q(r_1, ..., r_n) = 0) \le \frac{d}{|S|} [/math].
Доказательство
Проведем доказательство теоремы индукцией по [math] n [/math].
База индукции
В случае, когда [math] n = 1 [/math], утвержение следует из того, что произвольный полином степени [math] d [/math] над полем имеет не более чем [math] d [/math] корней.
Индукционный переход
Пусть утверждение верно для всех полиномов степени [math] n - 1 [/math] (и для всех меньших). Разложим [math] q [/math] по степеням [math] x_n [/math]:
[math] q(x_1, ..., x_n) = \sum_{i=0}^d q_i(x_1, ..., x_{n-1}) x_n^i [/math]
Так как [math] q \not\equiv 0 [/math], хотя бы один [math] q_i \not\equiv 0 [/math]. Пусть [math] j = \max \{ i | q_i \not\equiv 0\} [/math].
По формуле полной вероятности имеем:
[math] p(q = 0) = p(q = 0 | q_j = 0) p(q_j = 0) + p(q = 0 | q_j \ne 0) p(q_j \ne 0) [/math].
Заметим, что [math] q_j — [/math] полином от [math] n - 1 [/math] переменных, а потому к нему применимо предположение индукции. Кроме того, [math] \mathrm{deg} q_j \le d - j [/math]. Таким образом, [math] p(q = 0 | q_j = 0) p(q_j = 0) \le 1 * \frac{d - j}{|S|} [/math].
Для получения оценки второго слагаемого зафиксируем некоторый набор [math] \{x_1, ..., x_{n-1}\} [/math], для которого [math] q_j(x_1, ..., x_{n-1}) \ne 0 [/math].
Тогда для [math] q(x_1, ... x_n) [/math] как для полинома 1 переменной степени [math] j [/math] будет выполнено:
[math] p(q = 0 | q_j \ne 0) p(q_j \ne 0) \le \frac{j}{|S|} * 1 [/math].
[math] p(q = 0) \le \frac{d-j}{|S|} + \frac{j}{|S|} = \frac{d}{|S|} [/math], что и требовалось доказать.
Применение
С помощью этой леммы можно, например, показать принадлежность задачи проверки эквивалентности двух полиномов классу coRP
Формулировка задачи
Пусть даны два полинома — [math] p(x_1, ..., x_n) [/math] и [math] q(x_1, ..., x_n) [/math]. Нужно проверить, верно ли, что [math] p \equiv q [/math].
Утверждение
Сформулированная выше задача принадлежит классу [math] coRP [/math].
Доказательство
Для доказательства построим такой алгоритм m, что:
- [math] p(m(\langle p, q \rangle) = 1 | p \equiv q) = 1 [/math]
- [math] p(m(\langle p, q \rangle) = 0 | p \not\equiv q) \ge \frac{1}{2} [/math]
Для этого рассмотрим полином [math] h = p - q [/math]. Очевидно, что [math] h \equiv 0 \Leftrightarrow p \equiv q [/math]. Рассмотрим [math] h [/math] над некоторым полем [math] F [/math]. Очевидно, что если [math] h \equiv 0 [/math], то это будет выполнено и в [math] F [/math] (обратное, вообще говоря, неверно). Возьмем случайный набор [math] \{x_1, ..., x_n\} [/math]. По
доказанной выше лемме [math] p(h(x_1, ..., x_n) = 0) \le \frac {\mathrm{deg} h}{|F|} [/math]. Тогда алгоритм, выдающий по данным [math] p [/math] и [math] q [/math] [math] [h(x_1, ..., x_n) = 0] [/math], удовлетворяет поставленным условиям, лишь только [math] |F| \ge 2 deg h [/math], что тем более верно, если [math] |F| \ge 2 \max(\mathrm{deg} p, \mathrm{deg} q) [/math].