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

Коды Адамара. Каскадные коды Форни

Embed Size (px)

DESCRIPTION

Матрицы Адамара. Конструкции Сильвестра и Пэли. Коды на основе матриц Адамара. Каскадные коды. Коды Форни: конструкция и простой алгоритм декодирования.

Citation preview

Page 1: Коды Адамара. Каскадные коды Форни

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

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

www.dainiak.com

Page 2: Коды Адамара. Каскадные коды Форни

Матрицы Адамара (J. Hadamard)

Матрица Адамара — это квадратная матрица из −1, 1 𝑛×𝑛, в которой любые две строки ортогональны.

Примеры:1 11 −1

1 1 1 11 1 −1 −11 −1 −1 11 −1 1 −1

Page 3: Коды Адамара. Каскадные коды Форни

Теорема Адамара

Матрицы Адамара берут начало от следующей теоремы:

Теорема. (J. Hadamard)Если 𝐴 = 𝑎𝑖𝑗 1≤𝑖,𝑗≤𝑛

∈ ℝ𝑛×𝑛 и 𝑎𝑖𝑗 ≤ 1 для любых 𝑖, 𝑗, то тогда

det 𝐴 ≤ 𝑛 𝑛 2

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

• det 𝐴 — это объём параллелепипеда, построенного на векторах-строках матрицы 𝐴

• Объём максимален, когда длины сторон максимальны (максимум равен 𝑛 при 𝑎𝑖𝑗 = 1) и углы между сторонами прямые (т.е. векторы ортогональны).

Page 4: Коды Адамара. Каскадные коды Форни

Матрицы Адамара

Если 𝐻 — матрица Адамара, то

• Матрица, полученная из 𝐻 перестановками строк/столбцов, тоже является матрицей Адамара.

• Матрица, полученная из 𝐻 умножением строк/столбцов на −1,тоже является матрицей Адамара.

Матрицы Адамара, получаемые друг из друга такими преобразованиями, эквивалентны.

Page 5: Коды Адамара. Каскадные коды Форни

Матрицы Адамара

Любую матрицу Адамара умножением строк/столбцов на −1можно привести к виду

1 1 ⋯ 11⋮1

Такая матрица Адамара называется нормализованной.

Page 6: Коды Адамара. Каскадные коды Форни

Порядок матриц Адамара

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

Если 𝐻 ∈ −1, 1 𝑛×𝑛 — матрица Адамара, и 𝑛 > 2, то 4|𝑛.

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

От матрицы 𝐻 перейдём к эквивалентной матрице, в которой первые три строки такие:

1 1 ⋯ 11 1 ⋯ 11 1 ⋯ 1

𝑖

1 1 ⋯ 11 1 ⋯ 1−1 −1 ⋯ −1

𝑗

1 1 ⋯ 1−1 −1 ⋯ −11 1 ⋯ 1

𝑘

1 1 ⋯ 1−1 −1 ⋯ −1−1 −1 ⋯ −1

𝑙

Отсюда𝑖 + 𝑗 + 𝑘 + 𝑙 = 𝑛𝑖 + 𝑗 − 𝑘 − 𝑙 = 0𝑖 − 𝑗 − 𝑘 + 𝑙 = 0𝑖 − 𝑗 + 𝑘 − 𝑙 = 0

Решение этой системы: 𝑖 = 𝑗 = 𝑘 = 𝑙 = 𝑛 4.

Page 7: Коды Адамара. Каскадные коды Форни

Порядок матриц Адамара

Гипотеза Адамара (не доказана).Матрицы Адамара порядка 𝑛 существуют(?) для всех натуральных 𝑛, кратных четырём.

Наименьший порядок, для которого пока не доказано существование матрицы Адамара, равен 668.

Page 8: Коды Адамара. Каскадные коды Форни

Конструкция Сильвестра

Утверждение.Матрица Адамара порядка 𝑛 существует для любого 𝑛 = 2𝑘.

Доказательство: (J. J. Sylvester)

Заметим, что если 𝐻 — матрица Адамара, то матрицей Адамара

будет и такая: 𝐻 𝐻𝐻 −𝐻

.

Утверждение теперь следует по индукции из того факта, что 1 11 −1

— матрица Адамара.

Page 9: Коды Адамара. Каскадные коды Форни

Матрицы Адамара

Теорема. (R. E. A. C. Paley ’1933)Если 𝑝 простое и 4| 𝑝𝑚 + 1 , то существует матрица Адамара порядка 𝑝𝑚 + 1 .

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

Page 10: Коды Адамара. Каскадные коды Форни

