Коды Адамара
Определение
Код Адамара 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,z∈ImH (последнее означает, что z - кодовое слово H).
Доказательство (существования декодирования)
Определение
Расстояние Хэмминга ρH(t,t′)=#{i:ti≠t′i}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 - матрица размера (2m−1)×m, строки - ненулевые элементы {0,1}m. Пусть s=2m−1.
Утверждение
u - случайный вектор m×1⇒ величины Au попарно независимы.
Возьмем u1,…,un - случайные векторы размера m×1. U - случайная матрица размера m×n.
R=(r1,…,rs)T=AU, матрица рамера (2m−1)×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