Теория кодированияМФТИ, осень 2013
Александр Дайняк
www.dainiak.com
Геометрическая интерпретация способности кода исправлять ошибкиШар радиуса 𝑟 с центром в 𝒂— это множество
𝑆𝑟 𝒂 ≔ 𝒃 ∣ 𝑑 𝒂, 𝒃 ≤ 𝑟
Если 𝑑 𝐶 ≥ 𝑑, то шары радиуса 𝑑 − 1 2 с центрами в кодовых словах не пересекаются:
𝒂 𝒃
Задача о ближайшем кодовом слове (NCP — Nearest Codeword Problem)
Дано:
• Линейный код 𝐶 ⊂ 𝔽2𝑛 (заданный своей порождающей матрицей)
• Слово 𝒃 ∈ 𝔽2𝑛
Требуется найти 𝒂∗ ∈ 𝐶, такое, что 𝑑 𝒂∗, 𝒃 = min
𝒂∈𝐶𝑑 𝒂, 𝒃
Задача о ближайшем кодовом слове
Теорема. Задача NCP является NP-трудной.
Для доказательства построим сведен́ия:
3-SAT → 1-in-3-SAT → NCP
3-SAT = 3-SATISFIABILITY = 3-ВЫПОЛНИМОСТЬ
1-in-3-SAT = exactly-1-in-3 SATISFIABILITY
Задача 3-SAT
Дан набор скобок, в каждой из которых ровно три литерала (вида 𝑥 или 𝑥, где 𝑥— переменная)
Требуется определить, можно ли присвоить переменным значения0 и 1, так, чтобы в каждой скобке оказался хотя бы один истинный литерал.
Задача 1-in-3-SAT
Дан набор скобок, в каждой из которых ровно три литерала (вида 𝑥 или 𝑥, где 𝑥— переменная)
Требуется определить, можно ли присвоить переменным значения0 и 1, так, чтобы в каждой скобке оказался ровно один истинный литерал.
3-SAT → 1-in-3-SAT
Пусть дан набор скобок для задачи 3-SAT.
Заменим каждую скобку вида 𝑥 ∨ 𝑦 ∨ 𝑧 на тройку скобок 𝑥, 𝑝, 𝑞 𝑞, 𝑦, 𝑟 𝑟, 𝑠, 𝑧 , так, чтобы переменные 𝑝, 𝑞, 𝑟, 𝑠 нигде
больше не встречались.
Например:𝑥1 ∨ 𝑥2 ∨ 𝑥3 𝑥1 ∨ 𝑥3 ∨ 𝑥4
заменится на 𝑥1, 𝑝1, 𝑞1 𝑞1, 𝑥2, 𝑟1 𝑟1, 𝑠1, 𝑥3𝑥1, 𝑝2, 𝑞2 𝑞2, 𝑥3, 𝑟2 𝑟2, 𝑠2, 𝑥4
3-SAT → 1-in-3-SAT
Утверждение. В скобке вида 𝑥 ∨ 𝑦 ∨ 𝑧 есть хотя бы один истинный литерал ⇔ найдутся такие значения 𝑝, 𝑞, 𝑟, 𝑠, чтобы в каждой из скобок 𝑥, 𝑝, 𝑞 𝑞, 𝑦, 𝑟 𝑟, 𝑠, 𝑧 был ровно один истинный литерал. Доказательство — разбором случаев:
𝒙, 𝒚, 𝒛 𝒙, 𝒑, 𝒒 𝒒, 𝒚, 𝒓 𝒓, 𝒔, 𝒛 𝒑, 𝒒, 𝒓, 𝒔
0,0,0 𝟏, 𝒑, 𝒒 𝒒, 𝟎, 𝒓 𝒓, 𝒔, 𝟏 ?!
0,0,1 𝟏, 𝒑, 𝒒 𝒒, 𝟎, 𝒓 𝒓, 𝒔, 𝟎 𝟎, 𝟎, 𝟏, 𝟎
0,1,0 𝟏, 𝒑, 𝒒 𝒒, 𝟏, 𝒓 𝒓, 𝒔, 𝟏 𝟎, 𝟎, 𝟎, 𝟎
0,1,1 𝟏, 𝒑, 𝒒 𝒒, 𝟏, 𝒓 𝒓, 𝒔, 𝟎 𝟎, 𝟎, 𝟎, 𝟏
1,0,1 𝟎, 𝒑, 𝒒 𝒒, 𝟎, 𝒓 𝒓, 𝒔, 𝟎 𝟎, 𝟏, 𝟎, 𝟏
1,1,1 𝟎, 𝒑, 𝒒 𝒒, 𝟏, 𝒓 𝒓, 𝒔, 𝟎 𝟏, 𝟎, 𝟎, 𝟏
1-in-3-SAT → NCP
Пусть в задаче 1-in-3-SAT всего 𝑁 переменных и𝑀 скобок.
Положим 𝑛 ≔ 𝑀 + 1 𝑀 + 𝑁 + 3𝑀, 𝑘 ≔ 2𝑁 и укажем порождающую матрицу 𝐺 линейного 𝑛, 𝑘 2-кода и слово 𝒃 ∈ 𝔽2
𝑛.
Матрица 𝐺 состоит из подматриц:𝐺 ≔ (𝐺1| … |𝐺1
𝑀+1 раз
| 𝐺2| … |𝐺2𝑀+1 раз
|𝐺3)
Слово 𝒃 имеет вид: 1…10…0 , количество единиц и нулей равно 𝑀 + 1 𝑀 +𝑁 и 3𝑀 соответственно.
1-in-3-SAT → NCP
𝑛 ≔ 𝑀 + 1 𝑀 +𝑁 + 3𝑀, 𝑘 ≔ 2𝑁
𝐺 ≔ (𝐺1| … |𝐺1𝑀+1 раз
| 𝐺2| … |𝐺2𝑀+1 раз
|𝐺3) ∈ 𝔽2𝑘×𝑛
𝐺1 ∈ 𝔽2𝑘×𝑁, 𝐺2 ∈ 𝔽2
𝑘×𝑀, 𝐺3 ∈ 𝔽2𝑘×3𝑀
• Строки матрицы 𝐺 отвечают переменным и их отрицаниям.
• 𝐺1 отвечает за выбор значений переменных.
• 𝐺2 отвечает за то, чтобы в каждой скобке был либо один, либо три истинных литерала.
• 𝐺3 отвечает за то, чтобы в каждой скобке было не более одного истинного литерала.
1-in-3-SAT → NCP
Матрица 𝐺1 ∈ 𝔽22𝑁×𝑁 выглядит так:
Строки 𝐺1 соответствуют переменным задачи 1-in-3-SAT и их отрицаниям.
Л.к. строк 𝐺1 равна 𝟏 т. и т.т., когда из каждой пары строк, соответствующих одной переменной, в л.к. входит ровно одна.
𝑥1 →
𝑥1 →
𝑥2 →
𝑥2 →
𝑥𝑁 →
𝑥𝑁 →
1 0 ⋯ 01 0 ⋯ 00 1 ⋯ 00 1 ⋯ 0⋮ ⋮ ⋱ ⋮0 0 ⋯ 10 0 ⋯ 1
1-in-3-SAT → NCP
Матрица 𝐺2 ∈ 𝔽22𝑁×𝑀 выглядит так:
Строки 𝐺2 соответствуют переменным задачи 1-in-3-SAT и их отрицаниям, столбцы — скобкам.Л.к. строк 𝐺2 равна 𝟏 т. и т.т., когда для каждой скобки в л.к. входит ровно одна или ровно три строки, соответствующих литералам из этой скобки.
𝑥 →
𝑦 →
𝑧 →
𝑥, 𝑦, 𝑧
1
1
1
1-in-3-SAT → NCP
Матрица 𝐺3 ∈ 𝔽22𝑁×3𝑀 выглядит так:
Строки 𝐺3 соответствуют переменным и их отрицаниям. Каждой скобке отвечают три последовательных столбца.
Если для каждой скобки в л.к. строк 𝐺3 входит ровно одна строка, соответствующая литералам из этой скобки, то вес этой л.к. равен 𝑀.
𝑥 →
𝑦 →
𝑧 →
𝑥, 𝑦, 𝑧
1
1
1
1-in-3-SAT → NCP
Пример 𝐺 и 𝒃 для задачи [𝑥1, 𝑥2, 𝑥3][ 𝑥1, 𝑥3, 𝑥4]:
𝑥1 → 1 0 0 0 ⋯ 1 0 ⋯ 1 0 0 0 0 0 𝑥1 → 1 0 0 0 ⋯ 0 1 ⋯ 0 0 0 1 0 0𝑥2 → 0 1 0 0 ⋯ 0 0 ⋯ 0 0 0 0 0 0 𝑥2 → 0 1 0 0 ⋯ 1 0 ⋯ 0 1 0 0 0 0𝑥3 → 0 0 1 0 ⋯ 1 1 ⋯ 0 0 1 0 1 0 𝑥3 → 0 0 1 0 ⋯ 0 0 ⋯ 0 0 0 0 0 0𝑥4 → 0 0 0 1 ⋯ 0 0 ⋯ 0 0 0 0 0 0 𝑥4 → 0 0 0 1 ⋯ 0 1 ⋯ 0 0 0 0 0 1𝒃 → 1 1 1 1 ⋯ 1 1 ⋯ 0 0 0 0 0 0
𝐺
𝐺3𝐺2𝐺1
коп
ии
коп
ии
1-in-3-SAT → NCP
Пример: [𝑥1, 𝑥2, 𝑥3][ 𝑥1, 𝑥3, 𝑥4], набор значений переменных 𝑥1 =𝑥2 = 1, 𝑥3 = 𝑥4 = 0.
𝑥1 → 1 0 0 0 ⋯ 1 0 ⋯ 1 0 0 0 0 0 𝑥1 → 1 0 0 0 ⋯ 0 1 ⋯ 0 0 0 1 0 0𝑥2 → 0 1 0 0 ⋯ 0 0 ⋯ 0 0 0 0 0 0 𝑥2 → 0 1 0 0 ⋯ 1 0 ⋯ 0 1 0 0 0 0𝑥3 → 0 0 1 0 ⋯ 1 1 ⋯ 0 0 1 0 1 0 𝑥3 → 0 0 1 0 ⋯ 0 0 ⋯ 0 0 0 0 0 0𝑥4 → 0 0 0 1 ⋯ 0 0 ⋯ 0 0 0 0 0 0 𝑥4 → 0 0 0 1 ⋯ 0 1 ⋯ 0 0 0 0 0 1𝒃 → 1 1 1 1 ⋯ 1 1 ⋯ 0 0 0 0 0 0
𝐺
𝐺3𝐺2𝐺1
коп
ии
коп
ии
1-in-3-SAT → NCP
Утверждение. Пусть вектор 𝒂 является линейной комбинацией строк построенной ранее матрицы 𝐺. Тогда 𝑑 𝒂, 𝒃 ≥ 𝑀, причём 𝑑 𝒂, 𝒃 = 𝑀 т. и т.т., когда вектор 𝒂 соответствует решению задачи 1-in-3-SAT.
(Утверждение вытекает из предыдущих рассмотрений)
Следовательно, задача 1-in-3-SAT полиномиально сводится кзадаче NCP.
Задача о ближайшем кодовом слове (NCP — Nearest Codeword Problem)Замечание. Фактически, нами доказано, что NP-трудной является задача более слабая, чем NCP: «найти минимум расстояния от заданного слова до кодовых слова заданного линейного кода».
Замечание. Можно доказать NP-трудность такой задачи: «найти максимальный вес кодовых слов заданного линейного кода»
Задача о ближайшем кодовом слове (NCP — Nearest Codeword Problem)Теорема (без доказательства).NP-трудной является следующая задача при любом фиксированном 𝛽: «для заданного линейного кода 𝐶 и слова 𝑏найти такое 𝑡, чтоmin
𝒂∈𝐶𝑑 𝒂, 𝒃 ≤ 𝑡 ≤ 𝛽 ⋅ min
𝒂∈𝐶𝑑 𝒂, 𝒃 »
(То есть решение задачи NCP трудно не только найти точно, но и приблизить с константной точностью.)
Графы-расширители (expanders)
Двудольный граф с долями 𝐿 и 𝑅 называется 𝑛,𝑚, Δ, 𝛼, 𝑐 -расширителем, если
• 𝐿 = 𝑛, 𝑅 = 𝑚
• deg 𝑢 = Δ для любого 𝑢 ∈ 𝐿
• Для любого 𝑆 ⊆ 𝐿 при 𝑆 ≤ 𝛼𝑛 выполнено 𝑁 𝑆 ≥ 𝑐 ⋅ 𝑆 , где 𝑁 𝑆 — множество вершин в 𝑅, смежных с вершинами из 𝑆
𝐿
𝑅
⋯
Существование расширителей
Утверждение.Пусть Δ ≥ 3, 𝑐 ≤ Δ − 2, 𝛼 < 1 и 𝑚 ≥ 4𝑛Δ2 𝛼.Тогда при всех натуральных 𝑛 существуют𝑛,𝑚, Δ, 𝛼, 𝑐 -расширители (и их много!)
Доказательство. Построим случайный двудольный граф 𝐺 и докажем, что он с большой вероятностью будет искомым.
Существование расширителей
Зафиксируем множества 𝐿 и 𝑅 ( 𝐿 = 𝑛, 𝑅 = 𝑚) и проведём по Δ рёбер из каждой вершины в 𝐿 в выбираемые равновероятно и независимо вершины в 𝑅 (в итоге некоторые из этих Δ рёбер могут попасть в одни и те же вершины 𝑅).
Рёбра 𝐺 имеют естественную нумерацию, в том порядке, в котором мы определяли их концы в 𝑅 (сначала Δ рёбер из 1-й вершины 𝐿, затем Δ рёбер из 2-й вершины 𝐿 и т.д.).
Существование расширителей
Если 𝐺 не является расширителем, то нашлось такое 𝑆 ⊂ 𝐿, для которого
𝑁 𝑆 < Δ − 2 ⋅ 𝑆
Оценим вероятность того, что фиксированное множество 𝑆оказалось таким «плохим» при случайном выборе концов рёбер из 𝑆 в 𝑅.
А затем оценим вероятность того, что 𝐺 не расширитель, по формуле
Pr 𝐺 плохой = Pr ∃плохое 𝑆 ≤
𝑆
Pr 𝑆 плохое
Существование расширителей
Каждое ребро вида 𝑢, 𝑣 , где 𝑢 ∈ 𝑆, 𝑣 ∈ 𝑁 𝑆 , отнесём к одному из двух типов:
• Если никакое ребро из 𝑆 в 𝑁 𝑆 с меньшим номером не ведёт в 𝑣, то ребро 𝑢, 𝑣 назовём «первопроходцем»
• В противном случае, назовём 𝑢, 𝑣 «дублем»
Очевидно, всего будет 𝑁 𝑆 «первопроходцев» и Δ ⋅ 𝑆 − 𝑁 𝑆«дублей».
Существование расширителей
Всего 𝑁 𝑆 «первопроходцев» и Δ ⋅ 𝑆 − 𝑁 𝑆 «дублей».
Мы предполагаем, что 𝑁 𝑆 < Δ − 2 ⋅ 𝑆 , а значит «дублей» будет не менее 2 ⋅ 𝑆 .
Обозначим 𝑠 ≔ 𝑆 . Вероятность того, что среди рёбер из 𝑆 в 𝑁 𝑆 есть 2𝑠 дублей
≤Δ ⋅ 𝑠
2𝑠
Δ ⋅ 𝑠
𝑚
2𝑠
Число способов выбратьрёбра-«дубли»
Верхняя оценка вероятности попадания конца «дубля» в одну из вершин в 𝑁 𝑆
Существование расширителей
Вероятность того, что заданное множество 𝑆 ⊂ 𝐿 «плохо расширяется», не превосходит
Δ ⋅ 𝑆
2 𝑆
Δ ⋅ 𝑆
𝑚
2 𝑆
Значит,
Pr 𝐺 не расширитель ≤ 𝑆⊂𝐿1≤ 𝑆 ≤𝛼𝑛
Pr 𝑆 «плохое» ≤
1≤𝑠≤𝛼𝑛
𝑛
𝑠
Δ ⋅ 𝑠
2𝑠
Δ ⋅ 𝑠
𝑚
2𝑠
Существование расширителей
С учётом оценки 𝑎𝑏< 𝑒𝑎
𝑏
𝑏получаем
Pr 𝐺 не расширитель ≤
1≤𝑠≤𝛼𝑛
𝑛
𝑠
Δ𝑠
2𝑠
Δ𝑠
𝑚
2𝑠
≤
≤
1≤𝑠≤𝛼𝑛
𝑒𝑛
𝑠
𝑠 𝑒Δ𝑠
2𝑠
2𝑠Δ𝑠
𝑚
2𝑠
=
1≤𝑠≤𝛼𝑛
𝑒3Δ4𝑠𝑛
4𝑚2
𝑠
≤
1≤𝑠≤𝛼𝑛
𝑒3Δ4𝛼𝑛2
4𝑚2
𝑠
Существование расширителей
Pr 𝐺 не расширитель ≤
1≤𝑠≤𝛼𝑛
𝑒3Δ4𝛼𝑛2
4𝑚2
𝑠
При 𝑚 ≥ 4𝑛Δ2 𝛼 выполняется неравенство𝑒3Δ4𝛼𝑛2
4𝑚2<1
3Отсюда
Pr 𝐺 не расширитель ≤
1≤𝑠≤𝛼𝑛
1
3
𝑠
<1
2
Существование расширителей
Итак, случайный двудольный мультиграф будет расширителем с вероятностью не менее 1
2.
Чтобы от мультиграфа перейти к обычному графу, достаточно перенаправить концы рёбер-дублей в произвольные вершины 𝑅.
Свойства расширительности от этого могут только улучшиться.
Коды на основе двудольных графов
Код на основе двудольного графа — это линейный двоичный код, строящийся так:
• Вершинам из 𝐿 соответствуют переменные 𝑥1, … , 𝑥𝑛• Вершинам из 𝑅 соответствуют уравнения: если в вершину 𝑣 ∈ 𝑅
входят рёбра из вершин 𝑢𝑖1 , … , 𝑢𝑖𝑙, то уравнение будет𝑥𝑖1 +⋯+ 𝑥𝑖𝑙 = 0
Искомый код состоит из всех слов 𝑥1…𝑥𝑛 , удовлетворяющих системе этих уравнений.
Коды на основе двудольных графов
Например, для графа
соответствующий код будет выглядеть так:𝑥1𝑥2𝑥3𝑥4 ∣ 𝑥1 + 𝑥2 + 𝑥4 = 0, 𝑥1 + 𝑥3 = 0
Коды на основе двудольных графов
Утверждение.
Код, построенный по двудольному графу, в котором 𝐿 = 𝑛 и 𝑅 = 𝑚,
является двоичным линейным 𝑛, 𝑘, 𝑑 -кодом, где 𝑘 ≥ 𝑛 −𝑚.
Доказательство:
Код является множеством решений системы из𝑚 уравнений с 𝑛
неизвестными.
Значит, он образует линейное пространство размерности не менее чем
𝑛 −𝑚.
Коды на основе расширителей: кодовое расстояниеТеорема. (M. Sipser, D.A. Spielman)Если 𝑐 > Δ
2, и 𝐶 — код, построенный на основе
(𝑛,𝑚, Δ, 𝛼, 𝑐)-расширителя, то 𝑑 𝐶 > 𝛼𝑛.
Доказательство: от противного.
Допустим, что 𝑑 𝐶 ≤ 𝛼𝑛. Тогда найдётся слово 𝒂 ∈ 𝐶, такое, что 𝒂 ≠ 𝟎 и 𝒂 ≤ 𝛼𝑛.Пусть 𝐼 ≔ 𝑢1, … , 𝑢 𝒂 — вершины из 𝐿, соответствующие единичным координатам 𝒂.
Коды на основе расширителей: кодовое расстояниеТ.к. наш граф — расширитель, и 𝒂 ≤ 𝛼𝑛, то
𝑁 𝐼 ≥ 𝑐 ⋅ 𝐼 > Δ2⋅ 𝐼
Всего из 𝐼 в 𝑁 𝐼 ведёт ровно Δ ⋅ 𝐼 рёбер.
Поэтому среднее число рёбер, входящее в вершины 𝑁 𝐼 из 𝐼, равно
Δ ⋅ 𝐼
𝑁 𝐼<Δ ⋅ 𝐼Δ2⋅ 𝐼= 2
Значит, в 𝑁 𝐼 найдётся вершина, в которую входит ровно одно ребро из 𝐼.
Коды на основе расширителей: кодовое расстояние
В 𝑁 𝐼 найдётся вершина, в которую входит ровно одно ребро из 𝐼.
Значит, среди задающих код уравнений есть такое уравнение 𝑥𝑖1 +⋯+ 𝑥𝑖𝑙 = 0, в котором ровно одна из переменных на слове 𝒂
обращена в единицу.
Но этого не может быть в предположении, что 𝒂 является решением этого уравнения. Противоречие.
Коды на основе расширителей: исправление ошибок
Теорема. (M. Sipser, D.A. Spielman)
Пусть 𝑐 > 3Δ4
, и 𝐶 — код, построенный на основе
(𝑛,𝑚, Δ, 𝛼, 𝑐)-расширителя.
Пусть слово 𝒂′ получено из некоторого кодового слова 𝒂
искажением не более чем 𝛼𝑛
4битов.
Тогда восстановить 𝒂, зная 𝒂′, можно с помощью следующего алгоритма…
Коды на основе расширителей: исправление ошибок
Алгоритм Сипсера—Шпильмана:
1. Если 𝒂′ ∈ 𝐶, то выводим 𝒂′ и завершаем работу.
2. Если 𝒂′ ∉ 𝐶, то для 𝒂′ некоторые из уравнений (отвечающих вершинам в 𝑅) нарушены. Считаем поочерёдно для каждого бита 𝒂′ число нарушенных уравнений, в которых он участвует. Если их > Δ 2, инвертируем этот бит и идём на шаг 1.
Коды на основе расширителей: исправление ошибок
Лемма «о результативном бите».
Пусть 𝑐 > 3Δ4
, и 𝐶 — код, построенный на основе
(𝑛,𝑚, Δ, 𝛼, 𝑐)-расширителя.
Пусть 𝒂′ ∉ 𝐶, но при этом 𝑑 𝒂, 𝒂′ ≤ 𝛼𝑛 для некоторого 𝒂 ∈ 𝐶.
Тогда в 𝒂′ найдётся бит, обращение которого на противоположный строго уменьшает число невыполненных для 𝒂′ уравнений.(Имеются в виду уравнения, построенные по графу-расширителю)
Коды на основе расширителей: исправление ошибок
Пусть 𝒂′— не кодовое слово, находящееся от ближайшего кодового на расстоянии ≤ 𝛼𝑛.
Пусть 𝐼 ⊂ 𝐿— множество вершин, соответствующих координатам, в которых 𝒂′ отличается от ближайшего кодового слова.
Обозначим через 𝑁pass 𝐼 вершины из 𝑁 𝐼 , соответствующие
уравнениям, выполненным на слове 𝒂′.
Аналогично 𝑁fail 𝐼 — вершины из 𝑁 𝐼 , отвечающие нарушенным уравнениям.
Коды на основе расширителей: исправление ошибок
• 𝑁 𝐼 = 𝑁pass 𝐼 ⊔ 𝑁fail 𝐼
Так как наш граф расширитель, и 𝐼 ≤ 𝛼𝑛, то
𝑁pass 𝐼 + 𝑁fail 𝐼 = 𝑁 𝐼 ≥ 𝑐 𝐼 >3Δ4 ⋅ 𝐼
Из каждой вершины 𝑁 𝐼 в 𝐼 ведёт хотя бы одно ребро.
При этом из каждой вершины 𝑁pass 𝐼 в 𝐼 ведёт хотя бы два ребра
(чтобы «обмануть» уравнение, нужно инвертировать в нём чётное количество переменных)!
Коды на основе расширителей: исправление ошибок
• 𝑁pass 𝐼 + 𝑁fail 𝐼 >3Δ
4⋅ 𝐼
• # рёбер из 𝑁pass 𝐼 в 𝐼 ≥ 2 ⋅ 𝑁pass 𝐼
• # рёбер из 𝑁fail 𝐼 в 𝐼 ≥ 𝑁fail 𝐼
• Число рёбер между 𝐼 и 𝑁 𝐼 равно Δ ⋅ 𝐼 .
Из всего этого выводим
Δ ⋅ 𝐼 ≥ 𝑁fail 𝐼 + 2 ⋅ 𝑁pass 𝐼 > 𝑁fail 𝐼 + 2 ⋅3Δ4⋅ 𝐼 − 𝑁fail 𝐼
Отсюда 𝑁fail 𝐼 >Δ
2⋅ 𝐼
Коды на основе расширителей: исправление ошибок
Итак, общее число нарушенных уравнений, в которых участвуют
вершины-переменные из 𝐼, строго больше чем Δ
2⋅ 𝐼 .
Значит, в 𝐼 найдётся вершина, для которой нарушены больше половины тех уравнений, в которых она участвует.
То есть, даже не зная 𝐼, можно утверждать следующее: среди координат 𝒂′ есть хотя бы одна такая, обратив значение которой мы уменьшим число нарушенных уравнений.
Коды на основе расширителей: исправление ошибок
Лемма о результативном бите говорит, что если к очередному шагу алгоритма мы пришли с некодовым словом 𝒂′, находящимся от ближайшего кодового на расстоянии ≤ 𝛼𝑛, то очередной бит для изменения мы найдём.
Осталось доказать, что, начав со слова 𝒂′ на расстоянии ≤𝛼𝑛
4от
ближайшего кодового слова 𝒂, мы не «притянемся» случайно к какому-то другому кодовому слову 𝒃 ≠ 𝒂.
Коды на основе расширителей: исправление ошибок
До начала работы алгоритма 𝐼 ≤𝛼𝑛
4, и значит
#нарушенных уравнений ≤ Δ ⋅ 𝐼 ≤𝛼𝑛Δ
4
В ходе работы алгоритма число нарушенных уравнений уменьшается.
Пусть на очередном шаге получено слово 𝒂′′, и пусть 𝐼′′ — биты, в которых 𝒂′′ отличается от ближайшего кодового слова. Имеем
𝛼𝑛Δ
4≥ #наруш. ур. = 𝑁fail 𝐼
′′ >Δ
2⋅ 𝐼′′
отсюда 𝐼′′ < 𝛼𝑛2
.
Коды на основе расширителей: исправление ошибок
Итак, на каждом шаге алгоритма получаем слово, отличающееся от
ближайшего кодового менее чем в𝛼𝑛
2битах.
Т.к. на каждом шаге в слове меняется только один бит, и 𝑑 𝐶 >𝛼𝑛, то кодовое слово, к которому мы стремимся, всё время одно и то же.
(Т.к., если 𝑑 𝒂, 𝒃 > 𝑡, то, находясь в шаре 𝑆 𝑡 2 𝒂 и смещаясь на
один бит, мы не вывалимся в шар 𝑆 𝑡 2 𝒃 )