SlideShare a Scribd company logo
1 of 41
Download to read offline
Теория кодирования
МФТИ, осень 2013
Александр Дайняк
www.dainiak.com
Линейные коды:
определение
Пусть 𝑞 — степень простого числа и символы кодовых слов —
элементы конечного поля 𝔽 𝑞.
𝑛, 𝑀, 𝑑 𝑞-код 𝐶 называется линейным, если он является линейным
подпространством пространства 𝔽 𝑞
𝑛, то есть линейная комбинация
кодовых слов также является кодовым словом.
Если dim 𝐶 = 𝑘, то говорят, что задан
линейный 𝑛, 𝑘, 𝑑 𝑞-код
Линейные коды:
пример кода
Пример линейного двоичного кода — код с проверкой чётности:
𝐶 ≔ 𝑎1, … , 𝑎 𝑛 ∈ 𝔽2
𝑛
∣ ∑𝑎𝑖 = 0
Один из базисов этого кода:
1,0,0, … , 0,1
0,1,0, … , 0,1
0,0,1, … , 0,1
⋮
0,0,0, … , 1,1
Линейные коды:
порождающая матрица
Если выписать базис линейного 𝑛, 𝑘, 𝑑 𝑞-кода построчно в виде
матрицы размера 𝑘 × 𝑛, получим порождающую матрицу кода.
Для задания 𝑛, 𝑘, 𝑑 𝑞-кода достаточно указать его порождающую
матрицу 𝐺 ∈ 𝔽 𝑞
𝑘×𝑛.
Число линейных комбинаций 𝑘 базисных векторов с
коэффициентами из 𝔽 𝑞 равно 𝑞 𝑘, поэтому
каждый 𝑛, 𝑘, 𝑑 𝑞-код является 𝑛, 𝑞 𝑘, 𝑑 𝑞
-кодом
Линейные коды:
кодирование
Если линейный 𝑛, 𝑘, 𝑑 𝑞-кода задан порождающей матрицей 𝐺, а
исходное сообщение представлено как вектор 𝒙 ∈ 𝔽 𝑞
𝑘
, то
закодировать его можно быстро и просто:
𝒙
кодирование
𝒙 𝑇 𝐺 ∈ 𝔽 𝑞
𝑛
Обратно, если закодированное сообщение 𝒂 ∈ 𝔽 𝑞
𝑛
было принято
без ошибок, декодируем его, решая, например, методом Гаусса,
систему:
𝒙 𝑇 𝐺 = 𝒂
Правда, коды нам как раз были нужны, чтобы уметь декодировать
сообщения с ошибками…
Линейные коды:
канонический вид
Порождающую матрицу 𝐺 ∈ 𝔽 𝑞
𝑘×𝑛
линейными преобразованиями
и перестановками строк и столбцов можно привести к
каноническому виду:
1 0 ⋯ 0
0 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 1
0 1 1 0 0 1 1
1 0 1 0 1 0 1
Двоичный код Хемминга
Проверочная матрица:
0 0 0 1 1 1 1
0 1 1 0 0 1 1
1 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 ⋯ 1
0 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
𝑑
𝑞 𝑖

More Related Content

What's hot

Приложения теории кодирования
Приложения теории кодированияПриложения теории кодирования
Приложения теории кодированияAlex Dainiak
 
20111015 inroduction to_combinatorics_on_words_frid_lecture02
20111015 inroduction to_combinatorics_on_words_frid_lecture0220111015 inroduction to_combinatorics_on_words_frid_lecture02
20111015 inroduction to_combinatorics_on_words_frid_lecture02Computer Science Club
 
Теорема Алона о нулях и её применения
Теорема Алона о нулях и её примененияТеорема Алона о нулях и её применения
Теорема Алона о нулях и её примененияAlex Dainiak
 
Алгоритмы и структуры данных осень 2013 лекция 8
Алгоритмы и структуры данных осень 2013 лекция 8Алгоритмы и структуры данных осень 2013 лекция 8
Алгоритмы и структуры данных осень 2013 лекция 8Technopark
 
20101030 reals and_integers_matiyasevich_ekb_lecture05-06
20101030 reals and_integers_matiyasevich_ekb_lecture05-0620101030 reals and_integers_matiyasevich_ekb_lecture05-06
20101030 reals and_integers_matiyasevich_ekb_lecture05-06Computer Science Club
 
Линейная алгебра - II
Линейная алгебра - IIЛинейная алгебра - II
Линейная алгебра - IIDEVTYPE
 
элементы языка и типы данных
элементы языка и типы данныхэлементы языка и типы данных
элементы языка и типы данныхЕлена Ключева
 
Скорость роста функций
Скорость роста функцийСкорость роста функций
Скорость роста функцийDEVTYPE
 

What's hot (11)

Приложения теории кодирования
Приложения теории кодированияПриложения теории кодирования
Приложения теории кодирования
 
20111015 inroduction to_combinatorics_on_words_frid_lecture02
20111015 inroduction to_combinatorics_on_words_frid_lecture0220111015 inroduction to_combinatorics_on_words_frid_lecture02
20111015 inroduction to_combinatorics_on_words_frid_lecture02
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
Теорема Алона о нулях и её применения
Теорема Алона о нулях и её примененияТеорема Алона о нулях и её применения
Теорема Алона о нулях и её применения
 
Алгоритмы и структуры данных осень 2013 лекция 8
Алгоритмы и структуры данных осень 2013 лекция 8Алгоритмы и структуры данных осень 2013 лекция 8
Алгоритмы и структуры данных осень 2013 лекция 8
 
