Коды Рида-Соломона. Кодирование на примере 8-ричного кода с кодовым расстоянием 5.

YOUTUBE · 27.11.2025 08:15

Ключевые темы и таймкоды

Введение в коды Рида-Соломона

0:01
  • Коды Рида-Соломона — помехоустойчивые коды, не троичные.
  • Они являются циклическими и линейными блочными кодами.
  • Рекомендуется посмотреть предыдущие ролики о циклических кодах и определении кодового расстояния.

Классификация кодов

1:01
  • Коды Рида-Соломона — частный случай блочных кодов.
  • Блочные коды кодируются и декодируются независимыми блоками.
  • Сверточные коды имеют память и являются потоковыми, а не блочными.

Табличные коды

2:10
  • Табличные коды имеют кодовую таблицу, показывающую соответствие между входным и выходным словами.
  • Кодирующее устройство вносит избыточность в передаваемое сообщение.
  • Табличные коды не требуют сложных математических операций.

Проблемы табличных кодов

4:02
  • Табличные коды становятся слишком большими при больших параметрах n и k.
  • Устройства не могут хранить такие большие таблицы.
  • Табличные коды редко используются для обнаружения и коррекции ошибок.

Линейные блочные коды

6:09
  • Линейные блочные коды используют порождающую матрицу размером n на k.
  • Порождающая матрица должна быть линейно независимой.
  • Линейные комбинации строк порождающей матрицы дают разные кодовые вектора.

Циклические коды

9:45
  • Циклические коды используют только первую строку порождающей матрицы.
  • Остальные строки получаются путем циклического сдвига первой строки.
  • Циклический сдвиг сохраняет все символы в кольце.

Порождающий полином

11:45
  • Порождающий полином определяет циклический код.
  • Степень порождающего полинома равна числу проверочных символов r.
  • Порождающий полином умножается на информационный полином для получения разрешенного полинома.

Фундаментальное свойство циклических кодов

14:18
  • Циклический сдвиг разрешенного кодового слова сохраняет его разрешенность.
  • Это фундаментальное свойство циклических кодов.

Фундаментальное свойство циклических кодов

14:47
  • Циклические коды сохраняют разрешенные кодовые слова при сдвигах.
  • Примеры: все нули, все единицы, все двойки, все пятерки.
  • Циклические сдвиги не изменяют кодовые слова.

Кодовая таблица циклического кода

15:44
  • Кодовая таблица содержит все кодовые слова и их циклические сдвиги.
  • Циклический код является линейным блочным кодом.
  • Кодовая таблица замкнута относительно линейных операций и циклических сдвигов.

Коды Рида-Соломона

16:46
  • Коды Рида-Соломона являются особенными циклическими кодами.
  • Они обеспечивают максимально возможное кодовое расстояние.
  • Кодовое расстояние определяется как р + 1, где р — число проверочных символов.

Построение кодов Рида-Соломона

18:18
  • Коды Рида-Соломона позволяют выбрать кодовое расстояние и построить автоматический код.
  • Для кодового расстояния 3, р должно быть равно 2.
  • Для кодового расстояния 5, р должно быть равно 4.

Восьмеричный код Рида-Соломона

20:14
  • Основание кода выбирается равным п в степени ку, где п — простое число.
  • Пример: п = 2, ку = 3, основание кода — 8.
  • Восьмеричные символы обозначаются как икс-1, икс-2 и т.д.

Многомерность и векторы

20:58
  • Восьмеричный код можно рассматривать как трехмерный.
  • Векторы состоят из ку элементов, где ку = 3.
  • Количество векторов равно п в степени ку.

Порождающие полиномы

24:32
  • Циклические коды определяются порождающим полиномом.
  • Порождающие полиномы следуют из разложения полинома на множители.
  • Только определенные полиномы порождают циклические коды.

Пример кода Рида-Соломона

27:12
  • Кодовое расстояние выбрано равным 5.
  • Требуемое число проверочных символов — 4.
  • Получаем линейный блочный код 7-3 8-ричный.

Правила сложения и умножения элементов

28:08
  • Необходимо определить правила сложения и умножения элементов, таких как альфа в кубе и альфа в четвертом.
  • Код является циклическим, и при умножении полиномов коэффициенты сворачиваются.
  • Свертка — это сумма произведений элементов.

Понижение степени и линейная комбинация

28:40
  • Восьмеричное поле можно представить как 2^3.
  • Нужно задать правила понижения степени, чтобы выразить альфа в степени ку в виде линейной комбинации альфа в меньшей степени.
  • Цель — понизить степень до второй.

Специфические правила для кода Рида-Соломона

29:48
  • Разные правила дают разные коды.
  • Для кода Рида-Соломона нужны специфические правила.
  • Проверка правил показывает, что они обеспечивают код Рида-Соломона.

