44
Теория кодирования МФТИ , осень 2013 Александр Дайняк www.dainiak.com

Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

Теория кодированияМФТИ, осень 2013

Александр Дайняк

www.dainiak.com

Page 2: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

Геометрическая интерпретация способности кода исправлять ошибкиШар радиуса 𝑟 с центром в 𝒂— это множество

𝑆𝑟 𝒂 ≔ 𝒃 ∣ 𝑑 𝒂, 𝒃 ≤ 𝑟

Если 𝑑 𝐶 ≥ 𝑑, то шары радиуса 𝑑 − 1 2 с центрами в кодовых словах не пересекаются:

𝒂 𝒃

Page 3: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

Задача о ближайшем кодовом слове (NCP — Nearest Codeword Problem)

Дано:

• Линейный код 𝐶 ⊂ 𝔽2𝑛 (заданный своей порождающей матрицей)

• Слово 𝒃 ∈ 𝔽2𝑛

Требуется найти 𝒂∗ ∈ 𝐶, такое, что 𝑑 𝒂∗, 𝒃 = min

𝒂∈𝐶𝑑 𝒂, 𝒃

Page 4: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

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

Теорема. Задача NCP является NP-трудной.

Для доказательства построим сведен́ия:

3-SAT → 1-in-3-SAT → NCP

3-SAT = 3-SATISFIABILITY = 3-ВЫПОЛНИМОСТЬ

1-in-3-SAT = exactly-1-in-3 SATISFIABILITY

Page 5: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

Задача 3-SAT

Дан набор скобок, в каждой из которых ровно три литерала (вида 𝑥 или 𝑥, где 𝑥— переменная)

Требуется определить, можно ли присвоить переменным значения0 и 1, так, чтобы в каждой скобке оказался хотя бы один истинный литерал.

Page 6: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

Задача 1-in-3-SAT

Дан набор скобок, в каждой из которых ровно три литерала (вида 𝑥 или 𝑥, где 𝑥— переменная)

Требуется определить, можно ли присвоить переменным значения0 и 1, так, чтобы в каждой скобке оказался ровно один истинный литерал.

Page 7: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

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

Page 8: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

3-SAT → 1-in-3-SAT

Утверждение. В скобке вида 𝑥 ∨ 𝑦 ∨ 𝑧 есть хотя бы один истинный литерал ⇔ найдутся такие значения 𝑝, 𝑞, 𝑟, 𝑠, чтобы в каждой из скобок 𝑥, 𝑝, 𝑞 𝑞, 𝑦, 𝑟 𝑟, 𝑠, 𝑧 был ровно один истинный литерал. Доказательство — разбором случаев:

𝒙, 𝒚, 𝒛 𝒙, 𝒑, 𝒒 𝒒, 𝒚, 𝒓 𝒓, 𝒔, 𝒛 𝒑, 𝒒, 𝒓, 𝒔

0,0,0 𝟏, 𝒑, 𝒒 𝒒, 𝟎, 𝒓 𝒓, 𝒔, 𝟏 ?!

0,0,1 𝟏, 𝒑, 𝒒 𝒒, 𝟎, 𝒓 𝒓, 𝒔, 𝟎 𝟎, 𝟎, 𝟏, 𝟎

0,1,0 𝟏, 𝒑, 𝒒 𝒒, 𝟏, 𝒓 𝒓, 𝒔, 𝟏 𝟎, 𝟎, 𝟎, 𝟎

0,1,1 𝟏, 𝒑, 𝒒 𝒒, 𝟏, 𝒓 𝒓, 𝒔, 𝟎 𝟎, 𝟎, 𝟎, 𝟏

1,0,1 𝟎, 𝒑, 𝒒 𝒒, 𝟎, 𝒓 𝒓, 𝒔, 𝟎 𝟎, 𝟏, 𝟎, 𝟏

1,1,1 𝟎, 𝒑, 𝒒 𝒒, 𝟏, 𝒓 𝒓, 𝒔, 𝟎 𝟏, 𝟎, 𝟎, 𝟏

Page 9: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

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𝑀 соответственно.

Page 10: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

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 отвечает за то, чтобы в каждой скобке было не более одного истинного литерала.

Page 11: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

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

Page 12: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

1-in-3-SAT → NCP

Матрица 𝐺2 ∈ 𝔽22𝑁×𝑀 выглядит так:

Строки 𝐺2 соответствуют переменным задачи 1-in-3-SAT и их отрицаниям, столбцы — скобкам.Л.к. строк 𝐺2 равна 𝟏 т. и т.т., когда для каждой скобки в л.к. входит ровно одна или ровно три строки, соответствующих литералам из этой скобки.

