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

Линейные коды

Embed Size (px)

DESCRIPTION

Линейные коды. Определения. Порождающая и проверочная матрицы. Связь кодового расстояния с проверочной матрицей. Граница Варшамова—Гилберта. Систематическое кодирование. Декодирование по синдрому. Коды Хемминга. Остаточный код. Граница Грайсмера—Соломона—Штиффлера.

Citation preview

Page 1: Линейные коды

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

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

www.dainiak.com

Page 2: Линейные коды

Линейные коды:определениеПусть 𝑞 — степень простого числа и символы кодовых слов —элементы конечного поля 𝔽𝑞.

𝑛,𝑀, 𝑑 𝑞-код 𝐶 называется линейным, если он является линейным подпространством пространства 𝔽𝑞

𝑛, то есть линейная комбинация кодовых слов также является кодовым словом.

Если dim𝐶 = 𝑘, то говорят, что задан

линейный 𝑛, 𝑘, 𝑑 𝑞-код

Page 3: Линейные коды

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

𝐶 ≔ 𝑎1, … , 𝑎𝑛 ∈ 𝔽2𝑛 ∣ ∑𝑎𝑖 = 0

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

⋮0,0,0, … , 1,1

Page 4: Линейные коды

Линейные коды:порождающая матрицаЕсли выписать базис линейного 𝑛, 𝑘, 𝑑 𝑞-кода построчно в виде матрицы размера 𝑘 × 𝑛, получим порождающую матрицу кода.

Для задания 𝑛, 𝑘, 𝑑 𝑞-кода достаточно указать его порождающую матрицу 𝐺 ∈ 𝔽𝑞

𝑘×𝑛.

Число линейных комбинаций 𝑘 базисных векторов с коэффициентами из 𝔽𝑞 равно 𝑞𝑘, поэтому каждый 𝑛, 𝑘, 𝑑 𝑞-код является 𝑛, 𝑞𝑘 , 𝑑

𝑞-кодом

Page 5: Линейные коды

Линейные коды:кодированиеЕсли линейный 𝑛, 𝑘, 𝑑 𝑞-кода задан порождающей матрицей 𝐺, а исходное сообщение представлено как вектор 𝒙 ∈ 𝔽𝑞

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

𝒙кодирование

𝒙𝑇𝐺 ∈ 𝔽𝑞𝑛

Обратно, если закодированное сообщение 𝒂 ∈ 𝔽𝑞𝑛 было принято

без ошибок, декодируем его, решая, например, методом Гаусса, систему:

𝒙𝑇𝐺 = 𝒂

Правда, коды нам как раз были нужны, чтобы уметь декодировать сообщения с ошибками…

Page 6: Линейные коды

Линейные коды:канонический вид

Порождающую матрицу 𝐺 ∈ 𝔽𝑞𝑘×𝑛 линейными преобразованиями

и перестановками строк и столбцов можно привести кканоническому виду:

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

𝐺

где 𝐺 ∈ 𝔽𝑞𝑘× 𝑛−𝑘

.Тогда кодирование будет систематическим:

𝑥1, … , 𝑥𝑘

кодирование𝑥1, … , 𝑥𝑘 ∣ 𝒙 𝐺

Page 7: Линейные коды

Линейные коды:канонический видЕсли порождающая матрица кода задана в каноническом виде, то кодирование будет систематическим и слово 𝑥1, … , 𝑥𝑘 переходит в

𝑥1, … , 𝑥𝑘 ∣ 𝒙 𝐺 = 𝑥1, … , 𝑥𝑘 , 𝑥1, … , 𝑥𝑛−𝑘

• Разряды 𝑥1, … , 𝑥𝑘 — информационные

• Разряды 𝑥1, … , 𝑥𝑛−𝑘 — проверочные

Page 8: Линейные коды

Линейные коды:эквивалентные кодыЕсли матрица 𝐺 исходно задана не в каноническом виде, а мы приводим её к каноническому виду, то получается в общем случае не тот же код, а эквивалентный ему.

Коды 𝐶1 и 𝐶2 эквивалентны, если существует перестановка 𝜋 и константы 𝑟1, … , 𝑟𝑛 ∈ 𝔽𝑞 ∖ 0 , такие, что

𝑎1, … , 𝑎𝑛 ∈ 𝐶1 ⇔ 𝑟1𝑎𝜋 1 , … , 𝑟𝑛𝑎𝜋 𝑛 ∈ 𝐶2

Для эквивалентных кодов 𝑑 𝐶1 = 𝑑 𝐶2 .

Page 9: Линейные коды

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