Вычисление степеней альфа

30:24
  • Вычисление степеней альфа: альфа в кубе, альфа в четвертом, альфа в пятом, альфа в шестом.
  • Альфа в седьмой степени равна единице.
  • Векторное представление элементов: единица, альфа, альфа в квадрате.

Выражение альфа в кубе через базисные элементы

31:23
  • Альфа в кубе выражается через базисные элементы.
  • Базис состоит из трех векторов: единица, альфа, альфа в квадрате.
  • Альфа в кубе выражается как единица плюс альфа.

Выражение альфа в четвертом через базисные элементы

32:28
  • Альфа в четвертом выражается как альфа плюс альфа в квадрате.
  • Умножение на альфа соответствует сдвигу вправо на один символ.
  • Базисные элементы остаются неизменными.

Выражение альфа в пятом через базисные элементы

34:10
  • Альфа в пятом выражается как альфа квадрат плюс альфа плюс один.
  • Циклический сдвиг альфа в четвертом на один бит.
  • Единица выходит за пределы вектора и размножается.

Выражение альфа в шестом через базисные элементы

35:59
  • Альфа в шестом выражается как единица плюс альфа в квадрате.
  • Линейный сдвиг без переносов.
  • Единица, выходящая за пределы регистра, превращается в ноль.

Проверка максимального периода

37:52
  • Альфа в седьмой степени равна единице, что подтверждает максимальный период.
  • Все векторы разные, без дубликатов.
  • Максимальный период кода Рида-Соломона — семь.

Таблица сложения

40:32
  • Пример сложения альфа-квадрат и альфа-четвертое.
  • Подстановка двоичных векторов вместо альфа-квадрат и альфа-четвертое.
  • Сложение по модулю два и возврат к альфа-степени один.

Умножение и степени

41:29
  • Пример умножения альфа-квадрат на альфа-четвертое.
  • Использование семерки как модуля для степеней.
  • Вычитание семерки из степени для получения альфа-четвертой.

Построение таблиц

42:34
  • Перебор возможных вариантов для построения таблиц сложения и умножения.
  • Пример заполнения таблицы сложения.

Симметричная матрица

43:36
  • Таблица сложения как симметричная матрица.
  • Заполнение верхнего треугольника матрицы.
  • Диагональные элементы равны нулю.

Таблица умножения

46:36
  • Пример заполнения таблицы умножения.
  • Геометрическая прогрессия степеней альфа.
  • Зацикливание степеней по кольцу.

Обратные элементы

49:44
  • Определение обратного элемента по умножению.
  • Пример вычисления обратного элемента для альфа-квадрат.
  • Единственность обратного элемента для всех элементов.

Обратные элементы по сложению

51:40
  • Пример обратного элемента по сложению для альфа-четвертое.
  • Правило для однозначности таблиц и корректности операций.
  • Взаимная однозначность операций сложения и умножения.

Порождающий полином кода Рида-Соломона

52:29
  • Порождающий полином кода Рида-Соломона имеет степень, равную числу элементов кода.
  • Для кода с длиной 7 и числом элементов 4, полином имеет степень 4.
  • Полином можно факторизовать на 4 множителя: x - x1, x - x2, x - x3, x - x4.

Разложение полинома и выбор поля

54:29
  • Поле выбирается по степени, обеспечивающей максимальный период.
  • Полином x^n - 1 раскладывается на произведение степеней альфа от 0 до n-1.
  • Для кода Рида-Соломона степени альфа должны возрастать на единицу.

Требования к порождающему полиному

57:08
  • Порождающий полином должен состоять из r подряд идущих со-множителей.
  • Степени альфа должны возрастать последовательно.
  • Кодовое расстояние кода Рида-Соломона равно r + 1.

Пример порождающего полинома

1:00:44
  • Пример полинома: α^3 + αx + 1x^2 + α^3x^3 + 1x^4.
  • Вектор, соответствующий полиному, дополняется нулями до 7 элементов.

Кодирование и эквивалентность двоичному коду

1:02:02
  • На вход поступает 3 трехбитовых символа, на выходе получается 7 трехбитовых символов.
  • Код Рида-Соломона эквивалентен двоичному коду 21-9.
  • Дополнительные степени свободы позволяют достичь максимального кодового расстояния.

Корни порождающего полинома

1:04:37
  • Порождающий полином имеет 4 корня: α, α^2, α^3, α^4.
  • α^7 = 1 имеет 7 значений, соответствующих корням седьмой степени из единицы.
  • Эти значения соответствуют различным степеням альфа.

Различие корней