𝑥 →

𝑦 →

𝑧 →

𝑥, 𝑦, 𝑧

1

1

1

Page 13: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

1-in-3-SAT → NCP

Матрица 𝐺3 ∈ 𝔽22𝑁×3𝑀 выглядит так:

Строки 𝐺3 соответствуют переменным и их отрицаниям. Каждой скобке отвечают три последовательных столбца.

Если для каждой скобки в л.к. строк 𝐺3 входит ровно одна строка, соответствующая литералам из этой скобки, то вес этой л.к. равен 𝑀.

𝑥 →

𝑦 →

𝑧 →

𝑥, 𝑦, 𝑧

1

1

1

Page 14: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

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

коп

ии

коп

ии

Page 15: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

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

коп

ии

коп

ии

Page 16: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

1-in-3-SAT → NCP

Утверждение. Пусть вектор 𝒂 является линейной комбинацией строк построенной ранее матрицы 𝐺. Тогда 𝑑 𝒂, 𝒃 ≥ 𝑀, причём 𝑑 𝒂, 𝒃 = 𝑀 т. и т.т., когда вектор 𝒂 соответствует решению задачи 1-in-3-SAT.

(Утверждение вытекает из предыдущих рассмотрений)

Следовательно, задача 1-in-3-SAT полиномиально сводится кзадаче NCP.

Page 17: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

Задача о ближайшем кодовом слове (NCP — Nearest Codeword Problem)Замечание. Фактически, нами доказано, что NP-трудной является задача более слабая, чем NCP: «найти минимум расстояния от заданного слова до кодовых слова заданного линейного кода».

Замечание. Можно доказать NP-трудность такой задачи: «найти максимальный вес кодовых слов заданного линейного кода»

Page 18: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

Задача о ближайшем кодовом слове (NCP — Nearest Codeword Problem)Теорема (без доказательства).NP-трудной является следующая задача при любом фиксированном 𝛽: «для заданного линейного кода 𝐶 и слова 𝑏найти такое 𝑡, чтоmin

𝒂∈𝐶𝑑 𝒂, 𝒃 ≤ 𝑡 ≤ 𝛽 ⋅ min

𝒂∈𝐶𝑑 𝒂, 𝒃 »

(То есть решение задачи NCP трудно не только найти точно, но и приблизить с константной точностью.)

Page 19: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

Графы-расширители (expanders)

Двудольный граф с долями 𝐿 и 𝑅 называется 𝑛,𝑚, Δ, 𝛼, 𝑐 -расширителем, если

• 𝐿 = 𝑛, 𝑅 = 𝑚

• deg 𝑢 = Δ для любого 𝑢 ∈ 𝐿

• Для любого 𝑆 ⊆ 𝐿 при 𝑆 ≤ 𝛼𝑛 выполнено 𝑁 𝑆 ≥ 𝑐 ⋅ 𝑆 , где 𝑁 𝑆 — множество вершин в 𝑅, смежных с вершинами из 𝑆

𝐿

𝑅

Page 20: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

Существование расширителей

Утверждение.Пусть Δ ≥ 3, 𝑐 ≤ Δ − 2, 𝛼 < 1 и 𝑚 ≥ 4𝑛Δ2 𝛼.Тогда при всех натуральных 𝑛 существуют𝑛,𝑚, Δ, 𝛼, 𝑐 -расширители (и их много!)

Доказательство. Построим случайный двудольный граф 𝐺 и докажем, что он с большой вероятностью будет искомым.

Page 21: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

Существование расширителей

Зафиксируем множества 𝐿 и 𝑅 ( 𝐿 = 𝑛, 𝑅 = 𝑚) и проведём по Δ рёбер из каждой вершины в 𝐿 в выбираемые равновероятно и независимо вершины в 𝑅 (в итоге некоторые из этих Δ рёбер могут попасть в одни и те же вершины 𝑅).

Рёбра 𝐺 имеют естественную нумерацию, в том порядке, в котором мы определяли их концы в 𝑅 (сначала Δ рёбер из 1-й вершины 𝐿, затем Δ рёбер из 2-й вершины 𝐿 и т.д.).

Page 22: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

Существование расширителей

Если 𝐺 не является расширителем, то нашлось такое 𝑆 ⊂ 𝐿, для которого

𝑁 𝑆 < Δ − 2 ⋅ 𝑆

Оценим вероятность того, что фиксированное множество 𝑆оказалось таким «плохим» при случайном выборе концов рёбер из 𝑆 в 𝑅.

А затем оценим вероятность того, что 𝐺 не расширитель, по формуле