Квадратичные вычеты

Элемент 𝑎 ∈ 𝔽𝑞 ∖ 0 называется квадратичным вычетом, если 𝑎 = 𝑥2 для некоторого 𝑥 ∈ 𝔽𝑞.

Остальные элементы из 𝔽𝑞 ∖ 0 называются квадратичными невычетами.

Например, в ℤ7 элементы 1,2,4 — к.в., а 3,5,6 — к.н.

Page 11: Коды Адамара. Каскадные коды Форни

Квадратичные вычеты

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

• Если 𝜆 — примитивный элемент 𝔽𝑞, то элементы вида 𝜆2𝑡

являются к.в., а вида 𝜆2𝑡+1 — к.н.

• Если 𝑞 = 𝑝𝑚 и 𝑝 > 2, то ровно половина элементов из 𝔽𝑞 ∖ 0

являются к.в., а половина — к.н.

Везде далее будем предполагать, что 𝑝 > 2.

Page 12: Коды Адамара. Каскадные коды Форни

Символ Лежандра

Символ Лежандра 𝜒 𝑎 определяется так:

𝜒 𝑎 = 0, если 𝑎 = 01, если 𝑎 к. в.−1, если 𝑎 к. н.

Утверждение.Для любых 𝑎, 𝑏 ∈ 𝔽𝑞 имеет место равенство

𝜒 𝑎 ⋅ 𝜒 𝑏 = 𝜒 𝑎𝑏

Page 13: Коды Адамара. Каскадные коды Форни

Квадратичные вычеты

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

Для любого 𝑐 ∈ 𝔽𝑞 ∖ 0 имеет место равенство

𝑏∈𝔽𝑞

𝜒 𝑏 ⋅ 𝜒 𝑏 + 𝑐 = −1

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

Т.к. ровно половина элементов 𝔽𝑞 ∖ 0 квадратичными вычетами, то 𝑎∈𝔽𝑞

𝜒 𝑎 = 0.

Также заметим, что

𝑏∈𝔽𝑞

𝜒 𝑏 ⋅ 𝜒 𝑏 + 𝑐 =

𝑏∈𝔽𝑞∖ 0

𝜒 𝑏 ⋅ 𝜒 𝑏 + 𝑐

Page 14: Коды Адамара. Каскадные коды Форни

Квадратичные вычеты

С учётом замеченного, получаем

𝑏∈𝔽𝑞∖ 0

𝜒 𝑏 ⋅ 𝜒 𝑏 + 𝑐 =

𝑏∈𝔽𝑞∖ 0

𝜒 𝑏 ⋅ 𝜒 𝑏 ⋅ 𝑏−1 𝑏 + 𝑐 =

=

𝑏∈𝔽𝑞∖ 0

𝜒 𝑏2⋅ 𝜒 𝑏−1 𝑏 + 𝑐 =

𝑏∈𝔽𝑞∖ 0

𝜒 𝑏−1 𝑏 + 𝑐 =

=

𝑏∈𝔽𝑞∖ 0

𝜒 1 + 𝑏−1𝑐 =

𝑎∈𝔽𝑞∖ 1

𝜒 𝑎 =

𝑎∈𝔽𝑞

𝜒 𝑎 − 𝜒 1 = −1

Page 15: Коды Адамара. Каскадные коды Форни

Матрица Якобшталя (E. Jacobsthal)

Рассмотрим матрицу 𝑡𝑎,𝑏 𝑎,𝑏∈𝔽𝑞∈ −1, 0, 1 𝑞×𝑞, в которой

𝑡𝑎,𝑏 ≔ 𝜒 𝑎 − 𝑏 .

Скалярное произведение любых двух различных строк 𝑡𝑎′,𝑏 𝑏∈𝔽𝑞

и 𝑡𝑎′′,𝑏 𝑏∈𝔽𝑞равно

𝑏∈𝔽𝑞

𝜒 𝑎′ − 𝑏 ⋅ 𝜒 𝑎′′ − 𝑏 =

𝑏∈𝔽𝑞

𝜒 𝑏 ⋅ 𝜒 𝑏 + 𝑎′′ − 𝑎′ = −1

Page 16: Коды Адамара. Каскадные коды Форни

«Подправленная» матрица Якобшталя

Рассмотрим матрицу 𝑡𝑎,𝑏′

𝑎,𝑏∈𝔽𝑞∈ −1, 1 𝑞×𝑞, в которой 𝑡𝑎,𝑏

′ = 𝜒 𝑎 − 𝑏 , если

𝑎 ≠ 𝑏 и 𝑡𝑎,𝑏′ = −1 иначе.