20101030 reals and_integers_matiyasevich_ekb_lecture05-06
20101030 reals and_integers_matiyasevich_ekb_lecture05-0620101030 reals and_integers_matiyasevich_ekb_lecture05-06
20101030 reals and_integers_matiyasevich_ekb_lecture05-06
 
Об одном методе автоматической транскрипции
Об одном методе автоматической транскрипцииОб одном методе автоматической транскрипции
Об одном методе автоматической транскрипции
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
Линейная алгебра - II
Линейная алгебра - IIЛинейная алгебра - II
Линейная алгебра - II
 
элементы языка и типы данных
элементы языка и типы данныхэлементы языка и типы данных
элементы языка и типы данных
 
Скорость роста функций
Скорость роста функцийСкорость роста функций
Скорость роста функций
 

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

Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана
Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—ШпильманаЗадача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана
Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—ШпильманаAlex Dainiak
 
лабораторная работа 3
лабораторная работа 3лабораторная работа 3
лабораторная работа 3Gulnaz Shakirova
 
Гиперграфы. Покрытия. Жадный алгоритм.
Гиперграфы. Покрытия. Жадный алгоритм.Гиперграфы. Покрытия. Жадный алгоритм.
Гиперграфы. Покрытия. Жадный алгоритм.Alex Dainiak
 
Use of eliptic curves for generating digital signature
Use of eliptic curves for generating digital signatureUse of eliptic curves for generating digital signature
Use of eliptic curves for generating digital signatureAndrei Poliakov
 
Java. Строки. Класс String.
Java. Строки. Класс String.Java. Строки. Класс String.
Java. Строки. Класс String.Unguryan Vitaliy
 
Алгоритмы и структуры данных осень 2013 лекция 7
Алгоритмы и структуры данных осень 2013 лекция 7Алгоритмы и структуры данных осень 2013 лекция 7
Алгоритмы и структуры данных осень 2013 лекция 7Technopark
 
Программирование линейных алгоритмов
Программирование линейных алгоритмовПрограммирование линейных алгоритмов
Программирование линейных алгоритмовAndrey Dolinin
 
Cpp/cli particularities
Cpp/cli particularitiesCpp/cli particularities
Cpp/cli particularitiesmcroitor
 
9 1.1 - системы счисления
9 1.1 - системы счисления9 1.1 - системы счисления
9 1.1 - системы счисленияjula-mam
 
Системы счисления
Системы счисленияСистемы счисления
Системы счисленияAndrey Dolinin
 
лабораторная работа 2
лабораторная работа 2лабораторная работа 2
лабораторная работа 2Gulnaz Shakirova
 
лекция 4 системы счисления информатика
лекция 4 системы счисления информатикалекция 4 системы счисления информатика
лекция 4 системы счисления информатикаGulnaz Shakirova
 
Графовая модель канала связи. Шенноновская ёмкость
Графовая модель канала связи. Шенноновская ёмкостьГрафовая модель канала связи. Шенноновская ёмкость
Графовая модель канала связи. Шенноновская ёмкостьAlex Dainiak
 
Михаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделированиеМихаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделированиеLidia Pivovarova
 

Similar to Линейные коды (20)

Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана
Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—ШпильманаЗадача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана
Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана
 
лабораторная работа 3
лабораторная работа 3лабораторная работа 3
лабораторная работа 3
 
лекция 13
лекция 13лекция 13
лекция 13
 
лекция 13
лекция 13лекция 13
лекция 13
 
Гиперграфы. Покрытия. Жадный алгоритм.
Гиперграфы. Покрытия. Жадный алгоритм.Гиперграфы. Покрытия. Жадный алгоритм.
Гиперграфы. Покрытия. Жадный алгоритм.
 
Use of eliptic curves for generating digital signature
Use of eliptic curves for generating digital signatureUse of eliptic curves for generating digital signature
Use of eliptic curves for generating digital signature
 
Matanal 31oct
Matanal 31octMatanal 31oct
Matanal 31oct
 
алгоритм
алгоритмалгоритм
алгоритм
 
Java. Строки. Класс String.
Java. Строки. Класс String.Java. Строки. Класс String.
Java. Строки. Класс String.
 
Алгоритмы и структуры данных осень 2013 лекция 7
Алгоритмы и структуры данных осень 2013 лекция 7Алгоритмы и структуры данных осень 2013 лекция 7
Алгоритмы и структуры данных осень 2013 лекция 7
 
8 3-3
8 3-38 3-3
8 3-3
 
Программирование линейных алгоритмов
Программирование линейных алгоритмовПрограммирование линейных алгоритмов
Программирование линейных алгоритмов
 
Cpp/cli particularities
Cpp/cli particularitiesCpp/cli particularities
Cpp/cli particularities
 
9 1.1 - системы счисления
9 1.1 - системы счисления9 1.1 - системы счисления
9 1.1 - системы счисления
 
Системы счисления
Системы счисленияСистемы счисления
Системы счисления
 
лабораторная работа 2
лабораторная работа 2лабораторная работа 2
лабораторная работа 2
 
лекция 4 системы счисления информатика
лекция 4 системы счисления информатикалекция 4 системы счисления информатика
лекция 4 системы счисления информатика
 
Графовая модель канала связи. Шенноновская ёмкость
Графовая модель канала связи. Шенноновская ёмкостьГрафовая модель канала связи. Шенноновская ёмкость
Графовая модель канала связи. Шенноновская ёмкость
 
Михаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделированиеМихаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделирование
 
лекция 14
лекция 14лекция 14
лекция 14
 

