Конспект лекций по теории кодирования

66
Конспект лекций по теории кодирования Александр Дайняк Актуальная версия файла доступна на www . dainiak . com Распространяется на условиях лицензии Creative Commons «Attribution-NonCommercial-ShareAlike»

Upload: alex-dainiak

Post on 16-Jun-2015

637 views

Category:

Education


1 download

DESCRIPTION

Собранные в один файл конспекты лекций по теории кодов, исправляющих ошибки. Лекции читаются на факультете ФИВТ МФТИ. Последняя версия этого файла всегда доступна на www.dainiak.com

TRANSCRIPT

Конспект лекций по теории кодирования

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

Актуальная версия файла доступна на www . dainiak . com

Распространяется на условиях лицензии Creative Commons «Attribution-NonCommercial-ShareAlike»

Моим родителям, сумевшим передать мне то, что систематическому кодированию не поддаётся

www.dainiak.com

ОглавлениеВведение.........................................................................................................................................................5

1. Алфавитное кодирование..........................................................................................................................5

1.1. Математическая постановка, однозначность кодов.........................................................................5

1.1.1. Критерий однозначности алфавитного кодирования................................................................6

1.1.2. Оценка длины неоднозначно декодируемых слов....................................................................7

1.2. Коды с минимальной избыточностью...............................................................................................7

1.2.1. Свойства оптимальных кодов......................................................................................................9

2. Коды, исправляющие ошибки.................................................................................................................10

2.1. Модель канала с ошибками.............................................................................................................10

2.2. Основные определения и обозначения..........................................................................................10

2.3. Границы мощностей кодов...............................................................................................................12

2.3.1. Граница Хемминга (граница сферической упаковки)..............................................................12

2.3.2. Граница Синглтона......................................................................................................................12

2.3.3. Граница Плоткина.......................................................................................................................13

2.3.4. Граница Элайеса—Бассалыго.....................................................................................................13

3. Линейные коды........................................................................................................................................ 15

3.1. Основные понятия.............................................................................................................................15

3.2. Теорема Варшамова—Гилберта.......................................................................................................17

3.3. Двоичный код Хемминга.................................................................................................................. 18

3.4. Границы мощностей для линейных кодов......................................................................................19

3.4.1. Граница Синглтона для линейных кодов..................................................................................19

3.4.2. Граница Грайсмера—Соломона—Штиффлера.........................................................................19

3.5. Графы-расширители и коды на их основе.......................................................................................20

3.5.1. Графы-расширители....................................................................................................................20

3.5.2. Коды на основе расширителей..................................................................................................21

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

4. Коды Рида—Соломона и Рида—Маллера.............................................................................................23

4.1. Коды Рида—Соломона (I.S. Reed, G. Solomon)................................................................................23

4.1.1. Определение...............................................................................................................................23

4.1.2. Декодирование RS-кодов...........................................................................................................24

4.2. Коды Рида—Маллера (I.S. Reed, D.E. Muller)...................................................................................25

4.2.1. Определение...............................................................................................................................25

4.2.2. Кодовое расстояние....................................................................................................................25

4.2.3. Декодирование RM-кодов.........................................................................................................26

4.3. Понятие об алгеброгеометрических кодах (кодах В.Д. Гоппы)......................................................28www.dainiak.com

5. Циклические коды................................................................................................................................... 28

5.1. Определение..................................................................................................................................... 28

5.2. Порождающий многочлен................................................................................................................29

5.3. Порождающая и проверочная матрицы..........................................................................................30

5.4. Граница БЧХ и коды БЧХ................................................................................................................... 32

5.4.1. Граница БЧХ.................................................................................................................................32

5.4.2. Коды БЧХ......................................................................................................................................33

5.5. Циклическое представление кодов Хемминга................................................................................34

5.6. Восстановление синхронизации для смежных классов циклических кодов................................34

5.6.1. Задача восстановления синхронизации....................................................................................34

6. Совершенные коды..................................................................................................................................35

6.1. Совершенство кодов Голея и Хемминга..........................................................................................36

6.2. Некоторые теоремы о совершенных кодах.....................................................................................36

6.2.1. Доказательство теоремы Васильева при q=2..........................................................................37

7. Теоремы Шеннона о скорости кодирования.........................................................................................37

7.1. Шенноновская ёмкость графов........................................................................................................37

7.2. Теоремы Шеннона для каналов с фиксированной вероятностью ошибок...................................40

7.2.1. Теоремы Шеннона......................................................................................................................40

7.2.2. Доказательство теоремы о существовании хороших кодов....................................................41

8. Некоторые специальные семейства кодов............................................................................................42

8.1. Коды Варшамова—Тененгольца......................................................................................................42

8.1.1. Исправление одной ошибки выпадения в кодах Варшамова—Тененгольца........................43

8.1.2. Исправление одной ошибки вставки в кодах Варшамова—Тененгольца..............................43

8.2. Матрицы Адамара и коды Адамара.................................................................................................44

8.2.1. Матрицы Адамара...................................................................................................................... 44

8.2.2. Конструкция Пэли на основе квадратичных вычетов...............................................................45

8.2.3. Коды Адамара............................................................................................................................. 46

8.3. Каскадные коды.................................................................................................................................47

8.3.1. Определение...............................................................................................................................47

8.3.2. Асимптотически хорошие коды с полиномиальным декодированием.................................47

9. О приложениях теории кодирования в информатике..........................................................................48

9.1. Коммуникационная сложность........................................................................................................48

9.2. Криптография с открытым ключом: криптосистема МакЭлиса (R. McEliece ’1978)......................49

9.3.l-однородные множества и дерандомизация.................................................................................49

9.4. Задача о разделении секрета...........................................................................................................51

Литература.................................................................................................................................................... 52

www.dainiak.com

или ?

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

Однозначность. По закодированному сообщению нужно уметь однозначно восстанавливать исходное. Это требование обязательно.

Минимальная избыточность. Закодированное сообщение должно при прочих равных условиях иметь как можно меньший объём для скорейшей передачи по каналам связи.

Устойчивость к ошибкам. Возможность расшифровать закодированное сообщение даже при возникновении ошибок при его передаче.

Теории кодов, исправляющих ошибки, будет посвящено основное внимание, однако начнём мы с рассмотрения первых двух пунктов.

1. Алфавитное кодированиеЧтобы хранить в компьютере тексты на естественном языке, нужно их кодировать. Простейший подход состоит в следующем: каждой букве языка и знаку препинания сопоставим по двоичному слову, и тогда текст закодируем, записав друг за другом коды отдельных букв.

1.1. Математическая постановка, однозначность кодов

Даны алфавиты A={a1 ,…,an } и B= {b1 ,… ,bq }. Алфавит A — кодируемый, «естественный»; алфавит B — кодовый (например, B= {0,1 }). Алфавитное кодирование — это отображение ϕ :A¿→B¿ , такое, что для любых a i1 ,…,air выполнено ϕ (a i1…a ir)=ϕ (ai1 )…ϕ (a ir).

Видно, что достаточно определить ϕ на отдельных символах алфавита A:ϕ (a1 )=B1

⋮ϕ (an )=Bn

Слова B1 ,…, Bn называются кодовыми, совокупность {B1 ,…,Bn } называется кодом.