Скалярное произведение различных строк 𝑡𝑎′,𝑏′

𝑏∈𝔽𝑞и 𝑡𝑎′′,𝑏

𝑏∈𝔽𝑞равно

𝑏∈𝔽𝑞

𝜒 𝑎′ − 𝑏 ⋅ 𝜒 𝑎′′ − 𝑏 − 𝜒 𝑎′ − 𝑎′′ − 𝜒 𝑎′′ − 𝑎′ =

= −1 − 𝜒 𝑎′ − 𝑎′′ − 𝜒 𝑎′′ − 𝑎′

Если −1 является квадратичным невычетом в 𝔽𝑞, то

𝜒 𝑎′′ − 𝑎′ = 𝜒 −1 ⋅ 𝜒 𝑎′ − 𝑎′′ = −𝜒 𝑎′ − 𝑎′′ ,

и скалярное произведение получается равным −1.

Page 17: Коды Адамара. Каскадные коды Форни

«Подправленная» и «дополненная» матрица Якобшталя

𝑇′ ≔ 𝑡𝑎,𝑏′

𝑎,𝑏∈𝔽𝑞∈ −1, 1 𝑞×𝑞,

где 𝑡𝑎,𝑏′ = 𝜒 𝑎 − 𝑏 , если 𝑎 ≠ 𝑏, и 𝑡𝑎,𝑏

′ = −1 иначе.

Если −1 является квадратичным невычетом в 𝔽𝑞, то скалярное произведение любых двух строк матрицы 𝑇′ равно −1. Тогда матрица

1 1 ⋯ 11⋮ 𝑇′

1является нормализованной матрицей Адамара.

Page 18: Коды Адамара. Каскадные коды Форни

Матрицы Адамара

Утверждение. (Без доказательства)При 4| 𝑞 + 1 элемент −1 является квадратичным невычетом в 𝔽𝑞.

Следствие.Если 𝑝 простое и 4| 𝑝𝑚 + 1 , то существует матрица Адамара порядка 𝑝𝑚 + 1 .

Page 19: Коды Адамара. Каскадные коды Форни

Коды Адамара

Введены R. C. Bose, S. S. Shrikhande ’1959.

Идея:В матрице Адамара любые две строки 𝒂, 𝒃 ортогональны. Т.к. 𝑎, 𝑏 ∈−1, 1 𝑛 , это значит, что ровно половина координат у них

совпадает, а половина противоположны.

Заменяем координаты −1 → 0 и получаем из строк матрицы двоичный код с большим кодовым расстоянием.

Page 20: Коды Адамара. Каскадные коды Форни

Коды Адамара

Пусть 𝐴 ∈ 0,1 𝑛×𝑛 — матрица, полученная из нормализованной матрицы Адамара заменой элементов −1 на 0.

• Множество строк матрицы 𝐴 с отброшенной первой координатой

образует двоичный 𝑛 − 1, 𝑛, 𝑛2

-код

• Множество строк матрицы 𝐴 и их дополнений образует

𝑛, 2𝑛, 𝑛2

-код

Page 21: Коды Адамара. Каскадные коды Форни

Оптимальность кодов Адамара

Граница Плоткина (в двоичном случае)

Если 𝑁 < 2𝑑, то для любого 𝑁,𝑀, 𝑑 -кода

𝑀 ≤2𝑑

2𝑑 − 𝑁

Коды Адамара с параметрами 𝑛 − 1, 𝑛, 𝑛2

достигают границы

Плоткина, имея максимально число слов при заданных длине и кодовом расстоянии.

Page 22: Коды Адамара. Каскадные коды Форни

Каскадные коды(предложены G. D. Forney ’1966)Пусть

• 𝐶internal — 𝑛,𝑚, 𝑑 𝑞-код (внутренний код)

• 𝐶external — 𝑁,𝑀,𝐷 𝑚-код (внешний код)

Символам алфавита кода 𝐶ext сопоставим слова кода 𝐶int.

Тогда кодовым словам кода 𝐶ext соответствуют слова длины 𝑁𝑛 в алфавите кода 𝐶int.

Получаем каскадный 𝑁𝑛,𝑀, 𝑑′ 𝑞-код, где 𝑑′ ≥ 𝐷𝑑.

Page 23: Коды Адамара. Каскадные коды Форни

Каскадные коды(линейный двоичный случай)Пусть

• 𝐶int — 𝑛, 𝑘, 𝑑 -код (внутренний код)

• 𝐶ext — 𝑁,𝐾, 𝐷 2𝑘-код (внешний код)

