Loading [MathJax]/jax/output/HTML-CSS/jax.js
Now you are in the subtree of Lecture Notes public knowledge tree. 

Коды Адамара

Определение

Код Адамара H:{0,1}n{0,1}2n. H(x1,,xn)=(x1y1++xnyn)|(y1,,yn){0,1}n

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

Если расстояние Хэминга ρH(z,ˉz)12ε, то за время poly(nε) можно выдать полиномиальный список, содержащий прообраз z, где z,ˉz{0,1}2n,zImH (последнее означает, что z - кодовое слово H).

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

Определение

Расстояние Хэмминга ρH(t,t)=#{i:titi}2n

К ˉz произвольный доступ: по j за константное время можно найти ˉzj

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

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

Утверждение

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

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

Идея

Выберем специальным образом попарно независимые r1,,rs; выберем zy как большинство из ˉz(y+ri)+z(ri)

Выбор r1,,rs:

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

Утверждение

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

Возьмем u1,,un - случайные векторы размера m×1. U - случайная матрица размера m×n.

R=(r1,,rs)T=AU, матрица рамера (2m1)×n.
ri=AiU=(Ai1e1++Aimem)U=Ai1e1U++AimemU=Ai1ˉU1++AimˉUm z(ri)=Ai1z(ˉU1)++Aimz(ˉUm)

То есть достаточно задать z(ˉU1),,z(ˉUm) чтобы вычислить z(ri). Но все эти 2m вариантов можно перебрать. Для каждого варианта вычисляем z(ri) и имея ˉz с произвольным доступом, вычисляем значения по большинству.

Еще раз конструкция: для фиксированного набора z(ˉu1),,z(ˉum) при j=1,,n. z(ej) выбирается как большинство из ˉz(ej+ri)+z(ri)
ξi - случайная величина равная 1, если и только если z(y)ˉz(y+ri)+z(ri) Pr{ξi=1}12ε Нужно посчитать вероятность Pr{1s(ξ1++ξs)12} для попарно независимых ξ1,,ξs