Линейные коды. Определения. Порождающая и проверочная матрицы. Связь кодового расстояния с проверочной матрицей. Граница Варшамова—Гилберта. Систематическое кодирование. Декодирование по синдрому. Коды Хемминга.
Остаточный код. Граница Грайсмера—Соломона—Штиффлера.
Коды, исправляющие ошибки. Простейшие границы. Коды Варшамова—Тененгольца.Alex Dainiak
Задача исправления и обнаружения ошибок. Геометрическая интерпретация. Типы ошибок. Метрики Хемминга и Левенштейна. Кодовое расстояние. Основные задачи теории кодов, исправляющих ошибки.
Коды Варшамова—Тененгольца, алгоритмы исправления одиночных ошибок выпадения и вставки символов.
Простейшие границы для параметров кодов, исправляющих ошибки замещения: границы сферической упаковки, Синглтона.
Коды на основе многочленов и алгоритмы их декодированияAlex Dainiak
Коды Рида—Соломона. Алгоритм декодирования Берлекэмпа—Велча.
Коды Рида—Маллера: кодовое расстояние, алгоритм мажоритарного декодирования.
Варианты обобщений конструкции Рида—Маллера. Лемма Липтона—ДеМилло—Шварца—Зиппеля. Понятие об алгеброгеометрических кодах.
Циклические коды БЧХ, Хемминга. Восстановление синхронизацииAlex Dainiak
Коды БЧХ.
Задача восстановления синхронизации. Восстановление синхронизации для смежных классов циклических кодов.
Циклическое представление кодов Хемминга. Совершенные коды. Коды Голея. Теорема Васильева.
Циклические коды. Проверочный и порождающий многочлены, критерий существования кода с заданным порождающим многочленом. Вид порождающей и проверочной матриц. Систематическое кодирование.
Граница Боуза—Чоудхури—Хоквингема.
Матрицы Адамара. Конструкции Сильвестра и Пэли. Коды на основе матриц Адамара.
Каскадные коды. Коды Форни: конструкция и простой алгоритм декодирования.
Коды, исправляющие ошибки. Простейшие границы. Коды Варшамова—Тененгольца.Alex Dainiak
Задача исправления и обнаружения ошибок. Геометрическая интерпретация. Типы ошибок. Метрики Хемминга и Левенштейна. Кодовое расстояние. Основные задачи теории кодов, исправляющих ошибки.
Коды Варшамова—Тененгольца, алгоритмы исправления одиночных ошибок выпадения и вставки символов.
Простейшие границы для параметров кодов, исправляющих ошибки замещения: границы сферической упаковки, Синглтона.
Коды на основе многочленов и алгоритмы их декодированияAlex Dainiak
Коды Рида—Соломона. Алгоритм декодирования Берлекэмпа—Велча.
Коды Рида—Маллера: кодовое расстояние, алгоритм мажоритарного декодирования.
Варианты обобщений конструкции Рида—Маллера. Лемма Липтона—ДеМилло—Шварца—Зиппеля. Понятие об алгеброгеометрических кодах.
Циклические коды БЧХ, Хемминга. Восстановление синхронизацииAlex Dainiak
Коды БЧХ.
Задача восстановления синхронизации. Восстановление синхронизации для смежных классов циклических кодов.
Циклическое представление кодов Хемминга. Совершенные коды. Коды Голея. Теорема Васильева.
Циклические коды. Проверочный и порождающий многочлены, критерий существования кода с заданным порождающим многочленом. Вид порождающей и проверочной матриц. Систематическое кодирование.
Граница Боуза—Чоудхури—Хоквингема.
Матрицы Адамара. Конструкции Сильвестра и Пэли. Коды на основе матриц Адамара.
Каскадные коды. Коды Форни: конструкция и простой алгоритм декодирования.
Приложения кодов, исправляющих ошибки. Рандомизированный протокол в коммуникационной сложности. Криптосхема МакЭлиса. Однородные (псевдослучайные) множества на основе кодов, их приложения к дерандомизации задачи выполнимости и к задаче разделения секрета.
Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—ШпильманаAlex Dainiak
Сложность задачи декодирования линейных кодов: задача NCP (задачи о ближайшем кодовом слове).
Графы-расширители. Вероятностное доказательство существования расширителей. Коды на основе двудольных графов. Кодовое расстояние кодов на основе расширителей. Алгоритм декодирования Сипсера—Шпильмана.
Приложения кодов, исправляющих ошибки. Рандомизированный протокол в коммуникационной сложности. Криптосхема МакЭлиса. Однородные (псевдослучайные) множества на основе кодов, их приложения к дерандомизации задачи выполнимости и к задаче разделения секрета.
Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—ШпильманаAlex Dainiak
Сложность задачи декодирования линейных кодов: задача NCP (задачи о ближайшем кодовом слове).
Графы-расширители. Вероятностное доказательство существования расширителей. Коды на основе двудольных графов. Кодовое расстояние кодов на основе расширителей. Алгоритм декодирования Сипсера—Шпильмана.
Основы теории графов 11: гамильтоновы циклыAlex Dainiak
Доказываем достаточные условия существования в графе гамильтоновых циклов: условия Эрдёша—Хватала, Асратяна—Хачатряна, Хватала. Доказываем необходимые условия существования гамильтонова цикла в планарном графе (теорема Гринберга).
[Слайды курса, прочитанного в МФТИ в 2013 году.]
Основы теории графов 10: экстремальная теория графовAlex Dainiak
Доказываем теорему Турана, а затем теорему Эрдёша—Стоуна—Симоновица(Шимоновича) о связи хроматического числа подграфа с максимальным числом рёбер в графе, его не содержащего.
[Слайды курса, прочитанного в МФТИ в 2013 году.]
Основы теории графов 09: раскраски планарных графов, совершенные графыAlex Dainiak
Рассматриваем раскраски планарных графов и другие темы, связанные с раскрасками. Доказываем теорему Томассена о том, что списочное хроматическое число любого планарного графа не превышает пяти. Доказываем теорему Эрдёша о том, что существуют графы с большим хроматическим числом и одновременно большим обхватом.
Рассматриваем совершенные графы и доказываем слабую гипотезу Бержа.
[Слайды курса, прочитанного в МФТИ в 2013 году.]
Основы теории графов 08: раскраски и списочные раскраскиAlex Dainiak
Вводим понятие списочной раскраски. Демонстрируем различие между обчным и списочным хроматическим числом. Доказываем теоремы Брукса и Визинга. Доказываем теорему Алона об оценки списочного хроматического числа через минимальную степень вершин. Доказываем верхнюю оценку на списочное хроматическое число через обычное.
[Слайды курса, прочитанного в МФТИ в 2013 году.]
Основы теории графов 07: сепараторы в планарных графахAlex Dainiak
Доказываем теорему Липтона—Тарджена о существовании хороших разделяющих множеств (сепараторов) в планарных графах.
[Слайды курса, прочитанного в МФТИ в 2013 году.]
Основы теории графов 06: триангуляции и трёхсвязные планарные графыAlex Dainiak
Вводим понятие триангуляций. Доказываем, что триангуляции трёхсвязны. Доказываем критерий Татта о том, когда множество образует границу грани в трёхсвязном планарном графе. Доказываем теорему Вагнера—Фари о том, что у любого планарного графа существует укладка, в которой рёбра — отрезки прямых линий.
[Слайды курса, прочитанного в МФТИ в 2013 году.]
Основы теории графов 05: критерии планарности графовAlex Dainiak
Вводим определение укладки, планарных графов, доказываем критерии планарности Вагнера и Понтрягина—Куратовского.
[Слайды курса, прочитанного в МФТИ в 2013 году.]
Обсуждаем два определения k-связности. Доказываем теорему Менгера об их эквавалентности (через теорему Форда—Фалкерсона). Доказываем теоремы о построении 2-связных и 3-связных графов. Вводим деревья блоков и точек сочленения. Доказываем теорему Мадера о существовании k-связного подграфа.
[Слайды курса, прочитанного в МФТИ в 2013 году.]
Основы теории графов 01: напоминание определений, теорема Форда—ФалкерсонаAlex Dainiak
Вспоминаем определения изоморфизма, связности, соседства и т.п. Доказываем (напоминаем) теорему Форда—Фалкерсона, из которой на следующей лекции выведем теорему Менгера.
[Слайды курса, прочитанного в МФТИ в 2013 году.]
Основы теории графов 02: факторизация графов (разложение на простые подграфы)Alex Dainiak
Доказываем теоремы о разложении полных графов на полные двудольные: Грэхема—Поллака и Анселя. Доказываем теорему Татта о критерии существования совершенного паросочетания в произвольном графе.
[Слайды курса, прочитанного в МФТИ в 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 нарушится.
Но исправить ошибку не удастся.
Хочется построить двоичный код, исправляющий хотя бы одну
ошибку.
Для этого вместо «глобального» контроля чётности применим
несколько «дихотомических» проверок на чётность…
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 .
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
𝑑′
𝑞 𝑖