Элементам 𝔽2𝑘 сопостaвим слова кода 𝐶int, так, чтобы линейная комбинация элементов 𝔽2𝑘 соответствовала линейной комбинации слов кода 𝐶int.

Тогда кодовым словам кода 𝐶ext соответствуют слова длины 𝑁𝑛 в алфавите кода 𝐶int.

Получаем каскадный 𝑁𝑛, 𝑘𝐾, 𝑑𝐷 -код.

Page 24: Коды Адамара. Каскадные коды Форни

Коды Форни

В качестве внешнего кода удобно взять оптимальный (например, MDS) код над алфавитом большой (не слишком) мощности.

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

Сможем получить асимптотически хорошее семейство линейных кодов, для которых есть полиномиальный алгоритм декодирования.

Page 25: Коды Адамара. Каскадные коды Форни

Асимптотически хорошие коды

Пусть задано семейство двоичных кодов 𝐶 ≔ 𝐶𝑛 𝑛=1

Асимптотической скоростью семейства 𝐶 называется величина

rate 𝐶 ≔ lim𝑛→∞

log2 𝐶𝑛𝑛

Асимптотическим относительным кодовым расстояниемсемейства 𝐶 называется величина

𝛿 𝐶 ≔ lim𝑛→∞

𝑑 𝐶𝑛𝑛

Page 26: Коды Адамара. Каскадные коды Форни

Асимптотически хорошие коды

rate 𝐶 ≔ lim𝑛→∞

log2 𝐶𝑛𝑛

𝛿 𝐶 ≔ lim𝑛→∞

𝑑 𝐶𝑛𝑛

Семейство кодов называется асимптотически хорошим, если для

него rate 𝐶 > 0 и 𝛿 𝐶 > 0

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

Page 27: Коды Адамара. Каскадные коды Форни

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

Теорема. (Р. Р. Варшамов, E. N. Gilbert)Пусть натуральные числа 𝑛, 𝑘, 𝑑′ таковы, что

𝑗=0

𝑑′−1𝑛 − 1

𝑗< 2𝑛−𝑘

Тогда существует 𝑛, 𝑘, 𝑑 -код, где 𝑑 > 𝑑′.

Следствие.Если 𝛿 < 0.5 и 𝜌 таковы, что 𝐻 𝛿 ≤ 1 − 𝜌, то существует

семейство линейных кодов 𝐶, для которого rate 𝐶 ≥ 𝜌 и 𝛿 𝐶 ≥ 𝛿.

Page 28: Коды Адамара. Каскадные коды Форни

Теорема Варшамова—Гилберта(асимптотическая версия)

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

Если 𝑛, 𝑘, 𝑑′ таковы, что 𝐻 𝑑′ 𝑛 ≤ 1 − 𝑘

𝑛, то

𝑗=0

𝑑′−1𝑛 − 1

𝑗< 2𝑛⋅𝐻 𝑑′ 𝑛 ≤ 2𝑛−𝑘 ,

то есть условия теоремы В.—Г. выполнены, и существует линейный 𝑛, 𝑘, 𝑑 -код, где 𝑑 > 𝑑′.

Если 𝐻 𝛿 ≤ 1 − 𝜌, то берём для каждого 𝑛𝑘 ≔ 𝜌𝑛 , 𝑑′ ≔ 𝛿𝑛 , и получаем требуемое.

Page 29: Коды Адамара. Каскадные коды Форни

Цель

Теорема Варшамова—Гилберта не даёт полиномиальных (по длине кодовых слов) алгоритмов построения кода и декодирования.

А хочется следующего:

• Для каждого 𝑛 строить порождающую или проверочную матрицу некоторого линейного кода с длиной слов, размерностью и кодовым расстоянием Ω 𝑛 . И всё за полиномиальное от 𝑛время.

• Исправлять Ω 𝑛 ошибок в кодовых словах за полиномиальное от 𝑛 время.

Page 30: Коды Адамара. Каскадные коды Форни

Каскадный код Форни на основе конструкции В.—Г. и кода Р.—С.Пусть 𝑡 ∈ ℕ, и пусть 𝛿 < 0.5 — произвольное фиксированное число.

По теореме В.—Г., существует линейный код с параметрами𝑡

1−𝐻 𝛿, 𝑡, 𝛿𝑡

1−𝐻 𝛿

Возьмём этот код в качестве внутреннего.

В качестве внешнего возьмём RS-код с параметрами 2𝑡 , 2𝑡−1, 2𝑡−1 + 1 2𝑡 .

