Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Жураковський Ю. П., Полторак В. П. Теорія інфор...doc
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
3.24 Mб
Скачать

8.3.2. Узагальнений код хеммінга

Серед #-кодів найпростішими кодами, які мають алгебрич­ну структуру й забезпечують нескладні процедури кодування та декодування, є лінійні блокові коди, що виправляють одну помилку. В класі двійкових кодів існує аналог їх — код Хеммін-га. Хоча між цими кодами є суттєві відмінності, #-код часто називають узагальненим кодом Хеммінга [8], маючи на увазі уза­гальнення коду на недвійковий алфавіт q > 2.

На відміну від двійкового символами #-коду є елементи #-поля: його перевірна матриця Я не є множиною всіх послідов­них номерів позицій елементів коду в блоці завдовжки п. В ^-ко­ді, крім визначення місця помилки в блоці, необхідно ще знати її значення є [8].

Розглянемо матричне подання узагальненого коду Хеммін­га. Його перевірна матриця

Н=Щ,І=Щ, j=fr\ (8.39)

має розмір гхп. Тут / — номер рядка; j — номер стовпця; г — кількість перевірних елементів у блоці; п — довжина блока.

На відміну від двійкового коду матриця Н є підматрицею матриці

Л =[airl i=\lr\9 z = \\,qr\

розміром г х q\ у стовпцях якої послідовно записуються всі r-компонентні ^-вектори (Я= А при q = 2). Стовпці Н мають бути ненульовими, різними та лінійно незалежними. Для цьо­го в матрицю Н необхідно ввести всі вектори-стовпці матриці А, що мають однакову першу ненульову компоненту 8.

Оскільки ця компонента відповідає умові 1 < 5 < q - 1, кіль­кість її можливих значень дорівнює q - 1. Тому, виключивши з А нульовий вектор-стовпець, дістанемо кількість векторів-стовпців у матриці Н (отже, й довжину кодового блока) п = = (qr - \)l{q - 1), що відповідає [32].

Із побудови матриці Н випливає, що г її перших векторів-стовпців, кожний з яких містить єдину ненульову компоненту 8, утворюють діагональну підматрицю розміром г х г. Ця об-

ста вина вказує на зручні позиції для розміщення г перевірних елементів у блоці.

Загалом кодовий вектор має вигляд

X=bl...bi...bral...aj...ak, (8.40)

де а- - ^-інформаційні символи джерела; У=|1,&|; k — кількість інформаційних елементів вектора Х{к = п - г); Ьі — перевірні

елементи кодового блока (/ = |і,г|), причому

Ь(=8-1^пи+г- (8.41)

Вираз (8.41) можна дістати з матричного рівняння Шт = 0 підносно перевірних елементів, цеХт— транспонований век-

Указане у (8.40) розміщення перевірних елементів не є єдино можливим, але воно забезпечує мінімальний обсяг обчислень при кодуванні та декодуванні. При цьому вираз (8.41) установ­лює оптимальний алгоритм кодування.

Кодовий блок (8.40) покомпонентно передається в канал зв'яз­ку, де він може бути спотворений завадою. Не вдаючись до суті цього явища, процес спотворень зручно подати як

7 =Х+Е,

деР— спотворений я-вимірний кодовий вектор на виході ка­налу передачі; Е — «-вимірний вектор помилки з єдиною не-иульовою компонентою є (в припущенні одиничної помилки). Першим кроком при декодуванні за аналогією з двійковим кодом є обчислення r-компонентного перевірного синдрому

S = HYT = Le.

ВекторS —цезначення помилки е(\ <є<q- 1), помножене на стовпець L перевірної^матриці Я, який відповідає позиції спотвореного елемента в Y. Його називають локатором помил­ки. Оскільки всі вектори-стовпці в Н мають першу ненульову компоненту 8, в S перша ненульова компонента визначається ниразом

sx = 8 є.

Це зумовлює другий крок процедури декодування — визна­чення помилки

є = 5'18"~1 = sxlb.

194

195

Із визначення S = Нїт -Le випливає третій крок процедури декодування — знаходження локатора помилки

L=Serl=S/e.

На четвертому кроці процедури декодування впорядкованим перебором стовпців перевірної матриці Н і порівнянням їх із локатором L за збігом визначається позиція спотвореного еле­мента в кодовому блоці.

П'ятим й останнім кроком декодування є виправлення по­милки, яке загалом виконується відніманням значення помил­ки є від спотвореного елемента, знайденого в 7 за його локато­ром L. Далі спотворений елемент у блоці замінюється результа­том віднімання і після виключення перевірних елементів одер­жувач дістає інформаційну частину кодового блока.

Усе описане вище стосується коду з довільною основою q. Зазначимо, що #-коди прийнято поділяти на дві великі групи: коди з простою основою q - /?, дер є {3,5,7,11,13,...}; коди з основою q, що розкладається. Найбільший практичний інте­рес викликає тільки окремий випадок цих кодів при q = 27, коли символи мають інформаційну ємність / бітів і можуть бути зі­ставлені з усіма /-розрядними двійковими числами.

Вибір q впливає на визначення операцій додавання, відні­мання, множення і ділення під час виконання процедур коду­вання та декодування. Якщо основа q — просте число, то зруч­но використати апарат обчислень за модулем цього числа. Якщо ж q = 2і, то необхідно звернутися до алгебричного апа­рата обчислень за модулем незвідного полінома (див. п.5.3). Символи коду при цьому ставляться у відповідність елементам скінченного поля порядку q.