More from Alex Dainiak

Основы теории графов 11: гамильтоновы циклы
Основы теории графов 11: гамильтоновы циклыОсновы теории графов 11: гамильтоновы циклы
Основы теории графов 11: гамильтоновы циклыAlex Dainiak
 
Основы теории графов 10: экстремальная теория графов
Основы теории графов 10: экстремальная теория графовОсновы теории графов 10: экстремальная теория графов
Основы теории графов 10: экстремальная теория графовAlex Dainiak
 
Основы теории графов 09: раскраски планарных графов, совершенные графы
Основы теории графов 09: раскраски планарных графов, совершенные графыОсновы теории графов 09: раскраски планарных графов, совершенные графы
Основы теории графов 09: раскраски планарных графов, совершенные графыAlex Dainiak
 
Основы теории графов 08: раскраски и списочные раскраски
Основы теории графов 08: раскраски и списочные раскраскиОсновы теории графов 08: раскраски и списочные раскраски
Основы теории графов 08: раскраски и списочные раскраскиAlex Dainiak
 
Основы теории графов 07: сепараторы в планарных графах
Основы теории графов 07: сепараторы в планарных графахОсновы теории графов 07: сепараторы в планарных графах
Основы теории графов 07: сепараторы в планарных графахAlex Dainiak
 
Основы теории графов 06: триангуляции и трёхсвязные планарные графы
Основы теории графов 06: триангуляции и трёхсвязные планарные графыОсновы теории графов 06: триангуляции и трёхсвязные планарные графы
Основы теории графов 06: триангуляции и трёхсвязные планарные графыAlex Dainiak
 
Основы теории графов 05: критерии планарности графов
Основы теории графов 05: критерии планарности графовОсновы теории графов 05: критерии планарности графов
Основы теории графов 05: критерии планарности графовAlex Dainiak
 
Основы теории графов 04: метрики на деревьях
Основы теории графов 04: метрики на деревьяхОсновы теории графов 04: метрики на деревьях
Основы теории графов 04: метрики на деревьяхAlex Dainiak
 
Основы теории графов 03: связность
Основы теории графов 03: связностьОсновы теории графов 03: связность
Основы теории графов 03: связностьAlex Dainiak
 
Основы теории графов 01: напоминание определений, теорема Форда—Фалкерсона
Основы теории графов 01: напоминание определений, теорема Форда—ФалкерсонаОсновы теории графов 01: напоминание определений, теорема Форда—Фалкерсона
Основы теории графов 01: напоминание определений, теорема Форда—ФалкерсонаAlex Dainiak
 
Основы теории графов 02: факторизация графов (разложение на простые подграфы)
Основы теории графов 02: факторизация графов (разложение на простые подграфы)Основы теории графов 02: факторизация графов (разложение на простые подграфы)
Основы теории графов 02: факторизация графов (разложение на простые подграфы)Alex Dainiak
 
Конспект лекций по теории кодирования
Конспект лекций по теории кодированияКонспект лекций по теории кодирования
Конспект лекций по теории кодированияAlex Dainiak
 
Визуализация графов: left-right алгоритм распознавания планарности
Визуализация графов: left-right алгоритм распознавания планарностиВизуализация графов: left-right алгоритм распознавания планарности
Визуализация графов: left-right алгоритм распознавания планарностиAlex Dainiak
 
Визуализация графов: укладки деревьев
Визуализация графов: укладки деревьевВизуализация графов: укладки деревьев
Визуализация графов: укладки деревьевAlex Dainiak
 
Визуализация графов: теорема Татта о барицентрической укладке
Визуализация графов: теорема Татта о барицентрической укладкеВизуализация графов: теорема Татта о барицентрической укладке
Визуализация графов: теорема Татта о барицентрической укладкеAlex Dainiak
 
Визуализация графов: история
Визуализация графов: историяВизуализация графов: история
Визуализация графов: историяAlex Dainiak
 
Визуализация графов: нижние оценки и NP-трудность
Визуализация графов: нижние оценки и NP-трудностьВизуализация графов: нижние оценки и NP-трудность
Визуализация графов: нижние оценки и NP-трудностьAlex Dainiak
 
Размерность Вапника—Червоненкиса
Размерность Вапника—ЧервоненкисаРазмерность Вапника—Червоненкиса
Размерность Вапника—ЧервоненкисаAlex Dainiak
 
Частично-упорядоченные множества, булеан, теоремы о разложении на цепи и анти...
Частично-упорядоченные множества, булеан, теоремы о разложении на цепи и анти...Частично-упорядоченные множества, булеан, теоремы о разложении на цепи и анти...
Частично-упорядоченные множества, булеан, теоремы о разложении на цепи и анти...Alex Dainiak
 

More from Alex Dainiak (19)

Основы теории графов 11: гамильтоновы циклы
Основы теории графов 11: гамильтоновы циклыОсновы теории графов 11: гамильтоновы циклы
Основы теории графов 11: гамильтоновы циклы
 
Основы теории графов 10: экстремальная теория графов
Основы теории графов 10: экстремальная теория графовОсновы теории графов 10: экстремальная теория графов
Основы теории графов 10: экстремальная теория графов
 
Основы теории графов 09: раскраски планарных графов, совершенные графы
Основы теории графов 09: раскраски планарных графов, совершенные графыОсновы теории графов 09: раскраски планарных графов, совершенные графы
Основы теории графов 09: раскраски планарных графов, совершенные графы
 
Основы теории графов 08: раскраски и списочные раскраски
Основы теории графов 08: раскраски и списочные раскраскиОсновы теории графов 08: раскраски и списочные раскраски
Основы теории графов 08: раскраски и списочные раскраски
 
