Линейный код: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
Нет описания правки
откат неформатного текста, вероятного самопиара.
Строка 1: Строка 1:
В области математики и теории информации '''линейный код''' — это важный тип [[Обнаружение и исправление ошибок#Блоковые коды|блокового кода]], использующийся в схемах определения и коррекции ошибок. Линейные коды, по сравнению с другими кодами, позволяют реализовывать более эффективные алгоритмы кодирования и декодирования информации.
В области математики и теории информации линейный код — это важный тип блокового кода, использующийся в схемах определения и коррекции ошибок. Линейные коды, по сравнению с другими кодами, позволяют реализовывать более эффективные алгоритмы кодирования и декодирования информации. Совершенно справедливы требования [Питерсон У., Уэлсон Э. Коды, исправляющие ошибки. М.: Мир, 1976, стр.25] к кодам, исправляющим ошибки и аппаратуре, выполняющей эти исправления: «Для того чтобы коды были высокоэффективными, они должны быть длинными, потому что в этом случае влияние шума усредняется по большему числу символов. Такой код может иметь значение гугола возможных кодовых слов и во много раз большее число возможных слов на выходе… тремя аспектами проблемы декодирования являются: 1) построение кодов, способных в должной мере исправлять ошибки (для этого обычно требуется, чтобы коды были длинными); 2) разработка практически осуществимого метода кодирования; 3) отыскание метода принятия решения на приемнике, т.е. метода исправления ошибок». Здесь необходимо добавить четвертое новое требование – возможность выполнения машинной арифметики для этих кодов в режиме реального времени. Всем этим требованиям также удовлетворяют многофазные и интегральные коды, которые обладают возможностью исправлении любого количества ошибок и пачек ошибок в режиме реального времени и также являются цикличискими кодами. Интегральный код представляет собой любую половину многофазного кода, и поэтому все его элементы присущи ему. Интегральный код лежит в основе финитного уточнения формализации арифметики Д. Гильберта [Гильберт Д., Бернайс П. ОСНОВАНИЯ МАТЕМАТИКИ. Логические исчисления и формализации арифметики (Серия: «Математическая логика и основания математики»). М.: Наука, 1979.], где операция порождения цифры или ее фигуры сопровождается добавлением цифры 1; а после каждой цифры 1, не являющейся концом данной фигуры и состоящей из одних единиц, идет следующая за ней единица. Эти коды могут иметь любую длину, а исправление ошибок в этих кодах производится без математических вычислений [см., например, А. с. 987681 (СССР). Регистр // Открытия. Изобретения. 1983. № 1. и Кочергин В.И. Теория многомерный цифровых множеств в приложениях к электроприводам и системам электропита-ния. -Томск: Изд-во Том. ун-та, 2002. - 444 с.] и основывается на существовании непрерывных множеств логических единиц и нулей в их структуре. По этой причине представленное выше определение эффективности линейных совершенных кодов является не-достаточным и фактически устаревшим. Теория многомерных цифро-векторных множеств [Кочергин В.И. Теория многомерных цифро-векторных мно-жеств. Томск: Изд-во Том. ун-та, 2006] позволила внести ясность в ряд существовавших много лет оши-бочных мнений математической формальной теории кодирования информации и машинной арифметики. Это, прежде всего, необоснованное деление кодов на арифметические коды и неарифметические. Практически все современное оборудование основано на использовании «арифметической» двоичной системы счисления, и, следовательно, двоичные коды являются наиболее важными. Тем не менее важны и недвоичные коды. Все коды позиционных систем счисления, и не только позиционных, где в их основе лежит натуральный ряд чисел, являются арифметическими. Ярким примером таких кодов являются многофазные коды, составляющие основу многочисленных электротех-нических устройств. Появление многофазных напряжений связано с именем российского электротехника Михаила Осиповича Доливо-Добровольского, который в 1889 создал трехфазный асинхронный двигатель и осуществил первую электропередачу трехфазного тока. В 70-х годах прошлого века автор разработал серию цифровых устройств, которые нашли отражения в десятках А.С. СССР систем электропитания и электроприводов в многофазных кодах, а также машинную арифметику для этих кодов. Основой геометрических аналогий устройств цифровой техники здесь служить идея упаковки пространства, которая была предложена в «новой геометрии» основоположником современной структурной кристаллографии и петрографии академиком Е.С.Федоровым, и наше предложение нумерации этого цифрового пространства. Особенность этой геометрии – в физическом существовании системы n-мерных измерений, что имеет первостепенное значение в рассматриваемых областях цифровой техники.

В области математики и теории информации линейный код — это важный тип блокового кода, использующийся в схемах определения и коррекции ошибок. Линейные коды, по сравнению с другими кодами, позволяют реализовывать более эффективные алгоритмы кодирования и декодирования информации. Совершенно справедливы требования [Питерсон У., Уэлсон Э. Коды, исправляющие ошибки. М.: Мир, 1976, стр.25] к кодам, исправляющим ошибки и аппаратуре, выполняющей эти исправления: «Для того чтобы коды были высокоэффективными, они должны быть длинными, потому что в этом случае влияние шума усредняется по большему числу символов. Такой код может иметь значение гугола возможных кодовых слов и во много раз большее число возможных слов на выходе… тремя аспектами проблемы декодирования являются: 1) построение кодов, способных в должной мере исправлять ошибки (для этого обычно требуется, чтобы коды были длинными); 2) разработка практически осуществимого метода кодирования; 3) отыскание метода принятия решения на приемнике, т.е. метода исправления ошибок». Здесь необходимо добавить четвертое новое требование – возможность выполнения машинной арифметики для этих кодов в режиме реального времени. Всем этим требованиям также удовлетворяют многофазные и интегральные коды, которые обладают возможностью исправлении любого количества ошибок и пачек ошибок в режиме реального времени и также являются цикличискими кодами. Интегральный код представляет собой любую половину многофазного кода, и поэтому все его элементы присущи ему. Интегральный код лежит в основе финитного уточнения формализации арифметики Д. Гильберта [Гильберт Д., Бернайс П. ОСНОВАНИЯ МАТЕМАТИКИ. Логические исчисления и формализации арифметики (Серия: «Математическая логика и основания математики»). М.: Наука, 1979.], где операция порождения цифры или ее фигуры сопровождается добавлением цифры 1; а после каждой цифры 1, не являющейся концом данной фигуры и состоящей из одних единиц, идет следующая за ней единица. Эти коды могут иметь любую длину, а исправление ошибок в этих кодах производится без математических вычислений [см., например, А. с. 987681 (СССР). Регистр // Открытия. Изобретения. 1983. № 1. и Кочергин В.И. Теория многомерный цифровых множеств в приложениях к электроприводам и системам электропита-ния. -Томск: Изд-во Том. ун-та, 2002. - 444 с.] и основывается на существовании непрерывных множеств логических единиц и нулей в их структуре. По этой причине представленное выше определение эффективности линейных совершенных кодов является недостаточным и фактически устаревшим. Теория многомерных цифро-векторных множеств [Кочергин В.И. Теория многомерных цифро-векторных множеств. Томск: Изд-во Том. ун-та, 2006] позволила внести ясность в ряд существовавших много лет ошибочных мнений математической формальной теории кодирования информации и машинной арифметики. Это, прежде всего, необоснованное деление кодов на арифметические коды и неарифметические. Практически все современное оборудование основано на использовании «арифметической» двоичной системы счисления, и, следовательно, двоичные коды являются наиболее важными. Тем не менее важны и недвоичные коды. Все коды позиционных систем счисления, и не только позиционных, где в их основе лежит натуральный ряд чисел, являются арифметическими. Ярким примером таких кодов являются многофазные коды, составляющие основу многочисленных электротехнических устройств. Появление многофазных напряжений связано с именем российского электротехника Михаила Осиповича Доливо-Добровольского, который в 1889 создал трехфазный асинхронный двигатель и осуществил первую электропередачу трехфазного тока. В 70-х годах прошлого века автор разработал серию цифровых устройств, которые нашли отражения в десятках А.С. СССР систем электропитания и электроприводов в многофазных кодах, а также машинную арифметику для этих кодов. Основой геометрических аналогий устройств цифровой техники здесь служить идея упаковки пространства, которая была предложена в «новой геометрии» основоположником современной структурной кристаллографии и петрографии академиком Е.С.Федоровым, и наше предложение нумерации этого цифрового пространства. Особенность этой геометрии – в физическом существовании системы n-мерных измерений, что имеет первостепенное значение в рассматриваемых областях цифровой техники.



== Основы ==
== Основы ==
Строка 169: Строка 166:


=== Коды Хемминга ===
=== Коды Хемминга ===
Исторически "коды Хемминга" должны называться кодами Р.Фишера, который был представлен в 1942г (Fisher R.A. The theory of confouding in factor to thr theory).
Истроически "коды Хемминга" должны называться кодами Р.Фишера и был представлен в 1942г (Fisher R.A. The theory of confouding in factor to thr theory).
[[Код Хемминга|Коды Хемминга]] — простейшие линейные коды с минимальным расстоянием 3, то есть способные исправить одну ошибку. Код Хемминга может быть представлен в таком виде, что ''синдром''
[[Код Хемминга|Коды Хемминга]] — простейшие линейные коды с минимальным расстоянием 3, то есть способные исправить одну ошибку. Код Хемминга может быть представлен в таком виде, что ''синдром''


Строка 289: Строка 286:
: <math>\sum_{i=0}^t {n\choose i} \le 2^{n-k}</math>.
: <math>\sum_{i=0}^t {n\choose i} \le 2^{n-k}</math>.


Коды, удовлетворяющие этой границе с равенством, называются ''совершенными''. К совершенным кодам относятся, например, коды Хемминга. Часто применяемые на практике коды с большой корректирующей способностью (такие, как коды Рида-Соломона) не являются совершенными.
Коды, удовлетворяющие этой границе с равенством, называются ''совершенными''. К совершенным кодам относятся, например, коды Хемминга.{perfect codes - совершенные коды - 1. По Хеммингу это коды с исправлением ошибок, в которых шары Хемминга с центром в кодовых словах заполняют все пространство Хемминга, не пересекаясь. Все эти шары имеют радиус e (т. е. код способен исправлять e ошибок), а их центры (кодовые слова) отделены один от другого расстоянием (2e + 1); при этом шары не соприкасаются между собой (т. е. не имеют общих слов), их поверхности находятся на минимальном расстоянии друг от друга, и этот промежуток не содержит других точек. 2. По теории многомерных цифро-векторных множеств совершенные коды это систематические коды со 100% исправлением, например всех одиночных ошибок, которые содержат информационную и контрольную части кода, а во всех ячейках многомерного цифрового пространства этого кода располагаются штатные цифры и соответствующие им цифры с одной ошибкой в информационной или контрольной его частях. Причем в каждой из ячеек располагается только одна цифра.}
Существует ошибочное мнение о малом числ совершенных и квазисовершенных кодов, исправляющих ошибки с минимальными затратами оборудования. Например, в классической работе [У.Питерсон, Э.Уэлдон Коды, исправляющие ошибки "МИР", 1976 на стр.139 говорится, что "имеются некоторые результаты показывающие, что соверщшенных кодов мало..."]и далее в книге А.М. Яглом и И.М. Яглом Вероятность и информация утверждается, что это "доказано финскмии учеными а. Тиетявяйненом и А. Перко и, независимо от них, В.А. Зиновьевым и В.К. Леоньтьевым в СССР..."
В работах[Кочергин В.И. Теория многомерных цифро-векторных множеств. Томск: Изд-во Том. ун-та, 2006; Кочергин В.И. Теория многомерных цифро-векторных множеств в технических системах управления: Дис. д-ра техн. наук. Томск: ТПУ, 2003.] показано, что число совершенных и квазисовершенных кодов двоичной системы счисления неограниченно велико. Также доказана возможность построения совершенных многофазных кодов. При этом использование двоичных и многофазных совершенных и квазисовершенных кодов стало практически реализуемо при минимальных затратах оборудования в системах передачи, хранения информации и выполнении арифметических операций в режиме реального времени с предельно возможным управляемым быстродействием. Существующая до настоящего времени теория кодирования основана на использовании достаточно сложного аппарата современных абстрактных разделов математики и в первую очередь высшей алгебры. Изложить этот абстрактный материал так, чтобы он был доступен инженеру, практически невозможно. Да и аппаратура, реализующая исправление ошибок на основании представления пространства Хеммингаи требует обработки большого числа поверочных матриц, не позволяет даже только для передачи и приема информации работать в режиме реального времени. При этом вопрос о возможности выполнения машинной арифметики в этих кодах, поскольку они считались неарифметическими, даже не рассматривался.
Доказательство большого числа совершенных кодов опирается на симметрию многомерного пространства Е.С. Федорова. В недалеком прошлом симметрию называли «гармонией мира», а соображения симметрии и инва-риантности давно играют в физике значительную роль. Как отмечал лауреат Нобелевской премии Е.Вигнер, «интуитивные представления о симметрии играли важную роль в мышлении великих физиков прошлого, хотя явное использование симметрии в старой физике ограничивалось в основном кристаллографией», а вывод Е.С. Федоровым 230 кристаллографических пространственных групп «по праву считается шедевром анализа».
Теория многомерных цифро-векторных множеств придала идее упаковки пространства Е.С. Федорова цифро-векторное представление и расширила понятие симметрии цифрового пространства.



=== Энергетический выигрыш ===
=== Энергетический выигрыш ===

Версия от 10:47, 19 февраля 2010

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

Основы

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

В системах связи возможны несколько стратегий борьбы с ошибками:

  • обнаружение ошибок в блоках данных и автоматический запрос повторной передачи поврежденных блоков — этот подход применяется в основном на канальном и транспортном уровнях;
  • обнаружение ошибок в блоках данных и отбрасывание поврежденных блоков — такой подход иногда применяется в системах потокового мультимедиа, где важна задержка передачи и нет времени на повторную передачу;
  • исправление ошибок (англ. forward error correction) применяется на физическом уровне.

Коды обнаружения и исправления ошибок

Корректирующие коды — коды, служащие для обнаружения или исправления ошибок, возникающих при передаче информации под влиянием помех, а также при её хранении.

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

С кодами, исправляющими ошибки, тесно связаны коды обнаружения ошибок. В отличие от первых, последние могут только установить факт наличия ошибки в переданных данных, но не исправить её.

В действительности, используемые коды обнаружения ошибок принадлежат к тем же классам кодов, что и коды, исправляющие ошибки. Фактически, любой код, исправляющий ошибки, может быть также использован для обнаружения ошибок (при этом он будет способен обнаружить большее число ошибок, чем был способен исправить).

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

Блоковые коды

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

Если исходные бит код оставляет неизменными, и добавляет проверочных, такой код называется систематическим, иначе несистематическим.

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

  • способность исправлять как можно большее число ошибок,
  • как можно меньшая избыточность,
  • простота кодирования и декодирования.

Нетрудно видеть, что приведенные требования противоречат друг другу. Именно поэтому существует большое количество кодов, каждый из которых пригоден для своего круга задач.

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

Линейные пространства

Порождающая матрица

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

,

где называется порождающей матрицей линейного пространства.

Это соотношение устанавливает связь между векторами коэффициентов и векторами . Перечисляя все векторы коэффициентов можно получить все векторы . Иными словами, матрица порождает линейное пространство.

Проверочная матрица

Другим способом задания линейных пространств является описание через проверочную матрицу.

Пусть  — линейное k-мерное пространство над полем и  — ортогональное дополнение . Тогда по одной из теорем линейной алгебры, размерность равна . Поэтому в существует r базисных векторов. Пусть базис в .

Тогда любой вектор удовлетворяет следующей системе линейных уравнений:

Или в матричной форме: ,

где — проверочная матрица.


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

Формальное определение

Линейный код длины n и ранга k является линейным подпространством C размерности k векторного пространства , где  — конечномерное поле из q элементов. Такой код с параметром q называется q-арным кодом (напр. если q = 5 — то это 5-арный код). Если q = 2 или q = 3, то код представляет собой двоичный код, или тернарный соответственно.

Линейный (блоковый) код — такой код, что множество его кодовых слов образует -мерное линейное подпространство (назовем его ) в -мерном линейном пространстве, изоморфное пространству -битных векторов.

Это значит, что операция кодирования соответствует умножению исходного -битного вектора на невырожденную матрицу , называемую порождающей матрицей.

Пусть  — ортогональное подпространство по отношению к , а  — матрица, задающая базис этого подпространства. Тогда для любого вектора справедливо:

.

Свойства и важные теоремы

Минимальное расстояние и корректирующая способность

Расстоянием Хемминга (метрикой Хемминга) между двумя кодовыми словами и называется количество отличных бит на соответствующих позициях, то есть число «единиц» в векторе .

Минимальное расстояние линейного кода является минимальным из всех расстояний Хемминга всех пар кодовых слов.

Вес вектора — расстояние Хемминга между этим вектором и нулевым вектором, иными словами — число ненулевых компонент вектора.

Теорема 1:

Минимальное расстояние линейного кода равно минимальному из весов Хемминга ненулевых кодовых слов:

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

Расстояние между двумя векторами удовлетворяет равенству , где  — вес Хемминга вектора . Из того, что разность любых двух кодовых слов линейного кода также является кодовым словом линейного кода, вытекает утверждение теоремы:


Минимальное расстояние Хемминга является важной характеристикой линейного блокового кода. Она определяет другую, не менее важную характеристику — корректирующую способность:

, здесь угловые скобки обозначают округление «вниз».

Корректирующая способность определяет, какое максимальное число ошибок в одном кодовом слове код может гарантированно исправить.

Поясним на примере. Предположим, что есть два кодовых слова A и B, расстояние Хемминга между ними равно 3. Если было передано слово A, и канал внес ошибку в одном бите, она может быть исправлена, так как даже в этом случае принятое слово ближе к кодовому слову A, чем B. Но если каналом были внесены ошибки в двух битах, декодер может посчитать, что было передано слово B.

Число обнаруживаемых ошибок — число ошибок, при котором код может судить об ошибочной ситуации. Это число равно

.

Теорема 2 (без доказательства):

Если любые столбцов проверочной матрицы H линейного (n, k)-кода линейно независимы, то минимальное расстояние кода равно по меньшей мере d. Если при этом найдутся d линейно зависимых столбцов, то минимальное расстояние кода равно d в точности.

Теорема 3 (без доказательства):

Если минимальное расстояние линейного (n, k)-кода равно d, то любые столбцов проверочной матрицы H линейно независимы и найдутся d линейно зависимых столбцов.

Коды Хемминга

Истроически "коды Хемминга" должны называться кодами Р.Фишера и был представлен в 1942г (Fisher R.A. The theory of confouding in factor to thr theory). Коды Хемминга — простейшие линейные коды с минимальным расстоянием 3, то есть способные исправить одну ошибку. Код Хемминга может быть представлен в таком виде, что синдром

, где  — принятый вектор,

будет равен номеру позиции, в которой произошла ошибка. Это свойство позволяет сделать декодирование очень простым.

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

Код Рида-Маллера [en:Reed-Muller code] — линейный двоичный блочный код. При определенном построении он может быть систематическим. В общем случае код Рида-Маллера не является циклическим.Коды Рида-Маллера задаются следующими параметрами для любых значений m и r, называемого порядком кода, меньшего, чем m: - длина кодового слова n=2m; - длина информационной части k=1+Cm1+…+Cmr; - длина проверочной части n-k=1+Cm1+…+Cmm-r-1; - минимальное кодовое расстояние dmin=2m-r. Код Рида-Маллера определяется при помощи порождающей матрицы, состоящей из базисных векторов. Строится по правилу: - пусть V0 – вектор, все компоненты которого равны 1; - пусть V1, V2,…, Vm – строки матрицы, столбцами которого являются все двоичные наборы длины m. Код Рида-Маллера r-го порядка содержит в качестве базиса векторы V0, V1,…, Vm и все компонентные произведения r или меньшего числа этих векторов.

Шаблон:Sect-stub

Общий метод кодирования линейных кодов

Линейный код длины n с k информационными символами является k-мерным линейным подпространством, поэтому каждое кодовое слово является линейной комбинацией базисных векторов подпространства:

.

Либо с помощью порождающей матрицы:

, где


Это соотношение есть правило кодирование, по которому информационное слово отображается в кодовое

Общий метод обнаружения ошибок в линейном коде

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

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

Линейные циклические коды

Несмотря на то, что исправление ошибок в линейных кодах уже значительно проще исправления в большинстве нелинейных, для большинства кодов этот процесс все ещё достаточно сложен. Циклические коды, кроме более простого декодирования, обладают и другими важными свойствами.

Циклическим кодом является линейный код, обладающий следующим свойством: если является кодовым словом, то его циклическая перестановка также является кодовым словом.

Слова циклического кода удобно представлять в виде многочленов. Например, кодовое слово представляется в виде полинома . При этом циклический сдвиг кодового слова эквивалентен умножению многочлена на по модулю .

В дальнейшем, если не указано иное, мы будем считать, что циклический код является двоичным, то есть … могут принимать значения 0 или 1.

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

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

С помощью порождающего полинома осуществляется кодирование циклическим кодом. В частности:

  • несистематическое кодирование осуществляется путем умножения кодируемого вектора на : ;
  • систематическое кодирование осуществляется путем «дописывания» к кодируемому слову остатка от деления на , то есть .

Коды CRC

Коды CRC (cyclic redundancy check — циклическая избыточная проверка) являются систематическими кодами, предназначенными не для исправления ошибок, а для их обнаружения. Они используют способ систематического кодирования, изложенный выше: «контрольная сумма» вычисляется путем деления на . Ввиду того, что исправление ошибок не требуется, проверка правильности передачи может производиться точно так же.

Таким образом, вид полинома g(x) задает конкретный код CRC. Примеры наиболее популярных полиномов:

название кода степень полином
CRC-12 12
CRC-16 16
CRC-CCITT 16
CRC-32 32

Коды БЧХ

Коды Боуза-Чоудхури-Хоквингема (БЧХ) являются подклассом двоичных циклических кодов. Их отличительное свойство — возможность построения кода БЧХ с минимальным расстоянием не меньше заданного. Это важно, потому что, вообще говоря, определение минимального расстояния кода есть очень сложная задача.

Математически построение кодов БЧХ и их декодирование используют разложение порождающего полинома на множители в поле Галуа.

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

Коды Рида-Соломона (РС-коды) фактически являются недвоичными кодами БЧХ, то есть элементы кодового вектора являются не битами, а группами битов. Очень распространены коды Рида-Соломона, работающие с байтами (октетами).

Преимущества и недостатки линейных кодов

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

- Хотя линейные коды, как правило, хорошо справляются с редкими, но большими пачками ошибок, их эффективность при частых, но небольших ошибках (например, в канале с АБГШ), менее высока.

Оценка эффективности

Эффективность кодов определяется количеством ошибок, которые тот может исправить, количеством избыточной информации, добавление которой требуется, а также сложностью реализации кодирования и декодирования (как аппаратной, так и в виде программы для ЭВМ).

Граница Хемминга и совершенные коды

Пусть имеется двоичный блоковый код с корректирующей способностью . Тогда справедливо неравенство (называемое границей Хемминга):

.

Коды, удовлетворяющие этой границе с равенством, называются совершенными. К совершенным кодам относятся, например, коды Хемминга. Часто применяемые на практике коды с большой корректирующей способностью (такие, как коды Рида-Соломона) не являются совершенными.

Энергетический выигрыш

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

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

Применение

Линейные коды применяются:

  • в системах цифровой связи, в том числе: спутниковой, радиорелейной, сотовой, передаче данных по телефонным каналам.
  • в системах хранения информации, в том числе магнитных и оптических.

Линейные коды применяются в сетевых протоколах различных уровней.

См. также