Для слова 𝒂 ∈ 𝔽𝑞𝑛 будем через 𝒂 обозначать вес слова, т.е.

величину# 𝑖 ∣ 𝑎𝑖 ≠ 0

Утверждение.Для любого линейного кода 𝐶 имеем

𝑑 𝐶 = min𝒂∈𝐶𝒂≠𝟎

𝒂

Page 10: Линейные коды

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

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

Поскольку 𝟎 ∈ 𝐶, то𝑑 𝐶 ≝ min

𝒂,𝒃∈𝐶𝒂≠𝒃

𝑑 𝒂, 𝒃 ≤ min𝒂∈𝐶𝒂≠𝟎

𝑑 𝒂, 𝟎 = min𝒂∈𝐶𝒂≠𝟎

𝒂

В обратную сторону. Пусть кодовое расстояние достигается на паре слов 𝒂∗, 𝒃∗.

Тогда так как 𝒂∗ − 𝒃∗ ∈ 𝐶, получаем𝑑 𝐶 = 𝑑 𝒂∗, 𝒃∗ = 𝒂∗ − 𝒃∗ ≥ min

𝒂∈𝐶𝒂≠𝟎

𝒂

Page 11: Линейные коды

Проверочная матрица

Проверочная матрица 𝐻 линейного кода — это матрицаоднородной системы линейных уравнений, которым удовлетворяет код.

Для любого кодового слова 𝒂, по определению матрицы 𝐻, выполнено равенство 𝐻𝒂𝑇 = 𝟎.

Для 𝑛, 𝑘, 𝑑 𝑞-кода 𝐻 ∈ 𝔽𝑞𝑛−𝑘 ×𝑛

.

Пример: для кода с проверкой чётности𝐻 = 11…1

Page 12: Линейные коды

Проверочная матрица

Утверждение.Если 𝐺 и 𝐻 — порождающая и проверочная матрицы линейного 𝑛, 𝑘, 𝑑 𝑞-кода, то

𝐻𝐺𝑇 = 𝟎 𝑛−𝑘 ×𝑘

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

Page 13: Линейные коды

Двойственные коды

Если коды 𝐶1 и 𝐶2 таковы, что проверочная матрица 𝐶1 является порождающей матрицей для 𝐶2, то эти коды называют двойственными.

Коды 𝐶1 и 𝐶2 двойственны т. и т.т., когда 𝒂1, 𝒂2 = 0 для любых слов 𝒂1 ∈ 𝐶1, 𝒂2 ∈ 𝐶2.

Поэтому двойственные коды называются также ортогональными.

Page 14: Линейные коды

Проверочная матрица и кодовое расстояниеУтверждение. (О связи кодового расстояния и проверочной матрицы)Линейный код, определяемый проверочной матрицей 𝐻, имеет расстояние 𝑑 т. и т.т., когда

• любые 𝑑 − 1 столбцов 𝐻 линейно независимы,

• найдутся 𝑑 линейно зависимых столбцов в 𝐻.

Page 15: Линейные коды

Проверочная матрица и кодовое расстояниеДоказательство:

Пусть 𝒂 = 𝑎1, … , 𝑎𝑛 ≠ 𝟎 — произвольное кодовое слово кода с проверочной матрицей 𝐻.

Пусть 𝐻1, … , 𝐻𝑛 — столбцы 𝐻. Имеем𝐻𝒂𝑇 = 𝑎1 ⋅ 𝐻1 + ⋯+ 𝑎𝑛 ⋅ 𝐻𝑛

Если 𝑖1, … , 𝑖𝑡 — все ненулевые координаты 𝒂, то𝑎1𝐻1 + ⋯+ 𝑎𝑛𝐻𝑛 = 𝑎𝑖1𝐻𝑖1 + ⋯+ 𝑎𝑖𝑡𝐻𝑖𝑡

Так как 𝒂 — кодовое слово, то 𝐻𝒂𝑇 = 𝟎, то есть𝑎𝑖1𝐻𝑖1 + ⋯+ 𝑎𝑖𝑡𝐻𝑖𝑡 = 𝟎

Page 16: Линейные коды

Проверочная матрица и кодовое расстояниеПродолжение доказательства:

Мы получили, что в коде есть слово веса не более 𝑡 т. и т.т., когда некоторые 𝑡 столбцов матрицы 𝐻 линейно зависимы.

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

𝑑 𝐶 = min𝒂∈𝐶𝒂≠𝟎

𝒂

Page 17: Линейные коды

Декодирование по синдрому

Пусть 𝐻 — проверочная матрица кода 𝐶, и пусть 𝒂 ∈ 𝐶.