Основы теории графов 07: сепараторы в планарных графах
Основы теории графов 07: сепараторы в планарных графахОсновы теории графов 07: сепараторы в планарных графах
Основы теории графов 07: сепараторы в планарных графах
 
Основы теории графов 06: триангуляции и трёхсвязные планарные графы
Основы теории графов 06: триангуляции и трёхсвязные планарные графыОсновы теории графов 06: триангуляции и трёхсвязные планарные графы
Основы теории графов 06: триангуляции и трёхсвязные планарные графы
 
Основы теории графов 05: критерии планарности графов
Основы теории графов 05: критерии планарности графовОсновы теории графов 05: критерии планарности графов
Основы теории графов 05: критерии планарности графов
 
Основы теории графов 04: метрики на деревьях
Основы теории графов 04: метрики на деревьяхОсновы теории графов 04: метрики на деревьях
Основы теории графов 04: метрики на деревьях
 
Основы теории графов 03: связность
Основы теории графов 03: связностьОсновы теории графов 03: связность
Основы теории графов 03: связность
 
Основы теории графов 01: напоминание определений, теорема Форда—Фалкерсона
Основы теории графов 01: напоминание определений, теорема Форда—ФалкерсонаОсновы теории графов 01: напоминание определений, теорема Форда—Фалкерсона
Основы теории графов 01: напоминание определений, теорема Форда—Фалкерсона
 
Основы теории графов 02: факторизация графов (разложение на простые подграфы)
Основы теории графов 02: факторизация графов (разложение на простые подграфы)Основы теории графов 02: факторизация графов (разложение на простые подграфы)
Основы теории графов 02: факторизация графов (разложение на простые подграфы)
 
Конспект лекций по теории кодирования
Конспект лекций по теории кодированияКонспект лекций по теории кодирования
Конспект лекций по теории кодирования
 
Визуализация графов: left-right алгоритм распознавания планарности
Визуализация графов: left-right алгоритм распознавания планарностиВизуализация графов: left-right алгоритм распознавания планарности
Визуализация графов: left-right алгоритм распознавания планарности
 
Визуализация графов: укладки деревьев
Визуализация графов: укладки деревьевВизуализация графов: укладки деревьев
Визуализация графов: укладки деревьев
 
Визуализация графов: теорема Татта о барицентрической укладке
Визуализация графов: теорема Татта о барицентрической укладкеВизуализация графов: теорема Татта о барицентрической укладке
Визуализация графов: теорема Татта о барицентрической укладке
 
Визуализация графов: история
Визуализация графов: историяВизуализация графов: история
Визуализация графов: история
 
Визуализация графов: нижние оценки и NP-трудность
Визуализация графов: нижние оценки и NP-трудностьВизуализация графов: нижние оценки и NP-трудность
Визуализация графов: нижние оценки и NP-трудность
 
Размерность Вапника—Червоненкиса
Размерность Вапника—ЧервоненкисаРазмерность Вапника—Червоненкиса
Размерность Вапника—Червоненкиса
 
