View
617
Download
2
Category
Preview:
DESCRIPTION
Линейные коды. Определения. Порождающая и проверочная матрицы. Связь кодового расстояния с проверочной матрицей. Граница Варшамова—Гилберта. Систематическое кодирование. Декодирование по синдрому. Коды Хемминга. Остаточный код. Граница Грайсмера—Соломона—Штиффлера.
Citation preview
Теория кодированияМФТИ, осень 2013
Александр Дайняк
www.dainiak.com
Линейные коды:определениеПусть 𝑞 — степень простого числа и символы кодовых слов —элементы конечного поля 𝔽𝑞.
𝑛,𝑀, 𝑑 𝑞-код 𝐶 называется линейным, если он является линейным подпространством пространства 𝔽𝑞
𝑛, то есть линейная комбинация кодовых слов также является кодовым словом.
Если dim𝐶 = 𝑘, то говорят, что задан
линейный 𝑛, 𝑘, 𝑑 𝑞-код
Линейные коды:пример кодаПример линейного двоичного кода — код с проверкой чётности:
𝐶 ≔ 𝑎1, … , 𝑎𝑛 ∈ 𝔽2𝑛 ∣ ∑𝑎𝑖 = 0
Один из базисов этого кода:1,0,0, … , 0,10,1,0, … , 0,10,0,1, … , 0,1
⋮0,0,0, … , 1,1
Линейные коды:порождающая матрицаЕсли выписать базис линейного 𝑛, 𝑘, 𝑑 𝑞-кода построчно в виде матрицы размера 𝑘 × 𝑛, получим порождающую матрицу кода.
Для задания 𝑛, 𝑘, 𝑑 𝑞-кода достаточно указать его порождающую матрицу 𝐺 ∈ 𝔽𝑞
𝑘×𝑛.
Число линейных комбинаций 𝑘 базисных векторов с коэффициентами из 𝔽𝑞 равно 𝑞𝑘, поэтому каждый 𝑛, 𝑘, 𝑑 𝑞-код является 𝑛, 𝑞𝑘 , 𝑑
𝑞-кодом
Линейные коды:кодированиеЕсли линейный 𝑛, 𝑘, 𝑑 𝑞-кода задан порождающей матрицей 𝐺, а исходное сообщение представлено как вектор 𝒙 ∈ 𝔽𝑞
𝑘, то закодировать его можно быстро и просто:
𝒙кодирование
𝒙𝑇𝐺 ∈ 𝔽𝑞𝑛
Обратно, если закодированное сообщение 𝒂 ∈ 𝔽𝑞𝑛 было принято
без ошибок, декодируем его, решая, например, методом Гаусса, систему:
𝒙𝑇𝐺 = 𝒂
Правда, коды нам как раз были нужны, чтобы уметь декодировать сообщения с ошибками…
Линейные коды:канонический вид
Порождающую матрицу 𝐺 ∈ 𝔽𝑞𝑘×𝑛 линейными преобразованиями
и перестановками строк и столбцов можно привести кканоническому виду:
1 0 ⋯ 00 1 ⋯ 0⋮ ⋮ ⋱ ⋮0 0 ⋯ 1
𝐺
где 𝐺 ∈ 𝔽𝑞𝑘× 𝑛−𝑘
.Тогда кодирование будет систематическим:
𝑥1, … , 𝑥𝑘
кодирование𝑥1, … , 𝑥𝑘 ∣ 𝒙 𝐺
Линейные коды:канонический видЕсли порождающая матрица кода задана в каноническом виде, то кодирование будет систематическим и слово 𝑥1, … , 𝑥𝑘 переходит в
𝑥1, … , 𝑥𝑘 ∣ 𝒙 𝐺 = 𝑥1, … , 𝑥𝑘 , 𝑥1, … , 𝑥𝑛−𝑘
• Разряды 𝑥1, … , 𝑥𝑘 — информационные
• Разряды 𝑥1, … , 𝑥𝑛−𝑘 — проверочные
Линейные коды:эквивалентные кодыЕсли матрица 𝐺 исходно задана не в каноническом виде, а мы приводим её к каноническому виду, то получается в общем случае не тот же код, а эквивалентный ему.
Коды 𝐶1 и 𝐶2 эквивалентны, если существует перестановка 𝜋 и константы 𝑟1, … , 𝑟𝑛 ∈ 𝔽𝑞 ∖ 0 , такие, что
𝑎1, … , 𝑎𝑛 ∈ 𝐶1 ⇔ 𝑟1𝑎𝜋 1 , … , 𝑟𝑛𝑎𝜋 𝑛 ∈ 𝐶2
Для эквивалентных кодов 𝑑 𝐶1 = 𝑑 𝐶2 .
Кодовое расстояние линейного кода
Для слова 𝒂 ∈ 𝔽𝑞𝑛 будем через 𝒂 обозначать вес слова, т.е.
величину# 𝑖 ∣ 𝑎𝑖 ≠ 0
Утверждение.Для любого линейного кода 𝐶 имеем
𝑑 𝐶 = min𝒂∈𝐶𝒂≠𝟎
𝒂
Кодовое расстояние линейного кода
Доказательство:
Поскольку 𝟎 ∈ 𝐶, то𝑑 𝐶 ≝ min
𝒂,𝒃∈𝐶𝒂≠𝒃
𝑑 𝒂, 𝒃 ≤ min𝒂∈𝐶𝒂≠𝟎
𝑑 𝒂, 𝟎 = min𝒂∈𝐶𝒂≠𝟎
𝒂
В обратную сторону. Пусть кодовое расстояние достигается на паре слов 𝒂∗, 𝒃∗.
Тогда так как 𝒂∗ − 𝒃∗ ∈ 𝐶, получаем𝑑 𝐶 = 𝑑 𝒂∗, 𝒃∗ = 𝒂∗ − 𝒃∗ ≥ min
𝒂∈𝐶𝒂≠𝟎
𝒂
Проверочная матрица
Проверочная матрица 𝐻 линейного кода — это матрицаоднородной системы линейных уравнений, которым удовлетворяет код.
Для любого кодового слова 𝒂, по определению матрицы 𝐻, выполнено равенство 𝐻𝒂𝑇 = 𝟎.
Для 𝑛, 𝑘, 𝑑 𝑞-кода 𝐻 ∈ 𝔽𝑞𝑛−𝑘 ×𝑛
.
Пример: для кода с проверкой чётности𝐻 = 11…1
Проверочная матрица
Утверждение.Если 𝐺 и 𝐻 — порождающая и проверочная матрицы линейного 𝑛, 𝑘, 𝑑 𝑞-кода, то
𝐻𝐺𝑇 = 𝟎 𝑛−𝑘 ×𝑘
Доказательство:Достаточно заметить, что каждая строка матрицы 𝐺 — это кодовое слово, а значит, она удовлетворяет системе, задаваемой 𝐻.
Двойственные коды
Если коды 𝐶1 и 𝐶2 таковы, что проверочная матрица 𝐶1 является порождающей матрицей для 𝐶2, то эти коды называют двойственными.
Коды 𝐶1 и 𝐶2 двойственны т. и т.т., когда 𝒂1, 𝒂2 = 0 для любых слов 𝒂1 ∈ 𝐶1, 𝒂2 ∈ 𝐶2.
Поэтому двойственные коды называются также ортогональными.
Проверочная матрица и кодовое расстояниеУтверждение. (О связи кодового расстояния и проверочной матрицы)Линейный код, определяемый проверочной матрицей 𝐻, имеет расстояние 𝑑 т. и т.т., когда
• любые 𝑑 − 1 столбцов 𝐻 линейно независимы,
• найдутся 𝑑 линейно зависимых столбцов в 𝐻.
Проверочная матрица и кодовое расстояниеДоказательство:
Пусть 𝒂 = 𝑎1, … , 𝑎𝑛 ≠ 𝟎 — произвольное кодовое слово кода с проверочной матрицей 𝐻.
Пусть 𝐻1, … , 𝐻𝑛 — столбцы 𝐻. Имеем𝐻𝒂𝑇 = 𝑎1 ⋅ 𝐻1 + ⋯+ 𝑎𝑛 ⋅ 𝐻𝑛
Если 𝑖1, … , 𝑖𝑡 — все ненулевые координаты 𝒂, то𝑎1𝐻1 + ⋯+ 𝑎𝑛𝐻𝑛 = 𝑎𝑖1𝐻𝑖1 + ⋯+ 𝑎𝑖𝑡𝐻𝑖𝑡
Так как 𝒂 — кодовое слово, то 𝐻𝒂𝑇 = 𝟎, то есть𝑎𝑖1𝐻𝑖1 + ⋯+ 𝑎𝑖𝑡𝐻𝑖𝑡 = 𝟎
Проверочная матрица и кодовое расстояниеПродолжение доказательства:
Мы получили, что в коде есть слово веса не более 𝑡 т. и т.т., когда некоторые 𝑡 столбцов матрицы 𝐻 линейно зависимы.
Осталось воспользоваться формулой, справедливой для любых линейных кодов:
𝑑 𝐶 = min𝒂∈𝐶𝒂≠𝟎
𝒂
Декодирование по синдрому
Пусть 𝐻 — проверочная матрица кода 𝐶, и пусть 𝒂 ∈ 𝐶.
Если при передаче 𝒂 по каналу произошло 𝑡 ошибок, на выходе из канала имеем слово 𝒃.
Вектор 𝒆 ≔ 𝒃 − 𝒂 называется вектором ошибок.Очевидно, 𝒆 = 𝑡.
Исправить ошибки в 𝒃 — то же самое, что найти вектор 𝒆. Используем равенство
𝐻𝒃𝑇 = 𝐻𝒂𝑇 + 𝐻𝒆𝑇 = 𝐻𝒆𝑇
Декодирование по синдрому
Получаем задачу: найти вектор 𝒆, такой, что
𝒆 < 𝑑 𝐶
2
𝐻𝒆𝑇 = 𝐻𝒃𝑇
Утверждение.Если решение этой системы существует, то оно единственное.
Доказательство.Пусть нашлись разные решения 𝒆1 ≠ 𝒆2.
Тогда 𝒆1 − 𝒆2 ≤ 𝒆1 + 𝒆2 < 𝑑 𝐶
и 𝐻 𝒆1 − 𝒆2𝑇 = 𝟎 — противоречие.
Декодирование по синдрому
Можно составить таблицу решений системы
𝒆 < 𝑑 𝐶
2
𝐻𝒆𝑇 = 𝒔
для всевозможных 𝒔.
При получении из канала слова 𝒃 мы вычисляем 𝒔 ≔ 𝐻𝒃𝑇
(синдром слова 𝒃), и для этого 𝒔 смотрим в таблице соответствующий вектор 𝒆.
Декодированное сообщение — решение системы𝒙𝑇𝐺 = 𝒃 − 𝒆
Граница Варшамова—Гилберта
Теорема. (Р.Р. Варшамов, E.N. Gilbert)Пусть числа 𝑛, 𝑘, 𝑑′ ∈ ℕ таковы, что
𝑗=0
𝑑′−1𝑛 − 1
𝑗< 2𝑛−𝑘
Тогда существует 𝑛, 𝑘, 𝑑 -код, где 𝑑 > 𝑑′.
Граница Варшамова—Гилберта
Доказательство:Покажем, что в условиях теоремы можно построить матрицу
𝐻 ∈ 𝔽2𝑛−𝑘 ×𝑛
, у которой любые 𝑑′ столбцов линейно независимы.
Будем строить матрицу по столбцам.
Пусть уже выбраны 𝑚 столбцов (где 𝑚 < 𝑛) и требуется выбрать 𝑚 + 1 -й столбец.
Этот новый столбец не должен образовывать нулевую линейную комбинацию с 𝑑′ − 1 или менее из уже выбранных столбцов.
Граница Варшамова—Гилберта
Выбираемый столбец не должен образовывать нулевую линейную комбинацию с 𝑑′ − 1 или менее из уже выбранных столбцов.
Так как у нас 𝔽2, то это равносильно тому, что выбираемый столбец не равен сумме 𝑑′ − 1 или менее уже выбранных столбцов.
Количество таких сумм равно
𝑗=0
𝑑′−1𝑚
𝑗≤
𝑗=0
𝑑′−1𝑛 − 1
𝑗< 2𝑛−𝑘
Граница Варшамова—Гилберта
Итак, запрещённых для выбора столбцов у нас оказывается строго меньше 2𝑛−𝑘, а всего векторов длины 𝑛 − 𝑘 ровно 2𝑛−𝑘. Значит, найдётся вектор из 𝔽2
𝑛−𝑘, который можно добавить в качестве очередного столбца.
Двоичный код Хемминга(R.W. Hamming)Двоичный код с проверкой чётности
𝑎1, … , 𝑎𝑛 ∈ 𝔽2𝑛 ∣ ∑𝑎𝑖 = 0
может обнаруживать одну ошибку, т.к. если один разряд 𝑎𝑖заменить на противоположный, соотношение ∑𝑎𝑖 = 0 нарушится. Но исправить ошибку не удастся.
Хочется построить двоичный код, исправляющий хотя бы одну ошибку.
Для этого вместо «глобального» контроля чётности применим несколько «дихотомических» проверок на чётность…
Двоичный код Хемминга
Пример для 𝑛 = 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
Двоичный код Хемминга
Проверочная матрица:0 0 0 1 1 1 10 1 1 0 0 1 11 0 1 0 1 0 1
Столбцы матрицы — всевозможные ненулевые вектора высоты 3. 𝑗-й столбец суть двоичная запись числа 𝑗.
Любая пара столбцов л.н.з., значит 𝑑 𝐶 ≥ 3, значит, этот кодисправляет одну ошибку и обнаруживает две.
Двоичный код Хемминга
Если ошибка случается в 𝑎𝑗, то можно вычислить левые части проверочных соотношений, и они дадут двоичную запись 𝑗, например:
𝑎4 + 𝑎5 + 𝑎6 + 𝑎7 = 1
𝑎2 + 𝑎3 + 𝑎6 + 𝑎7 = 0
𝑎1 + 𝑎3 + 𝑎5 + 𝑎7 = 1
Двоичный код Хемминга
Общий случай: 𝑛 ≔ 2𝑚 − 1 для некоторого 𝑚.
Код Хемминга длины 𝑛 определяется проверочной матрицей 𝐻 ∈ 𝔽2
𝑚×𝑛, столбцы которой — всевозможные двоичные вектора высоты 𝑚:
1 0 1 ⋯ 10 1 1 ⋯ 1⋮ ⋮ ⋮ ⋯ ⋮0 0 0 ⋯ 1
Код Хемминга имеет параметры 2𝑚 − 1, 2𝑚 − 𝑚 − 1, 3
Двоичный код Хемминга
Граница Хемминга:Для любого 𝑛,𝑀, 𝑑 𝑞-кода имеем
𝑀 ≤𝑞𝑛
𝑆 𝑑−1 2 𝟎
В двоичном случае
𝑀 ≤2𝑛
∑𝑘=0
𝑑−1 2 𝑛𝑘
Коды, достигающие эту границу, называются совершенными или плотно упакованными.
Двоичный код Хемминга
Граница Хемминга:Для любого 𝑛,𝑀, 𝑑 -кода имеем
𝑀 ≤2𝑛
∑𝑘=0
𝑑−1 2 𝑛𝑘
Утверждение.Код Хемминга является совершенным.
Доказательство:Для кода Хемминга имеем 𝑛 = 2𝑚 − 1, 𝑀 = 22𝑚−𝑚−1 и 𝑑 = 3.
Отсюда ∑𝑘=0 𝑑−1 2 𝑛
𝑘= 𝑛 + 1 = 2𝑚 = 2𝑛 𝑀.
Граница Синглтона для линейных кодов
Утверждение.Для любого 𝑛, 𝑘, 𝑑 𝑞-кода имеем
𝑘 ≤ 𝑛 − 𝑑 + 1
Доказательство:
По теореме Синглтона, для любого 𝑛,𝑀, 𝑑 𝑞-кода выполнено 𝑀 ≤𝑞𝑛−𝑑+1.
С другой стороны, для линейного кода 𝑀 = 𝑞𝑘.
Остаточный код
Теорема. (G. Solomon, J.J. Stiffler)Если существует 𝑛, 𝑘, 𝑑 𝑞-код, то существует и 𝑛 − 𝑑, 𝑘 − 1, 𝑑′
𝑞-код, где 𝑑′ ≥ 𝑑 𝑞.
Доказательство:Пусть 𝐺 — порождающая матрица некоторого 𝑛, 𝑘, 𝑑 𝑞-кода 𝐶.
Б.о.о. будем считать, что первая строка 𝐺 содержит ровно 𝑑ненулевых элементов и имеет вид 𝑟1 …𝑟𝑑0…0 .
Остаточный код
Порождающая матрица кода 𝐶:
𝐺 =𝑟1 …𝑟𝑑 0…0
⋯ 𝐺′
Имеем 𝐺′ ∈ 𝔽𝑞𝑘−1 × 𝑛−𝑑
.
Покажем, что rk 𝐺′ = 𝑘 − 1. Допустим противное: некоторая нетривиальная линейная комбинация строк 𝐺′ равняется 𝟎.
Тогда линейная комбинация соответствующих строк 𝐺 равна 𝑡1 …𝑡𝑑0…0 , где ∀𝑖 𝑡𝑖 ≠ 0 .
Остаточный код
𝐺 =𝑟1 …𝑟𝑑 0…0
⋯ 𝐺′
Линейная комбинация 𝑈 некоторых строк 𝐺 равна 𝑡1 …𝑡𝑑0…0 , где ∀𝑖 𝑡𝑖 ≠ 0 .
Т.к. 𝔽𝑞 поле, то ∃𝑠 ∈ 𝔽𝑞, такой, что 𝑠𝑡𝑑 = −𝑟𝑑. Тогда 𝑠 ⋅ 𝑈 + 𝑟1 …𝑟𝑑0…0
— линейная комбинация строк 𝐺, равная𝑠𝑡1 + 𝑟1 … 𝑠𝑡𝑑−1 + 𝑟𝑑−1 00…0
Это противоречит условию 𝑑 𝐶 = 𝑑.
Остаточный код
𝐺 =𝑟1 …𝑟𝑑 0…0
⋯ 𝐺′
Итак, 𝐺′ ∈ 𝔽𝑞𝑘−1 × 𝑛−𝑑
и rk 𝐺′ = 𝑘 − 1.
Значит 𝐺′ является порождающей матрицей некоторого 𝑛 − 𝑑, 𝑘 − 1, 𝑑′
𝑞-кода 𝐶′ (этот код называется остаточным дляисходного кода 𝐶).
Рассмотрим любой ненулевой вектор кода 𝐶′
𝒂′ ≔ 𝑎1′ , … , 𝑎𝑛−𝑑
′ ≠ 𝟎такой, что 𝒂′ = 𝑑′.
В коде 𝐶 есть вектор вида𝑎1, … , 𝑎𝑑 , 𝑎1
′ , … , 𝑎𝑛−𝑑′
Остаточный код
𝐺 =𝑟1 …𝑟𝑑 0…0
⋯ 𝐺′
В коде 𝐶 есть вектор вида𝑎1, … , 𝑎𝑑 , 𝑎1
′ , … , 𝑎𝑛−𝑑′
Пусть 𝑓1, … , 𝑓𝑞 — все элементы поля 𝔽𝑞.
Коду 𝐶 принадлежат все вектора вида𝑎1 − 𝑓𝑖𝑟1 , … , 𝑎𝑑 − 𝑓𝑖𝑟𝑑 , 𝑎1
′ , … , 𝑎𝑛−𝑑′
Запишем эти 𝑞 векторов построчно в виде матрицы и оценим количество ненулевых элементов в ней.
Остаточный код
Рассмотрим матрицу:𝑎1 − 𝑓1𝑟1 … 𝑎𝑑 − 𝑓1𝑟𝑑 𝑎1
′ … 𝑎𝑛−𝑑′
𝑎1 − 𝑓2𝑟1 … 𝑎𝑑 − 𝑓2𝑟𝑑 𝑎1′ … 𝑎𝑛−𝑑
′
⋮ ⋮ ⋮ ⋮ ⋮ ⋮𝑎1 − 𝑓𝑞𝑟1 … 𝑎𝑑 − 𝑓𝑞𝑟𝑑 𝑎1
′ … 𝑎𝑛−𝑑′
В этой подматрицеровно 𝑞𝑑′ ненулевыхэлементов
В каждом из этих столбцовровно 𝑞 − 1 ненулевыхэлементов
Итого в матрице 𝑑 𝑞 − 1 + 𝑞𝑑′ ненулевых элементов.
Остаточный код
В рассмотренной матрице 𝑑 𝑞 − 1 + 𝑞𝑑′ ненулевых элементов.
Каждая строка матрицы — ненулевой вектор кода 𝐶, значит в матрице не менее чем 𝑞𝑑 ненулевых элементов.
Отсюда𝑑 𝑞 − 1 + 𝑞𝑑′ ≥ 𝑞𝑑
и следовательно 𝑑′ ≥ 𝑑 𝑞
Граница Грайсмера—Соломона—Штиффлера
Теорема. (J.H. Griesmer, G. Solomon, J.J. Stiffler)Для любого 𝑛, 𝑘, 𝑑 𝑞-кода имеем
𝑛 ≥
𝑖=0
𝑘−1𝑑
𝑞𝑖
Доказательство: индукция по 𝑘.
Утверждение очевидно при 𝑘 = 1. Предположим, что оно выполнено для кодов с размерностью ≤ 𝑘 − 1 и докажем его для 𝑛, 𝑘, 𝑑 𝑞-кодов.
Граница Грайсмера—Соломона—Штиффлера
Обозначим через 𝑁 𝑘, 𝑑 минимальную длину слов у кода с размерностью 𝑘 и расстоянием 𝑑.
Пусть 𝐶 — какой-нибудь 𝑁 𝑘, 𝑑 , 𝑘, 𝑑 𝑞-код.
Остаточный для 𝐶 код имеет параметры𝑁 𝑘, 𝑑 − 𝑑, 𝑘 − 1, 𝑑′
𝑞
и по предположению индукции, для него справедливо неравенство
𝑁 𝑘, 𝑑 − 𝑑 ≥
𝑖=0
𝑘−2𝑑′
𝑞𝑖
Граница Грайсмера—Соломона—Штиффлера
Из неравенства
𝑁 𝑘, 𝑑 − 𝑑 ≥
𝑖=0
𝑘−2𝑑′
𝑞𝑖
с учётом того, что 𝑑′ ≥ 𝑑 𝑞, получаем
𝑁 𝑘, 𝑑 ≥ 𝑑 +
𝑖=0
𝑘−2𝑑′
𝑞𝑖≥ 𝑑 +
𝑖=0
𝑘−2𝑑
𝑞𝑖+1=
𝑖=0
𝑘−1𝑑
𝑞𝑖
Recommended