Кодирование ϕ называется однозначным, если ϕ (w ' )≠ϕ (w ' ' ) при w '≠w ' '. В противном случае кодирование почти бесполезно. Для однозначности необходимо, чтобы все Bi были различны (и везде далее мы будем это предполагать), но этого недостаточно. Однозначность никак не зависит от алфавита A, а целиком определяется набором {B1 ,…,Bn }.Кодирование однозначное т. и т.т., когда никакое слово b i1bi2…bir нельзя двумя разными способами разбить на кодовые слова:

Каждое из перечисленных условий является достаточным для однозначности кода:

Равномерность: |B1|=|B2|=…=|Bn|. Свойство префикса: ∄ i , j ( i≠ j иB i=B jw ,гдеw∈B

¿). Свойство суффикса: ∄ i , j ( i≠ j иB i=w B j , гдеw∈B¿).

www.dainiak.com

Префиксные коды называют ещё мгновенными, так как закодированные с их помощью сообщения можно декодировать по мере приёма, без задержек.

Пример того, что равномерность, префиксность и суффиксность не являются необходимыми условиями для однозначности:

A={a1 , a2 } ,B= {0,1 },ϕ (a1 )=0 ,ϕ (a2)=010.

1.1.1. Критерий однозначности алфавитного кодирования

В этом разделе мы выведем критерий, позволяющий по любому заданному кодированию (или, что то же, набору кодовых слов) определять, однозначно ли оно. Для этого подробнее рассмотрим свойства неоднозначных кодов.

Код неоднозначен, если найдётся слово B∈ B¿, которое не менее чем двумя разными способами можно разбить на кодовые слова. Рассмотрим самое короткое такое «неоднозначное» B и два его различных разбиения на кодовые слова:

Заметим, что точки «верхнего» и «нижнего» разбиений, кроме крайних, все различны, иначе слово B можно было бы укоротить:

Также, среди отрезков B, концы которых принадлежат разным разбиениям, нет кодовых слов, иначе B также можно было бы укоротить:

Минимальные отрезки слова B, концы которых принадлежат разным разбиениям, назовём промежуточными.

Первый промежуточный отрезок (п.о.) получается, если из начала некоторого кодового слова «отнять» некоторую последовательность кодовых слов. Любой из остальных отрезков получается, если из некоторого кодового слова отнять предыдущий отрезок и последовательность (возможно, пустую) кодовых слов. Последний п.о. таков, что если его отнять из начала некоторого кодового слова, получится последовательность кодовых слов.

Обозначим через w1,…,w k все промежуточные отрезки. Через β будем обозначать последовательность (возможно, пустую) кодовых слов. Имеем: ∃ i , β (Bi=β w1 )∃ i , β (Bi=w1β w2)⋮∃ i , β (Bi=wk−1 βw k )∃ i , β (Bi=wk β )

Наоборот, пусть нашлись непустые слова w1,…,w k∈B¿, кодовые слова Bi1,…, Bik+1 и

последовательности кодовых слов β1,…, βk+1, такие, что выполнены соотношенияBi1=β1w1Bi2=w1β2w2⋮ Bik+1=w k βk +1

Тогда слово β1w1β2w2…w k−1βkw k βk+1 можно разбить на кодовые слова двумя способами.Bi1=ε β1w1Bi2=w1 β2w2⋮ Bik+1=w k βk +1 ε

Пример:

www.dainiak.com

(пустая)

(пустая)

Сказанное выше позволяет нам теперь сформулировать следующее утверждение.

Критерий однозначности алфавитного кодирования (Ал. А. Марков ’1963)Код C={B1 ,…,Bn } не однозначный т. и т.т., когда найдутся непустые слова w1,…,w k∈B

¿∖C, кодовые слова Bi1,…, Bik+1 и последовательности кодовых слов β1,…, βk+1, такие, что k ≥1 и

выполнены соотношенияBi1=β1w1Bi2=w1β2w2⋮ Bik+1=w k βk +1(или k=0 и Bi1=β1, где β1 составлено не менее чем из двух кодовых

слов).

1.1.2. Оценка длины неоднозначно декодируемых словЧерез ε будем обозначать пустое слово. Пусть C={B1 ,…,Bn } — код, который нужно проверить на однозначность. Построим орграф GC= (V , E ), где V≔{ε, а также все слова из B¿∖C, являющиеся началами и концами кодовых слов},

E≔ {(α ' , α ' ' ) ∣∃ β∈C ¿ ((α ' β α ' '∈C )∧ ( (β≠ ε )∨ ((α '≠ ε )∧ (α ' ' ≠ ε ))) )}.Доказанный нами критерий однозначности можно переформулировать так: код C однозначный т. и

т.т., когда в орграфе GC нет (ориентированного) цикла, проходящего через вершину ε . Имеем|V|≤1+∑

B∈C(|B|−1 )≤|C|⋅max

B∈C|B|.

Получим отсюда оценку длины минимального неоднозначно декодируемого слова. Если в GC есть

цикл через ε , то есть и цикл, число вершин в котором не больше, чем |C|⋅maxB∈C

|B|. Рассмотрим

соответствующее этому циклу неоднозначно декодируемое слово W неодн .=β1w1 β2w2…wk−1 βkwk βk+1. Каждая пара β iwi умещается в некотором кодовом слове, поэтому

|W неодн.|≤ (k+1 ) ⋅maxB∈C

|B|≤|C|⋅ (maxB∈C|B|)2 .

Из предыдущих рассуждений вытекает следующая оценка на длину неоднозначно декодируемого слова.Теорема. (А.А. Марков)Если C — неоднозначный код, длина слов которого не превосходит l, то найдётся слово длины не более |C|⋅ l2, декодируемое неоднозначно.

1.2. Коды с минимальной избыточностью

Обычно, кодируемые символы a1 ,…,an встречаются в кодируемых сообщениях не одинаково часто, а с разными частотами. Например, в английском языке буква e встречается примерно в 180 раз чаще, чем z. Естественно при построении кодирования ϕ кодировать более частые буквы более короткими словами.

Поставим задачу математически. Пусть в кодируемых сообщениях символы a1 ,…,an встречаются с частотами p1 ,…, pn соответственно. Считаем, что ∑ pi=1 и ∀ i pi>0.

Пусть символ a i кодируется словом Bi. Рассмотрим сообщение A∈ A¿. Каждый из символов a i встретится в |A| примерно |A|⋅ pi раз. Отсюда

|ϕ ( A )|≈∑i

|A|⋅ p i⋅|Bi|=|A|⋅∑i

pi ⋅|Bi|.

www.dainiak.com

То есть «среднестатистическое» сообщение A при кодировании «разбухает» примерно в ∑i

pi|Bi|

раз. Величина ∑i

pi|Bi| называется коэффициентом избыточности (к.и.) кода.

Задача построения кода с минимальной избыточностью: по заданным p1 ,…, pn построить однозначно декодируемый код B1 ,…. ,Bn∈B

¿, для которого коэффициент избыточности минимален.

Такой код называется кодом с минимальной избыточностью (к.м.и.) для набора частот p1 ,…, pn.

Все слова кода не получится взять слишком короткими, иначе код не будет однозначным. Количественно это выражает следующая теорема.

Теорема. (L.G. Kraft, B. McMillan)Пусть l1 ,…, ln — длины слов однозначного кода в алфавите B, где |B|=q. Тогда выполнено

неравенство

∑i=1

n

q−li≤1.

Доказательство. Пусть B1 ,…, Bn — однозначный код в q-значном алфавите, и пусть |Bi|=li. Пусть t∈N . Положим L≔ t ⋅max

ili . Рассмотрим выражение

(∑i=1

n

q−li)t

= ∑1≤i1 ,…, it≤n

q−( li1+…+lit )=∑

l=1

L

slq−l ,где sl — количество наборов (i1 ,… ,it ), таких, что li1+…+lit=l.

Каждому набору (i1 ,… ,it )∈S l поставим в соответствие слово Bi1…Bit∈B¿. Тогда разным наборам из

Sl соответствуют разные слова (т.к. код однозначный). Отсюда sl≤ql и следовательно

(∑i=1

n

q−li)t

=∑l=1

L

slq−l≤∑

l=1

L

1=L .

Получили, что для любого t∈N выполнено ∑i=1

n

q−li≤(t ⋅maxi li)1 /t . Устремляя t к бесконечности,

получаем ∑i=1

n

q−li≤1 .

Теорема доказана.

Докажем обратное утверждение:Теорема.

Пусть натуральные числа l1 ,…, ln и q таковы, что ∑i=1

n

q−li≤1. Тогда существует префиксный код

B1 ,…, Bn в q-значном алфавите, такой, что |Bi|=li.Доказательство. Будем считать, что среди l1 ,…, ln всего m различных, и при этом l1<…<lm. Для каждого j∈ [1 ,m ] положим n j≔|{i∈ [1, n ] ∣li=l j }|. Тогда из условия теоремы следует неравенство

∑j=1

m

n jq−l j≤1. Отсюда

∑j=1

k

n jq−l j≤1для любого k∈ [1 ,m ]. Домножив обе части последнего неравенства на q lk, получим

q lk≥∑j=1

k

n jqlk−l j=nk+∑

j=1

k−1

n jqlk−l j .

Следовательно, для любого k∈ [1 ,m ] имеем nk≤qlk−∑

j=1

k−1

n jqlk−l j. Будем строить префиксный код,

сначала выбирая n1 слов длины l1, затем n2 слов длины l2, и т.д. Пусть уже набраны все кодовые

www.dainiak.com

слова с длинами l1 ,…, lk−1. Слов длины lk, для которых выбранные кодовые слова являются префиксами, не более n1q

lk−l1+…+nk−1qlk−lk−1, то есть «пригодных для выбора» слов длины lk не

меньше, чем q lk−(n1qlk−l1+…+nk−1qlk−lk−1). Из неравенства nk≤q

lk−∑j=1

k−1

n jqlk−l j вытекает, что мы сможем

выбрать nk слов длины lk, так, чтобы никакие из ранее выбранных слов не были их префиксами. По индукции получаем утверждение теоремы.

Теорема доказана.

Следствие из двух доказанных теорем.Для любого однозначного кода существует префиксный код в том же алфавите и с теми же длинами кодовых слов. Значит, к.м.и. можно искать только среди префиксных кодов.

1.2.1. Свойства оптимальных кодов

Лемма о монотонности длин слов к.м.и.Если B1 ,…, Bn — к.м.и. для набора частот p1 ,…, pn, то

∀ i , j ( pi> p j⇒|B i|≤|B j|) .Доказательство. В противном случае, поменяв Bi и B j местами, получили бы код с

коэффициентом избыточности

∑i=1

n

pi|Bi|− (p i−p j ) (|B i|−|B j|)<∑i=1

n

pi|Bi|.

Лемма доказана.

Теорема «о редукции». (D.A. Huffman)Пусть p1≥…≥ pn−1≥ pn и p≔ pn−1+ pn. Если B1 ,…, Bn−2 ,B∈ {0,1 }¿ — префиксный к.м.и. для частот p1 ,…, pn−2 , p, то B1 ,…, Bn−2 ,B0 ,B1 — префиксный к.м.и. для частот p1 ,…, pn.

Доказательство. Пусть к.и. кода B1 ,…, Bn−2 ,B для частот p1 ,…, pn−2 , p равен k . К.и. кода B1 ,…, Bn−2 ,B0 ,B1 для частот p1 ,…, pn равен

∑i=1

n−2

pi|Bi|+( pn−1+ pn ) (|B|+1 )=∑i=1

n−2

pi|B i|+p|B|+ p=k+ p .

Допустим, что нашёлся код B1' ,…, Bn

' , к.и. которого для набора частот p1 ,…, pn равен k '<k+p, и

придём к противоречию. Б.о.о. будем считать код {Bi' }i=1n

префиксным к.м.и. для набора p1 ,…, pn. Т.к. p1≥…≥ pn, то |B1' |≤…≤∨Bn'∨¿.

Пусть Bn'=B' 0, где B' — некоторое слово. Заметим, что B'∉ {Bi' }i=1

n и B' является префиксом одного из

слов B1' ,…, Bn−1

' . Б.о.о. будем считать, что Bn−1' =B'1. Тогда код B1

' ,…, Bn−2' ,B' префиксный. К.и. кода

B1' ,…, Bn−2

' ,B' для набора частот p1 ,…, pn−2 , p равен

( pn−1+ pn )|B'|+∑i=1

n−2

pi∨Bi'∨¿=∑

i=1

n

pi∨Bi'∨¿−( pn−1+ pn)=k

'−p<k ,¿¿— противоречие с тем, что код

B1 ,…, Bn−2 ,B является к.м.и. для частот p1 ,…, pn−2 , p.

Теорема доказана.

2. Коды, исправляющие ошибки2.1. Модель канала с ошибками

Основная модель канала связи:

www.dainiak.com

Канал связи(в котором

могут происходить

ошибки)

КодерДекоде

р

Исходное сообщение

Закодированное сообщениеПринятое

сообщение(возможно, с ошибками)

Декодированное сообщение(после исправления ошибок);должно совпасть с исходным

Чаще всего рассматривают следующие типы ошибок:

Ошибки замещения: муха → мукаo Симметричные (если символ x может замениться на y, то возможно и обратное)o Несимметричные

Ошибки стирания: муха → му?а Ошибки выпадения: муха → уха Ошибки вставки: мука → мурка Комбинации перечисленных типов

Всегда задаются ограничения на «ненадёжность» канала. Ограничения можно разделить на два типа:

вероятностные (например, вероятность возникновения ошибки в одном символе сообщения), детерминированные (например, верхняя оценка числа ошибок на одно сообщение).

Естественный язык весьма устойчив к ошибкам: «веть ву мжте прчтттть эт ткст п поняц го!». Причины этой устойчивости: избыточность (например, наличие «малоинформативных» гласных) и разреженность («вблизи» слов обычно нет других слов). Если эти свойства где-то нарушаются, то ошибки исправлять тяжело: сравните чемодан зарыт и чемодан закрыт.

2.2. Основные определения и обозначения

Пусть Aq — кодовый алфавит, алфавит канала, и пусть |Aq|=q. Будем называть q-ичным кодом любое подмножество C⊆ Aq

n, где n — длина кода (длина кодовых слов), |C| — мощность кода (число кодовых слов).

Чаще всего рассматривают двоичные коды, т.е. когда q=2 и Aq={0,1 }. Таким же важным является случай, когда Aq является полем. В этих случаях для произвольного слова a будем через ‖a‖ обозначать вес этого слова, то есть величину ¿ {i ∣ai≠0}.Пусть a и b — слова в алфавите канала. Обозначим через ~d (a ,b ) минимальное число ошибок, в результате которых a может перейти в b.

Способ кодирования позволяет обнаруживать k ошибок, если для любых различных кодовых сообщений a ' и a ' ' при передаче в канал a ' на выходе из канала не может получиться a ' ' (если в канале произошло не более k ошибок). Иначе говоря, ~d (a ' , a' ' )>k .

Способ кодирования позволяет исправлять k ошибок, если при передаче в канал различных кодовых сообщений a ' и a ' ' на выходе из канала будут получаться различные сообщения (при

условии, что с каждым отдельным сообщением в канале происходит не более k ошибок). Формально:

∄a' , a ' '∈C ,a : a'≠a' '∧~d (a' , a )≤k∧~

d (a' ' , a )≤k .Особенно удобно, когда ~d является метрикой:

∀a ,b~d (a ,b )=~

d (b ,a ) — симметричность ∀a≠b~

d (a ,b )>0 ∀a~

d (a ,a )=0

www.dainiak.com

∀a ,b , c~d (a ,b )≤~

d (a , c )+~d (c ,b ) — неравенство треугольника

Так бывает не всегда. Например, если в канале могут происходить лишь ошибки вставки, то при a≠b по крайней мере одна из двух величин ~d (a ,b ) ,~d (b ,a ) вовсе не определена.

Пусть ~d (…,… ) — метрика и C — код. Положим ~d (C )≔ min

a≠ba ,b∈C

~d (a ,b ) .

Величина ~d (C ) называется кодовым расстоянием кода C.

Утверждение (о связи кодового расстояния с устойчивостью к ошибкам).

Код C обнаруживает t ошибок ⇔~d (C )>t .

Код C исправляет t ошибок ⇐~d (C )>2t . Для метрик Хемминга и Левенштейна можно «⇐»

заменить на «⇔».

Докажем только первую часть. ⇐ Пусть в канал передавалось сообщение a. Если в канале происходит не более t ошибок, то даже если при передаче возникли ошибки и получилось слово a '≠a, то нам гарантирована оценка ~d (a ,a' )≤ t . Но тогда a '∉C , а значит, мы увидим, что при передаче произошли ошибки. ⇒ С другой стороны, если бы в коде была пара слов a ,b, таких, что ~d (a ,b )≤ t, то при неудачной ситуации, когда в канал передавалось слово a, ошибки могли распределиться таким образом, что получилось бы в точности слово b. Но тогда, приняв слово b, мы наивно полагали бы, что «само слово b и передавалось изначально, причём при передаче не было ошибок». Доказательство второй части утверждения — упражнение (придётся использовать и симметричность метрики, и неравенство треугольника).

Утверждение доказано.

Если рассматриваются слова одной и той же длины, а в канале возможны только ошибки типа замещения (любые), то ~d (a ,b )=d (a ,b ), где

d (a ,b )≔¿ {i ∣ai≠bi } .

Функционал d называется метрикой Хемминга, а величина d (a ,b ) — расстоянием Хемминга между a и b.

Везде далее по умолчанию будем считать, что в канале возможны произвольные ошибки типа замещения, т.е. в качестве метрики на словах везде далее используется метрика Хемминга.

Обозначимd (C )≔ min

a≠ba , b∈C

d (a ,b ) .Шар радиуса r с центром в a — это множество Sr (a )≔ {b ∣d (a ,b )≤r }.

Если в канал передавалось a, то на выходе из канала может быть любое слово b∈S t (a ). Значит, код обнаруживает t ошибок т. и т.т., когда никакое кодовое слово не попадает в шар радиуса t с центром в другом кодовом слове. Аналогично, код исправляет t ошибок т. и т.т., когда при передаче в канал различных кодовых слов на выходе получаются различные слова, то есть когда шары радиуса t с центрами в кодовых словах не пересекаются.

Основная задача теории кодов, исправляющих ошибки: строить коды, для которых число кодовых слов как можно больше, кодовое расстояние как можно больше, а длина кодовых слов как можно меньше. Также можно рассматривать задачи, связанные с ресурсами: процессы кодирования и декодирования (исправление ошибок) должны быть возможно менее трудоёмкими по количеству операций и по памяти.

Геометрически основная задача — это задача об упаковке возможно большего числа шаров, возможно большего радиуса, в пространстве возможно меньшей размерности.

www.dainiak.com

Обозначение кода с заданными параметрамиЕсли C — q-ичный код с длиной слов n, числом слов M и кодовым расстоянием d , то пишут: «C является (n , M ,d )q-кодом». Если код двоичный, то символ q не указывают.

2.3. Границы мощностей кодовПолезно знать границы своих возможностей при построении кодов. С несколькими такими границами мы познакомимся в этом разделе.

2.3.1. Граница Хемминга (граница сферической упаковки)

Теорема. (R.W. Hamming)Для любого (n , M ,d )q-кода имеем

M≤qn

|S⌊(d−1) /2 ⌋ (0 )|В двоичном случае

M≤2n

∑k=0

⌊ (d−1)/2 ⌋

(nk)Доказательство. Пусть C={a1 , a2 ,…,aM } — (n , M ,d )q-код. Так как d (C )=d, то шары радиуса ⌊ (d−1 ) /2 ⌋ с центрами в кодовых словах не пересекаются. Отсюда

qn≥∑j=1

M

|S⌊ (d−1 )/2 ⌋ (a j )|=M ⋅|S⌊ (d−1)/2 ⌋ (0 )|.

Теорема. (В некотором смысле, обратная границе Хемминга)

Пусть числа q ,n , M ,d∈N таковы, что M≤qn

|Sd (0 )|. Тогда существует (n , M ,d )q-код.

Доказательство. Пусть C={a1 ,…,a|C|} — код максимальной мощности с кодовым расстоянием d и длиной слов n. Тогда шары радиуса d с центрами в кодовых словах покрывают целиком множество Aqn (иначе код C можно было пополнить любым из слов, не лежащих ни в одном из этих шаров).

Отсюда ∑j=1

|C|

|Sd (a j )|≥qn, следовательно, |C|≥M .

Коды, достигающие границу Хемминга, называются совершенными или плотно упакованными.

2.3.2. Граница Синглтона

Теорема. (R.C. Singleton)Для любого (n , M ,d )q-кода имеем M≤qn−d+1.

Доказательство. Пусть C={a1 ,…,aM } — (n , M ,d )q-код. Рассмотрим слова {ai' }i=1M

, где a i' получено из a i

отбрасыванием (d−1 ) последних координат. Так как d (a i , a j )≥d для любых i , j, то все слова a i'

различны. Их количество не превосходит числа всех q-ичных слов длины (n−d+1 ). Поэтому M≤qn−d+1.

Теорема доказана.

Коды, на которых достигается граница Синглтона, называются MDS-кодами (maximum distance separable codes).

www.dainiak.com

2.3.3. Граница Плоткина

Теорема. (M. Plotkin)

Пусть nr<d, где r≔1−1q

. Тогда для любого (n , M ,d )q-кода имеем M≤ ⌊d

d−nr⌋ .

Доказательство. Рассмотрим матрицу, в которой по строкам выписаны все кодовые слова:

( a1⋮aM ) .Элементы этой матрицы будем обозначать a ij. Оценим снизу и сверху следующую сумму:

T≔ ∑1≤k ≤ n1≤i< j ≤M

1aik ≠a jk(через 1… обозначен индикатор того, что условие … выполняется).

Имеем

T= ∑1≤i< j ≤M

∑1≤k ≤n

1aik≠ ajk= ∑1≤i< j ≤M

d (a i , a j )≥M ⋅ (M−1 )

2⋅d .

С другой стороны,T= ∑

1≤k ≤ n∑

1≤ i< j≤M1aik≠ ajk .Зафиксируем произвольное k . Пусть среди кодовых слов ровно xs слов имеют k -

ю координату, равную s. Тогда∑

1≤i< j ≤M1aik≠ a jk=∑

s'≠ s' 'xs' ⋅ xs' ' .

Имеем

∑s' ≠ s' '

x s' ⋅ xs' '=12⋅((∑s xs)

2−∑

s

x s2)=12 ⋅ (M 2−∑

s

xs2)≤ 12 ⋅(M 2−q ⋅M

2

q2 )=M 2

2 (1−1q ).(Выше мы учли, что минимум выражения ∑

s

x s2 достигается, когда все xs равны M /q, — это

неравенство Коши—Буняковского.)

Из выведенных неравенств мы получаем оценку

T= ∑1≤k ≤ n

∑1≤ i< j≤M

1aik≠ ajk ≤nM 2

2 (1−1q ) .Сопоставим верхнюю и нижнюю оценки для T :

M ⋅ (M−1 )2

⋅d≤T ≤ nM2

2 (1−1q ) .Отсюда (M−1 ) ⋅d ≤nrM , и, стало быть, M (d−nr )≤d. Так как d−nr>0 по условию и M∈Z , то

M≤ ⌊ dd−rn

⌋ .

Теорема доказана.

2.3.4. Граница Элайеса—Бассалыго2.3.4.1. Вложения метрических пространств

Метрическое пространство — это множество с заданной на нём метрикой. Примеры:

( {0,1 }n , d (a ,b )) — метрическое пространство Хемминга (здесь d — метрика Хемминга).

(Rn ,~d (a ,b ) ) — евклидово метрическое пространство (здесь ~d (a ,b )≔√∑i (ai−b i )

2 — обычная

евклидова метрика).

www.dainiak.com

Вложение метрического пространства U в метрическое пространство V — это отображение ϕ :U→V, сохраняющее метрику:

distU ( x , y )=distV (ϕ ( x ) , ϕ ( y ) ) .

Вложение n-мерного хеммингова пространства в евклидово n-мерное пространство при n>1 сделать не получится, но можно выполнить отображение, сохраняющее определённую информацию о

метрике. Сопоставим каждому вектору a∈ {0,1 }n вектор xa∈ Rn по правилу:

x ia={ 1 , еслиai=1

−1 , еслиai=0.

При этом

~d (xa , xb )=2 ⋅√d (a ,b ),

⟨ xa , xb ⟩=n−2 ⋅d (a ,b ), ‖xa‖=√n (здесь ‖⋅‖ — евклидова норма).

2.3.4.2. Системы векторов в евклидовом пространстве

Лемма (о тупоугольной системе векторов).Пусть y , x1 ,…,xm∈R

n таковы, что выполнено

⟨ x i , y ⟩>0 для i=1 ,…,m, ⟨ x i , x j ⟩ ≤0 при i≠ j.

Тогда x1 ,…, xm линейно независимы и, в частности, m≤n.

Доказательство. Рассмотрим произвольную нулевую линейную комбинацию: c1 x1+…+cmxm=0. Положим

Pos≔ {i ∣ c i>0} ,¬≔ {i ∣c i<0 }.Нам нужно доказать, что Pos=¬¿∅ . Допустим, что это не так, и придём к противоречию. Пусть,

например, Pos≠∅ (быть может, при этом ¬¿∅). Положимz≔ ∑

i∈ Pos

c i x i= ∑j∈¬¿ (−c j )x j .¿

¿

Имеем⟨ z , y ⟩= ∑

i∈Pos

c i ⟨x i , y ⟩>0.

Отсюда следует, что z≠0. Имеемz≔ ∑

i∈ Pos

c i x i= ∑j∈¬¿ (−c j )x j≠ 0 .¿

¿

Рассмотрим теперь соотношения0< ⟨ z , z ⟩=¿— противоречие!

Лемма доказана.

2.3.4.3. Доказательство теоремы Элайеса—Бассалыго

Теорема. (P. Elias, Л.А. Бассалыго)Для любого (n , M ,d )2-кода, где d ≤n/2, выполнено неравенство

M≤n2n

|S⌊ τn−1 ⌋|,где τ=1−√1−2δ

2, δ=

dn

. Через S⌊ τn−1 ⌋ мы сокращённо обозначаем шар S⌊ τn−1 ⌋ (0 ).

Доказательство. Положим δ≔dn

, τ≔ 1−√1−2δ2

и t≔⌊ τn−1 ⌋ .

www.dainiak.com

Пусть C — (n , M ,d )-код. Положим deg tC≔ maxb∈ {0,1}n

|C∩St (b )|. Имеем

|C|⋅|St|=∑a∈C

∑b∈ {0,1}n

1d (a , b)≤t= ∑b∈ {0,1 }n

∑a∈C

1d (a ,b )≤t≤2n⋅ degtC .

Отсюда M≤2n⋅ degtC

|S t|. Осталось доказать, что при выбранном t выполнено неравенство deg tC≤n.

Пусть b∈ {0,1 }n, и a1 ,…,am∈C ∩S t (b ) (a i≠a j при i≠ j). Нам нужно доказать, что m≤n.

Сопоставим словам b ,a1 ,…,am векторы y , x1 ,…,xm∈Rn так (на примере b):

y i={ 1/√n , еслиbi=1 ,−1/√n , еслиb i=0.

При этом

⟨ x i , y ⟩=1n (n−2d (a i , b ) )≥ 1n (n−2 t )>1−2 τи

⟨ x i , x j ⟩=1n (n−2d (a i , a j ))≤

1n

(n−2d )=1−2δ .

Похоже, можно применить лемму о векторах в Rn, но для этого придётся «подправить» векторы y и x1 ,… xm. Для этого перейдём к векторам2 τ y , ( x1− (1−2 τ ) y ) ,…, ( xm−(1−2 τ ) y ) .

Для этих векторов получаем⟨ (x i− (1−2 τ ) y ) ,2 τ y ⟩=2 τ ⟨x i , y ⟩−2 τ (1−2 τ ) ⟨ y , y ⟩=2 τ ⟨x i , y ⟩−2 τ (1−2 τ )>0и

⟨ (x i− (1−2 τ ) y ) , ( x j−(1−2 τ ) y ) ⟩= ⟨x i , x j ⟩+(1−2 τ )2 ⟨ y , y ⟩−(1−2 τ ) ( ⟨x i , y ⟩+ ⟨x j , y ⟩ )≤1−2δ+(1−2 τ )2−2 (1−2 τ )2=−2 (2 τ2−2 τ+δ )=0.

Отсюда, по лемме о тупоугольной системе векторов, следует, что m≤n.

Теорема доказана.

3. Линейные коды3.1. Основные понятия

Пусть q — степень простого числа и символы кодовых слов — элементы конечного поля Fq.(n , M ,d )q-код C называется линейным, если он является линейным подпространством пространства Fqn, то есть линейная комбинация кодовых слов также является кодовым словом.

Если dimC=k , то говорят, что задан линейный [n , k , d ]q-код.

Пример линейного двоичного кода — код с проверкой чётности:

C≔ {(a1 ,…,an )∈F2n ∣∑a i=0}

Один из базисов этого кода:(1,0,0 ,…,0,1 )(0,1,0 ,…,0,1 )(0,0,1 ,…,0,1 )⋮ (0,0,0 ,…,1,1 )

Если выписать базис линейного [n , k , d ]q-кода построчно в виде матрицы размера k ×n, получим порождающую матрицу кода.

Итак, для задания [n , k , d ]q-кода достаточно указать его порождающую матрицу G∈Fqk ×n. Число

линейных комбинаций k базисных векторов с коэффициентами из Fq равно qk, поэтому каждый [n , k , d ]q-код является (n ,qk , d )q-кодом. Если линейный [n , k , d ]q-кода задан порождающей матрицей G, а исходное сообщение представлено как вектор x∈ Fq

k, то закодировать его можно быстро и просто:

x кодирование→

xTG∈Fqn .

www.dainiak.com

Обратно, если закодированное сообщение a∈Fqn было принято без ошибок, декодируем его, решая,

например, методом Гаусса систему xTG=a.

Порождающую матрицу G∈Fqk ×n линейными преобразованиями и перестановками строк и столбцов можно привести к каноническому виду:

(1 0 ⋯ 00 1 ⋯ 0⋮ ⋮ ⋱ ⋮0 0 ⋯ 1

∣~G) ,где ~G∈ Fqk× (n−k ).

Тогда кодирование будет систематическим: (x1 ,… ,xk )кодирование

→(x1 ,…, xk ∣ x~G ) .

Если порождающая матрица кода задана в каноническом виде, то кодирование будет систематическим и слово (x1 ,… ,xk ) переходит в

(x1 ,…,xk ∣ x~G )=(x1 ,…,xk ,~x1 ,…,~xn−k ) .

Разряды x1 ,…, xk называются информационными, а ~x1 ,…,~xn−k — проверочными.

Если матрица G исходно задана не в каноническом виде, а мы приводим её к каноническому виду, то получается в общем случае не тот же код, а эквивалентный ему. Формально, коды C1 и C2

эквивалентны, если существует перестановка π и константы r1 ,…, rn∈ Fq∖ {0 }, такие, что(a1 ,…,an )∈C1⇔ (r1aπ (1) ,…, rnaπ (n ) )∈C2 .

Для эквивалентных кодов d (C1)=d (C2).Утверждение (о кодовом расстоянии линейных кодов).

Для любого линейного кода C имеемd (C )=min

a∈Ca≠ 0

‖a‖.

Доказательство. Поскольку 0∈C , тоd (C )≝ min

a , b∈Ca≠b

d (a ,b )≤mina∈Ca≠ 0

d (a ,0 )=mina∈Ca≠0

‖a‖.

В обратную сторону. Пусть кодовое расстояние достигается на паре слов a¿ , b¿. Тогда так как (a¿−b¿)∈C , получаем

d (C )=d (a¿ , b¿)=‖a¿−b¿‖≥mina∈Ca≠ 0

‖a‖.

Утверждение доказано.

Проверочная матрица H линейного кода — это матрица однородной системы линейных уравнений, которым удовлетворяет код. Например, для кода с проверкой чётности H= (11…1 ). Для любого кодового слова a, по определению матрицы H , выполнено равенство H aT=0 . Для [n , k , d ]q-кода H∈Fq

(n−k )×n.

Утверждение.Если G и H — порождающая и проверочная матрицы линейного [n , k , d ]q-кода, то HGT=0(n−k )×k.

Доказательство: достаточно заметить, что каждая строка матрицы G — это кодовое слово, а значит, она удовлетворяет системе, задаваемой H .

Если коды C1 и C2 таковы, что проверочная матрица C1 является порождающей матрицей для C2, то эти коды называют двойственными. Коды C1 и C2 двойственны т. и т.т., когда ⟨a1 , a2 ⟩=0 для любых слов a1∈C1 , a2∈C2. Поэтому двойственные коды называются также ортогональными.

www.dainiak.com

Пусть H — проверочная матрица кода C, и пусть a∈C. Если при передаче a по каналу произошло t ошибок, на выходе из канала имеем слово b. Вектор e≔ b−a называется вектором ошибок.

Очевидно, ‖e‖=t . Исправить ошибки в b — то же самое, что найти вектор e. Используем равенствоH bT=H aT+H eT=H eT .

Получаем задачу: найти вектор e, такой, что

{‖e‖< d (C )2,

H eT=H bT .

Утверждение.Если решение этой системы существует, то оно единственное.

Доказательство. Пусть нашлись разные решения e1≠e2. Тогда ‖e1−e2‖≤‖e1‖+‖e2‖<d (C ) и H (e1−e2 )T=0 — противоречие.

Можно составить таблицу решений системы

{‖e‖< d (C )2,

H eT=s .для всевозможных s. При получении из канала слова b мы вычисляем s≔H bT (синдром

слова b), и для этого s смотрим в таблице соответствующий вектор e. Декодированное сообщение — решение системыxTG=(b−e ) .

3.2. Теорема Варшамова—Гилберта

Утверждение. (О связи кодового расстояния и проверочной матрицы)Линейный код, определяемый проверочной матрицей H , имеет расстояние d т. и т.т., когда любые (d−1 ) столбцов H линейно независимы, и найдутся d линейно зависимых столбцов в H .

Доказательство. Пусть a=(a1 ,…,an)≠0 — произвольное кодовое слово кода с проверочной матрицей H . Пусть H 1 ,…,H n — столбцы H . Имеем

H aT=a1⋅H 1+…+an⋅ H n .

Если i1 ,…, it — все ненулевые координаты a, тоa1H 1+…+anH n=ai1H i1

+…+a itH it.

Так как a — кодовое слово, то H aT=0, то естьa i1H i1

+…+a itH it=0 .

Мы получили, что в коде есть слово веса не более t т. и т.т., когда некоторые t столбцов матрицы H линейно зависимы. Осталось воспользоваться формулой, справедливой для любых линейных кодов:

d (C )=mina∈Ca≠ 0

‖a‖.

Утверждение доказано.

Одним из важнейший достаточных условий существования линейных кодов является следующая теорема.

Теорема. (Р.Р. Варшамов, E.N. Gilbert)Пусть натуральные числа n , k , d ' таковы, что

∑j=0

d'−1

(n−1j )<2n−k .Тогда существует [n , k , d ]-код, где d>d'.

Доказательство. Покажем, что в условиях теоремы можно построить матрицу H∈F2(n−k )×n, у

которой любые d ' столбцов линейно независимы. Будем строить матрицу по столбцам. Пусть уже www.dainiak.com

выбраны m столбцов (где m<n) и требуется выбрать (m+1 )-й столбец. Этот новый столбец не должен образовывать нулевую линейную комбинацию с (d '−1 ) или менее из уже выбранных столбцов. Так

как мы работаем в F2, то это равносильно тому, что выбираемый столбец не равен сумме (d '−1 ) или менее уже выбранных столбцов. Количество таких сумм равно

∑j=0

d'−1

(mj )≤∑j=0d'−1

(n−1j )<2n−k .Итак, запрещённых для выбора столбцов у нас оказывается строго меньше 2n−k, а всего векторов длины (n−k ) ровно 2n−k. Значит, найдётся вектор из F2

n−k, который можно добавить в качестве очередного столбца.

Теорема доказана.

3.3. Двоичный код Хемминга

В этом разделе мы введём коды Хемминга, пожалуй, самые простые нетривиальные линейные коды.

Рассмотренный нами ранее простейший двоичный код с проверкой чётности { (a1 ,…,an )∈F2

n∣∑ai=0}может обнаруживать одну ошибку, т.к. если один разряд a i заменить на противоположный, соотношение ∑a i=0 нарушится. Но исправить ошибку не удастся. Хочется

построить двоичный код, исправляющий хотя бы одну ошибку. Для этого вместо «глобального» контроля чётности применим несколько «дихотомических» проверок на чётность.

Пример для n=7. Рассмотрим код, удовлетворяющий соотношениямa4 +a5 +a6 +a7 ¿0 ,a2 +a3 ¿ +a6 ¿

=0 ,¿a1 ¿¿+a3¿¿+a5¿¿+a7 ¿=0.¿

Проверочная матрица этого кода:

(0 0 0 1 1 1 10 1 1 0 0 1 11 0 1 0 1 0 1) .

Столбцы матрицы — всевозможные ненулевые векторы высоты 3: j-й столбец суть двоичная запись числа j. Любая пара столбцов л.н.з., значит d (C )≥3, значит, этот код исправляет одну ошибку

и обнаруживает две. Если ошибка случается в a j, то можно вычислить левые части проверочных соотношений, и они дадут двоичную запись j, например:a4 +a5 +a6 +a7 ¿1a2 +a3 ¿ +a6 ¿

=0¿a1 ¿¿+a3 ¿¿+a5¿¿+a7 ¿=1¿

Общий случай: n≔2m−1 для некоторого m. Двоичный код Хемминга длины n с параметрами [2m−1,2m−m−1 ,3 ] определяется проверочной матрицей H∈F2

m×n, столбцы которой — всевозможные двоичные векторы высоты m:

(1 0 1 ⋯ 10 1 1 ⋯ 1⋮ ⋮ ⋮ ⋯ ⋮0 0 0 ⋯ 1

).Теорема Хемминга утверждает, что для любого (n , M ,d )-кода выполнено неравенство

M≤2n

∑k=0

⌊ (d−1)/2 ⌋

(nk). Напомним, что коды, на которых достигается граница Хемминга, называются совершенными или

www.dainiak.com

плотно упакованными. Нетрудно показать, что код Хемминга совершенен. Действительно, для кода

Хемминга имеем n=2m−1, M=22m−m−1 и d=3. Отсюда ∑

k=0

⌊ (d−1) /2 ⌋

(nk )=n+1=2m=2n /M .

3.4. Границы мощностей для линейных кодов3.4.1. Граница Синглтона для линейных кодов

Утверждение. (Граница Синглтона для линейных кодов)Для любого [n , k , d ]q-кода выполнено неравенство k ≤n−d+1.

Доказательство. По теореме Синглтона, для любого (n , M ,d )q-кода выполнено M≤qn−d+1. С другой стороны, для линейного кода M=qk.

3.4.2. Граница Грайсмера—Соломона—Штиффлера

Теорема об остаточном коде. (G. Solomon, J.J. Stiffler)Если существует [n , k , d ]q-код, то существует и [n−d , k−1 , d ' ]q-код, где d '≥d /q.

Доказательство. Пусть G — порождающая матрица некоторого [n , k , d ]q-кода C. Б.о.о. будем считать, что первая строка G содержит ровно d ненулевых элементов и имеет вид (r1…rd0…0 ).

Порождающая матрица кода C:

G=(r1…rd 0…0

⋯ G' ) .Имеем G'∈ Fq

( k−1)× (n−d ). Покажем, что rkG'=k−1. Допустим противное: некоторая нетривиальная линейная комбинация строк G' равняется 0. Тогда линейная комбинация соответствующих строк G равна (t 1…t d0…0 ), где ∀ i (t i≠0 ).

Линейная комбинация U некоторых строк G равна (t 1…t d0…0 ), где ∀ i (t i≠0 ). Т.к. Fq — поле, то ∃ s∈Fq, такой, что std=−r d. Тогда s ⋅U+(r1…rd0…0 ) — линейная комбинация строк G, равная

(( s t 1+r1 )… (s td−1+rd−1 )00…0) .Это противоречит условию d (C )=d.

Итак, G'∈ Fq( k−1)× (n−d ) и rkG'=k−1. Значит, G' является порождающей матрицей некоторого

[n−d , k−1 , d ' ]q-кода C ' (этот код называется остаточным для исходного кода C).

Рассмотрим любой ненулевой вектор кода C ':a '≔ (a1' ,…,an−d' )≠0 ,такой, что ‖a'‖=d '.

В коде C есть вектор вида(a1 ,…,ad , a1' ,…,an−d' ) .

Пусть f 1,…, f q — все элементы поля Fq.

Коду C принадлежат все векторы вида( (a1−f i r1 ) ,…, (ad−f i rd ) , a1

' ,…,an−d' ) .

Запишем эти q векторов построчно в виде матрицы и оценим количество ненулевых элементов в ней:

( (a1−f 1 r1 ) … (ad−f 1rd ) a1' … an−d

'

(a1−f 2 r1 ) … (ad−f 2rd ) a1' … an−d

'

⋮ ⋮ ⋮ ⋮ ⋮ ⋮

(a1−f q r1 ) … (ad−f q r d ) a1' … an−d

' ).www.dainiak.com

В каждой подстроке вида a1' ,…,an−d

' ровно d ' элементов отличны от нуля. В каждом из первых d столбцов ровно один ноль. Поэтому в рассмотренной матрице d (q−1 )+qd ' ненулевых элементов. С другой стороны, каждая строка матрицы — ненулевой вектор кода C, значит, в матрице не менее чем qd ненулевых элементов. Отсюда d (q−1 )+qd ' ≥qd, и, следовательно d '≥d /q.

Теорема доказана.

Теорема. (J.H. Griesmer, G. Solomon, J.J. Stiffler)Для любого [n , k , d ]q-кода имеем

n≥∑i=0

k−1

⌈ dq i⌉ .

Доказательство. Утверждение очевидно при k=1. Предположим, что оно выполнено для кодов с размерностью ≤k−1 и докажем его для [n , k , d ]q-кодов. Обозначим через N (k ,d ) минимальную длину слов у кода с размерностью k и расстоянием d . Пусть C— какой-нибудь [N (k ,d ) , k , d ]q-код.

Остаточный для C код имеет параметры [N (k ,d )−d , k−1 , d' ]q, и, по предположению индукции, для него справедливо неравенство

N (k ,d )−d≥∑i=0

k−2

⌈ d'

q i⌉ .Отсюда, с учётом предположения индукции и соотношения d '≥d /q, получаем

N (k ,d )≥d+∑i=0

k−2

⌈ d'

qi⌉≥d+∑

i=0

k−2

⌈ dqi+1

⌉=∑i=0

k−1

⌈ dqi⌉ .

Теорема доказана.

3.5. Графы-расширители и коды на их основе

3.5.1. Графы-расширители

Двудольный граф с долями L и R называется (n ,m , Δ,α , c )-расширителем, если

|L|=n, |R|=m, degu=Δ для любого u∈L, для любого S⊆L при |S|≤αn выполнено неравенство |N (S )|≥c ⋅|S|, где N (S ) — множество

вершин в R, смежных с вершинами из S.

Графы-расширители также называются расширяющими, экспандерными графами или экспандерами (от англ. expander). Начало применению расширительных свойств графов в кодировании положили работы советских математиков М.С. Пинскера, Л.А. Бассалыго, Г.А. Маргулиса в 1970-х годах.

Теорема о существовании расширителей.Пусть Δ≥3, c ≤ Δ−2, α<1 и m≥4n Δ2√α .Тогда при всех натуральных n существуют (n ,m , Δ,α , c )-расширители.

Доказательство. Построим случайный двудольный граф G и докажем, что он с большой вероятностью будет искомым. Зафиксируем множества L и R (|L|=n ,|R|=m) и проведём по Δ рёбер из каждой вершины в L в выбираемые равновероятно и независимо вершины в R (в итоге некоторые из этих Δ рёбер могут попасть в одни и те же вершины R).

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

Если G не является расширителем, то найдётся такое S⊂L, для которого |N (S )|< (Δ−2 )⋅|S|. Оценим вероятность того, что фиксированное множество S оказалось таким «плохим» при случайном

выборе концов рёбер из S в R. А затем оценим вероятность того, что G не расширитель, по формулеPr [Gплохой ]=Pr [∃плохое S ]≤∑

S

Pr [S—плохое ] .

www.dainiak.com

Каждое ребро вида (u , v ), где u∈S , v∈N (S ), отнесём к одному из двух типов. Если никакое ребро из S в N (S ) с меньшим номером не ведёт в v, то ребро (u , v ) назовём «первопроходцем». В противном случае назовём (u , v ) «дублем». Очевидно, всего будет N (S ) «первопроходцев» и (Δ⋅|S|−|N (S )|) «дублей».

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

Вероятность того, что среди рёбер из S в N (S ) есть 2 s дублей, не превосходит

(Δ⋅|S|2|S| )( Δ⋅|S|m )2|S|

.Первый из сомножителей оценивает число способов выбрать рёбра-дубли, второй

— вероятность попадания конца «дубля» в одну из вершин в |N (S )|.

Значит,

Pr [Gне расширитель ]≤ ∑S⊂ L

1≤|S|≤ αn

Pr [ S«плохое » ]≤ ∑1≤ s≤ αn

(ns)(Δ⋅ s2 s )( Δ⋅ sm )2 s

  .

С учётом оценки (ab)<( eab )b

и того, что при m≥4n Δ2√α выполняется неравенство e3 Δ4α n2

4m2< 13

,

получаем

Pr [Gне расширитель ]≤ ∑1≤s≤ αn

( ens )s

( e Δs2 s )2 s

( Δ sm )2 s

= ∑1≤ s≤αn

( e3 Δ4 sn4m2 )s

≤ ∑1≤ s≤αn

( e3 Δ4α n24m2 )s

≤ ∑1≤s≤ αn

( 13 )s

<12.

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

. Чтобы от

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

Теорема доказана.

3.5.2. Коды на основе расширителей

Код на основе двудольного графа — это линейный двоичный код, строящийся следующим образом. Вершинам из L соответствуют переменные x1 ,…, xn. Вершинам из R соответствуют уравнения: если в вершину v∈R входят рёбра из вершин ui1 ,…,u il, то уравнение будет x i1+…+x il=0. Искомый код состоит из всех слов (x1…xn ), удовлетворяющих системе этих уравнений.

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

соответствующий код будет выглядеть так: {( x1 x2 x3 x4 )∣ x1+x2+x4=0 , x1+ x3=0}.Коды на основе расширителей введены М. Сипсером и Д. Шпильманом, являются обобщением низкоплотностных кодов (LDPC-codes) Р. Галлагера (R.G. Gallager).

Утверждение.Код, построенный по двудольному графу, в котором |L|=n и |R|=m, является двоичным линейным [n , k , d ]-кодом, где k ≥n−m.

Доказательство: код является множеством решений системы из m уравнений с n неизвестными, а значит, он образует линейное пространство размерности не менее чем n−m.

www.dainiak.com

Теорема о кодовом расстоянии. (M. Sipser, D.A. Spielman)

Если c>Δ2

и C — код, построенный на основе (n ,m , Δ,α , c )-расширителя, то d (C )>αn.

Доказательство от противного. Допустим, что d (C )≤αn. Тогда найдётся слово a∈C, такое, что a≠0 и ‖a‖≤αn.

Пусть I≔ {u1 ,…,u‖a‖} — вершины из L, соответствующие единичным координатам a. Так как наш граф — расширитель и ‖a‖≤αn, то

|N ( I )|≥c ⋅|I|> Δ2⋅|I|.

Всего из I в N ( I ) ведёт ровно Δ ⋅|I| рёбер. Поэтому среднее число рёбер, входящее в вершины N ( I ) из I , равно

Δ⋅|I||N ( I )|

<Δ⋅|I|Δ2⋅|I|

=2 .

Значит, в N ( I ) найдётся вершина, в которую входит ровно одно ребро из I . Получается, что среди задающих код уравнений есть такое уравнение x i1+…+x il=0, в котором ровно одна из переменных на слове a обращена в единицу. Но этого не может быть в предположении, что a является решением этого уравнения. Противоречие.

Теорема доказана.

3.5.3. Алгоритм Сипсера—Шпильмана3.5.3.1. Формулировка алгоритма декодирования

Пусть c>3 Δ4

, и C — код, построенный на основе (n ,m , Δ,α , c )-расширителя. Пусть слово a ' получено

из некоторого кодового слова a искажением не более чем αn4

битов. Тогда восстановить a, зная a ',

можно с помощью следующего алгоритма (M. Sipser, D.A. Spielman):

1. Если a '∈C , то выводим a ' и завершаем работу.2. Если a '∉C , то для a ' некоторые из уравнений (отвечающих вершинам в R) нарушены. Считаем

поочерёдно для каждого бита a ' число нарушенных уравнений, в которых он участвует. Если их ¿ Δ /2, инвертируем этот бит и идём на шаг 1.

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

Чтобы доказать корректность алгоритма Сипсера—Шпильмана, нам потребуется следующая лемма.

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

Пусть c>3 Δ4

, и C — код, построенный на основе (n ,m , Δ,α , c )-расширителя. Пусть a '∉C , но при

этом d (a ,a ' )≤αn для некоторого a∈C. Тогда в a ' найдётся бит, обращение которого на противоположный строго уменьшает число невыполненных для a ' уравнений. (Имеются в виду уравнения, построенные по графу-расширителю.)

Доказательство. Пусть a ' — не кодовое слово, находящееся от ближайшего кодового на расстоянии ≤αn. Пусть I⊂L — множество вершин, соответствующих координатам, в которых a ' отличается от ближайшего кодового слова.

Обозначим через N pass ( I ) вершины из N ( I ), соответствующие уравнениям, выполненным на слове a '. Аналогично, пусть N fail ( I ) — вершины из N ( I ), отвечающие нарушенным уравнениям.

www.dainiak.com

Так как наш граф расширитель, и |I|≤αn, то

|N pass ( I )|+|N fail (I )|=|N (I )|≥c|I|> 3 Δ4⋅|I|.

Из каждой вершины N ( I ) в I ведёт хотя бы одно ребро. При этом из каждой вершины N pass ( I ) в I ведёт хотя бы два ребра: чтобы «обмануть» уравнение, нужно инвертировать в нём чётное

количество переменных. С другой стороны, число рёбер между I и N ( I ) в точности равно Δ ⋅|I|. Из всего сказанного вытекает цепочка соотношений

Δ ⋅|I|≥|N fail ( I )|+2 ⋅|N pass ( I )|>|N fail ( I )|+2 ⋅( 3 Δ4 ⋅|I|−|N fail ( I )|) .Отсюда |N fail ( I )|> Δ

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

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

Лемма доказана.

3.5.3.3. Завершение доказательства корректности алгоритма

Лемма о результативном бите говорит, что если к очередному шагу алгоритма мы пришли с некодовым словом a ' , находящимся от ближайшего кодового на расстоянии ≤αn, то очередной бит

для изменения мы найдём. Осталось доказать, что, начав со слова a ' на расстоянии ≤αn4

от

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

До начала работы алгоритма |I|≤ αn4

, и, значит, число нарушенных уравнений не превосходит

Δ ⋅|I|≤ αnΔ4

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

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

αn Δ4≥ ¿наруш . ур .=N fail ( I

' ' )> Δ2⋅|I ' '|,отсюда |I ' '|< αn

2.

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

в αn2

битах. Т.к. на каждом шаге в слове меняется только один бит и d (C )>αn, то кодовое слово, к

которому мы стремимся, всё время одно и то же: если d (a ,b )>t , то, находясь в шаре St /2 (a ) и смещаясь на один бит, мы не «вывалимся» в шар St /2 (b ).

4. Коды Рида—Соломона и Рида—Маллера

4.1. Коды Рида—Соломона (I.S. Reed, G. Solomon)

4.1.1. Определение

Пусть k ≤n≤q. Пусть t 1 ,…, t n∈Fq — фиксированные, попарно различные элементы. Рассмотрим такое множество слов:

C≔ {(P (t 1 ) ,…,P (t n )) ∣P∈Fq [x ]∧deg P<k }.Непосредственно проверяется, что C — линейное пространство:

α ⋅ (P1 ( t1 ) ,…,P1 (t n ))+β ⋅ (P2 (t1 ) ,…, P2 ( tn ))=((α P1+β P2 ) (t 1 ) ,… , (α P1+ β P2 ) (t n ))

www.dainiak.com

У многочлена степени ¿k может быть не более (k−1 ) корней, поэтому если P≢0, то в векторе (P (t 1 ) ,…,P( tn)) не более (k−1 ) нулевых координат. Отсюда

d (C )=mina∈Ca≠ 0

‖a‖=minP≢0

¿ {i ∣P (t i )≠0}=n−( k−1 ) .

Векторы (P (t 1 ) ,…,P( tn)) при разных P различны: если выполнено (P1 (t 1 ) ,…, P1(t n))=(P2 (t 1 ) ,…, P2(t n)), то у многочлена (P1−P2 ) не менее n корней, а т.к. deg (P1−P2 )<k ≤n, то (P1−P2 )≡0. Значит, dimC=k .

Итак, для любых k ≤n≤q множество C является [n , k , d ]q-кодом, где d=n−k+1. Этот код называется кодом Рида—Соломона или RS-кодом.

Вспомним границу Синглтона: для любого [n , k , d ]q-кода выполнено k ≤n−d+1. То есть построенный код достигает границы Синглтона и, стало быть, является MDS-кодом. Недостаток кодов Рида—Соломона состоит в том, что кодовый алфавит нужно брать очень большим, т.к. q≥n.

4.1.2. Декодирование RS-кодов

Т.к. d (C )=n−k+1, то код может исправлять ⌊n−k2

⌋ ошибок. В этом разделе мы покажем, как можно

эффективно исправлять ошибки в словах RS-кодов. Формально поставить задачу декодирования можно следующим образом:

Дано искажённое кодовое слово RS-кода ( p1 ,…, pn )∈ Fqn.

Найти P∈Fq [x ], такой, что deg P≤k−1 и ¿ {i ∣P (ti )≠ pi }≤ ⌊ n−k2 ⌋ (нам гарантируется, что такой

P существует).

Приводимая ниже техника называется алгоритмом Берлекэмпа—Велча (E.R. Berlekamp, L.R. Welch).

Рассмотрим многочлен ошибокE ( x )≔ ∏

i :P ( ti )≠ pi(x−t i )

и вспомогательный многочлен U ( x )≔E ( x ) ⋅P (x ).

Обозначим s≔¿ {i ∣P (ti )≠ p i }. Заметим, что deg E=s, coef x sE=1, degU ≤deg E+deg P≤s+k−1, и для любого i∈ {1 ,…,n } выполнено равенство U (t i )=E (t i )⋅ p i.Идея: мы не знаем P, так что попытаемся найти какие-то многочлены ~E и ~U , для которых

deg~E=~s и coef x s

~E=1, где ~s≤ (n−k ) /2,

deg~U ≤ ~s+k−1,

для любого i∈ {1 ,…,n } выполнено равенство ~U (t i )=

~E (t i )⋅ p i.

Указанную тройку условий назовём условиями Берлекэмпа—Велча, или БВ-условиями. Мы знаем, что многочлены ~E и ~U , удовлетворяющие БВ-условиям, точно найдутся (например, такова пара многочленов E ,U , удовлетворяющая этой системе при ~s=s). Остаётся вопрос: как эффективно найти какие-нибудь ~E и ~U и что делать, если найденные ~E и ~U не совпадут с нужными нам E и U?

Зафиксируем ~s и положим ~E=x

~s+ ∑j ≤~s−1

e j xj и

~U= ∑

j ≤~s+k−1u j x

j, где e0 ,…,e~s−1 , u0 ,…,u~s+ k−1 —

неопределённые коэффициенты. Получим систему

{ p1 t1~s+ ∑

0≤ j≤~s−1p1 e j t1

j= ∑0≤ j≤ k+~s−1

u j t1j ,

⋮pnt n

~s+ ∑0≤ j≤~s−1

pn e j tnj= ∑

0≤ j≤ k+~s−1u j t n

j .

www.dainiak.com

При любом фиксированном ~s≤ (n−k ) /2 эта система линейная относительно e0 ,…,e~s−1 , u0 ,…,us+k−1. Перебирая ~s=0,1 ,…, найдём то ~s, при котором решение системы есть (такое ~s найдётся, хотя бы, при ~s=s). Тем самым найдём пару ~E и ~U , удовлетворяющую БВ-условиям. Мы нашли какие-то ~E и ~U . Если бы это были те самые E и U , то можно было бы выразить P ( x )=U ( x )

E ( x ). Оказывается, и в

ином случае P будет выражаться так же, как утверждает следующая лемма.

Лемма.

Если пары (E1 ,U 1 ) и (E2 ,U 2 ) удовлетворяют БВ-условиям, то U 1

E1≡U 2

E2.

Доказательство. Пусть (E1 ,U 1 ) и (E2 ,U 2 ) удовлетворяют БВ-условиям. Имеем

degU 1E2≤degU 1+deg E2≤( n−k2 +k−1)+ n−k2 ≤n−1. Аналогично deg E1U 2≤n−1. Отсюда следует, что

deg (U 1E2−E1U 2 )≤n−1.

Далее, для любого i имеем U 1 (ti ) E2 (t i )=( p iE1 (t i ))E2 ( ti )=E1 ( ti ) ( pi E2 (ti ))=E1 (t i )U 2 (t i ). То есть для i=1 ,…,n выполнено

U 1 (ti ) E2 (t i )−E1 (t i )U 2 (t i )=0.

Отсюда следует, что многочлен (U 1 ( x )E2 ( x )−E1 ( x )U 2 ( x ) ) тождественный ноль, а это эквивалентно

тождеству U 1

E1≡U 2

E2.

Лемма доказана.

4.2. Коды Рида—Маллера (I.S. Reed, D.E. Muller)

Можно представить два пути обобщения конструкции Рида и Соломона:

рассматривать многочлены не от одной, а от многих переменных, рассматривать не все возможные многочлены, а специально выбранное их подмножество.

Идя по первому пути, мы получаем коды Рида—Маллера, а идя по второму — коды Гоппы.

4.2.1. Определение

Зафиксируем параметры (r ,m ), где r ≤m. Положим q≔2 и рассмотрим многочлены от m переменных степени ≤r. Базис в пространстве {P∈F2 [x1 ,…,xm ] , deg P≤ r }:

{1 }∪ {x1. , x2 ,…,xm }∪ {x1 x2 , x1 x3 ,…, xm−1 xm }∪ {x i1x i2⋯ x ir ∣1≤i1 ,…,ir≤m } .

Размерность этого пространства равна k=∑t ≤r

(mt ). Рассмотрим множество векторов значений многочленов во всех точках F2

m:C≔{(P (0…00 ) ,P (0…01 ) ,…, P (1…11 )) , где P∈F2 [ x1 ,…, xm ] иdeg P≤r } .

Множество C образует [n , k , d ]-код, где n=2m и k=∑t ≤r

(mt ). Этот код называется кодом Рида—

Маллера или RM-кодом с параметрами (r ,m ).

4.2.2. Кодовое расстояние

Чтобы оценить кодовое расстояние d , нам понадобится доказать лемму.

www.dainiak.com

Лемма.Если P∈F2 [ x1 ,…, xm ], P≢0 и deg P≤r, то¿ { (s1 ,…, sm )∈F2

m ∣P (s1 ,…, sm )=1}≥2m−r .

Доказательство индукцией по m.База: m=1. Тогда P∈ {1 , x1 , x1+1 } — очевидно.

Переход: m−1→m. Б.о.о. будем считать, что P существенно зависит от xm. РаспишемP (x1 ,…, xm )=P1 (x1 ,… xm−1 )+xmP2 (x1 ,… xm−1 ) .

Так как P2≢0 и deg P2≤r−1, то ¿ {( s1 ,…, sm−1 ) ∣P2 (s1 ,…, sm−1 )=1}≥2(m−1)−(r−1)=2m−r ,

P (x1 ,…, xm )=P1 (x1 ,… xm−1 )+xmP2 (x1 ,… xm−1 ) ,

Каждый набор ( s1 ,…, sm−1 ) на котором P2=1, можно дополнить до набора, на котором P=1:

если P1 ( s1 ,…, sm−1 )=0, то возьмём набор ( s1 ,…, sm−1 ,1 ), если P1 ( s1 ,…, sm−1 )=1, то возьмём набор ( s1 ,…, sm−1 ,0 ).

Значит, P=1 не менее чем на 2m−r наборах.

Лемма доказана.

Из леммы следует, что РМ-код с параметрами (r ,m ) является [2m ,∑t ≤ r (mt ),2m−r ]-кодом.

4.2.3. Декодирование RM-кодов

Так как кодовое расстояние RM-кода равно 2m−r, то он способен исправлять вплоть до (2m−r−1−1 ) ошибок. Оказывается, это можно делать очень быстро многоэтапным голосованием (этот способ декодирования также называют мажоритарным).

Постановка задачи: в векторе из RM-кода (т.е. векторе значений многочлена степени ≤r) изменяются менее 2m−r−1 координат (т.е. значение многочлена искажается менее чем в стольких точках), нужно восстановить по искажённому вектору значений исходный вектор значений (т.е. исходный многочлен).

По определению кодовое слово RM-кода — это значения многочлена, выразимого линейной комбинацией в базисе

{1 }∪ {x1 , x2,…, xm }∪…∪ {x i1x i2⋯ x ir ∣1≤i1 ,…,ir≤m } .Восстановить кодовое слово — это то же, что найти коэффициенты этой линейной комбинации.

Лемма.Для любого P∈F2 [ x1 ,…, xr ] справедлива формула

coef x1 ⋅… ⋅x rP= ∑

α1 ,…, α r∈ F2

P (α 1 ,…,α r ) .

Доказательство. Многочлен P можно представить в видеP=c ⋅ x1…xr+P1+…+Pr ,где в Pi не входит x i.

Рассмотрим сумму∑

α 1 ,… ,α r∈F 2

P i (α1 ,…,αr )= ∑α 1 ,…α i−1 , αi+1 ,… ,α r∈F 2

(Pi (α 1 ,…α i−1 ,0 , αi+1 ,…,α r )+Pi (α 1 ,… αi−1 ,1 , αi+1 ,…,α r )) .

Так как в слагаемые многочлена Pi переменная x i не входит, то Pi (α 1 ,…α i−1 ,0 , αi+1 ,…,α r )=Pi (α1 ,…αi−1 ,1 , α i+1 ,…,αr ), а значит, по модулю 2 каждое слагаемое в

www.dainiak.com

последней сумме равно нулю. Отсюда∑

α 1 ,… ,α r∈F 2

P (α1 ,…,αr )= ∑α 1 ,… , αr∈F 2

c ⋅α1…α r⏟¿c

+ ∑1≤i≤r

∑α 1,… ,α r∈ F2

Pi (α 1,…,α r )⏟¿0

=c .

Лемма доказана.

Пусть P— произвольный многочлен из RM-кода. Зафиксируем произвольные β1,…, βm−r∈F2 и положим

Pβ1 ,… , βm−r≔P (x1 ,…,xr , β1,…, βm−r ) .

Имеем Pβ1 ,… , βm−r∈ F2 [ x1 ,…, xr ], и по только что доказанной лемме мы получаем

∑α 1 ,… ,α r∈F 2

Pβ 1 ,… , βm−r(α1 ,…,α r )=coef x1 ⋅…⋅ x r

Pβ1 ,… , βm−r=coef x1 ⋅… ⋅x r

P .

Если нам дано кодовое слово с не более чем (2m−r−1−1 ) ошибками, это означает, что нам дан некий набор величин P (t1 ,…, tm ), где P (t1 ,…, tm )=P (t1 ,…, tm ) для всех (t 1,…, tm )∈F2m∖T bad, где

|T bad|≤2m−r−1−1. Подставим P (t1 ,…, tm ) вместо P (t1 ,…, tm ) в нашу формулу. Для каждого набора (β1 ,… ,βm−r )∈F2m−r рассмотрим сумму

Sβ1 ,… , βm−r≔ ∑

α1 ,… ,α r∈ F2

P (α 1 ,…,α r , β1 ,…, βm−r ) .

У сумм Sβ1 ,… , βm−r при разных (β1 ,… ,βm−r ) нет общих слагаемых. Поэтому Sβ1 ,… , βm−r

=coef x1 ⋅… ⋅ xrP для всех

(β1 ,… ,βm−r )∈F2m−r , кроме, быть может, |T bad| штук. Всего сумм 2m−r, и |T bad|<2m−r−1, а значит, большинство этих сумм равны coef x1 ⋅… ⋅x r

P.

В итоге способ нахождения coef x1 ⋅… ⋅x rP таков:

для каждого (β1 ,… ,βm−r )∈F2m−r вычисляем соответствующую сумму Sβ1 ,… , βm−r,

находим coef x1 ⋅… ⋅x rP голосованием, то есть как то значение, которое встречается чаще всего

среди {Sβ 1 ,… , βm−r }.

Ясно, что так можно определить любой из коэффициентов coef x i1⋅…⋅ x i

r

P.

Пусть уже найдены все coef x i1⋅…⋅ x i

r

P. Рассмотрим многочленP[r−1]≔P− ∑

i1 ,… ,ir(coef x i

1⋅…⋅ x i

r

P )⋅ xi1…x ir .

В P[r−1] уже все слагаемые степени ≤r−1. Рассмотрим величины P[r−1] (t 1 ,…,tm ), равные P (t1 ,…, tm )− ∑

i1 ,… ,ir(coef x i

1⋅…⋅ x i

r

P )⋅ ti1…tir .

Так как P[r−1] (t 1 ,…,tm )=P [r−1 ] (t 1 ,…, tm ) на множестве F2m∖T bad, то, как и ранее, голосованием можно

определить coef x i1⋅…⋅ x i

r−1

P[r−1]. Но coef x i1⋅…⋅ x i

r−1

P[r−1]=coef x i1⋅…⋅ x i

r−1

P, то есть теперь мы знаем коэффициенты при слагаемых P степени ≤r−1. Действуя дальше в том же духе, можно найти и остальные коэффициенты P.

Общая схема декодирования RM-кодов:

определяем все coef x i1⋅…⋅ x i

r

P,

рассматриваем P[r−1]≔P− ∑i1 ,… ,ir

(coef x i1⋅…⋅ x i

r

P )⋅ xi1…x ir, определяем все coef x i

1⋅…⋅ x i

r−1

P,

рассматриваем P[r−2]≔P [r−1 ]− ∑i1 ,…, ir−1

(coef x i1⋅…⋅ x i

r−1

P )⋅ x i1…xir−1, определяем все coef x i

1⋅…⋅ x i

r−2

P, и так далее…

www.dainiak.com

4.3. Понятие об алгеброгеометрических кодах (кодах В.Д. Гоппы)

Код Рида—Соломона определяется так: {(P (t1 ) ,…, P (tn ) )∣ P∈ Fq [ x ]∧deg P<k }. Идея оценки кодового расстояния RS-кодов состояла в том, что многочлен маленькой степени имеет мало нулей. Эти соображения можно уточнить: во-первых, можно тщательно выбрать множество точек {t 1 ,…, t n }, в которых вычисляется значение P, и во-вторых, можно брать не всевозможные многочлены ограниченной степени, а специально выбранное их подмножество.

Идея: в качестве точек t 1 ,…, t n брать нули некоторого многочлена Pbase небольшой степени, а в качестве многочленов, по которым строится C, брать многочлены, имеющие мало общих нулей с Pbase. Реализуя полученные идеи, мы приходим к кодам Гоппы. Ниже мы лишь вскользь коснёмся этой красивой конструкции, рассмотрев конкретный пример.

Будем работать в конечном поле F13, взяв Pbase≔ y2−2 x3+2 x. Множество нулей этого многочлена: Sbase= {(0,0 ) , (±1 ;0 ) , (2;±5 ) , (3 ;±3 ) , (4 ;±4 ) , (6 ;±2 ) , (7 ;±3 ) , (9 ;±6 ) , (10 ;±2 ) , (11;±1 ) } ,q≔13 ,

n≔|Sbase|=19.Рассмотрим множество многочленов~P≔ {α 1+α2 x+α3 x2+α4 x3+α 5 y+α 6 xy }.

Читатель может самостоятельно доказать, что если P∈~P и P≢0, то у многочленов P и Pbase

не больше шести общих нулей. Отсюда вытекает, что множество C≔ {(P (x0 , y0 ))(x0 , y0 )∈Sbase∣ P∈~P}

является [19,6,13 ]13-кодом.

Сравнение с конструкцией Рида—СоломонаЧтобы с помощью конструкции Рида—Соломона получить k ≥6 и d ≥13, пришлось бы взять q≥n≥k+d−1≥18, и это дало бы [18,6,13 ]19-код или [19,6,14 ]19-код. То есть мы выгадали бы единицу в длине слов или расстоянии, но проиграли бы в мощности алфавита в полтора раза.

5. Циклические коды5.1. Определение

Циклический код — это линейный код, такой, что для любого кодового слова (a0 , a1… ,an−1 ) слово (an−1 , a0… ,an−2 ) также является кодовым. Из определения следует, что тогда любой циклический сдвиг кодового слова также является кодовым словом.

Например, [7,4,3 ]-код Хемминга эквивалентен циклическому коду с проверочной матрицей

(1 1 1 0 1 0 00 1 1 1 0 1 00 0 1 1 1 0 1) .

Сопоставим слову (a0 ,… ,an−1 )∈ Fqn многочленf≔ a0+a1 x+a2 x

2+…+an−1 xn−1∈Fq [x ] .

Тогда слову (an−1 , a0… ,an−2 ) отвечает многочленan−1+a0 x+a1 x

2+…+an−2 xn−1=x ⋅ f−an−1 (xn−1 ) .

Перейдём в кольцо Fq [x ] / (xn−1 ). Слову (a0 ,… ,an−1 ) отвечает элемент кольцаf=a0+a1 x+a2 x

2+…+an−1 xn−1 ,а слову (an−1 , a0… ,an−2 ) отвечает элемент

x ⋅ f−an−1 (xn−1 )≡ {в кольце }≡x ⋅ f .

Вывод: циклический сдвиг слова эквивалентен умножению соответствующего многочлена на x в кольце Fq [x ] / (xn−1 ).

www.dainiak.com

Таким образом, можно сформулировать алгебраическое определение циклических кодов: циклический код — это подмножество C кольца Fq [x ] / (xn−1 ), такое, что

f 1, f 2∈C⇒∀α , β∈ Fqα f 1+β f 2∈C, f ∈C⇒ x ⋅ f ∈C .

Утверждение.Для любого ц.к. C⊆F [x ] / (xn−1 ) выполнено

f ∈C⇒∀ g∈F [ x ] / (xn−1 ) f ⋅ g∈C .Доказательство: утверждение непосредственно следует из алгебраического определения ц.к.

5.2. Порождающий многочлен

Утверждение.Любой циклический код C⊆F [x ] / (xn−1 ) может быть представлен в виде

{f ⋅ g∣ f ∈F [x ]/ (xn−1 ) }для некоторого фиксированного многочлена g.

Доказательство. Пусть C — ц.к. Рассмотрим g0∈C , такой, чтоdeg g0=min

g∈Cg≢0

deg g

Тогда любой многочлен f ∈C кратен g0. Действительно, поделим f на g0 c остатком:f ( x )=g0 ( x ) ⋅~

f ( x )+r ( x ) ,где deg r<deg g0.

Но r=f−~f ⋅ g0∈C, а значит r ≡0.

Утверждение доказано.

Нормированный многочлен — это многочлен с коэффициентом 1 при мономе старшей степени.

Утверждение.В любом ц.к. ненулевой нормированный многочлен минимальной степени единственен. Этот многочлен называется порождающим многочленом циклического кода.

Доказательство. Допустим, что в коде C нашлись два разных нормногочлена минимальной степени:

g1 ( x )=x l+…g2 ( x )=x l+…Но тогда (g1−g2)∈C и deg (g1−g2 )<l — это противоречит минимальности l.

Теорема.Нормногочлен g∈F [x ] / (xn−1 ) может быть порождающим многочленом циклического кода т. и т.т., когда он является делителем многочлена (xn−1 ) в кольце F [ x ].

Доказательство g∨ (xn−1 )⇒∃ц .к .:

Пусть g ( x )∣ ( xn−1 ). Положим C≔ {fg , где f ∈F [x ]/ (xn−1 ) }. Очевидно, C — циклический код. Осталось доказать, что g — порождающий многочлен кода C, то есть что в C любой ненулевой многочлен имеет степень ¿deg g, либо равен const ⋅ g.

Рассмотрим произвольный многочлен ~g∈C . Имеем ~g=fg для некоторого F [ x ] / (xn−1 ). Тогда в кольце F [ x ] для тех же самых f и ~g и некоторого s выполнено равенство ~g=f ⋅ g+s ⋅ (xn−1 ) . По

условию, (xn−1 )=r ⋅ g для некоторого r∈F [x ], следовательно~g=f ⋅ g+sr ⋅ g=( f +sr ) ⋅g .

Итак, в кольце F [ x ] для некоторых f ,r , s имеем ~g=(f +sr )⋅ g . Возможны случаи:

( f +sr )≡0 — тогда ~g≡0, ( f +sr )≡const ≠0 — тогда ~g=const ⋅g, deg ( f +sr )≥1 — тогда deg~g>deg g.

www.dainiak.com

Доказательство ∃ц .к .⇒ g∨(xn−1 ):Пусть C — циклический код в F [ x ] / (xn−1 ) с порождающим многочленом g. Поделим в кольце F [ x ] с остатком (xn−1 ) на g: xn−1=f ⋅ g+r , где deg r<deg g. Тогда в кольце F [ x ] / (xn−1 ) имеем r=(−f )⋅ g∈C . Отсюда r ≡0, то есть g∨ (xn−1 ).

5.3. Порождающая и проверочная матрицы

Утверждение.Пусть порождающий многочлен циклического кода C⊆Fq [x ]/ (xn−1 ) имеет вид

c0+c1 x+…+cα−1 xα−1+xα .

Тогда если рассматривать C как подпространство Fqn, то dimC=n−α и порождающая матрица кода

имеет вид

G≔(c0 c1 … cα−1 1 0 … … 00 c0 c1 … cα−1 1 0 … 0⋮ ⋱ ⋱ ⋱ ⋱ ⋱ ⋱ ⋱ ⋮0 … … 0 c0 c1 … cα−1 1

).Доказательство. Очевидно, что строки матрицы G линейно независимы и её ранг равен (n−α ). Остаётся доказать равенство dimC=n−α .

Для произвольного f ∈ Fq [ x ] /( xn−1 ) положим C f≔ { f+h ∣h∈C }. Докажем, что если f 1≠ f 2 и deg f i<α , то C f 1

∩C f 2=∅ .

Допустим, что C f 1∩C f 2

≠∅ . Это означает, что f 1+h1=f 2+h2 для некоторых h1 , h2∈C. Тогда f 1−f 2=h2−h1∈C. Но тогда из условия deg ( f 1−f 2 )<α вытекает, что f 1−f 2≡0 — противоречие.

Пусть f 1,…, f qα∈Fq [x ]/ (xn−1 )— всевозможные многочлены степени ¿α .

Так как C f i∩C f j

=∅ при i≠ j, то

|C f 1|+…+|C f q α|≤|Fq [x ]/ (xn−1 )|=qn .

Очевидно, |C f i|=|C| для каждого i, а значит, |C|≤ qn

qα=qn−α. Следовательно, dimC≤n−α .

Утверждение доказано.

Следствие.Код C можно представить в виде{f ⋅ g∣ f ∈F [x ]/ (xn−1 ) , deg f <n−α } .

Утверждение.У любого циклического кода существует порождающая матрица канонического вида, то есть любой циклический код допускает систематическое кодирование. Важно, что сам код допускает систематическое кодирование; не нужно переходить к эквивалентному коду.

Доказательство. Пусть g — порождающий многочлен, deg g=α . Поделим многочлены xα , xα+1 ,…,xn−1 с остатком на g:

xα ¿ h0 ⋅ g+r 0⋮ ¿ xn−1 ¿

hn−α−1 ⋅ g+rn−α−1¿

Перепишем эти равенства:h0⋅ g ¿ xα−r0⋮ ¿hn−α−1⋅ g ¿

xn−1−rn−α−1¿

www.dainiak.com

Каждый из многочленов hi ⋅ g принадлежит C и имеет видxα+i+c i , α−1 x

α−1+c i , α−2 xα−2+…+c i ,0 ,где c i , j — некоторые коэффициенты.

Многочлены hi ⋅ g принадлежат C и имеют вид xα+i+c i , α−1 xα−1+c i , α−2 x

α−2+…+c i ,0.

Составим из их коэффициентов порождающую матрицу кода C, имеющую вид

(c0,0 … c0 ,α−1 1 0 … 0c1,0 … c1 ,α−1 0 1 … 0⋮ ⋮ ⋮ ¿ ⋱ ¿ cn−α−1,0 ¿

cn−α−1, α−1¿0¿0¿…¿1¿) .Т.к. код C циклический, то можно циклически переставить столбцы в этой матрице, и получится искомая матрица вида ( I∨~

G ), где I — единичная матрица порядка (n−α ).

Утверждение доказано.

Пусть g — порождающий многочлен кода C. Так как g∨ (xn−1 ), то в кольце F [ x ] имеем xn−1=g ⋅ h для некоторого h∈F [x ]. Многочлен h ( x ) называется проверочным многочленом кода C. Для любого f ∈C в кольце F [ x ] / (xn−1 ) выполнено равенство f ⋅ h=0.

Утверждение.Пусть проверочный многочлен циклического кода C⊆F [x ] / (xn−1 ) имеет вид

h0+h1 x+…+hn−α xn−α .

Тогда если рассматривать C как обычный линейный код, то его проверочная матрица будет иметь вид

(hn−α … h1 h0 0 … … 00 hn−α … h1 h0 0 … 0⋮ ⋱ ⋱ ⋱ ⋱ ⋱ ⋱ ⋮0 … … 0 hn−α … h1 h0

) .Доказательство. Пусть проверочный многочлен циклического кода C⊆F [x ] / (xn−1 ) имеет вид

h0+h1 x+…+hn−α xn−α .

Для удобства формально введём hn−α+1=hn−α+2=…=0. В кольце F [ x ] / (xn−1 )выполнены равенства

0=(c0+c1 x+…+cn−1 xn−1 )⋅ (h0+h1 x+…+hn−1 x

n−1 )=∑m=0

2n−2

xm∑i=0

m

c ihm−i .

В F [ x ] / (xn−1 ) выполнено xn+t=x t, отсюда

0=∑m=0

2n−2

xm∑i=0

m

c ihm−i=∑m=0

n−1

xm∑i=0

m

cihm−i+∑m=0

n−1

xm ∑i=m+1

n−1

c ihm+n−i .

Следовательно при каждом m∈ {0 ,…,n−1 } должно быть выполнено

∑i=0

m

cihm−i+ ∑i=m+1

n−1

c ihm+n−i=∑i=0

n−1

c ih (m−i )modn=0.

При m∈ {n−α ,…,n−1 } уравнения

∑i=0

n−1

cih(m−i)modn=0как раз и задаются матрицей

(hn−α … h1 h0 0 … … 00 hn−α … h1 h0 0 … 0⋮ ⋱ ⋱ ⋱ ⋱ ⋱ ⋱ ⋮0 … … 0 hn−α … h1 h0

) .То, что эта матрица проверочная (т.е. никакие «лишние» слова не удовлетворяют системе), следует из того, что её ранг равен α , а размерность кода равна (n−α ).

www.dainiak.com

Утверждение доказано.

5.4. Граница БЧХ и коды БЧХ

5.4.1. Граница БЧХ

Формула Вандермонда.

| 1 1 ⋯ 1λ1 λ2 ⋯ λr⋮ ⋮ ⋮ ⋮λ1r−1 λ2

r−1 ⋯ λrr−1|= ∏

1≤i< j ≤r(λ j−λ i ) .Доказательство индукцией по r. База r=1 очевидна:

|1 1λ1 λ2|=λ2−λ1.

Индуктивный переход:

| 1 1 ⋯ 1λ1 λ2 ⋯ λr⋮ ⋮ ⋯ ⋮λ1r−1 λ2

r−1 ⋯ λrr−1|=| 1 0 ⋯ 0

λ1 λ2− λ1 ⋯ λr−λ1⋮ ⋮ ⋯ ⋮λ1r−1 λ2

r−1− λ1r−1 ⋯ λr

r−1−λ1r−1|=|

λ2− λ1 ⋯ λr−λ1λ22− λ1

2 ⋯ λr2−λ1

2

⋮ ⋯ ⋮λ2r−2− λ1

r−2 ⋯ λrr−2−λ1

r−2

λ2r−1− λ1

r−1 ⋯ λrr−1−λ1

r−1|=|

λ2−λ1 ⋯ λr− λ1λ22−λ1 λ2 ⋯ λr

2− λ1 λr⋮ ⋯ ⋮

λ2r−2− λ1 λ2

r−3 ⋯ λrr−2−λ1 λr

r−3

λ2r−1−λ1 λ2

r−2 ⋯ λrr−1−λ1 λr

r−2|=(∏

i=2

r

(λi−λ1 ))⋅ det| 1 1 ⋯ 1λ2 λ3 ⋯ λr⋮ ⋮ ⋯ ⋮λ2r−2 λ3

r−2 ⋯ λrr−2|= ∏

1≤i< j ≤ r(λ j− λi ) .

В первом переходе вычитаем первый столбец из всех остальных. Во втором — раскладываем определитель по первой строке. В третьем — вычитаем из каждой строки предыдущую, домноженную на λ1. Далее из каждого i-го столбца выносим множитель (λ i+1−λ1 ).

Формула доказана.

Рассмотрим поле Fq, где q=pm, p простое. Известно, что множество Fq∖ {0 } образует циклическую группу по умножению. Каждый образующий элемент этой группы (порядок которого равен (q−1 )) называется примитивным элементом поля. Иными словами, примитивный элемент — это такой λ∈Fq, что {1 , λ , λ2 ,…, λq−2 }=Fq∖ {0 }.

Теорема. (A.Hocquenghem’1959, R.C. Bose & D.K. Ray-Chaudhuri’1960)Пусть λ — примитивный элемент Fq, и δ ≤q. Пусть порождающий многочлен g кода C⊆Fq

n таков, что в Fq среди его корней есть числа λb , λb+1 ,…, λb+δ−2. Тогда d (C )≥δ.

Доказательство. Рассмотрим произвольный f ( x )∈C . Найдётся многочлен s ( x )∈Fq [ x ] /(xn−1 ), такой, что deg s<n−degg и в кольце Fq [x ] / (xn−1 ) выполнено равенство f ( x )=s ( x ) ⋅g (x ). Так как

deg s+deg g<n, то это равенство выполнено и в кольце Fq [x ]. Пусть λb ,…, λb+δ−2 — различные корни g ( x ). Они же будут корнями f . Пусть f=c0+c1 x+…+cn−1 x

n−1. Вектор (c0 ,…,cn−1 ) удовлетворяет системе линейных уравнений с матрицей

~H=(1 λb ⋯ λb (n−1 )

1 λb+1 ⋯ λ(b+1) (n−1 )

⋮ ⋮ ⋮ ⋮1 λb+δ−2 ⋯ λ(b+δ−2) (n−1)) .

Матрица ~H не обязательно проверочная матрица кода, но её можно дополнить до проверочной. Достаточно теперь доказать, что любые (δ−1 ) столбцов матрицы ~H линейно независимы. Выберем

www.dainiak.com

в ~H произвольные столбцы i1 ,…, iδ−1. Получим матрицу ~H i1 ,… ,iδ−1

, определитель которой равен

det~H i1 ,… ,iδ−1=| λb ⋅ i1 λb ⋅i2 ⋯ λb ⋅iδ−1

λ(b+1 )⋅ i1 λ (b+1) ⋅i2 ⋯ λ (b+1 ) ⋅iδ−1

⋮ ⋮ ⋮ ⋮

λ(b+δ−2) ⋅i1 λ

(b+δ−2 )⋅ i2 ⋯ λ(b+δ−2 )⋅iδ−1

|=λb ⋅ ( i1+…+iδ−1 )| 1 1 ⋯ 1λi1 λ i2 ⋯ λ iδ−1

⋮ ⋮ ⋮ ⋮λ(δ−2) ⋅i1 λ (b−2 )⋅i2 ⋯ λ (δ−2 )⋅ iδ−1|.

Из формулы Вандермонда следует, что полученный определитель отличен от нуля.

Теорема доказана.

5.4.2. Коды БЧХ

Проблема: Если применять теорему БЧХ «в лоб», то невозможно доказать, что кодовое расстояние больше мощности кодового алфавита.Решение: Код рассмотрим как подмножество в F p

n, но при применении границы БЧХ погрузим поле F p в F pm. При любом простом p и любом m поле F p можно вложить как подполе в F pm.

Обычно поле F p — это поле вычетов Zp, а F pm строится как множество многочленов с коэффициентами из Zp, которые складываются и умножаются по модулю некоторого многочлена степени m, неприводимого над Zp. Тогда вложение F p в F pm очевидно: элементам F p соответствуют многочлены степени ≤0. Элементам F pm можно сопоставить векторы из F p

m, так, что сумме элементов F pm соответствует сумма векторов в F p

m.

Раз F pm — многочлены с коэффициентами из F p степени ≤m, то каждому элементу F pm сопоставим вектор коэффициентов многочлена.

Пусть p простое. Рассмотрим циклический код C⊆F p [x ] / (xn−1 ) с порождающим многочленом g. Коэффициенты g берутся из F p, но их можно считать одновременно элементами F pm. Рассмотрим код ~C⊆Fpm [x ] / (xn−1 ), порождённый многочленом g (если считать, что g∈F pm [x ]/ (xn−1 )). Можно в том же духе считать, что C⊆~

C . Коэффициенты g берутся из F p, но их можно считать одновременно элементами F pm. Код ~C⊆Fpm [x ] / (xn−1 ) порождён g. Пусть λ — примитивный элемент F pm, и

g (λb )=…=g (λb+δ−2 )=0 . Тогда граница БЧХ гласит: d (~C )≥δ . Так как C⊆~C , то и d (C )≥δ. Итак,

предлагается действовать по такой схеме:

Подбираем g∈F pm [x ]/ (xn−1 ) с коэффициентами из F p, так, чтобы в F pm было выполнено

g (λb )=…=g (λb+δ−2 )=0 и g∨ (xn−1 ). На основе g строим циклический код в F p [ x ] / (xn−1 ), для которого, по теореме БЧХ,

выполнено d (C )≥δ.

Возникают вопросы: существует ли вообще такой g, и если существует, то как оценить dimC? К счастью, теория конечных полей позволяет выбрать «хороший» g.

Утверждение (без доказательства).Для любого α∈ Fp m∖ {0 } существует многочлен f ∈ Fpm [ x ]∖ {0 } с коэффициентами из F p, для которого f (α )=0. Если взять такой f минимальной степени, то f неприводим над F p, deg f ≤m, и f ∣ (x p

m−1−1 ). Такой f называется минимальным многочленом элемента α .

Следствие.Если n=pm−1, то существует g, такой, чтоg (λb )=…=g (λb+δ−2 )=0 и g∨ (xn−1 ), причём deg g≤ (δ−1 )m. Такой g можно взять как LCM ( f λb ,…, f λb +δ−2 ), где f λb ,…, f λb+δ−2 — минимальные многочлены соответствующих элементов. Через LCM обозначаем наименьшее общее кратное многочленов.

Окончательный способ построения БЧХ-кода:

www.dainiak.com

Берём n≔ pm−1 и g≔LCM ( f λb ,…, f λb+δ−2 ), где f λb ,…, f λb+δ−2 — минимальные многочлены соответствующих элементов в F pm.

Строим циклический код в F p, используя g в качестве порождающего многочлена наименьшей возможной степени.

Получаем код с параметрами [ pm−1, k , d ] p, где k=n−deg g≥n−(δ−1 )m и d ≥δ.

5.5. Циклическое представление кодов Хемминга

Пусть λ — примитивный элемент поля F2m. Пусть g — минимальный многочлен для λ, и C⊂F22m−1 —

код, порождённый g. Любой кодовый многочлен f ∈C имеет корень, равный λ. Поэтому кодовые векторы (c0 ,…,c2m−2 ) удовлетворяют соотношению

c0+c1 λ+c2 λ2+…+c2m−2 λ

2m−2=0.

Так как { λ0 , λ1 ,… , λ2m−2 }=F2m∖ {0 }, и так как каждому элементу F2m отвечает вектор из F2m, то

проверочная матрица кода равна (v λ0 , v λ1 ,…,vλ2m−2 )∈F2m×(2m−1), где vλ i — вектор, отвечающий λ i.

Столбцы матрицы — все ненулевые векторы F2m.

Утверждение.Двоичный код Хемминга с параметрами [2m−1,2m−1−m ,3 ] эквивалентен циклическому коду, порождённому минимальным многочленом примитивного элемента F2m.

5.6. Восстановление синхронизации для смежных классов циклических кодов

5.6.1. Задача восстановления синхронизацииДо сих пор мы рассматривали коды, устойчивые к ошибкам замещения; в этом разделе опишем

модель ошибок другого типа. Пусть по каналу передаются слова …a,b , c…:a1a2…anb1b2…bn c1 c2…cn…

Если в канале выпадают символы, может произойти ошибка синхронизации:a i+1ai+2…anb1b2…bnc1 c2…cn…и есть шанс неправильно разбить принятую последовательность на

слова:a i+1…anb1…bi ∣bi+1…bn c1…c i∣ c i+1…

Если при этом такие слова окажутся кодовыми, то мы далеко не сразу обнаружим ошибку!

Циклические коды очень плохие с точки зрения восстановления синхронизации: если a∈C и в канал передавалась последовательность aaa…, то при потере синхронизации мы обнаружим ошибку только в самом конце приёма.

Заметим, что если при приёме слова b «запоздать» на i тактов, то мы примем слово b i+1…bn c1…c i, а если «забежать вперёд» на i тактов, примем an−i+1…anb1…bn−i .

Код обладает свободой от запятой степени r, если для любых кодовых слов a ,b , c и любого i≤ r

коду не принадлежат слова b i+1…bn c1…c i и an−i+1…anb1…bn−i. Если r ≥n2

, то считаем, что r=∞, а код

называется кодом без запятой. Если r<∞, то при приёме можно (перебором) исправить

синхросдвиг на ≤r2

символов. Если r=∞, то может быть исправлен любой синхросдвиг.

Циклические коды совершенно не способны исправлять ошибки потери синхронизации как раз в силу своего определения: циклический сдвиг любого кодового слова сам является кодовым словом. Зато оказывается, что смежные классы циклических кодов отлично справляются с задачей. Пусть C⊆Fn — линейный код. Его смежный класс — это множество вида C+a≔ {c+a ∣ c∈C }. Отметим, что при a∉C этот код не является линейным.

www.dainiak.com

Если определять циклические коды как идеалы в кольце многочленов, то для циклического кода с порождающим многочленом g смежный класс имеет вид

{f ⋅ g+s ∣ f ∈F [ x ]/ (xn−1 ) }для некоторого s∈F [x ] / (xn−1 ).

Теорема.При s≡1 степень свободы от запятой смежного класса циклического кода равна (deg g−1 ) при n≥2deg g и равна ∞ при n<2deg g.

Доказательство (подробно обоснуем только нижнюю оценку). Пусть передавались слова a ,b∈C. Если при приёме слова a произошло запаздывание на i тактов, то принято будет слово-многочлен x−i ⋅ (f a−t 1)+ xn−i ⋅ t 2, где t 1 и t 2 — многочлены, образованные i первыми координатами слов a и b соответственно, а f a — многочлен, отвечающий слову a.

В кольце F [ x ] / (xn−1 ) имеемx−i ⋅ (f a−t 1)+ xn−i ⋅ t 2=xn−i⋅ ( f a−t 1+t2 ) .

Аналогично, если при приёме слова b произошло «забегание вперёд», то будет принято слово x i⋅ f b+(t 3−t 4 ), где t 3 и t 4 — многочлены, образованные i старшими разрядами слова a и i младшими разрядами b соответственно. При этом deg t 1 , deg t2 , deg t 3 , deg t 4<i.

Итак, в случае рассинхронизации принятое слово будет иметь вид xn−i⋅ (~f +Δ ) или x i⋅~f +Δ, где ~f ∈C и

deg Δ<i. Нужно, чтобы xn−i⋅ (~f +Δ ) , xi ⋅~f+Δ∉C при 0<i ≤ r.

Пусть C — смежный класс ц.к. вида {f ⋅ g+1∣ f ∈F [x ]/ (xn−1 ) }.Нужно, чтобы для любых f 1, f 2 , Δ ,i, таких, что deg Δ<i и 0<i ≤ r в кольце F [ x ] / (xn−1 ) было выполнено f 1⋅ g+1≠ x

n−i ⋅ ( f 2⋅ g+1+Δ) и f 1⋅ g+1≠ xi ⋅ ( f 2⋅ g+1 )+Δ. Это равносильно тому, что для любых f ,Δ ,i

выполнено f ⋅ g≠ x i+Δ−1.

Пусть C — смежный класс ц.к. вида {f ⋅ g+1∣ f ∈F [x ]/ (xn−1 ) } . Нужно, чтобы для любых f ,Δ ,i, таких, что deg Δ<i и 0<i ≤ r в кольце F [ x ] / (xn−1 ) было выполнено f ⋅ g≠ x i+Δ−1.

Имеем x i+Δ−1≢0 при любом i>0. Т.к. deg ( xi+Δ−1 )=i≤ r, то достаточно, чтобы deg g>r. Это и требовалось доказать.

6. Совершенные кодыНапомним, что совершенными кодами называются коды, на которых достигается граница Хемминга. Эти коды интересны тем, что шары с центрами в кодовых словах не пересекаются и заполняют собой всё пространство слов. В этом разделе многие утверждения будут приведены без доказательства, но пропускать их не стоит, поскольку они имеют «мировоззренческое» значение.

Под тривиальными мы будем понимать следующие следующие совершенные коды:

(n ,1 , n )q-код (состоит из одного слова), (n ,2 , n )2-код при нечётных n (пара слов-антиподов), (n ,qn ,1 )q-код (состоит из всех слов).

Для дальнейшего нам будет полезно отдельно сформулировать границу Хемминга для линейных кодов: для любого линейного [n , k , d ]q-кода |S⌊ (d−1 )/2 ⌋ (0 )|≤qn−k.Таким образом, линейный [n , k , d ]q-код совершенный, если и только если |S⌊ (d−1 )/2 ⌋ (0 )|=qn−k.

6.1. Совершенство кодов Голея и Хемминга

М. Голей (M. J. E. Golay) предложил два кода, и позже было замечено, что они циклические:

www.dainiak.com

[23,12,7 ]-код с порождающим многочленом 1+x+x5+x6+x7+x9+x11, [11,6,5 ]3-код с порождающим многочленом 2+x2+2x3+x4+x5.

Доказывать, что эти коды имеют именно такие параметры, мы не будем. По кодам Голея стандартным образом можно получить расширенные коды Голея:

[23,12,7 ]-код → [24,12,8 ]-код, [11,6,5 ]3-код → [12,6,6 ]3-код.

Утверждение.Коды Голея и Хемминга являются совершенными.

Доказательство. Утверждение доказывается непосредственной проверкой. Для [23,12,7 ]-кода

Голея: ∑i=0

3

(23i )=223−12. Для [11,6,5 ]3-кода Голея: ∑i=0

2

(ni )⋅2i=311−6. Совершенство двоичных кодов Хемминга мы уже доказывали ранее. Докажем его теперь в общем

случае. Проверочная матрица q-ичного кода Хемминга содержит все линейно независимые столбцы

высоты m. Получается [n=qm−1q−1, k=n−m ,3]

q

-код. Проверяем соотношение |S⌊ (d−1 )/2 ⌋ (0 )|=qn−k:|S1 (0 )|=1+n (q−1 )=qm=qn−k .

Утверждение доказано.

6.2. Некоторые теоремы о совершенных кодах

Следующая теорема утверждает, что, по большому счёту, всё разнообразие кодов над конечными полями исчерпывается (с точки зрения параметров) тривиальными кодами и кодами Хемминга и Голея.

Теорема. (В. А. Зиновьев, В. К. Леонтьев ’1972, A. Tietäväinen ’1973, J. H. van Lint ’1971, M. R. Best ’1983, Y. Hong ’1983, V. Pless ’1968) — Без доказательства.

Нетривиальных совершенных кодов с расстоянием ¿7 не существует. Единственным с точностью до эквивалентности совершенным кодом с расстоянием 7

является [23,12,7 ]-код Голея. Любой нетривиальный код над алфавитом мощности q=pm с расстоянием ≤5 либо

эквивалентен [11,6,5 ]3-коду Голея, либо имеет те же длину слов, число слов и кодовое

расстояние, что и [ q t−1q−1,qt−1q−1

−t ,3]q

-код Хемминга.

До сих пор неизвестно, существуют ли совершенные коды над алфавитами мощности ≠ pm с кодовым расстоянием 3 или 5.

Следующая теорема Васильева утверждает, что, в отличие от кодов Голея, у кодов Хемминга есть множество «близнецов».

Теорема. (Ю. Л. Васильев ’1962, обобщения: J. Schonheim ’1968, B. Lindstrom ’1969)Для любого q=pm существуют совершенные q-ичные коды с расстоянием 3, не эквивалентные линейным кодам.

Теорему Васильева в частном случае q=2 мы докажем в следующем разделе.

Из теоремы Зиновьева—Леонтьева—Тиетавайнена следует, что для любого совершенного кода над F pm существует линейный код с той же длиной слов, числом слов и кодовым расстоянием. Однако не стоит думать, что линейные коды оказываются лучшими всегда, как подтверждают следующие результаты.

Теорема. (F. P. Preparata ’1968, J.-M. Goethals & S. L. Snover ’1972)

www.dainiak.com

Для любого m≥2 существует (4m ,24m−4m ,6 )-код (коды с такими параметрами называют кодами

Преп ратыа/ ). Любой линейный код длины 4m с расстоянием 6 имеет меньшую мощность.

6.2.1. Доказательство теоремы Васильева при q=2

Лемма. (Конструкция Васильева)

Пусть C ' ,C' '⊆F2n — коды с расстояниями d ' и d ' ', причём d ' нечётно. Положим π (a )≔∑

i

a i. Для

произвольного γ :C' '→F2 рассмотрим код

C≔ {(c' ∣c '+c ' ' ∣π (c ' )+γ (c ' ' ) ) , где c '∈C ' , c ' '∈C ' '} .Тогда C является (2n+1 ,|C '|⋅|C ' '|,d )-кодом, где

d ≥min {2d'+1 , d ' ' }.Доказательство. Нетривиальна только оценка d (C ) — её доказательством и займёмся. Возьмём

пару различных слов кода C:

a=(c' ∣c '+c ' ' ∣π (c' )+γ (c ' ' ) ) ,a=( c' ∣ c '+ c ' ' ∣π ( c' )+γ (c ' ' ) ) .Возможны случаи:

c '≠ c ' и c ' '=c ' '. Если d (c ' ,c ' )=d ', то π (c ' )≠ π (c ' ), и, следовательно, d (a , a )=2d '+1. Если d (c ' ,c ' )>d ', то d (a , a )>2d '.

c '=c ' и c ' '≠ c ' '. Тогда, очевидно, d (a , a )≥d (c ' ' , c' ' )≥d' '. Остался случай c '≠ c ' и c ' '≠ c ' '. Пусть c ' и c ' отличаются на множестве позиций D1, а c ' ' и c ' '

отличаются на множестве позиций D2. Тогда c '+c ' ' и c '+c ' ' отличаются по крайней мере на множестве D2∖D 1. Следовательно, d (a , a )≥|D1|+|D2∖D1|≥|D2|≥d ' '.

Лемма доказана.

Следствие из леммы Васильева.Если существует (n , M ,3 )-код, то существует (2n+1 ,2n⋅M ,3 )-код, не эквивалентный никакому линейному.

Доказательство: достаточно применить конструкцию Васильева с C '≔F2n и заметить, что если

отображения γ и (γ+1 ) нелинейны, то получаемый с помощью конструкции код не эквивалентен никакому линейному.

Теорема Васильева для q=2.Для любого m≥2 существует совершенный (2m−1 ,22

m−m−1 ,3 )-код, не эквивалентный никакому линейному.

Доказательство: заметим, что при каждом m≥2 есть (2m−1−1 ,22m−1−m ,3 )-код Хемминга, и применим

Следствие с n≔2m−1−1 и M≔ 22m−1−m.

Теорема доказана.

7. Теоремы Шеннона о скорости кодирования

7.1. Шенноновская ёмкость графов

Напомним типы ошибок замещения:

Односторонние ошибки. Например, если в двоичном канале возможны только замещения вида 0→1 или только 1→0. Канал связи в этом случае называется несимметричным.

Двусторонние (симметричные) ошибки. Если возможно замещение символов b1→b2, то возможно и замещение b2→b1. Канал связи, в котором ошибки только симметричные, называется симметричным.

www.dainiak.com

Можно задать модель канала графом, вершины которого — символы алфавита канала. Дуга идёт из x в y, если в канале возможна ошибка замещения x на y. Если в канале для каждой пары символов ( x , y ) возможны либо оба замещения x→ y, y→x, либо ни одно из них, то граф канала можно считать неориентированным.

Пусть G — граф канала. Если считать каждый символ канала отдельным сообщением, то во избежание ошибок придётся использовать множество символов C1, являющееся независимым множеством в G. При этом в лучшем случае пропускная способность канала получается такой же, как у канала без ошибок, алфавит которого имеет мощность α (G ).

Если по каналу мы посылаем пары символов, то следует выбирать для использования такое множество пар C2, чтобы

∄ (x ' , y' ) , (x ' ' , y ' ' )∈C2: ( (x '=x' '∨ x' x' '∈ E )∧ ( y'= y ' '∨ y ' y ' '∈ E )) .Если мы рассмотрим такое C2, имеющее максимально возможную мощность, то данный код позволяет достичь пропускной способности √|C2|. Смысл извлечения квадратного корня из |C2| в следующем: это скорость передачи данных в канале в расчёте на один передаваемый символ. Если бы у нас был безошибочный канал, в алфавите которого ровно √|C2| символов, то мы могли бы передавать по нему как раз |C2| сообщений длины 2.

Аналогично, если G — граф канала, и мы посылаем тройки символов, то следует выбирать такое множество троек C3, чтобы в нём не было двух троек, соответствующие компоненты которых совпадают или образуют ребро в G. Если мы рассмотрим такое C3, имеющее максимально возможную мощность, то данный код позволит достичь пропускной способности 3√|C3|. И так далее… Чтобы рассмотреть описанные конструкции в пределе, нужно ввести понятие произведения графов.

Шенноновское произведение графов G и H — это граф G×H со множеством вершинV (G×H )= {(x , y )∣ x∈V (G ) , y∈V (H ) }.

Рёбра в G×H между парами (x ' , y ' ) и (x ' ' , y ' ' ), для которых(x '=x ' '∨ x ' x ' '∈E (G ) )∧ ( y '= y ' '∨ y ' y ' '∈E (H ) ) .

Очевидно, (G1×G2 )×G3≃G1× (G2×G3 ) и G1×G2≃G2×G1 для любых G1 ,G2 ,G3.

Шенноновская ёмкость графа G определяется так:cap (G )=¿n∈N n√α (G×G×…×G ) ,где произведение берётся от n копий графа G. Это наибольшая возможная (в пределе) «скорость», с которой можно передавать без ошибок данные по каналу,

моделью которого является граф G.

Пусть G — произвольный граф. Будем рассматривать наборы весов w на вершинах графа G, такие, что

∀ x w (x )≥0,

∑x∈V (G )

w ( x )=1.

Для любого множества A⊆G положим w (A )≔∑x∈ A

w ( x ) и для произвольного графа G рассмотрим

величинуν (G )≔min

wmax

K —клика в Gw (K ) .Отметим, что максимум в формуле выше достаточно брать только по

максимальным по включению кликам.

Теорема Шеннона о верхней оценке ёмкости:Для любого G справедливо неравенство cap (G )≤ (ν (G ) )−1.

www.dainiak.com

Доказательство. Докажем, что n√α (Gn )≤ (ν (G ) )−1 для каждого n. Пусть A⊆V (G ) — независимое множество размера α (G ). Рассмотрим набор весов w0, в котором

w0 (x )≔0, если x∉ A , w0 (x )≔ (α (G ) )−1, если x∈ A .

Для таких весов получимν (G )≤ max

K —клика вGw0 (K )=(α (G ) )−1 ,откуда α (G )≤ (ν (G ) )−1.

Лемма. Для любых графов G ,H выполнено ν (G×H )=ν (G )⋅ ν (H ) .

Заметим, что если мы докажем эту лемму, то докажем и теорему, поскольку

ν (Gn )=(ν (G ) )n⇒ n√α (G n )≤ n√ (ν (Gn ) )−1=(ν (G ) )−1 .

Доказательство леммы. Пусть wG¿ и wH

¿ — наборы весов на вершинах графов G и H , на которых достигаются минимумы в ν (G ) и ν (H ). Рассмотрим набор весов wG×H на вершинах графа G×H ,

такой, чтоwG×H ( x , y )≔wG

¿ ( x )⋅wH¿ ( y ) .

Любая максимальная по включению клика K в графе G×H является множеством пар вида{( x , y )∣ x∈KG , y∈K H } ,где KG и K H — клики в G и H соответственно. Для таких клик K имеем

wG×H (K )= ∑( x , y )∈ K

wG¿ ( x )⋅wH

¿ ( y )=( ∑x∈ KG

wG¿ ( x ))( ∑y∈ KH

wH¿ ( y ))=wG

¿ (KG ) ⋅wH¿ (K H ) .

Имеем ν (G×H )=min

wmaxK−кликав G×H

w (K )≤ maxK−кликавG×H

wG×H (K )= maxK−кликавG×H

wG¿ (KG )⋅wH

¿ (K H )≤ maxK−кликавG

wG¿ (K )⋅ max

K−кликав H

wH¿ (K )=ν (G ) ⋅ν (H ) .

В итоге, ν (G×H )≤ν (G )⋅ ν (H ). Осталось доказать обратное неравенство. Обозначим через ~w набор весов на кликах графа (неотрицательны, сумма равна единице). По теореме о свойствах

двойственных задач линейного программирования, для любого графа имеет место равенствоminwmaxK

∑x∈K

w ( x )=max~wminx

∑K∋x

~w (K )

Пусть ~wG¿ и ~wH

¿ — наборы весов, на которых достигается max для графов G и H . Построим набор весов ~wG ×H на кликах графа G×H :

Пусть клика K может быть представлена в виде KG×K H, где KG и K H — клики в G и H . Тогда полагаем ~wG ×H (K )≔~wG

¿ (KG ) ⋅~wH¿ (K H ).

Для остальных клик K полагаем ~wG ×H (K )≔0.

Для такого набора весов и для любой фиксированной вершины ( x , y )∈V (G×H ) имеем∑

K∋ ( x , y )

~wG×H (K )≥ ∑K∋ ( x , y )

∃KG ,K H :K=KG×K H

~wG×H (K )= ∑KG∋x ,K H∋ y

~wG¿ (K G ) ⋅~wH

¿ (KH )=( ∑KG∋ x

~wG¿ (KG ))( ∑K H∋ y

~wH¿ (K H ))≥ν (G )⋅ ν (H ) .

Отсюда следует неравенство ν (G×H )≥ν (G )⋅ ν (H ), а значит верно равенство ν (G×H )=ν (G )⋅ ν (H ). Доказательство леммы, а вместе с ним, и теоремы, завершено.

7.2. Теоремы Шеннона для каналов с фиксированной вероятностью ошибок

В этом разделе мы будем работать с вероятностной моделью канала связи, и предполагать следующее:

Канал двоичный и симметричный (алфавит канала F2, вероятность замены 0→1 и 1→0 одинакова).

www.dainiak.com

В каждом символе, переданном в канал, может произойти ошибка независимо от других

символов с вероятностью p, лежащей в интервале (0 , 12 ). Кодовые слова имеют одинаковую длину n.

Число p называется вероятностью ошибки на символ.

Пусть заданы способы кодирования и декодирования, т. е. пара функций:

E :F2k→F2

n,D :F2n→F2

k .

Скоростью кодирования называется величина rate (E , D )≔ kn

— это доля информационных

символов в сообщении.

Поданное в канал кодовое слово b в результате ошибок в канале преобразуется в слово b '. Вероятностью ошибки на слово называется величина

1¿кодовых слов

⋅ ∑b —к .сл .

P [D (b ' )≠b ] .

Через e будем обозначать вектор ошибок, произошедших в канале с сообщением.

7.2.1. Теоремы ШеннонаПоложим H (p )≔−p log2 p−(1−p ) log2 (1−p ). Функция H называется функцией двоичной энтропии.

Теорема (о существовании кода). (C.E. Shannon)

Пусть ε>0 — сколь угодно малое число. Пусть вероятность ошибки на символ p∈(0 , 12 ). Тогда

существуют такие (большие!) n , k и такие функции E , D, что rate (E , D )≥1−H ( p )−εи при случайном выборе слова a∈F2

kPr [D (E (a )+e )≠a ]<ε .Теорема (о пределе скорости). (C.E. Shannon)

Пусть ε , δ>0 — сколь угодно малые числа. Пусть вероятность ошибки на символ p∈(0 , 12 ). Тогда для

любых достаточно больших n и k и любых E , D, таких, что rate (E , D )≥1−H ( p )+ε ,и при случайном выборе слова a∈F2

kPr [D (E (a )+e )=a ]<δ ,где δ>0 зависит только от ε .

Вывод из теорем Шеннона:Для двоичного канала связи с постоянной вероятностью ошибки в отдельном символе p максимально достижимая теоретическая скорость передачи сообщений равна (1−H ( p ) ) (при условии стремления к нулю вероятности ошибки декодирования).

Далее мы докажем только первую из двух упомянутых теорем; доказательство второй аналогично.

7.2.2. Доказательство теоремы о существовании хороших кодовУтверждение.

При любом λ∈(0 , 12 ) справедлива оценка

www.dainiak.com

∑i=0

λn

(ni )≤2n ⋅H ( λ ) .Доказательство. Положив t≔ λn и x≔λ1− λ

∈ (0,1 ), получаем

2n ⋅H ( λ )=x−t ⋅ (1+x )n≥∑i=0

λn

(ni )x i−t≥∑i=0t

(ni ) .Лемма о числе ошибок.

Пусть p и γ — произвольные числа, такие, что p∈(0 , 12) и γ>0. Пусть e∈ F2

n — случайный вектор,

каждая компонента которого равна единице с вероятностью p и нулю с вероятностью (1−p ). Тогда P [‖e‖>n (p+γ ) ]≤cn, где c<1 и c зависит только от p и γ .Неформально: если в двоичный канал, в котором отдельные символы искажаются с вероятностью p, передать длинное слово, то с большой вероятностью доля ошибок в переданном слове будет не сильно превосходить своё матожидание.

Доказательство. Пусть t — произвольное положительное число. Пусть e1 ,…,en — компоненты вектора e. Пользуясь неравенством Маркова, имеем

Pr [‖e‖>n ( p+γ ) ]=Pr [exp (t ⋅‖e‖)>exp (t ⋅n ( p+γ ) ) ]=Pr [exp ( t ⋅∑e i )>exp (t ⋅ n (p+γ ) ) ]≤E [exp (t ⋅∑ei ) ]exp (tn ( p+γ ) )

=exp (−tn ( p+γ ) ) ⋅E [∏exp (t ei ) ]=exp (−tn ( p+γ )) ⋅∏E [exp (t ei ) ]=(exp (−t ( p+γ ) ) ⋅E [exp (t e1 ) ] )n=(exp (−t (p+γ ) )⋅ (1−p+ pexp (t ) ) )n .

Осталось показать, что при достаточно малых t то, что возводится в степень, меньше единицы. Это и будет то самое c. Мы хотим доказать, что при малых t выполнено неравенство

exp (−t (p+γ ) )⋅ (1−p+ pexp (t ) )<1или, что то же, неравенство 1−p+ pexp (t )<exp (t (p+γ ) ).Левую часть неравенства можно оценить так:

1−p+ pexp (t )=1−p+ p (1+ t+O (t 2 ))=1+ pt+O ( t2 ) ,а правую часть следующим образом:

exp (t (p+γ ) )=1+( p+γ ) t+O (t 2 ).Отсюда вытекает доказываемое свойство.

Лемма доказана.

Доказательство теоремы Шеннона о существовании кодов. Зафиксируем сколь угодно малое ε>0. Возьмём γ , удовлетворяющее условиям

p+γ< 12,H (p+γ )<H (p )+ ε

2.

Пусть n и k достаточно велики и при этом kn=1−H ( p )−ε .

Зададим функцию E :F2k→F2

n случайным образом, т.е. для каждого a∈F2k значение E (a ) выбирается

равновероятно среди F2n. Для заданной E функцию D определим так:

D (b )=a, если a — единственное слово, для которого d (E (a ) , b )≤n ( p+γ ). D (b )=0, если указанного a не существует или оно не единственное.

Временно зафиксируем a∈F2k. Через Pra[⋅] обозначим вероятность события при фиксированном a.

Оценим Pra [D (E (a )+e )≠a ]. Декодирование может пройти неверно только в одной из следующих ситуаций:

Ошибок слишком много: d (E (a )+e , E (a ) )>n (p+γ ). Тогда, по Лемме о числе ошибок, вероятность такого события не больше cn, где c<1.

www.dainiak.com

Ошибок немного, но схема кодирования выбрана неудачно: d (E (a )+e , E (a ) )≤n (p+γ ), и

при этом ∃a'≠a т. ч. d (E (a )+e , E (a ' ))≤n ( p+γ ). Вероятность этого события мы и будем оценивать ниже.

Для каждого фиксированного a '∈F2n имеем

Pra [d (E (a )+e , E (a ' ))≤n ( p+γ ) ]=∑x , y

2−2n ⋅Pr a [d (E (a )+e , E (a' ))≤n (p+γ )∣E (a )=x , e= y ]=Pr a [d (E (a )+e ,E (a' ))≤n (p+γ )∣E (a )=e=0 ]=2−n ⋅ ∑k=0

(p+ γ )n

(nk)≤2n ⋅ (H (p+γ )−1)<2n ⋅(H (p )+ ε

2−1).

Отсюда

Pra [∃a'т .ч.d (E (a ) , E (a ' ) )≤n ( p+γ ) ]<2k ⋅2n⋅(H ( p) + ε

2−1)

=2n ⋅( kn+H ( p) + ε

2−1)

=2n ⋅(1−H (p )−ε+H (p )+ ε

2−1)

=2−ε2⋅n

.

Итак, при фиксированном a и случайно выбираемых E и e имеем

Pra [D (E (a )+e )≠a ]<cn+2−ε2⋅n<cnдля некоторой константы c<1.

При случайном выборе a , e и E имеемPr [D (E (a )+e )≠a ]=∑

x∈ F2k

2−k ⋅Pr a [D (E (a )+e )≠a ∣a=x ]< ∑x∈ F2

k

2−k ⋅ cn=cnдля некоторой константы c<1.

Значит, существует такое кодирование E, что при случайном выборе a и e выполнено Pr [D (E (a )+e )≠a ]<cn . При всех достаточно больших n выполнено неравенство cn<ε, откуда и следует

утверждение теоремы.

Теорема доказана.

8. Некоторые специальные семейства кодов8.1. Коды Варшамова—Тененгольца

В этом разделе мы рассмотрим коды Варшамова—Тененгольца, которые могут исправлять ошибки вставки и выпадения символов.

Код Варшамова—Тененгольца длины n определяется как множество двоичных слов

C≔{a1a2…an∣∑i=1

n

ia i≡0 (mod (n+1 ) )}.Для мощности кода справедлива формула (приводимая здесь без доказательства)

|C|= 12 (n+1 ) ∑

d∨(n+1)d нечётно

ϕ (d )2(n+1) /d ,где ϕ — функция Эйлера. Известно, что асимптотически это

максимально возможная мощность кода, исправляющего одну ошибку выпадения/вставки символа.

8.1.1. Исправление одной ошибки выпадения в кодах Варшамова—Тененгольца

Пусть C — код В.—Т. длины n, и пусть a∈C. Пусть в канал передали a=a1…an, и на выходе получили слово

a '≔a1'…an−1

' =a1…ak−1ak+1…an .

Наша задача: по a ' восстановить a. Отметим, что восстановить a — не то же самое, что восстановить пару (k ,ak ). Например, если a '=1001, то a=10001, но мы не узнаем, какой именно из нулей выпал.

Положимn0≔¿ {i>k ∣ai=0 } ,n1≔¿ {i>k ∣ai=1} .

www.dainiak.com

Заметим, что если ak=0, то a можно восстановить по a ', если известно n1. Аналогично, если ak=1, то a можно восстановить по a ', если известно n0. Рассмотрим суммы

S≔∑i=1

n

i aiи S'≔∑

i=1

n−1

i ai' .

Заметим, что

S−S '=∑i=1

n

i ai−(∑i=1

k−1

i ai+∑i=k

n−1

ia i+1)=∑i=k

n

i ai− ∑i=k +1

n

( i−1 )ai=k ak+ ∑i=k+1

n

ai .

Получаем

S'=S−(k ak+ ∑i=k+1

n

ai)=S−k ak−n1 .Так как S≡0 (mod (n+1 ) ), то S'≡−n1−k ak (mod (n+1 ) ). Если ak=0, то −S'≡n1. Если ak=1, то −S'≡n1+k=(n−k−n0 )+k=n−n0. Осталось научиться определять, чему именно равно ak. Заметим, что ‖a'‖≥n1 и ‖a'‖≤ (n−1 )−n0. Отсюда n1≤‖a'‖<n−n0. То есть если (−S' )mod (n+1 )≤‖a'‖, то это n1, а в противном случае это n−n0.

Итоговый алгоритм восстановления a по a ':

вычисляем величину T≔(−∑i=1

n−1

i ai' )mod (n+1 ) ,

если T ≤‖a'‖, то в слово a ' вставляем перед T -й с конца единицей символ 0, если T>‖a '‖, то в слово a ' вставляем перед (n−T )-м с конца нулём символ 1.

8.1.2. Исправление одной ошибки вставки в кодах Варшамова—Тененгольца

Теперь рассмотрим задачу, когда a ' получено из a вставкой символа:a '=…ak x ak+1…(Если k=0, то a '=xa; если k=n, то a '=a x.)

Тогда S'=S+ (k+1 ) x+∑

i> kai, и значит, S

'≡ (k+1 ) x+∑i>kai=(k+1 ) x+n1.

Положим T≔ S 'mod (n+1 ). Есть два случая, когда T=0:

(k+1 ) x+n1=0. Тогда x=0 и ak+1=…=an=0. (k+1 ) x+n1=n+1. Тогда x=1 и ak+1=…=an=1.

В обоих случаях a получается из a ' удалением последнего символа.

Теперь рассмотрим случай, когда T=‖a'‖>0. Это возможно только в одном из двух подслучаев:

a1=…=ak= x=0 a1=…=ak= x=1

В любом случае, если T=‖a'‖, то a получается из a ' удалением первого символа.

Остался случай 0<T ≠‖a'‖.

Если x=0, то T=n1<‖a'‖. Если x=1, то T=k+1+n1>‖a '‖.

При этом оказывается, что T=k+1+(n−k−n0 )=n+1−n0 . В обоих подслучаях нужная для восстановления a информация у нас есть.

www.dainiak.com

8.2. Матрицы Адамара и коды Адамара8.2.1. Матрицы Адамара

Матрица Адамара — это квадратная матрица из {−1 ,1 }n×n, в которой любые две строки ортогональны.

Примеры:

(1 11 −1) ,

(1 1 1 11 1 −1 −11 −1 −1 11 −1 1 −1

) .Матрицы Адамара получили своё название благодаря следующей теореме Адамара.

Теорема Адамара.Пусть A=(aij )∈Rn×n, и пусть |aij|≤1. Тогда |det A|≤nn /2, причём неравенство превращается в равенство в точности на матрицах Адамара.

Доказательство. Заметим, что определитель матрицы равен по абсолютному значению объёму параллелепипеда, построенного на векторах-строках матрицы. Длины сторон такого параллелепипеда при условиях теоремы не превосходят √n (и достигают этого значения только если a ij=±1). Объём такого параллелепипеда не может превышать величину (√n )n, и равен ей только если стороны (т.е. векторы-строки матрицы A) попарно ортогональны.

Если H — матрица Адамара, то матрица, полученная из H перестановками строк/столбцов и/или умножением строк/столбцов на −1, тоже является матрицей Адамара. Матрицы Адамара, получаемые друг из друга такими преобразованиями, эквивалентны.

Любую матрицу Адамара умножением строк/столбцов на −1 можно привести к нормализованному виду

(1 1 ⋯ 11 ¿ ¿ ⋮ ¿¿1¿¿¿¿) .

Утверждение.Если H∈ {−1 ,1 }n×n — матрица Адамара, и n>2, то 4∨n.

Доказательство. От матрицы H перейдём к эквивалентной матрице, в которой первые три строки такие:

1 1 ⋯ 11 1 ⋯ 11 1 ⋯ 1⏟

i

1 1 ⋯ 11 1 ⋯ 1

−1 −1 ⋯ −1⏟j

1 1 ⋯ 1−1 −1 ⋯ −11 1 ⋯ 1⏟

k

1 1 ⋯ 1−1 −1 ⋯ −1−1 −1 ⋯ −1⏟

l

Отсюда

{ i+ j+k+ l=ni+ j−k−l=0i− j−k+l=0i− j+k−l=0

Решение этой системы: i= j=k=l=n /4.

Утверждение доказано.

www.dainiak.com

Гипотеза Адамара (не доказана).Матрицы Адамара порядка n существуют(?) для всех натуральных n, кратных четырём.

Наименьший порядок, для которого пока не доказано существование матрицы Адамара, равен 668.

Утверждение.Матрица Адамара порядка n существует для любого n=2k.

Доказательство (J. J. Sylvester). Заметим, что если H — матрица Адамара, то матрицей Адамара

будет и такая: (H HH −H). Утверждение теперь следует по индукции из того факта, что (1 1

1 −1) —

матрица Адамара.

8.2.2. Конструкция Пэли на основе квадратичных вычетов8.2.2.1. Вспомогательные утверждения

Элемент a∈Fq∖ {0 } называется квадратичным вычетом, если a=x2 для некоторого x∈ Fq. Остальные элементы из Fq∖ {0 } называются квадратичными невычетами.

Например, в Z7 элементы 1,2,4 — к.в., а 3,5,6 — к.н.

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

Если λ — примитивный элемент Fq, то элементы вида λ2t являются к.в., а вида λ2t+1 — к.н. Если q=pm и p>2, то ровно половина элементов из Fq∖ {0 } являются к.в., а половина — к.н.

Везде далее будем предполагать, что p>2.

Символом Лежандра называется функция на элементах поля, определяемая так:

χ (a )={ 0 , еслиa=01 , еслиaк . в .

−1, если aк .н .

Нетрудно показать, что символ Лежандра является мультипликативной функцией: для любых a ,b∈Fq имеет место равенство χ (a )⋅ χ (b )= χ (ab ).

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

Для любого c∈Fq∖ {0 } имеет место равенство ∑b∈ Fq

χ (b )⋅ χ (b+c )=−1.

Доказательство. Т.к. ровно половина элементов Fq∖ {0 } квадратичными вычетами, то ∑a∈ Fq

χ (a )=0.

Также заметим, что∑b∈ Fq

χ (b )⋅ χ (b+c )= ∑b∈ Fq∖ {0 }

χ (b ) ⋅ χ (b+c ) .

С учётом замеченного, получаем

∑b∈ Fq∖ {0 }

χ (b ) ⋅ χ (b+c )= ∑b∈F q∖ {0 }

χ (b )⋅ χ (b ⋅b−1 (b+c ) )= ∑b∈ Fq∖ {0}

( χ (b ) )2⋅ χ (b−1 (b+c ) )= ∑b∈F q∖ {0 }

χ (b−1 (b+c ) )= ∑b∈F q∖ {0 }

χ (1+b−1 c )= ∑a∈F q∖ {1}

χ (a )=∑a∈F q

χ (a )− χ (1 )=−1.

Утверждение доказано.

8.2.2.2. Построение матрицы Адамара

Рассмотрим матрицу (t a ,b )a ,b∈ Fq∈ {−1 ,0 ,1 }q×q, в которой t a ,b≔ χ (a−b ). Скалярное произведение

любых двух различных строк (t a' ,b )b∈F q и (t a' ' ,b )b∈F q

с учётом доказанного утверждения равно

∑b∈ Fq

χ (a'−b ) ⋅ χ (a' '−b )=∑b∈F q

χ (b ) ⋅ χ (b+(a' '−a ' ) )=−1.

www.dainiak.com

Рассмотрим матрицу T '≔ (t a , b' )a , b∈F q∈ {−1 ,1 }q× q, в которой t a ,b

' = χ (a−b ), если a≠b и t a ,b' =−1 иначе.

Скалярное произведение различных строк ( ta' , b' )b∈ Fq и ( ta' ' , b' )b∈ Fq равно

( ∑b∈ Fq χ (a'−b )⋅ χ (a' '−b ))− χ (a'−a' ' )− χ (a' '−a' )=−1− χ (a'−a' ' )− χ (a' '−a ' ) .

Если (−1 ) является квадратичным невычетом в Fq, то χ (a ' '−a' )= χ (−1 ) ⋅ χ (a'−a' ' )=− χ (a'−a' ' ), и скалярное произведение получается равным −1. Тогда матрица

(1 1 ⋯ 11 ¿ ¿ ⋮ ¿¿1¿¿¿¿)является нормализованной матрицей Адамара. Известно, что при 4∨ (q+1 )

элемент (−1 ) является квадратичным невычетом в Fq, а значит, из приведённых нами конструкций вытекает справедливость следующей теоремы.

Теорема. (R. E. A. C. Paley ’1933)Если p простое и 4∨( pm+1 ), то существует матрица Адамара порядка ( pm+1 ).

8.2.3. Коды Адамара

Несколько способов построения кодов на основе матриц Адамара были предложены R. C. Bose и S. S. Shrikhande в 1959 г. В любой матрице Адамара любые две строки a ,b ортогональны. Так как a ,b∈ {−1 ,1 }n , это значит, что ровно половина координат у них совпадает, а половина противоположны. Пусть A∈ {0,1 }n×n — матрица, полученная из нормализованной матрицы Адамара заменой элементов −1 на 0. Тогда

множество строк матрицы A с отброшенной первой координатой образует двоичный

(n−1 , n , n2 )-код,

множество строк матрицы A и их дополнений образует (n ,2n , n2 )-код.

Напомним границу Плоткина (в двоичном случае): если N<2d , то для любого (N ,M ,d )-кода

M≤2d

2d−N . Нетрудно видеть, что коды Адамара с параметрами (n−1 , n , n2 ) достигают границы

Плоткина, имея максимально число слов при заданных длине и кодовом расстоянии.

8.3. Каскадные коды

8.3.1. ОпределениеКаскадные коды впервые предложены G. D. Forney ’1966.

Пусть даны два кода: C internal — (n ,m ,d )q-код (внутренний код) и C external — (N ,M , D )m-код (внешний код). Символам алфавита кода C ext сопоставим слова кода C∫¿¿. Тогда кодовым словам кода C ext

соответствуют слова длины Nn в алфавите кода C∫¿¿. Получаем каскадный (Nn ,M ,d ' )q-код, где d '≥ Dd.

Аналогично, пусть C∫¿¿ — [n , k , d ]-код и C ext — [N ,K , D ]2k-код. Элементам F2k сопостaвим слова кода C∫¿¿ так, чтобы линейная комбинация элементов F2k соответствовала линейной комбинации слов кода C∫¿¿. Тогда кодовым словам кода C ext соответствуют слова длины Nn в алфавите кода C∫¿¿. Получаем каскадный линейный [Nn,kK ,dD ]-код.

В качестве внешнего кода удобно брать оптимальный (например, MDS) код над алфавитом большой мощности. В качестве внутреннего кода можно брать близкий к оптимальному код с не очень большим числом кодовых слов.

www.dainiak.com

8.3.2. Асимптотически хорошие коды с полиномиальным декодированиемПусть задано семейство двоичных кодов ~C≔ {Cn }n=1

∞ . Асимптотической скоростью семейства ~C называется величина

rate (~C )≔ lim ¿n→∞

log2|Cn|n

.¿Асимптотическим относительным кодовым расстоянием семейства ~C

называется величина

δ (~C )≔ lim ¿n→∞

d (Cn )n

.¿

Семейство кодов называется асимптотически хорошим, если для него rate (~C )>0 и δ (~C )>0. Из доказательства теоремы Шеннона следует, что для любого ε существуют семейства кодов, такие, что rate (~C )≥1−H (δ (~C ) )−ε. Отсюда сразу следует, что асимптотически хорошие семейства кодов существуют. Однако до появления кодов Форни было неизвестно, существуют ли такие семейства с полиномиальными алгоритмами декодирования.

Утверждение.Если δ<0.5 и ρ таковы, что H (δ )≤1−ρ, то существует семейство линейных кодов ~C , для которого rate (~C )≥ ρ и δ (~C )≥δ.

Доказательство. Если n , k , d ' таковы, что H (d ' /n )≤1− kn

, то

∑j=0

d'−1

(n−1j )<2n ⋅H (d '/n )≤2n−k ,и, значит, для чисел n , k , d ' выполнены условия теоремы Варшамова—

Гилберта, а стало быть, существует линейный [n , k , d ]-код, где d>d' . Если H (δ )≤1−ρ, то берём для каждого n параметры k≔⌊ ρ n ⌋, d '≔⌊ δn ⌋ и получаем требуемое.

Утверждение доказано.

Теорема Варшамова—Гилберта по сути экзистенциальная, и не даёт полиномиальных (по длине кодовых слов) алгоритмов построения кода и декодирования. А хотелось бы, во-первых, для каждого n за полиномиальное от n время строить порождающую/проверочную матрицу некоторого линейного кода с длиной слов, размерностью и кодовым расстоянием Ω (n ) и, во-вторых, исправлять Ω (n ) ошибок в кодовых словах за полиномиальное от n время. Покажем, как достигнуть этой цели.

Пусть t∈N , и пусть δ<0.5 — произвольное фиксированное число. По теореме Варшамова—

Гилберта, существует линейный код с параметрами [ t1−H ( δ )

,t ,δt

1−H (δ ) ]. Возьмём этот код в

качестве внутреннего в каскадной конструкции. В качестве внешнего возьмём RS-код с параметрами

[2t ,2t−1 ,2t−1+1 ]2t. Получаем каскадный [n , k , d ]-код, для которого n= t ⋅2t

1−H (δ ), k= t ⋅2

t

2 и d>

δt ⋅2t

2 (1−H (δ ) ) .

Этот код является асимптотически хорошим, т.к. dn≥

δ2 (1−H (δ ) )

>0 и kn≥

12 (1−H (δ ) )

>0. Вычислить

порождающую матрицу кода можно при каждом t за полиномиальное время, т.к. коды Рида—Соломона строятся за полиномиальное время от своих параметров, а проверочная матрица кода в теореме Варшамова—Гилберта строится хотя и перебором, но параметры этого кода логарифмичны по n.

Покажем, что существует «почти тривиальный» полиномиальный алгоритм, декодирующий кодовые

слова, принятые с не более чем δt ⋅2t

8 (1−H (δ ) ) ошибками. Каждое слово кода Форни имеет вид

www.dainiak.com

c=a1a2…a2t, где a i — слова кода Варшамова—Гилберта длины t

1−H (δ ) . Если в слове c произошло

≤δt ⋅2t

8 (1−H (δ ) ) ошибок, и в результате принято слово ~c=~a1~a2…~a2t, то слово c восстановим в два шага:

1. Для каждого ~a i перебором ищем ближайшее к нему слово кода Варшамова—Гилберта,

при этом неверно восстановленных слов может быть не более δt ⋅2t

8 (1−H (δ ) )/ δt2 (1−H (δ ) )

=2t−2.

2. Кодовое расстояние внешнего кода равно (2t−1+1 ), поэтому даже 2t−2 ошибок он успешно исправит.

Пусть слово c=a1a2…a2t исказилось в s разрядах и перешло в слово ~c=~a1~a2…~a2t, где a i — слова кода

Варшамова—Гилберта с расстоянием d∫ ¿¿. Пусть I=¿, где |I|≤2 sd∫¿

¿ . Так как на первом шаге

проблемы с исправлением могут быть только у слов ~a i, у которых i∈ I , то на втором шаге, рассматривая каждое ~a i как один элемент поля F2t, мы получаем задачу восстановления слова кода

Рида—Соломона с ошибками не более чем в 2 sd∫¿

¿ разрядах.

9. О приложениях теории кодирования в информатике9.1. Коммуникационная сложность

У Аси есть слово X , а у Бори слово Y , где X ,Y ∈ {0,1 }k. (Ася не знает Y , а Боря не знает X .) Задана функция f , определённая на {0,1 }k× {0,1 }k. Ася и Боря хотят вычислить значение f ( X ,Y ), переслав для этого друг другу минимум

данных. Lcomm (f )≔ число битов, которые в сумме Ася и Боря перешлют друг другу в худшем случае

при использовании фиксированного алгоритма вычисления f . Пример: Lcomm (1X=Y )=k+1. (Доказательство: принцип Дирихле.)

Построим рандомизированный алгоритм вычисления 1X=Y , при котором Ася и Боря пересылаю друг другу всего O ( log k ) битов.

Идея: используем код, исправляющий ошибки, в качестве «усилителя различия» слов.

Ася и Боря кодируют X и Y в одном и том же [n , k , d ]q-коде (кодируя биты 0 и 1 различными элементами из Fq), получая слова X ' , Y '∈Fq

n.

Ася выбирает случайную позицию в X ' и пересылает её номер (в двоичной записи объёмом ⌈ log2n⌉) и её значение (объёмом ⌈ log2q ⌉).

Боря проверяет, совпадает ли принятое от Аси значение с соответствующим значением в Y ', и затем результат сравнения он одним битом пересылает Асе. Вероятность ошибки не превосходит (n−d )/n.

Пусть ε∈ (0,1 ). Если Ася и Боря используют [ 1ε ⋅ k , k , 1−εε ⋅k+1]q-код Рида—Соломона, где q∈[ kε , 2kε ],

то вероятность ошибки будет не больше ε , а количество бит, которые Ася и Боря перешлют друг

другу, равно O( log kε ).

www.dainiak.com

9.2. Криптография с открытым ключом: криптосистема МакЭлиса (R. McEliece ’1978) Ася вывешивает в интернете алгоритм c открытыми исходниками, который преобразует

сообщения X в ϕ (X ). У Аси есть алгоритм, который знает только она, позволяющий по коду вида ϕ (X )

эффективно восстановить сам X . Никто, кроме Аси (т.е. у кого нет секретного алгоритма декодирования) не должен уметь

эффективно восстанавливать X по ϕ (X ). Так что собеседник Аси Боря может выкладывать в открытый доступ сообщения, к которым сможет обращаться кто угодно, но расшифровать (за приемлемое время) Борины послания сможет только Ася.

МакЭлис предложил следующую схему. Ася выбирает (не раскрывая никому)

произвольный [n , k , d ]-код C, где d ≥2t+1; этот код должен обладать эффективными алгоритмами построения порождающей матрицы G∈F2

k ×n и декодирования с исправлением не более t ошибок,

случайную невырожденную матрицу S из F2k ×k,

случайную перестановочную матрицу P из F2n×n.

Затем Ася вычисляет матрицу G≔SGP∈F2k ×n и выкладывает в открытый доступ алгоритм, который

по сообщению X∈F2k вычисляет вектор X G∈F2

n и искажает его в t случайных битах.

Ася может восстановить X , декодировав с исправлением ошибок вектор ~X P−1 (ведь это искажённое слово кода C), и домножив результат на S−1.

Почему именно так:

Предполагается, что задача NCP даже при известной порождающей матрице кода трудна для «почти всех» кодов. Значит, даже зная хороший алгоритм декодирования кода с матрицей G, трудно декодировать код с матрицей GP.

Домножение X на S перед кодированием призвано разрушить внутреннюю структуру X , чтобы трудно было «угадать» X .

9.3. l-однородные множества и дерандомизацияМножество наборов U⊆ {0,1 }n называется l-однородным, если для любых i1 ,…, il∈ {1 ,… ,n } и любых

t 1 ,…, t l∈ {0,1 } выполнено

|{(a1 ,…,an )∈U ∣ai1=t 1, a i2=t2 ,…,ail=t l }||U|

=2−l .

То есть при случайном равномерном выборе набора a∈U любые l бит в a будут равны фиксированным значениям с той же вероятностью, что и при случайном выборе из «полного» множества {0,1 }n.

Лемма. Пусть C⊆F2

n— линейный [n , k ,… ]-код. Множество C является l-однородным т. и т.т., когда любые l столбцов порождающей матрицы кода линейно независимы.

Доказательство. Пусть G1 ,…,Gn∈F2k — столбцы порождающей матрицы G кода C.

Пусть, например, G1+G2+…+G s=0, где s≤l. Рассмотрим тогда любые t 1 ,…, t l, такие, что t 1+…+t s=1. www.dainiak.com

Имеем

|{(a1 ,…,an )∈C ∣a1=t1 ,…,al=t l }||C| =0≠2−l .

Пусть теперь G1 ,…,Gl линейно независимы. Тогда ранг матрицы (G1|G2|…∨Gl ) равен l, и значит в G

найдутся строки, — пусть это строки g1 ,…,gl∈F2n, — такие, что их начальные куски длины l линейно

независимы.

Обозначим C t1 ,… ,t l≔ {c∈C ∣c1=t 1 ,…,c l=t l }. Для любых t 1

' ,…, t l' , t 1

' ' ,…,t l' ' найдётся кодовое слово a

(линейная комбинация строк g1 ,…,gl), для которого a1=t1' +t 1

' ' ,…,al=t l'+t l

' ' . Тогда C t1' ,… ,t l

'=C t1' ' ,… ,t l

' '+a,

отсюда |C t1' ,…, tl

'|=|Ct 1' ' ,… ,tl' '|. В итоге получаем |C t1 ,…, tl|=|C|2l

для любых t 1 ,…, t l.

Лемма доказана.

Теорема.Двоичный линейный код C является l-однородным множеством т. и т.т., когда d (C⟂ )>l.

Доказательство. Применяем лемму, заметив, что порождающая матрица C является проверочной для C⟂, и используем утверждение о связи кодового расстояния с проверочной матрицей линейного кода.

Замечание.Аналогично можно вести понятие q-ичного l-однородного множества и доказать похожую теорему: линейный код C⊆Fq

n образует l-однородное множество т. и т.т., когда d (C⟂ )>l.

Интересны l-однородные множества малой (полиномиальной по n) мощности.

Для того, чтобы получить такое множество, нужно взять линейный код C у которого d (C )>l, а dimC велико, и затем рассмотреть C⟂.

Возьмём в качестве C код Рида—Маллера с параметрами m≔⌈ log2n ⌉ , r≔m−2. Для такого C имеем d (C )=2m−r=4. Код C⟂ тоже является РМ-кодом, с параметром r '=m−r−1=1. При этом |C⟂|=21+m≤4 n.

Задача 3≥ γ-SAT: для заданной 3-КНФ найти набор, на котором не менее чем γ -я доля всех скобок обращается в единицу.

Обычная задача 3-SAT — это 3≥ 1-SAT.

Теорема.Задача 3≥ 7/8-SAT полиномиально разрешима.

Доказательство. Пусть 3-КНФ содержит n переменных и m скобок. При случайном выборе набора из {0,1 }n имеем

Pr [фиксированнаяскобка равнанулю ]=18.

Отсюда

E ¿скобок , равных нулю=m8.

www.dainiak.com

Заметим, что Pr [фикс. ск .=0 ]=18

и в том случае, когда берётся случайный набор из произвольного 3

-однородного множества. Получается, что в любом 3-однородном множестве найдётся набор, на

котором ≤m8

скобок равны нулю. Мы приходим к очень простому алгоритму:

Перебираем всевозможные наборы РМ-кода с параметрами m≔⌈ log2n ⌉ , r≔m−2, подставляем эти наборы в 3-КНФ. Хотя бы один из наборов должен сгодиться.

9.4. Задача о разделении секретаЗадача. Есть несколько человек и секрет. Нужно сообщить людям некоторую информацию, так, чтобы все вместе они могли бы восстановить секрет, но никакая компания из меньшего числа человек не могла бы восстановить секрет.

Пусть нужно разделить секрет между m людьми. Сопоставим секрету элемент s∈Fq. Рассмотрим q-ичный код C, такой, что d (C⟂ )=m+1. В порождающей матрице G кода C найдутся (m+1 ) линейно зависимых столбцов, пусть это первые (m+1 ) столбцов. Тогда найдутся такие α 1,…,αm+1∈Fq∖ {0 }, что в любом кодовом слове c первые (m+1 ) разрядов удовлетворяют соотношению α 1 c1+…+αm+1 cm+1=0. Т.е. cm+1 всегда можно однозначно определить по c1 ,…,cm.

Выберем теперь случайные элементы t 1 ,…, tm−1. Элемент tm однозначно выбирем так, чтобы в коде C нашлось слово вида

(t 1,…tm−1 ,tm , s ,… )

Поскольку C является q-ичным m-однородным множеством, зная любые (m−1 ) из чисел t 1 ,…, tm, об s ничего нельзя сказать.

www.dainiak.com

ЛитератураЗаинтересованным в более глубоком изучении теории кодирования можно рекомендовать ознакомиться со следующими книгами.

1. Ф. Мак-Вильямс, Н. Слоэн. Теория кодов, исправляющих ошибки. М.: Связь, 1979.2. У. Питерсон, Э. Уэлдон. Коды, исправляющие ошибки. М.: Мир, 1976.3. А. Ромащенко, А. Румянцев, А. Шень. Заметки по теории кодирования. М.: МЦНМО, 2011.4. Ю. Л. Сагалович. Введение в алгебраические коды. М.: изд-во МФТИ: 2007.5. Ф. И. Соловьева. Введение в теорию кодирования. Новосибирск: изд-во НГУ, 2006.

Книги [1] и [2] являются классическими монографиями по теории кодирования, при этом в [1] основное внимание уделено кодам, исправляющим ошибки замещения, а в [2] круг тем более широкий. В частности, в [2] рассмотрены коды, исправляющие ошибки синхронизации и ошибки, возникающие в арифметических устройствах.

Книга [3], пожалуй, наиболее близка к настоящему пособию по набору тем. В [3] вошли также такие актуальные вопросы, как декодирование списком.

Учебники [4] и [5] хорошо подходят для ознакомления с основными разделами теории кодирования. В [4] хорошо изложены основные алгебраические понятия, большое внимание уделено БЧХ-кодам. В [5] рассмотрены коды Препараты и уделено внимание совершенным кодам и каскадным конструкциям.

При подготовке настоящего текста помимо перечисленных книг были использованы следующие источники.

М. Н. Аршинов, Л. Е. Садовский. Коды и математика. М.: Наука, 1983. С. Б. Гашков. Графы-расширители и их применение в теории кодирования // Математическое

просвещение, сер. 3, вып. 13, 2009. С. 104–126. Ye. Lindell. Introduction to Coding Theory. Lecture notes. Bar-Ilan University. J. H. van Lint. Introduction to Coding Theory. Third edition. Springer-Verlag, 1999. M. Sudan. Algorithmic Introduction to Coding Theory. Lecture notes. MIT, 2001.

www.dainiak.com