Pr 𝐺 плохой = Pr ∃плохое 𝑆 ≤

𝑆

Pr 𝑆 плохое

Page 23: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

Существование расширителей

Каждое ребро вида 𝑢, 𝑣 , где 𝑢 ∈ 𝑆, 𝑣 ∈ 𝑁 𝑆 , отнесём к одному из двух типов:

• Если никакое ребро из 𝑆 в 𝑁 𝑆 с меньшим номером не ведёт в 𝑣, то ребро 𝑢, 𝑣 назовём «первопроходцем»

• В противном случае, назовём 𝑢, 𝑣 «дублем»

Очевидно, всего будет 𝑁 𝑆 «первопроходцев» и Δ ⋅ 𝑆 − 𝑁 𝑆«дублей».

Page 24: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

Существование расширителей

Всего 𝑁 𝑆 «первопроходцев» и Δ ⋅ 𝑆 − 𝑁 𝑆 «дублей».

Мы предполагаем, что 𝑁 𝑆 < Δ − 2 ⋅ 𝑆 , а значит «дублей» будет не менее 2 ⋅ 𝑆 .

Обозначим 𝑠 ≔ 𝑆 . Вероятность того, что среди рёбер из 𝑆 в 𝑁 𝑆 есть 2𝑠 дублей

≤Δ ⋅ 𝑠

2𝑠

Δ ⋅ 𝑠

𝑚

2𝑠

Число способов выбратьрёбра-«дубли»

Верхняя оценка вероятности попадания конца «дубля» в одну из вершин в 𝑁 𝑆

Page 25: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

Существование расширителей

Вероятность того, что заданное множество 𝑆 ⊂ 𝐿 «плохо расширяется», не превосходит

Δ ⋅ 𝑆

2 𝑆

Δ ⋅ 𝑆

𝑚

2 𝑆

Значит,

Pr 𝐺 не расширитель ≤ 𝑆⊂𝐿1≤ 𝑆 ≤𝛼𝑛

Pr 𝑆 «плохое» ≤

1≤𝑠≤𝛼𝑛

𝑛

𝑠

Δ ⋅ 𝑠

2𝑠

Δ ⋅ 𝑠

𝑚

2𝑠

Page 26: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

Существование расширителей

С учётом оценки 𝑎𝑏< 𝑒𝑎

𝑏

𝑏получаем

Pr 𝐺 не расширитель ≤

1≤𝑠≤𝛼𝑛

𝑛

𝑠

Δ𝑠

2𝑠

Δ𝑠

𝑚

2𝑠

1≤𝑠≤𝛼𝑛

𝑒𝑛

𝑠

𝑠 𝑒Δ𝑠

2𝑠

2𝑠Δ𝑠

𝑚

2𝑠

=

1≤𝑠≤𝛼𝑛

𝑒3Δ4𝑠𝑛

4𝑚2

𝑠

1≤𝑠≤𝛼𝑛

𝑒3Δ4𝛼𝑛2

4𝑚2

𝑠

Page 27: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

Существование расширителей

Pr 𝐺 не расширитель ≤

1≤𝑠≤𝛼𝑛

𝑒3Δ4𝛼𝑛2

4𝑚2

𝑠

При 𝑚 ≥ 4𝑛Δ2 𝛼 выполняется неравенство𝑒3Δ4𝛼𝑛2

4𝑚2<1

3Отсюда

Pr 𝐺 не расширитель ≤

1≤𝑠≤𝛼𝑛

1

3

𝑠

<1

2

Page 28: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

Существование расширителей

Итак, случайный двудольный мультиграф будет расширителем с вероятностью не менее 1

2.

Чтобы от мультиграфа перейти к обычному графу, достаточно перенаправить концы рёбер-дублей в произвольные вершины 𝑅.

Свойства расширительности от этого могут только улучшиться.

Page 29: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

Коды на основе двудольных графов

Код на основе двудольного графа — это линейный двоичный код, строящийся так:

• Вершинам из 𝐿 соответствуют переменные 𝑥1, … , 𝑥𝑛• Вершинам из 𝑅 соответствуют уравнения: если в вершину 𝑣 ∈ 𝑅

входят рёбра из вершин 𝑢𝑖1 , … , 𝑢𝑖𝑙, то уравнение будет𝑥𝑖1 +⋯+ 𝑥𝑖𝑙 = 0

Искомый код состоит из всех слов 𝑥1…𝑥𝑛 , удовлетворяющих системе этих уравнений.

Page 30: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

Коды на основе двудольных графов

Например, для графа

