Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Контрольная СГВМ / Контрольная_СГВМ_ПугачВ.doc
Скачиваний:
60
Добавлен:
01.04.2014
Размер:
185.34 Кб
Скачать

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

Достоинства: можно получить большое Хэммингово расстояние и легко поддаются декодированию.

Для любых m и r<m существует код Рида-Маллера, для которого:

n=2m – разрядность кодового вектора,

k=1+C(1)(m)+…+C(r)(m) – число информационных бит,

n-k=1+C(1)(m)+…+C(m-r-1)(m) – число проверочных бит,

d=2(m-r) – минимальный вес кодового слова.

Рассмотрим следующую совокупность векторов над полем из двух элементов (0 и 1).

Пусть V0 – вектор длины 2m, все компоненты которого равны 1, V1,V2,…, Vm – строки матрицы, столбцами которой являются все возможные двоичные наборы длины m. Определим следующим образом векторное произведение двух векторов:

u=(a1,a2,…,an), v(b1,b2,…,bn)

uv=(a1b1,a2b2,…,anbn).

Рассмотрим совокупность векторов, образованную произведениями векторов vi, взятых по два, три, четыре и т.д. вплоть до m.

v0 = ( 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 )

v4 = ( 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 )

v3 = ( 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 )

v2 = ( 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 )

v1 = ( 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 )

v4v3 = ( 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 )

v4v2 = ( 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 )

v4v1 = ( 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 )

v3v2 = ( 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 )

v3v1 = ( 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 )

v2v1 = ( 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 )

v4v3v2= …

v4v3v1= …

v4v2v1= …

v3v2v1= …

v4v3v2v1= …

Код Рида-Маллера порядка r определяется как код, базисом которого являются вектор v0,v1,…,vm и все векторные произведения из r или меньшего числа этих векторов. Очевидно, что скалярное произведение двух векторов равно 0, если число единиц в векторном произведении четно и равно 1, если оно нечетно.

Для любого вектора v v2=v. Единственным произведением, содержащим нечетное число единиц, является произведение всех векторов v1,…,vm. Векторное произведение любого вектора из базиса кода порядка r на любой вектор из базиса кода порядка m-r-1 является вектором из базиса кода порядка m-1 и в нем содержится четное число единиц. Таким образом, любой вектор, принадлежащий коду порядка r, ортогонален любому базисному вектору, являющемуся произведением m-r-1 или меньшего числа векторов v1,…,vm. Из этого также следует, что код Рида-Маллера порядка r является нулевым пространством матрицы, образованной векторами v0,v1,…,vm и всеми векторными произведениями этих векторов в количестве не более чем m-r-1, взятыми в качестве ее строк.

Важнейшая особенность кодов Рида-Маллера состоит в том, что декодирование для них может быть проведено достаточно простым способом.

Задача состоит в том, чтобы определить значения a по полученному вектору, несмотря на возможные ошибки. Очевидно, что сумма первых четырех компонент как элементов поля из двух элементов (0 и 1) равна нулю для всех базисных векторов, за исключением v2v1. Таким образом, если ошибок не было, то:

b1 +b2 +b3 +b4 = a21

b5 +b6 +b7 +b8 = a21

b9 +b10 +b11 +b12 = a21

b13+b14 +b15 +b16 = a21

В общем случае можно записать 2(m-r) независимых соотношений. Ошибки могут сделать некоторые из этих соотношений несправедливыми, но каждая ошибка влияет только на одно из соотношений. Следовательно, если выбрать a21 равным величине, появляющейся наиболее часто в выражениях, то при любой комбинации из 2(m-r-1)-1 или меньшего числа ошибок значение a21 будет декодировано правильно. Аналогичным образом определяются a31, a32, a41, a43. После того как они определены, выражение

a43v4v3+a42v4v2+a41v4v1+a32v3v2+a31v3v1+a21v2v1

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

r’=a0v0+a4v4+a3v3+a2v2+a1v1=(b1’,b2’,…,bn’),

так, что следующая совокупность коэффициентов может быть определена аналогичным путём:

a1=b1’+b2’ a1=b5’+b6

a1=b3’+b4’ a1=b7’+b8

a1=b9’+b10’ a1=b11’+b12

a1=b13’+b14’ a1=b15’+b10

Идентичные уравнения можно записать для a2, a3, a4. Если предположить, что ошибок не было, то

r’-a4v4-a3v3-a2v2-a1v1=a0v0.

Этот вектор должен быть нулевым, если a0=0 и единичным, если a0=1, поэтому a0 нужно выбирать равным тому из этих элементов, который появляется в векторе чаще.

Поскольку при такой системе декодирования могут быть исправлены все комбинации из 2(m-r-1)-1 или меньшего числа ошибок, то минимальное расстояние должно быть равно самое меньшее 2(2(m-r-1)+1)=2(m-r)-1, а так как все кодовые векторы имеют четный вес, то оно должно быть равно самое меньшее 2(m-r).

Схему для определения того, суммы каких именно символов полученного вектора должны быть равны заданному информационному символу, можно описать следующим образом. Расположим символы в каждом из первоначальных векторов v1,…,vm так как показано на рисунке, и назовем компоненту, соответствующую j-ому нулю в векторе vi, и компоненту, соответствующую j-ой единице в векторе vi, парными компонентами вектора vi. Тогда 2(m-1) сумм парных компонент vi используются для определения ai. Далее, каждая из 2(m-2) сумм четырех компонент, используемых для определения aij, образуется некоторыми двумя парными компонентами вектора vi и парными для этих уже выбранных компонент компонентами вектора vj. Аналогично каждое соотношение, определяющее aijk, представляет собой сумму некоторых парных компонент вектора vi плюс сумму компонент вектора vj, парных к этим компонентам, и сумму компонент вектора vk, парных к уже выбранным компонентам, так, что в каждой сумме получается всего 8 слагаемых. Этот процесс можно продолжить аналогичным образом.

Соседние файлы в папке Контрольная СГВМ