Если при передаче 𝒂 по каналу произошло 𝑡 ошибок, на выходе из канала имеем слово 𝒃.

Вектор 𝒆 ≔ 𝒃 − 𝒂 называется вектором ошибок.Очевидно, 𝒆 = 𝑡.

Исправить ошибки в 𝒃 — то же самое, что найти вектор 𝒆. Используем равенство

𝐻𝒃𝑇 = 𝐻𝒂𝑇 + 𝐻𝒆𝑇 = 𝐻𝒆𝑇

Page 18: Линейные коды

Декодирование по синдрому

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

𝒆 < 𝑑 𝐶

2

𝐻𝒆𝑇 = 𝐻𝒃𝑇

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

Доказательство.Пусть нашлись разные решения 𝒆1 ≠ 𝒆2.

Тогда 𝒆1 − 𝒆2 ≤ 𝒆1 + 𝒆2 < 𝑑 𝐶

и 𝐻 𝒆1 − 𝒆2𝑇 = 𝟎 — противоречие.

Page 19: Линейные коды

Декодирование по синдрому

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

𝒆 < 𝑑 𝐶

2

𝐻𝒆𝑇 = 𝒔

для всевозможных 𝒔.

При получении из канала слова 𝒃 мы вычисляем 𝒔 ≔ 𝐻𝒃𝑇

(синдром слова 𝒃), и для этого 𝒔 смотрим в таблице соответствующий вектор 𝒆.

Декодированное сообщение — решение системы𝒙𝑇𝐺 = 𝒃 − 𝒆

Page 20: Линейные коды

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

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

𝑗=0

𝑑′−1𝑛 − 1

𝑗< 2𝑛−𝑘

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

Page 21: Линейные коды

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

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

𝐻 ∈ 𝔽2𝑛−𝑘 ×𝑛

, у которой любые 𝑑′ столбцов линейно независимы.

Будем строить матрицу по столбцам.

Пусть уже выбраны 𝑚 столбцов (где 𝑚 < 𝑛) и требуется выбрать 𝑚 + 1 -й столбец.

Этот новый столбец не должен образовывать нулевую линейную комбинацию с 𝑑′ − 1 или менее из уже выбранных столбцов.

Page 22: Линейные коды

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

Выбираемый столбец не должен образовывать нулевую линейную комбинацию с 𝑑′ − 1 или менее из уже выбранных столбцов.

Так как у нас 𝔽2, то это равносильно тому, что выбираемый столбец не равен сумме 𝑑′ − 1 или менее уже выбранных столбцов.

Количество таких сумм равно

𝑗=0

𝑑′−1𝑚

𝑗≤

𝑗=0

𝑑′−1𝑛 − 1

𝑗< 2𝑛−𝑘

Page 23: Линейные коды

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

Итак, запрещённых для выбора столбцов у нас оказывается строго меньше 2𝑛−𝑘, а всего векторов длины 𝑛 − 𝑘 ровно 2𝑛−𝑘. Значит, найдётся вектор из 𝔽2

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

Page 24: Линейные коды

Двоичный код Хемминга(R.W. Hamming)Двоичный код с проверкой чётности

𝑎1, … , 𝑎𝑛 ∈ 𝔽2𝑛 ∣ ∑𝑎𝑖 = 0

может обнаруживать одну ошибку, т.к. если один разряд 𝑎𝑖заменить на противоположный, соотношение ∑𝑎𝑖 = 0 нарушится. Но исправить ошибку не удастся.

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

Для этого вместо «глобального» контроля чётности применим несколько «дихотомических» проверок на чётность…

Page 25: Линейные коды

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

Пример для 𝑛 = 7. Рассмотрим код, удовлетворяющий соотношениям

𝑎4 + 𝑎5 + 𝑎6 + 𝑎7 = 0

𝑎2 + 𝑎3 + 𝑎6 + 𝑎7 = 0

𝑎1 + 𝑎3 + 𝑎5 + 𝑎7 = 0

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

Page 26: Линейные коды

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

Проверочная матрица:0 0 0 1 1 1 10 1 1 0 0 1 11 0 1 0 1 0 1

Столбцы матрицы — всевозможные ненулевые вектора высоты 3. 𝑗-й столбец суть двоичная запись числа 𝑗.

Любая пара столбцов л.н.з., значит 𝑑 𝐶 ≥ 3, значит, этот кодисправляет одну ошибку и обнаруживает две.

Page 27: Линейные коды

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

