stringtranslate.com

Код Рида-Мюллера

Коды Рида-Маллера являются кодами исправления ошибок , которые используются в беспроводных коммуникационных приложениях, особенно в дальнем космосе. [1] Более того, предлагаемый стандарт 5G [2] опирается на тесно связанные полярные коды [3] для исправления ошибок в канале управления. Благодаря своим благоприятным теоретическим и математическим свойствам коды Рида-Маллера также широко изучались в теоретической информатике .

Коды Рида–Маллера обобщают коды Рида–Соломона и Уолша–Адамара . Коды Рида–Маллера — это линейные блочные коды , которые локально проверяемы , локально декодируемы и декодируемы списками . Эти свойства делают их особенно полезными при разработке вероятностно проверяемых доказательств .

Традиционные коды Рида-Маллера являются двоичными кодами, что означает, что сообщения и кодовые слова являются двоичными строками. Когда r и m являются целыми числами с 0 ≤ rm , код Рида-Маллера с параметрами r и m обозначается как RM( rm ). При запросе кодирования сообщения, состоящего из k бит, где выполняется , код RM( rm ) выдает кодовое слово, состоящее из 2 m бит.

Коды Рида-Маллера названы в честь Дэвида Э. Мюллера , который открыл эти коды в 1954 году, [4] и Ирвинга С. Рида , который предложил первый эффективный алгоритм декодирования. [5]

Описание с использованием полиномов низкой степени

Коды Рида-Маллера можно описать несколькими различными (но в конечном итоге эквивалентными) способами. Описание, основанное на полиномах низкой степени, довольно элегантно и особенно подходит для их применения в качестве локально проверяемых кодов и локально декодируемых кодов . [6]

Кодировщик

Блочный код может иметь одну или несколько функций кодирования , которые сопоставляют сообщения кодовым словам . Код Рида-Маллера RM( r , m ) имеет длину сообщения и длину блока . Один из способов определения кодирования для этого кода основан на оценке полилинейных полиномов с m переменными и общей степенью не более r . Каждый полилинейный полином над конечным полем с двумя элементами можно записать следующим образом: являются переменными полинома, а значения являются коэффициентами полинома. Обратите внимание, что существует ровно коэффициентов. Имея это в виду, входное сообщение состоит из значений , которые используются в качестве этих коэффициентов. Таким образом, каждое сообщение порождает уникальный полином от m переменных. Чтобы построить кодовое слово , кодер оценивает полином во всех точках , где полином берется с умножением и сложением по модулю 2 . То есть функция кодирования определяется с помощью

Тот факт, что кодовое слово достаточно для однозначного восстановления, следует из интерполяции Лагранжа , которая утверждает, что коэффициенты полинома определяются однозначно, когда задано достаточно много точек оценки. Поскольку и выполняется для всех сообщений , функция является линейным отображением . Таким образом, код Рида–Маллера является линейным кодом .

Пример

Для кода RM( 2 , 4 ) параметры следующие:

Пусть будет только что определенной функцией кодирования. Чтобы закодировать строку x = 1 1010 010101 длины 11, кодер сначала строит многочлен с 4 переменными: Затем он оценивает этот многочлен во всех 16 точках оценки (0101 означает :

В результате выполняется соотношение C(1 1010 010101) = 1101 1110 0001 0010.

Декодер

Как уже упоминалось, интерполяция Лагранжа может быть использована для эффективного извлечения сообщения из кодового слова. Однако декодер должен работать даже если кодовое слово было повреждено в нескольких позициях, то есть когда полученное слово отличается от любого кодового слова. В этом случае может помочь локальная процедура декодирования.

Алгоритм Рида основан на следующем свойстве: вы начинаете с кодового слова, которое является последовательностью точек оценки неизвестного полинома степени не выше , которую вы хотите найти. Последовательность может содержать любое количество ошибок вплоть до включенных.

Если рассмотреть одночлен наивысшей степени в и просуммировать все точки оценки многочлена, где все переменные в имеют значения 0 или 1, а все остальные переменные имеют значение 0, то получится значение коэффициента (0 или 1) в (Такие точки есть ). Это связано с тем, что все делители нижних одночленов появляются четное число раз в сумме, а появляется только один раз.

Чтобы учесть возможность ошибок, вы также можете заметить, что вы можете зафиксировать значение других переменных на любом значении. Таким образом, вместо того, чтобы делать сумму только один раз для других переменных, не входящих в нулевое значение, вы делаете это раз для каждого фиксированного значения других переменных. Если ошибки нет, все эти суммы должны быть равны значению искомого коэффициента. Алгоритм здесь состоит в том, чтобы взять большинство ответов в качестве искомого значения. Если меньшинство больше максимально возможного числа ошибок, шаг декодирования терпит неудачу, зная, что во входном коде слишком много ошибок.

После вычисления коэффициента, если он равен 1, обновите код, чтобы удалить одночлен из входного кода и перейти к следующему одночлену в обратном порядке их степени.

Пример

Давайте рассмотрим предыдущий пример и начнем с кода. С помощью мы можем исправить максимум 1 ошибку в коде. Рассмотрим входной код как 1101 1110 0001 0110 (это предыдущий код с одной ошибкой).

Мы знаем, что степень многочлена не превышает , поэтому начинаем с поиска одночлена степени 2.

Четыре суммы не согласуются (поэтому мы знаем, что есть ошибка), но отчет меньшинства не превышает максимально допустимого числа ошибок (1), поэтому мы берем большинство, а коэффициент равен 1.

Удаляем из кода перед продолжением: код: 1101 1110 0001 0110, оценка 0001000100010001, новый код 1100 1111 0000 0111

Обнаружена одна ошибка, коэффициент равен 0, текущий код не изменен.

Обнаружена одна ошибка, коэффициент равен 0, текущий код не изменен.

Обнаружена одна ошибка, коэффициент равен 1, оценка равна 0000 0011 0000 0011, текущий код теперь 1100 1100 0000 0100.

Обнаружена одна ошибка, коэффициент равен 1, оценка равна 0000 0000 0011 0011, текущий код теперь 1100 1100 0011 0111.

Обнаружена одна ошибка, коэффициент равен 0, текущий код не изменен. Теперь мы знаем все коэффициенты степени 2 для полинома, мы можем начать мономы степени 1. Обратите внимание, что для каждой следующей степени сумм вдвое больше, и каждая сумма вдвое меньше.

Обнаружена одна ошибка, коэффициент равен 0, текущий код не изменен.

Обнаружена одна ошибка, коэффициент равен 1, оценка равна 0011 0011 0011 0011, текущий код теперь 1111 1111 0000 0100.

Затем мы найдем 0 для , 1 для и текущий код станет 1111 1111 1111 1011.

Для степени 0 у нас есть 16 сумм всего по 1 биту. Меньшинство по-прежнему имеет размер 1, и мы нашли и соответствующее начальное слово 1 1010 010101

Обобщение на более крупные алфавиты с помощью полиномов низкой степени

Используя полиномы низкой степени над конечным полем размера , можно расширить определение кодов Рида–Маллера на алфавиты размера . Пусть и будут положительными целыми числами, где следует считать большими, чем . Чтобы закодировать сообщение шириной , сообщение снова интерпретируется как -вариантный полином полной степени не более и с коэффициентом из . Такой полином действительно имеет коэффициенты. Кодирование Рида–Маллера представляет собой список всех оценок по всем . Таким образом, длина блока равна .

Описание с использованием матрицы-генератора

Генераторную матрицу для кода Рида–Маллера RM( r , m ) длины N = 2 м можно построить следующим образом. Запишем множество всех m -мерных двоичных векторов в виде:

Определим в N -мерном пространстве векторы индикаторов

на подмножествах по:

вместе с, также в , бинарной операцией

называемое произведением клина (не путать с произведением клина, определенным во внешней алгебре). Здесь и являются точками в ( N -мерных двоичных векторах), а операция является обычным умножением в поле .

является m -мерным векторным пространством над полем , поэтому можно записать

Определим в N -мерном пространстве следующие векторы длиной и

где 1 ≤ i ≤ m и H i являются гиперплоскостями в (с размерностью m − 1 ):

Генераторная матрица

Код Рида–Маллера RM( r , m ) порядка r и длины N  = 2 m — это код, сгенерированный v 0 и произведениями клиньев до r из v i , 1 ≤ im (где по соглашению произведение клиньев менее одного вектора является тождеством для операции). Другими словами, мы можем построить матрицу генератора для кода RM( r , m ) , используя векторы и их перестановки произведений клиньев до r за раз , как строки матрицы генератора, где 1 ≤ i km .

Пример 1

Пусть m = 3. Тогда N = 8, и

и

Код RM(1,3) генерируется набором

или более явно по строкам матрицы:

Пример 2

Код RM(2,3) генерируется набором:

или более явно по строкам матрицы:

Характеристики

Имеются следующие свойства:

  1. Множество всех возможных произведений клиньев длиной до m из v i образуют основу для .
  2. Код RM ( r , m ) имеет ранг
  3. RM ( r , m ) = RM ( r , m − 1) | RM ( r − 1, m − 1) , где «|» обозначает штриховое произведение двух кодов.
  4. RM ( r , m ) имеет минимальный вес Хэмминга 2 mr .

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

  1. Есть

    такие векторы и имеют размерность N, поэтому достаточно проверить, что N векторов охватывают ; эквивалентно достаточно проверить, что .

    Пусть x — двоичный вектор длины m , элемент X. Пусть ( x ) i обозначает i- й элемент x . Определим

    где 1 ≤ im .

    Затем

    Расширение через дистрибутивность клинового произведения дает . Тогда, поскольку векторы охватывают , имеем .
  2. Согласно 1 , все такие произведения клиньев должны быть линейно независимыми, поэтому ранг RM( r, m ) должен быть просто числом таких векторов.
  3. Пропущено.
  4. По индукции.
    Код RM (0,  m ) — это код повторений длины N  = 2 m и веса N = 2 m −0 = 2 mr . На 1 и имеет вес 1 = 2 0 = 2 mr .
    Произведение штриха статьи (теория кодирования) дает доказательство того, что вес произведения штриха двух кодов C 1 , C 2 определяется выражением
    Если 0 < r < m и если
    1. RM( r , m  − 1) имеет вес 2 m −1− r
    2. RM( r  − 1, m  − 1) имеет вес 2 m −1−( r −1) = 2 mr
    тогда продукт в виде стержня имеет вес

Расшифровка кодов RM

Коды RM( r , m ) можно декодировать с помощью декодирования по мажоритарной логике . Основная идея декодирования по мажоритарной логике заключается в построении нескольких контрольных сумм для каждого полученного элемента кодового слова. Поскольку все различные контрольные суммы должны иметь одинаковое значение (т. е. значение веса элемента слова сообщения), мы можем использовать декодирование по мажоритарной логике для расшифровки значения элемента слова сообщения. После того, как каждый порядок полинома декодирован, полученное слово соответствующим образом модифицируется путем удаления соответствующих кодовых слов, взвешенных вкладами декодированного сообщения, вплоть до настоящего этапа. Таким образом, для кода RM порядка r мы должны декодировать итеративно r+1 раз, прежде чем придем к окончательному полученному кодовому слову. Кроме того, значения битов сообщения вычисляются с помощью этой схемы; наконец, мы можем вычислить кодовое слово, умножив слово сообщения (только что декодированное) на матрицу генератора.

Одним из признаков успешного декодирования является получение модифицированного слова, состоящего из всех нулей, в конце декодирования на этапе ( r  + 1) через декодирование с использованием логики большинства. Этот метод был предложен Ирвингом С. Ридом и является более общим при применении к другим кодам конечной геометрии.

Описание с использованием рекурсивной конструкции

Код Рида–Маллера RM( r,m ) существует для любых целых чисел и . RM( m , m ) определяется как код вселенной ( ). RM(−1,m) определяется как тривиальный код ( ). Остальные коды RM могут быть построены из этих элементарных кодов с использованием конструкции удвоения длины

Из этой конструкции RM( r,m ) является двоичным линейным блочным кодом ( n , k , d ) с длиной n  = 2 m , размерностью и минимальным расстоянием для . Двойственный код к RM( r,m ) - это RM( m - r -1, m ). Это показывает, что коды с повторениями и SPC являются двойственными, биортогональные и расширенные коды Хэмминга являются двойственными, а коды с k  =  n /2 являются самодвойственными.

Особые случаи кодов Рида–Маллера

Таблица всех кодов RM(r,m) для m≤5

Все коды RM( rm ) с размером алфавита 2 показаны здесь, аннотированные стандартной нотацией теории кодирования [n,k,d] для блочных кодов . Код RM( rm ) является -кодом, то есть это линейный код над двоичным алфавитом , имеет длину блока , длину сообщения (или размерность) k и минимальное расстояние .

Свойства кодов RM(r,m) для r≤1 или r≥m-1

Ссылки

  1. ^ Massey, James L. (1992), «Связь и кодирование в дальнем космосе: брак, заключенный на небесах», Advanced Methods for Satellite and Deep Space Communications , Lecture Notes in Control and Information Sciences, т. 182, Springer-Verlag, стр. 1–17, CiteSeerX  10.1.1.36.4265 , doi :10.1007/bfb0036046, ISBN 978-3540558514pdf
  2. ^ "3GPP RAN1 meeting #87 final report". 3GPP . Получено 31 августа 2017 .
  3. ^ Арикан, Эрдал (2009). «Поляризация канала: метод построения кодов, обеспечивающих пропускную способность, для симметричных каналов без памяти с двоичным входом — журналы и журналы IEEE». Труды IEEE по теории информации . 55 (7): 3051–3073. arXiv : 0807.3917 . doi : 10.1109/TIT.2009.2021379. hdl : 11693/11695. S2CID  889822.
  4. ^ Мюллер, Дэвид Э. (1954). «Применение булевой алгебры к проектированию коммутационных схем и обнаружению ошибок». Труды Профессиональной группы IRE по электронным компьютерам . EC-3 (3): 6–12. doi :10.1109/irepgelc.1954.6499441. ISSN  2168-1740.
  5. ^ Рид, Ирвинг С. (1954). «Класс кодов с исправлением множественных ошибок и схема декодирования». Труды Профессиональной группы IRE по теории информации . 4 (4): 38–49. doi :10.1109/tit.1954.1057465. hdl : 10338.dmlcz/143797 . ISSN  2168-2690.
  6. ^ Прахлад Харша и др., Пределы алгоритмов аппроксимации: PCP и уникальные игры (конспект лекций по учебнику DIMACS), раздел 5.2.1.
  7. ^ Треллис и турбокодирование, C. Schlegel & L. Perez, Wiley Interscience, 2004, стр. 149.

Дальнейшее чтение

Внешние ссылки