Частично-упорядоченные множества, булеан, теоремы о разложении на цепи и анти...
Частично-упорядоченные множества, булеан, теоремы о разложении на цепи и анти...Частично-упорядоченные множества, булеан, теоремы о разложении на цепи и анти...
Частично-упорядоченные множества, булеан, теоремы о разложении на цепи и анти...
 

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

  • 1. Теория кодирования МФТИ, осень 2013 Александр Дайняк www.dainiak.com
  • 2. Линейные коды: определение Пусть 𝑞 — степень простого числа и символы кодовых слов — элементы конечного поля 𝔽 𝑞. 𝑛, 𝑀, 𝑑 𝑞-код 𝐶 называется линейным, если он является линейным подпространством пространства 𝔽 𝑞 𝑛, то есть линейная комбинация кодовых слов также является кодовым словом. Если dim 𝐶 = 𝑘, то говорят, что задан линейный 𝑛, 𝑘, 𝑑 𝑞-код
  • 3. Линейные коды: пример кода Пример линейного двоичного кода — код с проверкой чётности: 𝐶 ≔ 𝑎1, … , 𝑎 𝑛 ∈ 𝔽2 𝑛 ∣ ∑𝑎𝑖 = 0 Один из базисов этого кода: 1,0,0, … , 0,1 0,1,0, … , 0,1 0,0,1, … , 0,1 ⋮ 0,0,0, … , 1,1
  • 4. Линейные коды: порождающая матрица Если выписать базис линейного 𝑛, 𝑘, 𝑑 𝑞-кода построчно в виде матрицы размера 𝑘 × 𝑛, получим порождающую матрицу кода. Для задания 𝑛, 𝑘, 𝑑 𝑞-кода достаточно указать его порождающую матрицу 𝐺 ∈ 𝔽 𝑞 𝑘×𝑛. Число линейных комбинаций 𝑘 базисных векторов с коэффициентами из 𝔽 𝑞 равно 𝑞 𝑘, поэтому каждый 𝑛, 𝑘, 𝑑 𝑞-код является 𝑛, 𝑞 𝑘, 𝑑 𝑞 -кодом
  • 5. Линейные коды: кодирование Если линейный 𝑛, 𝑘, 𝑑 𝑞-кода задан порождающей матрицей 𝐺, а исходное сообщение представлено как вектор 𝒙 ∈ 𝔽 𝑞 𝑘 , то закодировать его можно быстро и просто: 𝒙 кодирование 𝒙 𝑇 𝐺 ∈ 𝔽 𝑞 𝑛 Обратно, если закодированное сообщение 𝒂 ∈ 𝔽 𝑞 𝑛 было принято без ошибок, декодируем его, решая, например, методом Гаусса, систему: 𝒙 𝑇 𝐺 = 𝒂 Правда, коды нам как раз были нужны, чтобы уметь декодировать сообщения с ошибками…
  • 6. Линейные коды: канонический вид Порождающую матрицу 𝐺 ∈ 𝔽 𝑞 𝑘×𝑛 линейными преобразованиями и перестановками строк и столбцов можно привести к каноническому виду: 1 0 ⋯ 0 0 1 ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ 1 𝐺 где 𝐺 ∈ 𝔽 𝑞 𝑘× 𝑛−𝑘 . Тогда кодирование будет систематическим: 𝑥1, … , 𝑥 𝑘 кодирование 𝑥1, … , 𝑥 𝑘 ∣ 𝒙 𝐺
  • 7. Линейные коды: канонический вид Если порождающая матрица кода задана в каноническом виде, то кодирование будет систематическим и слово 𝑥1, … , 𝑥 𝑘 переходит в 𝑥1, … , 𝑥 𝑘 ∣ 𝒙 𝐺 = 𝑥1, … , 𝑥 𝑘, 𝑥1, … , 𝑥 𝑛−𝑘 • Разряды 𝑥1, … , 𝑥 𝑘 — информационные • Разряды 𝑥1, … , 𝑥 𝑛−𝑘 — проверочные
  • 8. Линейные коды: эквивалентные коды Если матрица 𝐺 исходно задана не в каноническом виде, а мы приводим её к каноническому виду, то получается в общем случае не тот же код, а эквивалентный ему. Коды 𝐶1 и 𝐶2 эквивалентны, если существует перестановка 𝜋 и константы 𝑟1, … , 𝑟𝑛 ∈ 𝔽 𝑞 ∖ 0 , такие, что 𝑎1, … , 𝑎 𝑛 ∈ 𝐶1 ⇔ 𝑟1 𝑎 𝜋 1 , … , 𝑟𝑛 𝑎 𝜋 𝑛 ∈ 𝐶2 Для эквивалентных кодов 𝑑 𝐶1 = 𝑑 𝐶2 .
  • 9. Кодовое расстояние линейного кода Для слова 𝒂 ∈ 𝔽 𝑞 𝑛 будем через 𝒂 обозначать вес слова, т.е. величину # 𝑖 ∣ 𝑎𝑖 ≠ 0 Утверждение. Для любого линейного кода 𝐶 имеем 𝑑 𝐶 = min 𝒂∈𝐶 𝒂≠𝟎 𝒂
  • 10. Кодовое расстояние линейного кода Доказательство: Поскольку 𝟎 ∈ 𝐶, то 𝑑 𝐶 ≝ min 𝒂,𝒃∈𝐶 𝒂≠𝒃 𝑑 𝒂, 𝒃 ≤ min 𝒂∈𝐶 𝒂≠𝟎 𝑑 𝒂, 𝟎 = min 𝒂∈𝐶 𝒂≠𝟎 𝒂 В обратную сторону. Пусть кодовое расстояние достигается на паре слов 𝒂∗, 𝒃∗. Тогда так как 𝒂∗ − 𝒃∗ ∈ 𝐶, получаем 𝑑 𝐶 = 𝑑 𝒂∗, 𝒃∗ = 𝒂∗ − 𝒃∗ ≥ min 𝒂∈𝐶 𝒂≠𝟎 𝒂
  • 11. Проверочная матрица Проверочная матрица 𝐻 линейного кода — это матрица однородной системы линейных уравнений, которым удовлетворяет код. Для любого кодового слова 𝒂, по определению матрицы 𝐻, выполнено равенство 𝐻𝒂 𝑇 = 𝟎. Для 𝑛, 𝑘, 𝑑 𝑞-кода 𝐻 ∈ 𝔽 𝑞 𝑛−𝑘 ×𝑛 . Пример: для кода с проверкой чётности 𝐻 = 11 … 1
  • 12. Проверочная матрица Утверждение. Если 𝐺 и 𝐻 — порождающая и проверочная матрицы линейного 𝑛, 𝑘, 𝑑 𝑞-кода, то 𝐻𝐺 𝑇 = 𝟎 𝑛−𝑘 ×𝑘 Доказательство: Достаточно заметить, что каждая строка матрицы 𝐺 — это кодовое слово, а значит, она удовлетворяет системе, задаваемой 𝐻.
  • 13. Двойственные коды Если коды 𝐶1 и 𝐶2 таковы, что проверочная матрица 𝐶1 является порождающей матрицей для 𝐶2, то эти коды называют двойственными. Коды 𝐶1 и 𝐶2 двойственны т. и т.т., когда 𝒂1, 𝒂2 = 0 для любых слов 𝒂1 ∈ 𝐶1, 𝒂2 ∈ 𝐶2. Поэтому двойственные коды называются также ортогональными.
  • 14. Проверочная матрица и кодовое расстояние Утверждение. (О связи кодового расстояния и проверочной матрицы) Линейный код, определяемый проверочной матрицей 𝐻, имеет расстояние 𝑑 т. и т.т., когда • любые 𝑑 − 1 столбцов 𝐻 линейно независимы, • найдутся 𝑑 линейно зависимых столбцов в 𝐻.
  • 15. Проверочная матрица и кодовое расстояние Доказательство: Пусть 𝒂 = 𝑎1, … , 𝑎 𝑛 ≠ 𝟎 — произвольное кодовое слово кода с проверочной матрицей 𝐻. Пусть 𝐻1, … , 𝐻 𝑛 — столбцы 𝐻. Имеем 𝐻𝒂 𝑇 = 𝑎1 ⋅ 𝐻1 + ⋯ + 𝑎 𝑛 ⋅ 𝐻 𝑛 Если 𝑖1, … , 𝑖 𝑡 — все ненулевые координаты 𝒂, то 𝑎1 𝐻1 + ⋯ + 𝑎 𝑛 𝐻 𝑛 = 𝑎𝑖1 𝐻𝑖1 + ⋯ + 𝑎𝑖 𝑡 𝐻𝑖 𝑡 Так как 𝒂 — кодовое слово, то 𝐻𝒂 𝑇 = 𝟎, то есть 𝑎𝑖1 𝐻𝑖1 + ⋯ + 𝑎𝑖 𝑡 𝐻𝑖 𝑡 = 𝟎
  • 16. Проверочная матрица и кодовое расстояние Продолжение доказательства: Мы получили, что в коде есть слово веса не более 𝑡 т. и т.т., когда некоторые 𝑡 столбцов матрицы 𝐻 линейно зависимы. Осталось воспользоваться формулой, справедливой для любых линейных кодов: 𝑑 𝐶 = min 𝒂∈𝐶 𝒂≠𝟎 𝒂
  • 17. Декодирование по синдрому Пусть 𝐻 — проверочная матрица кода 𝐶, и пусть 𝒂 ∈ 𝐶. Если при передаче 𝒂 по каналу произошло 𝑡 ошибок, на выходе из канала имеем слово 𝒃. Вектор 𝒆 ≔ 𝒃 − 𝒂 называется вектором ошибок. Очевидно, 𝒆 = 𝑡. Исправить ошибки в 𝒃 — то же самое, что найти вектор 𝒆. Используем равенство 𝐻𝒃 𝑇 = 𝐻𝒂 𝑇 + 𝐻𝒆 𝑇 = 𝐻𝒆 𝑇
  • 18. Декодирование по синдрому Получаем задачу: найти вектор 𝒆, такой, что 𝒆 < 𝑑 𝐶 2 𝐻𝒆 𝑇 = 𝐻𝒃 𝑇 Утверждение. Если решение этой системы существует, то оно единственное. Доказательство. Пусть нашлись разные решения 𝒆1 ≠ 𝒆2. Тогда 𝒆1 − 𝒆2 ≤ 𝒆1 + 𝒆2 < 𝑑 𝐶 и 𝐻 𝒆1 − 𝒆2 𝑇 = 𝟎 — противоречие.
  • 19. Декодирование по синдрому Можно составить таблицу решений системы 𝒆 < 𝑑 𝐶 2 𝐻𝒆 𝑇 = 𝒔 для всевозможных 𝒔. При получении из канала слова 𝒃 мы вычисляем 𝒔 ≔ 𝐻𝒃 𝑇 (синдром слова 𝒃), и для этого 𝒔 смотрим в таблице соответствующий вектор 𝒆. Декодированное сообщение — решение системы 𝒙 𝑇 𝐺 = 𝒃 − 𝒆
  • 20. Граница Варшамова—Гилберта Теорема. (Р.Р. Варшамов, E.N. Gilbert) Пусть числа 𝑛, 𝑘, 𝑑′ ∈ ℕ таковы, что 𝑗=0 𝑑′−1 𝑛 − 1 𝑗 < 2 𝑛−𝑘 Тогда существует 𝑛, 𝑘, 𝑑 -код, где 𝑑 > 𝑑′.
  • 21. Граница Варшамова—Гилберта Доказательство: Покажем, что в условиях теоремы можно построить матрицу 𝐻 ∈ 𝔽2 𝑛−𝑘 ×𝑛 , у которой любые 𝑑′ столбцов линейно независимы. Будем строить матрицу по столбцам. Пусть уже выбраны 𝑚 столбцов (где 𝑚 < 𝑛) и требуется выбрать 𝑚 + 1 -й столбец. Этот новый столбец не должен образовывать нулевую линейную комбинацию с 𝑑′ − 1 или менее из уже выбранных столбцов.
  • 22. Граница Варшамова—Гилберта Выбираемый столбец не должен образовывать нулевую линейную комбинацию с 𝑑′ − 1 или менее из уже выбранных столбцов. Так как у нас 𝔽2, то это равносильно тому, что выбираемый столбец не равен сумме 𝑑′ − 1 или менее уже выбранных столбцов. Количество таких сумм равно 𝑗=0 𝑑′−1 𝑚 𝑗 ≤ 𝑗=0 𝑑′−1 𝑛 − 1 𝑗 < 2 𝑛−𝑘
  • 23. Граница Варшамова—Гилберта Итак, запрещённых для выбора столбцов у нас оказывается строго меньше 2 𝑛−𝑘 , а всего векторов длины 𝑛 − 𝑘 ровно 2 𝑛−𝑘 . Значит, найдётся вектор из 𝔽2 𝑛−𝑘 , который можно добавить в качестве очередного столбца.
  • 24. Двоичный код Хемминга (R.W. Hamming) Двоичный код с проверкой чётности 𝑎1, … , 𝑎 𝑛 ∈ 𝔽2 𝑛 ∣ ∑𝑎𝑖 = 0 может обнаруживать одну ошибку, т.к. если один разряд 𝑎𝑖 заменить на противоположный, соотношение ∑𝑎𝑖 = 0 нарушится. Но исправить ошибку не удастся. Хочется построить двоичный код, исправляющий хотя бы одну ошибку. Для этого вместо «глобального» контроля чётности применим несколько «дихотомических» проверок на чётность…
  • 25. Двоичный код Хемминга Пример для 𝑛 = 7. Рассмотрим код, удовлетворяющий соотношениям 𝑎4 + 𝑎5 + 𝑎6 + 𝑎7 = 0 𝑎2 + 𝑎3 + 𝑎6 + 𝑎7 = 0 𝑎1 + 𝑎3 + 𝑎5 + 𝑎7 = 0 Проверочная матрица этого кода: 0 0 0 1 1 1 1 0 1 1 0 0 1 1 1 0 1 0 1 0 1
  • 26. Двоичный код Хемминга Проверочная матрица: 0 0 0 1 1 1 1 0 1 1 0 0 1 1 1 0 1 0 1 0 1 Столбцы матрицы — всевозможные ненулевые вектора высоты 3. 𝑗-й столбец суть двоичная запись числа 𝑗. Любая пара столбцов л.н.з., значит 𝑑 𝐶 ≥ 3, значит, этот код исправляет одну ошибку и обнаруживает две.
  • 27. Двоичный код Хемминга Если ошибка случается в 𝑎𝑗, то можно вычислить левые части проверочных соотношений, и они дадут двоичную запись 𝑗, например: 𝑎4 + 𝑎5 + 𝑎6 + 𝑎7 = 1 𝑎2 + 𝑎3 + 𝑎6 + 𝑎7 = 0 𝑎1 + 𝑎3 + 𝑎5 + 𝑎7 = 1
  • 28. Двоичный код Хемминга Общий случай: 𝑛 ≔ 2 𝑚 − 1 для некоторого 𝑚. Код Хемминга длины 𝑛 определяется проверочной матрицей 𝐻 ∈ 𝔽2 𝑚×𝑛 , столбцы которой — всевозможные двоичные вектора высоты 𝑚: 1 0 1 ⋯ 1 0 1 1 ⋯ 1 ⋮ ⋮ ⋮ ⋯ ⋮ 0 0 0 ⋯ 1 Код Хемминга имеет параметры 2 𝑚 − 1, 2 𝑚 − 𝑚 − 1, 3
  • 29. Двоичный код Хемминга Граница Хемминга: Для любого 𝑛, 𝑀, 𝑑 𝑞-кода имеем 𝑀 ≤ 𝑞 𝑛 𝑆 𝑑−1 2 𝟎 В двоичном случае 𝑀 ≤ 2 𝑛 ∑ 𝑘=0 𝑑−1 2 𝑛 𝑘 Коды, достигающие эту границу, называются совершенными или плотно упакованными.
  • 30. Двоичный код Хемминга Граница Хемминга: Для любого 𝑛, 𝑀, 𝑑 -кода имеем 𝑀 ≤ 2 𝑛 ∑ 𝑘=0 𝑑−1 2 𝑛 𝑘 Утверждение. Код Хемминга является совершенным. Доказательство: Для кода Хемминга имеем 𝑛 = 2 𝑚 − 1, 𝑀 = 22 𝑚−𝑚−1 и 𝑑 = 3. Отсюда ∑ 𝑘=0 𝑑−1 2 𝑛 𝑘 = 𝑛 + 1 = 2 𝑚 = 2 𝑛 𝑀.
  • 31. Граница Синглтона для линейных кодов Утверждение. Для любого 𝑛, 𝑘, 𝑑 𝑞-кода имеем 𝑘 ≤ 𝑛 − 𝑑 + 1 Доказательство: По теореме Синглтона, для любого 𝑛, 𝑀, 𝑑 𝑞-кода выполнено 𝑀 ≤ 𝑞 𝑛−𝑑+1. С другой стороны, для линейного кода 𝑀 = 𝑞 𝑘.
  • 32. Остаточный код Теорема. (G. Solomon, J.J. Stiffler) Если существует 𝑛, 𝑘, 𝑑 𝑞-код, то существует и 𝑛 − 𝑑, 𝑘 − 1, 𝑑′ 𝑞- код, где 𝑑′ ≥ 𝑑 𝑞. Доказательство: Пусть 𝐺 — порождающая матрица некоторого 𝑛, 𝑘, 𝑑 𝑞-кода 𝐶. Б.о.о. будем считать, что первая строка 𝐺 содержит ровно 𝑑 ненулевых элементов и имеет вид 𝑟1 … 𝑟𝑑0 … 0 .
  • 33. Остаточный код Порождающая матрица кода 𝐶: 𝐺 = 𝑟1 … 𝑟𝑑 0 … 0 ⋯ 𝐺′ Имеем 𝐺′ ∈ 𝔽 𝑞 𝑘−1 × 𝑛−𝑑 . Покажем, что rk 𝐺′ = 𝑘 − 1. Допустим противное: некоторая нетривиальная линейная комбинация строк 𝐺′ равняется 𝟎. Тогда линейная комбинация соответствующих строк 𝐺 равна 𝑡1 … 𝑡 𝑑0 … 0 , где ∀𝑖 𝑡𝑖 ≠ 0 .
  • 34. Остаточный код 𝐺 = 𝑟1 … 𝑟𝑑 0 … 0 ⋯ 𝐺′ Линейная комбинация 𝑈 некоторых строк 𝐺 равна 𝑡1 … 𝑡 𝑑0 … 0 , где ∀𝑖 𝑡𝑖 ≠ 0 . Т.к. 𝔽 𝑞 поле, то ∃𝑠 ∈ 𝔽 𝑞, такой, что 𝑠𝑡 𝑑 = −𝑟𝑑. Тогда 𝑠 ⋅ 𝑈 + 𝑟1 … 𝑟𝑑0 … 0 — линейная комбинация строк 𝐺, равная 𝑠𝑡1 + 𝑟1 … 𝑠𝑡 𝑑−1 + 𝑟𝑑−1 00 … 0 Это противоречит условию 𝑑 𝐶 = 𝑑.
  • 35. Остаточный код 𝐺 = 𝑟1 … 𝑟𝑑 0 … 0 ⋯ 𝐺′ Итак, 𝐺′ ∈ 𝔽 𝑞 𝑘−1 × 𝑛−𝑑 и rk 𝐺′ = 𝑘 − 1. Значит 𝐺′ является порождающей матрицей некоторого 𝑛 − 𝑑, 𝑘 − 1, 𝑑′ 𝑞-кода 𝐶′ (этот код называется остаточным для исходного кода 𝐶). Рассмотрим любой ненулевой вектор кода 𝐶′ 𝒂′ ≔ 𝑎1 ′ , … , 𝑎 𝑛−𝑑 ′ ≠ 𝟎 такой, что 𝒂′ = 𝑑′. В коде 𝐶 есть вектор вида 𝑎1, … , 𝑎 𝑑, 𝑎1 ′ , … , 𝑎 𝑛−𝑑 ′
  • 36. Остаточный код 𝐺 = 𝑟1 … 𝑟𝑑 0 … 0 ⋯ 𝐺′ В коде 𝐶 есть вектор вида 𝑎1, … , 𝑎 𝑑, 𝑎1 ′ , … , 𝑎 𝑛−𝑑 ′ Пусть 𝑓1, … , 𝑓𝑞 — все элементы поля 𝔽 𝑞. Коду 𝐶 принадлежат все вектора вида 𝑎1 − 𝑓𝑖 𝑟1 , … , 𝑎 𝑑 − 𝑓𝑖 𝑟𝑑 , 𝑎1 ′ , … , 𝑎 𝑛−𝑑 ′ Запишем эти 𝑞 векторов построчно в виде матрицы и оценим количество ненулевых элементов в ней.
  • 37. Остаточный код Рассмотрим матрицу: 𝑎1 − 𝑓1 𝑟1 … 𝑎 𝑑 − 𝑓1 𝑟𝑑 𝑎1 ′ … 𝑎 𝑛−𝑑 ′ 𝑎1 − 𝑓2 𝑟1 … 𝑎 𝑑 − 𝑓2 𝑟𝑑 𝑎1 ′ … 𝑎 𝑛−𝑑 ′ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ 𝑎1 − 𝑓𝑞 𝑟1 … 𝑎 𝑑 − 𝑓𝑞 𝑟𝑑 𝑎1 ′ … 𝑎 𝑛−𝑑 ′ В этой подматрице ровно 𝑞𝑑′ ненулевых элементов В каждом из этих столбцов ровно 𝑞 − 1 ненулевых элементов Итого в матрице 𝑑 𝑞 − 1 + 𝑞𝑑′ ненулевых элементов.
  • 38. Остаточный код В рассмотренной матрице 𝑑 𝑞 − 1 + 𝑞𝑑′ ненулевых элементов. Каждая строка матрицы — ненулевой вектор кода 𝐶, значит в матрице не менее чем 𝑞𝑑 ненулевых элементов. Отсюда 𝑑 𝑞 − 1 + 𝑞𝑑′ ≥ 𝑞𝑑 и следовательно 𝑑′ ≥ 𝑑 𝑞
  • 39. Граница Грайсмера—Соломона—Штиффлера Теорема. (J.H. Griesmer, G. Solomon, J.J. Stiffler) Для любого 𝑛, 𝑘, 𝑑 𝑞-кода имеем 𝑛 ≥ 𝑖=0 𝑘−1 𝑑 𝑞 𝑖 Доказательство: индукция по 𝑘. Утверждение очевидно при 𝑘 = 1. Предположим, что оно выполнено для кодов с размерностью ≤ 𝑘 − 1 и докажем его для 𝑛, 𝑘, 𝑑 𝑞-кодов.
  • 40. Граница Грайсмера—Соломона—Штиффлера Обозначим через 𝑁 𝑘, 𝑑 минимальную длину слов у кода с размерностью 𝑘 и расстоянием 𝑑. Пусть 𝐶 — какой-нибудь 𝑁 𝑘, 𝑑 , 𝑘, 𝑑 𝑞-код. Остаточный для 𝐶 код имеет параметры 𝑁 𝑘, 𝑑 − 𝑑, 𝑘 − 1, 𝑑′ 𝑞 и по предположению индукции, для него справедливо неравенство 𝑁 𝑘, 𝑑 − 𝑑 ≥ 𝑖=0 𝑘−2 𝑑′ 𝑞 𝑖
  • 41. Граница Грайсмера—Соломона—Штиффлера Из неравенства 𝑁 𝑘, 𝑑 − 𝑑 ≥ 𝑖=0 𝑘−2 𝑑′ 𝑞 𝑖 с учётом того, что 𝑑′ ≥ 𝑑 𝑞, получаем 𝑁 𝑘, 𝑑 ≥ 𝑑 + 𝑖=0 𝑘−2 𝑑′ 𝑞 𝑖 ≥ 𝑑 + 𝑖=0 𝑘−2 𝑑 𝑞 𝑖+1 = 𝑖=0 𝑘−1 𝑑 𝑞 𝑖