Циклический код
Эта статья может быть слишком технической для понимания большинства читателей . ( Март 2014 г. ) |
В теории кодирования циклический код — это блочный код , в котором циклические сдвиги каждого кодового слова дают другое слово, принадлежащее коду. Это коды, исправляющие ошибки , обладающие алгебраическими свойствами, удобными для эффективного обнаружения и исправления ошибок .
Определение [ править ]
Позволять быть линейным кодом над конечным полем (также называемым полем Галуа ) блока длины . называется циклическим кодом , если для каждого кодового слова от , слово в полученное вправо, циклическим сдвигом компонентов снова является кодовым словом. Поскольку один циклический сдвиг вправо равен циклические сдвиги влево, циклический код также может быть определен посредством циклических сдвигов влево. Следовательно, линейный код является циклическим именно тогда, когда оно инвариантно относительно всех циклических сдвигов.
Циклические коды имеют некоторые дополнительные структурные ограничения на коды. Они основаны на полях Галуа и благодаря своим структурным свойствам очень полезны для контроля ошибок. Их структура тесно связана с полями Галуа, благодаря чему алгоритмы кодирования и декодирования циклических кодов являются вычислительно эффективными.
Алгебраическая структура [ править ]
Циклические коды могут быть связаны с идеалами в определенных кольцах. Позволять — кольцо полиномов над конечным полем . Определить элементы циклического кода с полиномами в такой, что отображает полином : таким образом, умножение на соответствует циклическому сдвигу. Затем является идеалом в , и, следовательно, главный , поскольку — кольцо главных идеалов . Идеал порождается уникальным моническим элементом в минимальной степени, порождающий полином . [1] Это должен быть делитель . Отсюда следует, что каждый циклический код является полиномиальным кодом .Если порождающий полином имеет степень тогда ранг кода является .
Идемпотент это кодовое слово такой, что (то есть, является идемпотентным элементом ) и является идентификатором кода, то есть для каждого кодового слова . Если и являются взаимно простыми, такое слово всегда существует и уникально; [2] это генератор кода.
Неприводимый код — это циклический код, в котором код как идеал неприводим, т. е. минимален в , так что его проверочный полином является неприводимым многочленом .
Примеры [ править ]
Например, если и , набор кодовых слов, содержащихся в циклическом коде, сгенерированном это именно
- .
Это соответствует идеалу в созданный .
Полином неприводим в кольце многочленов, следовательно, код является неприводимым.
Идемпотентом этого кода является полином , соответствующий кодовому слову .
Тривиальные примеры [ править ]
Тривиальные примеры циклических кодов: себя и код, содержащий только нулевое кодовое слово. Они соответствуют генераторам и соответственно: эти два многочлена всегда должны быть факторами .
Над битовый код четности , состоящий из всех слов четного веса, соответствует генератору . Опять закончилось это всегда должно быть фактором .
Квазициклические коды и сокращенные коды [ править ]
Прежде чем углубиться в детали циклических кодов, мы сначала обсудим квазициклические и сокращенные коды, которые тесно связаны с циклическими кодами и все они могут быть преобразованы друг в друга.
Определение [ править ]
Квазициклические коды: [ нужна ссылка ]
Ан квазициклический код – это линейный блочный код такой, что для некоторого который взаимнопрост , полином является полиномом кодового слова всякий раз, когда является полиномом кодового слова.
Здесь полином кодового слова — это элемент линейного кода, кодовые слова которого представляют собой полиномы, которые делятся на полином меньшей длины, называемый полиномом-генератором . Любой полином кодового слова можно выразить в виде , где является генераторным полиномом. Любое кодовое слово циклического кода может быть связан с полиномом кодового слова, а именно, . Квазициклический код с равный является циклическим кодом.
Определение [ править ]
Сокращенные коды:
Ан линейный код называется собственным сокращенным циклическим кодом, если его можно получить вычеркиванием позиции из циклический код.
В сокращенных кодах информационные символы удаляются, чтобы получить желаемую длину блока, меньшую, чем проектная длина блока. Обычно предполагается, что недостающие информационные символы находятся в начале кодового слова и равны 0. Следовательно, − фиксируется, а затем уменьшается, что в конечном итоге уменьшается . Начальные символы удалять не обязательно. В зависимости от приложения иногда последовательные позиции считаются равными 0 и удаляются.
Все отброшенные символы не обязательно должны передаваться и на принимающей стороне могут быть вставлены повторно. Чтобы конвертировать циклический код для сокращенный код, набор символы до нуля и отбросьте их из каждого кодового слова. Любой циклический код можно преобразовать в квазициклический, отбросив каждый символ, где является фактором . Если отброшенные символы не являются проверочными символами, то этот циклический код также является сокращенным кодом.
Для исправления ошибок [ править ]
Циклические коды могут использоваться для исправления ошибок , как и коды Хэмминга , поскольку циклические коды могут использоваться для исправления одиночных ошибок. Аналогично, они также используются для исправления двойных ошибок и пакетных ошибок. Все виды исправления ошибок кратко описаны в дальнейших подразделах.
Код Хэмминга (7,4) имеет порождающий полином . Этот многочлен имеет нуль в поле расширения Галуа. у примитивного элемента , и все кодовые слова удовлетворяют . Циклические коды также можно использовать для исправления двойных ошибок в поле. . Длина блока будет равный и примитивные элементы и как нули в потому что здесь мы рассматриваем случай двух ошибок, поэтому каждая будет представлять одну ошибку.
Полученное слово представляет собой полином степени дано как
где может иметь не более двух ненулевых коэффициентов, соответствующих 2 ошибкам.
Определим синдромный полином , как остаток полинома при делении на полином генератора т.е.
как .
За исправление двух ошибок [ править ]
Пусть элементы поля и быть двумя номерами местоположения ошибки. Если возникает только одна ошибка, то равно нулю, и если ничего не происходит, оба равны нулю.
Позволять и .
Эти элементы поля называются «синдромами». Теперь, потому что равен нулю на примитивных элементах и , поэтому мы можем написать и . Если, скажем, происходят две ошибки, то
и .
И эти два можно рассматривать как две пары уравнений в с двумя неизвестными, поэтому можно написать
и .
Следовательно, если две пары нелинейных уравнений могут быть решены, циклические коды можно использовать для исправления двух ошибок.
Код Хэмминга [ править ]
Код Хэмминга (7,4) может быть записан как циклический код над GF(2) с генератором . Фактически, любой двоичный код Хэмминга вида Ham(r, 2) эквивалентен циклическому коду: [3] и любой код Хэмминга формы Ham(r,q) с r и q-1 относительно простыми также эквивалентен циклическому коду. [4] Дан код Хэмминга вида Ham(r,2) с , набор четных кодовых слов образует циклический -код. [5]
Код Хэмминга для исправления одиночных ошибок [ править ]
Код, минимальное расстояние которого не менее 3, имеет проверочную матрицу, все столбцы которой различны и не равны нулю. Если проверочная матрица двоичного кода имеет строк, то каждый столбец представляет собой -битовое двоичное число. Есть возможные столбцы. Следовательно, если проверочная матрица двоичного кода с минимум 3 есть строк, то он может иметь только колонки, не более того. Это определяет код, называемый кодом Хэмминга.
Легко определить коды Хэмминга для больших алфавитов размером . Нам нужно определить один матрица с линейно независимыми столбцами. Для любого слова размера будут столбцы, кратные друг другу. Итак, чтобы получить линейную независимость, все ненулевые -кортежи с единицей в качестве верхнего ненулевого элемента будут выбраны в качестве столбцов. Тогда два столбца никогда не будут линейно зависимыми, потому что три столбца могут быть линейно зависимыми с минимальным расстоянием кода, равным 3.
Итак, есть ненулевые столбцы с одним верхним ненулевым элементом. Следовательно, код Хэмминга – это код.
Теперь для циклических кодов пусть быть примитивным элементом в , и пусть . Затем и таким образом является нулем многочлена и является порождающим полиномом для циклического кода блочной длины .
Но для , . И полученное слово является многочленом степени дано как
где, или где представляет места ошибок.
Но мы также можем использовать как элемент для индексации местоположения ошибки. Потому что , у нас есть и все полномочия от к различны. Таким образом, мы можем легко определить место ошибки. от пока не что не означает никакой ошибки. Итак, код Хэмминга — это код, исправляющий одну ошибку. с и .
Для исправления пакетных ошибок [ править ]
Из концепции расстояния Хэмминга : код с минимальным расстоянием могу исправить любой ошибки. Но во многих каналах картина ошибок не очень произвольна, она возникает в пределах очень короткого сегмента сообщения. Ошибки такого рода называются пакетными ошибками . Таким образом, для исправления таких ошибок мы получим более эффективный код с более высокой скоростью из-за меньшего количества ограничений. Циклические коды используются для исправления пакетных ошибок. Фактически, циклические коды могут также исправлять циклические пакетные ошибки наряду с пакетными ошибками. Циклические пакетные ошибки определяются как
Циклический пакет длины — вектор, ненулевые компоненты которого входят в число (циклически) последовательные компоненты, первая и последняя из которых ненулевые.
В полиномиальной форме циклический пакет длины можно описать как с как полином степени с ненулевым коэффициентом . Здесь определяет образец и определяет начальную точку ошибки. Длина узора задается в градусах . Синдромный полином уникален для каждого шаблона и определяется выражением
Линейный блочный код, который исправляет все пакетные ошибки длины. или меньше, должно быть как минимум проверьте символы. Доказательство: поскольку любой линейный код, который может исправить пакетный шаблон длиной или меньше не может иметь всплеск длины или меньше в качестве кодового слова, потому что если бы это было так, то длина была бы увеличена. можно изменить кодовое слово на пакетный шаблон длины , что также может быть получено путем создания пакета ошибок длиной во всех нулевых кодовых словах. Теперь любые два вектора, не равные нулю в первом компоненты должны быть из разных смежных наборов массива, чтобы их разница не была кодовым словом пакетов длины . Следовательно, количество таких смежных множеств равно числу таких векторов, которые . Следовательно, по крайней мере сомножества и, следовательно, по крайней мере символ проверки.
Это свойство также известно как граница Ригера и похоже на границу Синглтона для исправления случайных ошибок.
Коды пожарной безопасности как циклические границы [ править ]
В 1959 году Филип Файер [6] представил конструкцию циклических кодов, порождаемых произведением бинома и примитивного многочлена. Бином имеет вид для некоторого положительного нечетного целого числа . [7] Код пожарной сигнализации представляет собой код, исправляющий циклические пакетные ошибки. с генераторным полиномом
где является простым многочленом степени не меньше, чем и не делит . Длина блока пожарного кода равна наименьшему целому числу. такой, что делит .
Пожарный код может исправить все пакеты ошибок длиной t или меньше, если нет двух пакетов. и появляются в одном и том же комножестве. Это можно доказать от противного. Предположим, есть два различных ненулевых всплеска и длины или меньше и находятся в одном наборе кода. Итак, их отличие – это кодовое слово. Поскольку разница кратна это также кратно . Поэтому,
.
Это показывает, что кратно , Так
для некоторых . Теперь, как меньше, чем и меньше, чем так является кодовым словом. Поэтому,
.
С степень меньше степени , не могу разделить . Если не равен нулю, то тоже не могу разделить как меньше, чем и по определению , делит нет меньше, чем . Поэтому и равен нулю. Это означает, что оба всплеска одинаковы, вопреки предположению.
Коды пожарной безопасности являются лучшими кодами коррекции одиночного пакета с высокой скоростью и строятся аналитически. Они имеют очень высокий уровень, и когда и равны, избыточность наименьшая и равна . Используя несколько пожарных кодов, можно также исправить более длинные пакеты ошибок.
Для обнаружения ошибок широко используются циклические коды, называемые циклические избыточные коды .
О преобразовании Фурье [ править ]
Применения преобразования Фурье широко распространены в обработке сигналов. Но их применение не ограничивается только сложными областями; Преобразования Фурье также существуют в поле Галуа. . Циклические коды с использованием преобразования Фурье могут быть описаны в постановке, более близкой к обработке сигналов.
Преобразование Фурье по конечным полям [ править ]
Преобразование Фурье по конечным полям
Дискретное преобразование Фурье вектора задается вектором где,
= где,
где эксп( ) представляет собой корень единства. Аналогично в конечном поле корень из единицы - это элемент порядка . Поэтому
Если вектор над , и быть элементом порядка , то преобразование Фурье вектора вектор и компоненты задаются выражением
= где,
Здесь индекс времени , частота и это спектр . Одним из важных различий между преобразованием Фурье в комплексном поле и полем Галуа является то, что комплексное поле существует для любого значения находясь в поле Галуа существует только если делит . В случае полей расширения в поле расширения будет выполнено преобразование Фурье. если делит для некоторых . В векторе временной области поля Галуа находится над полем но спектр может быть над полем расширения .
Спектральное описание [ править ]
Любое кодовое слово циклического кода длины блока можно представить многочленом степени максимум . Его кодер можно записать как . Следовательно, кодер в частотной области можно записать как . Здесь спектр кодовых слов имеет ценность в но все компоненты во временной области взяты из . Поскольку спектр данных произвольна, роль состоит в том, чтобы указать те где будет нулевым.
Таким образом, циклические коды также можно определить как
Учитывая набор спектральных индексов, , элементы которого называются проверочными частотами, циклический код набор слов закончился спектр которого равен нулю в компонентах, индексированных . Любой такой спектр будут иметь компоненты формы .
Итак, циклические коды — это векторы в поле и спектр, заданный его обратным преобразованием Фурье, находится над полем и ограничены нулевым значением для определенных компонентов. Но каждый спектр в поле и ноль в определенных компонентах могут не иметь обратных преобразований с компонентами в поле . Такой спектр нельзя использовать в качестве циклических кодов.
Ниже приведены несколько границ спектра циклических кодов.
BCH связан [ править ]
Если быть фактором для некоторых . Единственный вектор в веса или меньше, что имеет последовательные компоненты его спектра, равные нулю, являются нулевым вектором.
Граница Хартмана-Ценга [ править ]
Если быть фактором для некоторых , и целое число, взаимно простое с . Единственный вектор в веса или меньше, чей спектральный компоненты равен нулю для , где и , — полностью нулевой вектор.
Роос связан [ править ]
Если быть фактором для некоторых и . Единственный вектор в веса или меньше, чьи спектральные компоненты равен нулю для , где и занимает по крайней мере значения в диапазоне , является нулевым вектором.
Коды квадратичных остатков [ править ]
Когда премьер является квадратичным вычетом по модулю простого числа существует код квадратичного вычета , который является циклическим кодом длины , измерение и минимальный вес не менее над .
Обобщения [ править ]
Констациклический код — это линейный код, обладающий тем свойством, что для некоторой константы λ, если ( c 1 ,c 2 ,..., c n ) является кодовым словом, то таковым является и (λ c n ,c 1 ,..., c n -1 ). Негациклический код — это константациклический код с λ=-1. [8] Квазициклический код обладает тем свойством, что для некоторого s любой циклический сдвиг кодового слова на s мест снова является кодовым словом. [9] Двойной циркулянтный код — это квазициклический код четной длины с s =2. [9] Квазискрученные коды и мультискрученные коды являются дальнейшими обобщениями констациклических кодов. [10] [11]
См. также [ править ]
- Код BCH
- Двоичный код Голея
- Проверка циклическим избыточностью
- Юджин Прейндж
- Код Рида – Мюллера
- Тернарный код Голея
Примечания [ править ]
- ^ Ван Линт 1998 , с. 76
- ^ Ван Линт 1998 , с. 80
- ^ Хилл 1988 , стр. 159–160.
- ^ Блахут 2003 , Теорема 5.5.1.
- ^ Хилл 1988 , стр. 162–163.
- ^ П. Файер, Э, П. (1959). Класс двоичных кодов, исправляющих множественные ошибки для ненезависимых ошибок. Лаборатория разведывательных систем Sylvania, Маунтин-Вью, Калифорния, представитель. РГБ-Э-2, 1959 г.
- ^ Вэй Чжоу, Шу Линь, Халед Абдель-Гаффар. Коррекция пакетов или случайных ошибок на основе кодов Fire и BCH. ITA 2014: 1–5 2013.
- ^ Ван Линт 1998 , с. 75
- ^ Jump up to: Перейти обратно: а б МакВильямс и Слоан 1977 , с. 506
- ^ Айдын, Нух; Сиап, Ирфан; К. Рэй-Чаудхури, Диджен (2001). «Структура одногенераторных квазискрученных кодов и новых линейных кодов». Проекты, коды и криптография . 24 (3): 313–326. дои : 10.1023/А:1011283523000 . S2CID 17376783 .
- ^ Айдын, Нух; Халилович, Айдин (2017). «Обобщение квазискрученных кодов: мультискрученные коды» . Конечные поля и их приложения . 45 : 96–106. arXiv : 1701.01044 . дои : 10.1016/j.ffa.2016.12.002 . S2CID 7694655 .
Ссылки [ править ]
- Блахут, Ричард Э. (2003), Алгебраические коды для передачи данных (2-е изд.), Cambridge University Press , ISBN 0-521-55374-1
- Хилл, Рэймонд (1988), Первый курс теории кодирования , Oxford University Press , ISBN 0-19-853803-0
- МакВильямс, ФДж ; Слоан, NJA (1977), Теория кодов, исправляющих ошибки , Нью-Йорк: издательство North-Holland Publishing, ISBN 0-444-85011-2
- Ван Линт, Дж. Х. (1998), Введение в теорию кодирования , Тексты для аспирантов по математике 86 (3-е изд.), Springer Verlag , ISBN 3-540-64133-5
Дальнейшее чтение [ править ]
- Ранджан Бозе , Теория информации, кодирование и криптография , ISBN 0-07-048297-7
- Ирвинг С. Рид и Сюэмин Чен, Кодирование с контролем ошибок для сетей передачи данных , Бостон: Kluwer Academic Publishers, 1999, ISBN 0-7923-8528-4 .
- Скотт А. Ванстон , Пол К. Ван Оршот , Введение в коды с исправлением ошибок в приложениях , ISBN 0-7923-9017-2
Внешние ссылки [ править ]
- Заметки Джона Гилла (Стэнфорд) - Заметки № 3, 8 октября, Раздаточный материал № 9. Архивировано 23 октября 2012 г. в Wayback Machine , EE 387.
- Конспекты занятий Джонатана Холла (МГУ) – Глава 8. Циклические коды – стр. 100–123.
- Дэвид Терр. «Циклический код» . Математический мир .
В эту статью включены материалы из циклического кода PlanetMath , который распространяется по лицензии Creative Commons Attribution/Share-Alike License .