Если ошибка случается в 𝑎𝑗, то можно вычислить левые части проверочных соотношений, и они дадут двоичную запись 𝑗, например:

𝑎4 + 𝑎5 + 𝑎6 + 𝑎7 = 1

𝑎2 + 𝑎3 + 𝑎6 + 𝑎7 = 0

𝑎1 + 𝑎3 + 𝑎5 + 𝑎7 = 1

Page 28: Линейные коды

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

Общий случай: 𝑛 ≔ 2𝑚 − 1 для некоторого 𝑚.

Код Хемминга длины 𝑛 определяется проверочной матрицей 𝐻 ∈ 𝔽2

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

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

Код Хемминга имеет параметры 2𝑚 − 1, 2𝑚 − 𝑚 − 1, 3

Page 29: Линейные коды

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

Граница Хемминга:Для любого 𝑛,𝑀, 𝑑 𝑞-кода имеем

𝑀 ≤𝑞𝑛

𝑆 𝑑−1 2 𝟎

В двоичном случае

𝑀 ≤2𝑛

∑𝑘=0

𝑑−1 2 𝑛𝑘

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

Page 30: Линейные коды

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

Граница Хемминга:Для любого 𝑛,𝑀, 𝑑 -кода имеем

𝑀 ≤2𝑛

∑𝑘=0

𝑑−1 2 𝑛𝑘

Утверждение.Код Хемминга является совершенным.

Доказательство:Для кода Хемминга имеем 𝑛 = 2𝑚 − 1, 𝑀 = 22𝑚−𝑚−1 и 𝑑 = 3.

Отсюда ∑𝑘=0 𝑑−1 2 𝑛

𝑘= 𝑛 + 1 = 2𝑚 = 2𝑛 𝑀.

Page 31: Линейные коды

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

Утверждение.Для любого 𝑛, 𝑘, 𝑑 𝑞-кода имеем

𝑘 ≤ 𝑛 − 𝑑 + 1

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

По теореме Синглтона, для любого 𝑛,𝑀, 𝑑 𝑞-кода выполнено 𝑀 ≤𝑞𝑛−𝑑+1.

С другой стороны, для линейного кода 𝑀 = 𝑞𝑘.

Page 32: Линейные коды

Остаточный код

Теорема. (G. Solomon, J.J. Stiffler)Если существует 𝑛, 𝑘, 𝑑 𝑞-код, то существует и 𝑛 − 𝑑, 𝑘 − 1, 𝑑′

𝑞-код, где 𝑑′ ≥ 𝑑 𝑞.

Доказательство:Пусть 𝐺 — порождающая матрица некоторого 𝑛, 𝑘, 𝑑 𝑞-кода 𝐶.

Б.о.о. будем считать, что первая строка 𝐺 содержит ровно 𝑑ненулевых элементов и имеет вид 𝑟1 …𝑟𝑑0…0 .

Page 33: Линейные коды

Остаточный код

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

𝐺 =𝑟1 …𝑟𝑑 0…0

⋯ 𝐺′

Имеем 𝐺′ ∈ 𝔽𝑞𝑘−1 × 𝑛−𝑑

.

Покажем, что rk 𝐺′ = 𝑘 − 1. Допустим противное: некоторая нетривиальная линейная комбинация строк 𝐺′ равняется 𝟎.

Тогда линейная комбинация соответствующих строк 𝐺 равна 𝑡1 …𝑡𝑑0…0 , где ∀𝑖 𝑡𝑖 ≠ 0 .

Page 34: Линейные коды

Остаточный код

𝐺 =𝑟1 …𝑟𝑑 0…0

⋯ 𝐺′

Линейная комбинация 𝑈 некоторых строк 𝐺 равна 𝑡1 …𝑡𝑑0…0 , где ∀𝑖 𝑡𝑖 ≠ 0 .

Т.к. 𝔽𝑞 поле, то ∃𝑠 ∈ 𝔽𝑞, такой, что 𝑠𝑡𝑑 = −𝑟𝑑. Тогда 𝑠 ⋅ 𝑈 + 𝑟1 …𝑟𝑑0…0

— линейная комбинация строк 𝐺, равная𝑠𝑡1 + 𝑟1 … 𝑠𝑡𝑑−1 + 𝑟𝑑−1 00…0

Это противоречит условию 𝑑 𝐶 = 𝑑.

Page 35: Линейные коды

Остаточный код

𝐺 =𝑟1 …𝑟𝑑 0…0

⋯ 𝐺′

Итак, 𝐺′ ∈ 𝔽𝑞𝑘−1 × 𝑛−𝑑

и rk 𝐺′ = 𝑘 − 1.