Получаем каскадный 𝑛, 𝑘, 𝑑 -код, для которого

𝑛 =𝑡 ⋅ 2𝑡

1 − 𝐻 𝛿, 𝑘 =

𝑡 ⋅ 2𝑡

2, 𝑑 >

𝛿𝑡 ⋅ 2𝑡

2 1 − 𝐻 𝛿

Page 31: Коды Адамара. Каскадные коды Форни

Каскадный код Форни на основе конструкции В.—Г. и кода Р.—С.

Получаем каскадный 𝑛, 𝑘, 𝑑 -код, для которого

𝑛 =𝑡 ⋅ 2𝑡

1 − 𝐻 𝛿, 𝑘 =

𝑡 ⋅ 2𝑡

2, 𝑑 >

𝛿𝑡 ⋅ 2𝑡

2 1 − 𝐻 𝛿

Этот код является асимптотически хорошим, т.к. 𝑑𝑛≥ 𝛿

2 1−𝐻 𝛿> 0 и

𝑘

𝑛≥ 1

2 1−𝐻 𝛿> 0.

Page 32: Коды Адамара. Каскадные коды Форни

Каскадный код Форни на основе конструкции В.—Г. и кода Р.—С.

Получаем каскадный 𝑛, 𝑘, 𝑑 -код, для которого

𝑛 =𝑡 ⋅ 2𝑡

1 − 𝐻 𝛿, 𝑘 =

𝑡 ⋅ 2𝑡

2, 𝑑 >

𝛿𝑡 ⋅ 2𝑡

2 1 − 𝐻 𝛿

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

• коды Р.—С. строятся за полиномиальное время от своих параметров,

• проверочная матрица кода в теореме В.—Г. строится хотя и перебором, но параметры этого кода логарифмичны по 𝑛.

Page 33: Коды Адамара. Каскадные коды Форни

Каскадный код Форни на основе конструкции В.—Г. и кода Р.—С.

Получаем каскадный 𝑛, 𝑘, 𝑑 -код, для которого

𝑛 =𝑡 ⋅ 2𝑡

1 − 𝐻 𝛿, 𝑘 =

𝑡 ⋅ 2𝑡

2, 𝑑 >

𝛿𝑡 ⋅ 2𝑡

2 1 − 𝐻 𝛿

Существует «почти тривиальный» полиномиальный алгоритм,

декодирующий кодовые слова, принятые с не более чем 𝛿𝑡⋅2𝑡

8 1−𝐻 𝛿

ошибками.

Page 34: Коды Адамара. Каскадные коды Форни

Тривиальный алгоритм декодирования кодов ФорниКаждое слово кода Форни имеет вид

𝒄 = 𝒂1𝒂2…𝒂2𝑡

где 𝒂𝑖 — слова кода В.—Г. длины 𝑡

1−𝐻 𝛿.

Если в слове 𝒄 произошло ≤ 𝛿𝑡⋅2𝑡

8 1−𝐻 𝛿ошибок, и в результате принято слово

𝒄 = 𝒂1 𝒂2… 𝒂2𝑡, то слово 𝒄 восстанавливаем в два шага:

• Для каждого 𝒂𝑖 перебором ищем ближайшее к нему слово кода В.—Г. При этом неверно восстановленных слов может быть не более

𝛿𝑡⋅2𝑡

8 1−𝐻 𝛿

𝛿𝑡

2 1−𝐻 𝛿= 2𝑡−2.

• Кодовое расстояние внешнего кода равно 2𝑡−1 + 1 , поэтому даже 2𝑡−2

ошибок он успешно исправит.

Page 35: Коды Адамара. Каскадные коды Форни

Пояснения к алгоритму декодирования кодов Форни

Пусть слово 𝒄 = 𝒂1𝒂2…𝒂2𝑡 исказилось в 𝑠 разрядах и перешло в слово 𝒄 = 𝒂1 𝒂2… 𝒂2𝑡 .𝒂𝑖 — слова кода В.—Г. с расстоянием 𝑑int.

Пусть 𝐼 = 𝑖 ∣ 𝑑 𝒂𝑖 , 𝒂𝑖 ≥ 𝑑int2

, где 𝐼 ≤ 2𝑠

𝑑int.

Т.к. на первом шаге проблемы с исправлением могут быть только у слов 𝒂𝑖, у которых 𝑖 ∈ 𝐼, то на втором шаге, рассматривая каждое 𝒂𝑖 как один элемент поля 𝔽2𝑡 , мы получаем задачу восстановления слова кода Р.—С. с ошибками не более чем в 2𝑠

𝑑intразрядах.