
- •1.1. Повідомлення та інформація
- •1.2. Моделі інформаційних систем
- •1.4. Предмет теорії інформації та кодування
- •2.2. Кількісна міра інформації
- •2.3. Ентропія та її властивості
- •2.4. Безумовна ентропія
- •2.5. Умовна ентропія
- •2.6. Ентропія об'єднання двох джерел
- •3.1. Продуктивність дискретного джерела та швидкість передачі інформації
- •4.1. Квантування сигналів
- •4.2. Інформаційні втрати
- •4.3. Продуктивність неперервного джерела та швидкість передачі інформації
- •IhlilhM
- •4.4. Пропускна здатність . . . .
- •5.1. Класифікація кодів і характеристики їх
- •5.4. Способи подання кодів
- •5.6. Основні теореми кодування для каналів
- •6.1. Класифікація первинних кодів
- •6.2. Нерівномірні двійкові первинні коди
- •6.2.1. Код морзе
- •6.2.2. Число-імпульсні коди
- •6.3. Рівномірні двійкові первинні коди
- •6.3.1. Числові двійкові коди
- •6.3.2. Двійково-десяткові коди
- •6.3.4. Двійково-шістнадцятковий код ;;.-,-.
- •6.3.5. Рефлексні коди
- •7.1. Двійкові коди,
- •7.1.2. Код із перевіркою на непарність
- •7.1.3. Код із простим повторенням
- •7.2. Недвійкові коди, що виявляють помилки
- •7.2.1. Код із перевіркою за модулем q
- •7.2.2. Код із повторенням
- •8"6 90472 "100562 І' • шТрИховє зОбраЖєння кодового сло-
- •8.1. Двійкові групові коди
- •8.1.1. Лінійний систематичний груповий (блоковий) код
- •8.1.2. Коди хеммінга
- •8.1.4. Коди боуза - чоудхурі - хоквінгема
- •8.1.5. Код файра
- •8.1.6. Код із багатократним повторенням
- •8.3.2. Узагальнений код хеммінга
- •8.3.3. Коди боуза - чоудхурі - хоквінгема
- •8.3.4. Коди ріда - соломона
- •8.3.6. Недвійковий ланцюговий код
- •9.1. Вірогідність передачі кодованих повідомлень
- •9.2. Стиснення інформації"
- •9.2.1. Способи стиснення даних при передачі
- •9.2.2. Способи стиснення даних при архівації
- •Збіжного рядка
- •9.3. Збільшення основи коду
- •0Сзезс99е8с0е1с10d1c242d5c3d2c6d8cbd6e8c0
- •VosooooooooooooooooOvJvJ
8.3.4. Коди ріда - соломона
Ці коди використовуються для передачі інформації по каналах з високою інтенсивністю завад, коли виникають помилки кратності два й більше, пачки помилок, а також сполучення пачок і однократних помилок.
Коди Ріда — Соломона (PC) можна розглядати як окрему гілку циклічних кодів БЧХ, головна відмінність якої полягає в тому, що поле локаторів коду PC збігається з полем його елементів. Отже, якщо поле GF{q) коду БЧХ має q окремих елементів (потужність поля дорівнює #), а поле GF(qh) його локаторів — ф елементів і є А-розширенням поля GF(q), то в коді PC і елементи, і локатори їх знаходяться в одному полі, тобто належать полю GF(q) [2, 3, 24, 25, 32]. Іншими словами, код PC — це вироджена форма коду БЧХ, у якого h = 1.
Довжина коду PC визначається виразом
n = q-\,
jxtq — основа (алфавіт) коду.
На підставі цього виразу коди PC називаються відносно короткими.
Код PC, як і код БЧХ, може задаватися твірною чи перевірною матрицею або твірним чи перевірним поліномом. Найпоширенішим є метод побудови коду PC на основі твірного полінома Р(х). Перевірну матрицю Я часто використовують для вивчення деяких властивостей коду PC і його зв'язку з систематичними кодами.
Твірний поліном коду PC із виправленням vBn помилок є добутком кількості перевірних елементів r = 2vBn і мінімальних поліномів для спектра елементів поля GF(q) [2, 24]:
P(x) = (x-pj° )(x-p^+1)...(x-p-/o^-l)? (8.42)
де /3 7о , Р -70 +1, • • • Р J'°+r~l — спектр твірних коренів полінома. Степінь полінома (8.42) дорівнює кількості r = 2vBn = n- k перевірних елементів.
Для спрощення побудови коду PC вибирають j0 - 1 і дістають звичайну форму коду PC:
/>(х) = (х-р1)(х~р2)...(х-рг) = П(^-Ру). (8-43)
Перевірний поліном Н(х) коду PC знаходять як частку від ділення (xqA + 1) на Р(х).
Мінімальна кодова відстань коду PC становить
4ы„ = Г+ 1=2^+1,
тобто код PC — це код з максимально досяжною кодовою відстанню.
Надмірність коду PC визначається виразом
=z:=2vBn
виразом
ад п q-V
а його швидкість -
R_k_n-r_q-2vBTl-l
п п q-\
Перевірна матриця коду PC має вигляд [2,24,32].
рУ'о("-1)рУо(л-2) p-Zoj
Н =
(8.44)
р(УО+1)("-1)р(Уо+1)(и-2) рУо+lj |р(УО+г-1)(и-1)р(Уо+'-1Хл-2) nJo+r~li
де Р — примітивний елемент поля GF(q);j0 — примітивний корінь твірного полінома; п — довжина коду; г — кількість його перевірних елементів.
Слід звернути увагу на те, що другий праворуч стовпець у матриці (8.44) відповідає спектру коренів твірного полінома (8.42). У матриці (8.44) перелік стовпців по / йде справа наліво, причому 0 < і < п - 1. Перелік елементів у кодовому блоці має бути таким самим. Перелік рядків у матриці (8.44) йде зверху вниз поу0 <j <j0 + r - 1. Можливий й інший порядок переліку, треба лише додержуватися збігу послідовності твірних коренів Р(х) із другим праворуч стовпцем матриці (8.44).
Найпростіше коди PC реалізуються для алфавіту q = 2і, де / = = 2,4,8,....
198
199
Якщо
поле має основу 2(q
=
2і),
то
операції віднімання збігаються
з операціями додавання; тому скрізь
знак « — » можна замінити
на знак « + », зокрема у виразах (8.42) та
(8.43).
Декодування кодів PC виконується відповідно до загальних прикладів декодування [2, З,24,25, 32]. При виправленні помилок дістають значення локаторів L/ - £У, що відповідають спотвореним елементам, і значення помилок для кожного спотвореного елемента. Помилки виправляють, віднімаючи значення помилки від значення відповідного елемента.
Розглянемо кілька прикладів побудови коду PC.
Нехай q = 24 = 16. Тоді код PC може мати довжину я = ^-1 = 16-1 = = 15. Примітивний елемент (З є GF(q) такий, що |315 = 1. Всі ненульові елементи (З7 (0 <j < 14) утворюють множину локаторів коду, яких буде 15. Вони збігаються з першим рядком матриці (8.44) при j0 = 1 або з другим рядком приу0 = 0. Всі вони разом із нулем є елементами поля GF(q) локаторів й елементів коду.
Для виконання розрахунків з елементами поля GF{q) треба користуватися адитивною та мультиплікативною формами їх подання (див. табл. 5.3 для q = 16). Нехай VBn = 2. Виберемо jQ= 1, тоді згідно з (8.43) матимемо
Р(х) = (х- (3)(л - (32)(л - (33)(х - (З4) = (х + Р)(* + Р2)(х + Р3)(х + Р4) = = хА + р,3х3 + р6*2 + Р3х + Р10 = х4 + ІЗ*3 + 12л2 + 8х + 7.
При кодуванні таким поліномом r = 2ven = 4. Знаючи, що п - 15, дістаємо к-п-г- 15 - 4 = 11, тобто це — систематичний (15, П)-код із кодовою відстанню dmin = r+l=4+l = 5. Інформаційний блок цього коду має 11 шістнадцяткових елементів (44 біт).
Якщо ж при тій самій основі коду PC (q = 16 = 24) та довжині п = 15 побудувати код, що виправляє три помилки (уи = 3), то r = 2vBn = 2-3 = 6 і приу0 = 0 твірний поліном коду матиме вигляд
Р(х) = (х + (3°)(х + р'Х* + р2)(х + р3)(х + p4)(jc + (З5) = х6 + PV + + р12;с4 4-р1^3 + Р2х2 + Р4х + Р5 = jc6 + 10х5 + 15.x4 + 2х3 + 4л2 + Зх + 6.
У цьому коді k = n-r=\5-6 = 9, din = r+l=6+l=7, тобто його інформаційний блок має дев'ять елементів по чотири біти кожний, а всього 36 біт.
Кодування кодом PC виконують одним із відомих способів кодування циклічного коду. Можливе також несистематичне кодування множенням інформаційного полінома Q(x) степеня 8 на твірний поліном Р(х) степеня 6. При цьому дістають поліном степеня 8 + 6 = 14 завдовжки п = 15 елементів. Однак більш поширеним є кодування діленням добутку xrQ(x) інформаційного полінома Q(x) на твірний поліном Р(л), як це характерно для циклічних кодів з подальшим додаванням остачі R(x) від ділення:
F(x) = xrQ(x) Є R(x).
8.3.5. БАГАТОВИМІРНІ ІТЕРАТИВНІ КОДИ
Для передачі інформації широко використовуються ітеративні коди, які відзначаються високою здатністю виявляти помилки. Так, відомий двійковий ітеративний код [12], що реалізує
200
перевірку на парність за рядками та стовпцями, виявляє всі одно-, дво- й трикратні помилки, деякі чотирикратні помилки і помилки більшої кратності, розташовані в кутах прямокутника, а також деякі шести-, восьмикратні та інші помилки.
Для усунення вказаного недоліку в даний двовимірний ітеративний код вводиться додаткова перевірка по діагоналі. Утворений таким чином тривимірний ітеративний код дає змогу виявляти більшість помилок кратністю до п'яти та деякі помилки більшої кратності.
Підвищення швидкості передачі інформації тривимірним ітеративним кодом можна досягнути збільшенням базового блока його інформаційних елементів.
Подальше підвищення здатностей кодів цього класу виявляти та виправляти помилки можливе при збільшенні кількості перевірок, тобто вимірності ітеративного коду. Так, якщо базовий блок інформаційних елементів сформувати у вигляді куба або прямокутного паралелепіпеда, то можна збільшити здатність ітеративного коду виявляти та виправляти помилки, ввівши додаткові перевірки по діагоналі. Через великі обсяги інформації* що потребують зберігання й оброблення, функції кодування та декодування таких кодів бажано доручити спеціалізованій ЕОМ.
Підвищення швидкості ітеративного коду можна досягти збільшенням основи q коду. При q > 2 зростає обсяг інформації, що передається, оскільки кількість інформації, яка міститься в одному елементі кодової комбінації, визначається основою q коду.
При визначенні перевірних елементів ітеративних #-кодів виконують додавання елементів комбінацій базового коду за модулем q. Помилки виявляються за аналогією з двійковим кодом — порівнянням перевірних елементів кожного рядка (стовпця), прийнятих з каналу і здобутих обчисленнями.
Спотворений елемент виправляється так. Якщо не виконується перевірка /-го рядка та у'-го стовпця, то елемент, що знаходиться на їх перетині, заміняється елементом, який був обчислений додаванням цього прийнятого елемента (помилкового) до значення, знайденого відніманням значення, прийнятого з каналу, й обчисленням перевірних елементів /-го рядка (абоу-го стовпця).
При виникненні кількох помилок в одному рядку (стовпці) вони виправляються послідовно для тих стовпців (рядків), де помилки є поодинокими.
Слід відзначити, що кратність помилок, які виправляються #-кодом, вища порівняно з двійковим кодом, оскільки виправлення одного елемента #-коду відповідає виправленню log2q двійкових одиниць.
201