Now you are in the subtree of Lecture Notes public knowledge tree. 

Коды Адамара

Определение

Код Адамара $H\colon \{0, 1\}^n \rightarrow \{0, 1\}^{2^n}$. $$H(x_1, \ldots, x_n) = (x_1y_1 + \ldots + x_ny_n)\vert_{(y_1, \ldots, y_n) \in \{0, 1\}^{n}}$$

Коды Адамара могут быть декодированы списком:

Если расстояние Хэминга $\rho_H(z, \bar{z}) \le \frac{1}{2} - \varepsilon$, то за время $poly(\frac{n}{\varepsilon})$ можно выдать полиномиальный список, содержащий прообраз $z$, где $z, \bar{z} \in \{0, 1\}^{2^n}, z \in \mathrm{Im} H$ (последнее означает, что $z$ - кодовое слово $H$).

Доказательство (существования декодирования)

Определение

Расстояние Хэмминга $\rho_H(t, t') = \frac{\#\{i\colon t_i \ne t_i'\}}{2^n}$

К $\bar{z}$ произвольный доступ: по $j$ за константное время можно найти $\bar{z}_j$

Без искажений достаточно запросить $n$ битов с номерами $(1, 0, \ldots, 0), \ldots, (0, \ldots, 0, 1)$

Обозначим $z(y)$ - соответствующий бит $z$.

Утверждение

$z(y + r) = z(y) + z(r)$

Из утверждения $z(y) = z(y + r) + z(r) = $ большинство из $\bar{z}(y + r) + z(r)$

Идея

Выберем специальным образом попарно независимые $r_1, \ldots, r_s$; выберем $z_y$ как большинство из $\bar{z}(y + r_i) + z(r_i)$

Выбор $r_1, \ldots, r_s$:

$A$ - матрица размера $(2^m - 1)\times m$, строки - ненулевые элементы $\{0, 1\}^m$. Пусть $s = 2^m - 1$.

Утверждение

$u$ - случайный вектор $m\times 1 \Rightarrow$ величины $Au$ попарно независимы.

Возьмем $u_1, \ldots, u_n$ - случайные векторы размера $m \times 1$. $U$ - случайная матрица размера $m \times n$.

$R = (r_1, \ldots, r_s)^T = AU$, матрица рамера $(2^m - 1)\times n$.
$$r_i = A_iU = (A_{i_1}e_1 + \ldots + A_{i_m}e_m)U = A_{i_1}e_1U + \ldots + A_{i_m}e_mU = A_{i_1}\bar{U}_1 + \ldots + A_{i_m}\bar{U}_m$$ $$z(r_i) = A_{i_1}z(\bar{U}_1) + \ldots + A_{i_m}z(\bar{U}_m)$$

То есть достаточно задать $z(\bar{U}_1),\ldots, z(\bar{U}_m)$ чтобы вычислить $z(r_i)$. Но все эти $2^m$ вариантов можно перебрать. Для каждого варианта вычисляем $z(r_i)$ и имея $\bar{z}$ с произвольным доступом, вычисляем значения по большинству.

Еще раз конструкция: для фиксированного набора $z(\bar{u}_1), \ldots, z(\bar{u}_m)$ при $j = 1, \ldots, n$. $z(e_j)$ выбирается как большинство из $\bar{z}(e_j + r_i) + z(r_i)$
$\xi_i$ - случайная величина равная $1$, если и только если $z(y) \ne \bar{z}(y + r_i) + z(r_i)$ $$Pr\{\xi_i = 1\} \le \frac{1}{2} - \varepsilon$$ Нужно посчитать вероятность $Pr\{\frac{1}{s}(\xi_1 + \ldots + \xi_s) \le \frac{1}{2}\}$ для попарно независимых $\xi_1, \ldots, \xi_s$