Задача о ближайшем кодовом слове. Коды...

Preview:

DESCRIPTION

Сложность задачи декодирования линейных кодов: задача NCP (задачи о ближайшем кодовом слове). Графы-расширители. Вероятностное доказательство существования расширителей. Коды на основе двудольных графов. Кодовое расстояние кодов на основе расширителей. Алгоритм декодирования Сипсера—Шпильмана.

Citation preview

Теория кодированияМФТИ, осень 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 𝒃 )

Recommended