соответствующий код будет выглядеть так:𝑥1𝑥2𝑥3𝑥4 ∣ 𝑥1 + 𝑥2 + 𝑥4 = 0, 𝑥1 + 𝑥3 = 0

Page 31: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

Коды на основе двудольных графов

Утверждение.

Код, построенный по двудольному графу, в котором 𝐿 = 𝑛 и 𝑅 = 𝑚,

является двоичным линейным 𝑛, 𝑘, 𝑑 -кодом, где 𝑘 ≥ 𝑛 −𝑚.

Доказательство:

Код является множеством решений системы из𝑚 уравнений с 𝑛

неизвестными.

Значит, он образует линейное пространство размерности не менее чем

𝑛 −𝑚.

Page 32: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

Коды на основе расширителей: кодовое расстояниеТеорема. (M. Sipser, D.A. Spielman)Если 𝑐 > Δ

2, и 𝐶 — код, построенный на основе

(𝑛,𝑚, Δ, 𝛼, 𝑐)-расширителя, то 𝑑 𝐶 > 𝛼𝑛.

Доказательство: от противного.

Допустим, что 𝑑 𝐶 ≤ 𝛼𝑛. Тогда найдётся слово 𝒂 ∈ 𝐶, такое, что 𝒂 ≠ 𝟎 и 𝒂 ≤ 𝛼𝑛.Пусть 𝐼 ≔ 𝑢1, … , 𝑢 𝒂 — вершины из 𝐿, соответствующие единичным координатам 𝒂.

Page 33: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

Коды на основе расширителей: кодовое расстояниеТ.к. наш граф — расширитель, и 𝒂 ≤ 𝛼𝑛, то

𝑁 𝐼 ≥ 𝑐 ⋅ 𝐼 > Δ2⋅ 𝐼

Всего из 𝐼 в 𝑁 𝐼 ведёт ровно Δ ⋅ 𝐼 рёбер.

Поэтому среднее число рёбер, входящее в вершины 𝑁 𝐼 из 𝐼, равно

Δ ⋅ 𝐼

𝑁 𝐼<Δ ⋅ 𝐼Δ2⋅ 𝐼= 2

Значит, в 𝑁 𝐼 найдётся вершина, в которую входит ровно одно ребро из 𝐼.

Page 34: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

Коды на основе расширителей: кодовое расстояние

В 𝑁 𝐼 найдётся вершина, в которую входит ровно одно ребро из 𝐼.

Значит, среди задающих код уравнений есть такое уравнение 𝑥𝑖1 +⋯+ 𝑥𝑖𝑙 = 0, в котором ровно одна из переменных на слове 𝒂

обращена в единицу.

Но этого не может быть в предположении, что 𝒂 является решением этого уравнения. Противоречие.

Page 35: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

Коды на основе расширителей: исправление ошибок

Теорема. (M. Sipser, D.A. Spielman)

Пусть 𝑐 > 3Δ4

, и 𝐶 — код, построенный на основе

(𝑛,𝑚, Δ, 𝛼, 𝑐)-расширителя.

Пусть слово 𝒂′ получено из некоторого кодового слова 𝒂

искажением не более чем 𝛼𝑛

4битов.

Тогда восстановить 𝒂, зная 𝒂′, можно с помощью следующего алгоритма…

Page 36: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

Коды на основе расширителей: исправление ошибок

Алгоритм Сипсера—Шпильмана:

1. Если 𝒂′ ∈ 𝐶, то выводим 𝒂′ и завершаем работу.

2. Если 𝒂′ ∉ 𝐶, то для 𝒂′ некоторые из уравнений (отвечающих вершинам в 𝑅) нарушены. Считаем поочерёдно для каждого бита 𝒂′ число нарушенных уравнений, в которых он участвует. Если их > Δ 2, инвертируем этот бит и идём на шаг 1.

Page 37: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

Коды на основе расширителей: исправление ошибок

Лемма «о результативном бите».

Пусть 𝑐 > 3Δ4

, и 𝐶 — код, построенный на основе

(𝑛,𝑚, Δ, 𝛼, 𝑐)-расширителя.

Пусть 𝒂′ ∉ 𝐶, но при этом 𝑑 𝒂, 𝒂′ ≤ 𝛼𝑛 для некоторого 𝒂 ∈ 𝐶.

Тогда в 𝒂′ найдётся бит, обращение которого на противоположный строго уменьшает число невыполненных для 𝒂′ уравнений.(Имеются в виду уравнения, построенные по графу-расширителю)

Page 38: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

Коды на основе расширителей: исправление ошибок

Пусть 𝒂′— не кодовое слово, находящееся от ближайшего кодового на расстоянии ≤ 𝛼𝑛.