Значит 𝐺′ является порождающей матрицей некоторого 𝑛 − 𝑑, 𝑘 − 1, 𝑑′

𝑞-кода 𝐶′ (этот код называется остаточным дляисходного кода 𝐶).

Рассмотрим любой ненулевой вектор кода 𝐶′

𝒂′ ≔ 𝑎1′ , … , 𝑎𝑛−𝑑

′ ≠ 𝟎такой, что 𝒂′ = 𝑑′.

В коде 𝐶 есть вектор вида𝑎1, … , 𝑎𝑑 , 𝑎1

′ , … , 𝑎𝑛−𝑑′

Page 36: Линейные коды

Остаточный код

𝐺 =𝑟1 …𝑟𝑑 0…0

⋯ 𝐺′

В коде 𝐶 есть вектор вида𝑎1, … , 𝑎𝑑 , 𝑎1

′ , … , 𝑎𝑛−𝑑′

Пусть 𝑓1, … , 𝑓𝑞 — все элементы поля 𝔽𝑞.

Коду 𝐶 принадлежат все вектора вида𝑎1 − 𝑓𝑖𝑟1 , … , 𝑎𝑑 − 𝑓𝑖𝑟𝑑 , 𝑎1

′ , … , 𝑎𝑛−𝑑′

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

Page 37: Линейные коды

Остаточный код

Рассмотрим матрицу:𝑎1 − 𝑓1𝑟1 … 𝑎𝑑 − 𝑓1𝑟𝑑 𝑎1

′ … 𝑎𝑛−𝑑′

𝑎1 − 𝑓2𝑟1 … 𝑎𝑑 − 𝑓2𝑟𝑑 𝑎1′ … 𝑎𝑛−𝑑

⋮ ⋮ ⋮ ⋮ ⋮ ⋮𝑎1 − 𝑓𝑞𝑟1 … 𝑎𝑑 − 𝑓𝑞𝑟𝑑 𝑎1

′ … 𝑎𝑛−𝑑′

В этой подматрицеровно 𝑞𝑑′ ненулевыхэлементов

В каждом из этих столбцовровно 𝑞 − 1 ненулевыхэлементов

Итого в матрице 𝑑 𝑞 − 1 + 𝑞𝑑′ ненулевых элементов.

Page 38: Линейные коды

Остаточный код

В рассмотренной матрице 𝑑 𝑞 − 1 + 𝑞𝑑′ ненулевых элементов.

Каждая строка матрицы — ненулевой вектор кода 𝐶, значит в матрице не менее чем 𝑞𝑑 ненулевых элементов.

Отсюда𝑑 𝑞 − 1 + 𝑞𝑑′ ≥ 𝑞𝑑

и следовательно 𝑑′ ≥ 𝑑 𝑞

Page 39: Линейные коды

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

Теорема. (J.H. Griesmer, G. Solomon, J.J. Stiffler)Для любого 𝑛, 𝑘, 𝑑 𝑞-кода имеем

𝑛 ≥

𝑖=0

𝑘−1𝑑

𝑞𝑖

Доказательство: индукция по 𝑘.

Утверждение очевидно при 𝑘 = 1. Предположим, что оно выполнено для кодов с размерностью ≤ 𝑘 − 1 и докажем его для 𝑛, 𝑘, 𝑑 𝑞-кодов.

Page 40: Линейные коды

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

Обозначим через 𝑁 𝑘, 𝑑 минимальную длину слов у кода с размерностью 𝑘 и расстоянием 𝑑.

Пусть 𝐶 — какой-нибудь 𝑁 𝑘, 𝑑 , 𝑘, 𝑑 𝑞-код.

Остаточный для 𝐶 код имеет параметры𝑁 𝑘, 𝑑 − 𝑑, 𝑘 − 1, 𝑑′

𝑞

и по предположению индукции, для него справедливо неравенство

𝑁 𝑘, 𝑑 − 𝑑 ≥

𝑖=0

𝑘−2𝑑′

𝑞𝑖

Page 41: Линейные коды

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

Из неравенства

𝑁 𝑘, 𝑑 − 𝑑 ≥

𝑖=0

𝑘−2𝑑′

𝑞𝑖

с учётом того, что 𝑑′ ≥ 𝑑 𝑞, получаем

𝑁 𝑘, 𝑑 ≥ 𝑑 +

𝑖=0

𝑘−2𝑑′

𝑞𝑖≥ 𝑑 +

𝑖=0

𝑘−2𝑑

𝑞𝑖+1=

𝑖=0

𝑘−1𝑑

𝑞𝑖