1:07:19
  • Все 7 значений корней различны.
  • Единица в любой степени равна единице, поэтому все степени альфа являются корнями.
  • Степени альфа не равны друг другу, что обеспечивает уникальность элементов кода.

Определение проверочного полинома

1:08:34
  • Порождающий полином определен.
  • Проверочный полином можно определить через циклический код.
  • Умножение порождающего полинома на проверочный дает ноль.

Разложение на множители

1:09:06
  • Разложение числителя на множители.
  • Корни: x - 1, x - α^5, x - α^6.
  • Полиномы дополняют друг друга.

Результат и вектор проверочного полинома

1:09:45
  • Результат: α^4 + α^2x + α^3x^2 + x^3 + x^3.
  • Вектор проверочного полинома: α^4, α^2, α^3, 1, 0, 0, 0.

Свертка коэффициентов

1:10:39
  • Произведение полиномов соответствует свертке коэффициентов.
  • Вектор можно записать задом наперед для упрощения свертки.

Циклический сдвиг и скалярные произведения

1:12:14
  • Умножение вектора на реверсивный вектор.
  • Циклический сдвиг влево на один бит.
  • Скалярные произведения должны быть равны нулю.

Кодирование кода Рида-Соломона

1:15:30
  • Кодирование по способу Рида-Соломона.
  • Информационный полином и его значения при различных степенях α.
  • Объединение значений полинома дает разрешенное кодовое слово.

Пример кодирования

1:19:52
  • Пример с k = 3, n = 7, p = 4.
  • Информационный вектор: 3 единицы.
  • Информационный полином: 1 + x + x^2.
  • Кодовое слово: 7 восьмеричных символов.

Вычисление значений полинома

1:21:23
  • Вычисление значений полинома при различных степенях α.
  • Использование таблицы сложения.
  • Кодовое слово принадлежит коду Рида-Соломона.

Проверка кодового слова кода Рида-Соломона

1:23:41
  • Умножение полинома на проверочный полином.
  • Разделение умножения на части для удобства.
  • Умножение вектора на скаляр.

Умножение полиномов и циклический сдвиг

1:24:41
  • Умножение полиномов с учетом степеней.
  • Циклический сдвиг вектора для умножения на икс.
  • Замена старших степеней на нулевые.

Проверка результата умножения

1:28:19
  • Сложение полиномов с использованием таблицы сложения.
  • Подтверждение, что результат равен нулю.
  • Подтверждение принадлежности вектора к коду Рида-Соломона.

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

1:29:50
  • Деление полинома на проверочный полином.
  • Проверка, что частное равно нулю.
  • Подтверждение, что вектор является разрешенным кодовым словом.

Порождающая матрица кода Рида-Соломона

1:34:06
  • Описание порождающей матрицы циклического кода.
  • Преобразование циклической матрицы в систематическую форму.
  • Эквивалентные преобразования и сохранение линейной независимости строк.

Взаимно однозначное соответствие кодовых слов

1:37:04
  • Сравнение множеств разрешенных кодовых слов.
  • Подтверждение взаимно однозначного соответствия.
  • Эквивалентность двух матриц и кодов.

Кодовое расстояние кода Рида-Соломона

1:38:38
  • Код Рида-Соломона обеспечивает максимальное кодовое расстояние.
  • Размер матрицы и кодовое расстояние.
  • Доказательство максимального кодового расстояния.

Определение кодового расстояния

1:39:41
  • Кодовое расстояние определяется как минимальный отличный от нуля вес.
  • Вес кодового слова — это количество ненулевых элементов.
  • Минимальный отличный от нуля вес среди всех кодовых слов является кодовым расстоянием.

Систематическая форма матрицы

1:40:12
  • Матрица записана в систематической форме.
  • Гарантировано к минус один нулей и одна единица.
  • Вес строк минимизирован, кодовое расстояние равно количеству ненулевых элементов.

Порождающая матрица и кодовая таблица

1:41:14
  • Строки порождающей матрицы являются разрешенными кодовыми словами.
  • Кодовое расстояние частично оценивается по порождающей матрице.

Линейные коды и их кодовое расстояние

1:41:40
  • Кодовое расстояние линейных кодов не превышает р плюс один.
  • В систематической форме все элементы, кроме одного, нулевые.

Коды Рида-Соломона

1:42:50
  • Все элементы подматрицы кода Рида-Соломона ненулевые.
  • Все определители второго и третьего порядка также ненулевые.

Линейная независимость и кодовое расстояние

1:47:02
  • Линейная независимость строк обеспечивает максимальное кодовое расстояние.
  • Два элемента не могут обнулиться одновременно.

Заключение

1:48:55
  • Кодовое расстояние кода Рида-Соломона строго равно р плюс один.
  • Следующая тема будет посвящена декодированию кода Рида-Соломона.