Пусть 𝐼 ⊂ 𝐿— множество вершин, соответствующих координатам, в которых 𝒂′ отличается от ближайшего кодового слова.

Обозначим через 𝑁pass 𝐼 вершины из 𝑁 𝐼 , соответствующие

уравнениям, выполненным на слове 𝒂′.

Аналогично 𝑁fail 𝐼 — вершины из 𝑁 𝐼 , отвечающие нарушенным уравнениям.

Page 39: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

Коды на основе расширителей: исправление ошибок

• 𝑁 𝐼 = 𝑁pass 𝐼 ⊔ 𝑁fail 𝐼

Так как наш граф расширитель, и 𝐼 ≤ 𝛼𝑛, то

𝑁pass 𝐼 + 𝑁fail 𝐼 = 𝑁 𝐼 ≥ 𝑐 𝐼 >3Δ4 ⋅ 𝐼

Из каждой вершины 𝑁 𝐼 в 𝐼 ведёт хотя бы одно ребро.

При этом из каждой вершины 𝑁pass 𝐼 в 𝐼 ведёт хотя бы два ребра

(чтобы «обмануть» уравнение, нужно инвертировать в нём чётное количество переменных)!

Page 40: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

Коды на основе расширителей: исправление ошибок

• 𝑁pass 𝐼 + 𝑁fail 𝐼 >3Δ

4⋅ 𝐼

• # рёбер из 𝑁pass 𝐼 в 𝐼 ≥ 2 ⋅ 𝑁pass 𝐼

• # рёбер из 𝑁fail 𝐼 в 𝐼 ≥ 𝑁fail 𝐼

• Число рёбер между 𝐼 и 𝑁 𝐼 равно Δ ⋅ 𝐼 .

Из всего этого выводим

Δ ⋅ 𝐼 ≥ 𝑁fail 𝐼 + 2 ⋅ 𝑁pass 𝐼 > 𝑁fail 𝐼 + 2 ⋅3Δ4⋅ 𝐼 − 𝑁fail 𝐼

Отсюда 𝑁fail 𝐼 >Δ

2⋅ 𝐼

Page 41: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

Коды на основе расширителей: исправление ошибок

Итак, общее число нарушенных уравнений, в которых участвуют

вершины-переменные из 𝐼, строго больше чем Δ

2⋅ 𝐼 .

Значит, в 𝐼 найдётся вершина, для которой нарушены больше половины тех уравнений, в которых она участвует.

То есть, даже не зная 𝐼, можно утверждать следующее: среди координат 𝒂′ есть хотя бы одна такая, обратив значение которой мы уменьшим число нарушенных уравнений.

Page 42: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

Коды на основе расширителей: исправление ошибок

Лемма о результативном бите говорит, что если к очередному шагу алгоритма мы пришли с некодовым словом 𝒂′, находящимся от ближайшего кодового на расстоянии ≤ 𝛼𝑛, то очередной бит для изменения мы найдём.

Осталось доказать, что, начав со слова 𝒂′ на расстоянии ≤𝛼𝑛

4от

ближайшего кодового слова 𝒂, мы не «притянемся» случайно к какому-то другому кодовому слову 𝒃 ≠ 𝒂.

Page 43: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

Коды на основе расширителей: исправление ошибок

До начала работы алгоритма 𝐼 ≤𝛼𝑛

4, и значит

#нарушенных уравнений ≤ Δ ⋅ 𝐼 ≤𝛼𝑛Δ

4

В ходе работы алгоритма число нарушенных уравнений уменьшается.

Пусть на очередном шаге получено слово 𝒂′′, и пусть 𝐼′′ — биты, в которых 𝒂′′ отличается от ближайшего кодового слова. Имеем

𝛼𝑛Δ

4≥ #наруш. ур. = 𝑁fail 𝐼

′′ >Δ

2⋅ 𝐼′′

отсюда 𝐼′′ < 𝛼𝑛2

.

Page 44: Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана

Коды на основе расширителей: исправление ошибок

Итак, на каждом шаге алгоритма получаем слово, отличающееся от

ближайшего кодового менее чем в𝛼𝑛

2битах.

Т.к. на каждом шаге в слове меняется только один бит, и 𝑑 𝐶 >𝛼𝑛, то кодовое слово, к которому мы стремимся, всё время одно и то же.

(Т.к., если 𝑑 𝒂, 𝒃 > 𝑡, то, находясь в шаре 𝑆 𝑡 2 𝒂 и смещаясь на

один бит, мы не вывалимся в шар 𝑆 𝑡 2 𝒃 )