Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекція 4.8 Илюстр.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
430 Кб
Скачать
☆

2.Алгоритми кодування-декодування лу-коду

Оскільки в основі ЛУ-коду лежать властивості CЛК, то в цьому коді принципово можуть бути використані відомі алгоритми кодування-декодування. У основі цих алгоритмів лежить той факт, що будь-яке спотворення в одній з груп розрядів αі переводить початкове число з робочого діапазону [0, P = ) у діапазон [P, R = pk∙Р), тобто приводить до збільшення початкового числа А < Р на деяку величину ΔА = li·Ri. Тут li та Ri = R/ pi – цілі числа. Дійсно, якщо початкове число

А = α1, α2 ., αi…,αm, αk

спотворено по основі pi і має вигляд

= α1, α2 ., ,…, αm, αk

де

і = {αi + Δαi } (mod pi),

то це еквівалентно наступному перетворенню

= (α1, α2, ..., αі,…, αm, αk) + (0, 0, ..., Δαi,…, 0, 0) =

= (α1, α2 ,..., { αi + Δαi } (mod pi),…, αm, αk)

При цьому величина спотворення перевищує величину робочого діапазону Р

ΔА = (0, 0 ..., Δαi ..., 0, 0) > Р

оскільки тільки число виду

ΔА = li·Ri = li·R/pi

має всі лишки, окрім лишку по основі pi, такі, що дорівнюють нулю. Але ΔА = li·R/pi > P = R/pk оскільки навіть при li = 1 величина R/pi > R/pk з тієї причини, що pk > pi .

Отже, сума = А + ΔА > Р, тобто спотворене число вийшло за межі робочого діапазону Р і потрапило в діапазон [P, R).

Відомі з алгоритми кодування-декодування якраз і використовують цей факт. Найбільш опрацьований і реалізований практично алгоритм нулізації.

2.1.Алгоритм нулізації

Суть алгоритму нулізації зводиться до того, що як при кодуванні, так і при декодуванні по першим m лишкам αi (i = 1, 2,..., m) із спотвореного числа

= (α1, α2 ..., { αi + Δαi } (mod pi),…, αm, αk)

послідовно формуються, так звані мінімальні числа вигляду

t1 = (α1, , , ..., , ),

t2 = (0, (α2 – ) (mod p2), ,…, , ),

t3 = (0, 0, (α3 - - ) (mod p3), ., , ),

........................

tn = (0, 0, 0 ...,(αn - ) (mod pm), ),

де tі (наприклад, t3) – мінімальне із усіх можливих чисел, які мають лишок по основі pі (наприклад, р3) такий, що на і – тому кроці нулізації дорівнює різниці по відповідному модулю між початковим значенням цього символу (наприклад, а3) і сумою значень символів із цим же номером, які одержані на попередній кроках (наприклад, + ). Звернемо увагу також на те, що оскільки на цьому кроці нулізації усі символи із номерами (наприклад, із = 1, 2) дорівнюють нулю, то це означає, що відповідне мінімальне число є кратним усім pі із номерами (наприклад, р1, р2), тобто є кратним добутку (наприклад, р1∙ р2).

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

Cума мінімальних чисел Т = має наступні дві властивості. По-перше, лишки цієї суми по всіх основах, окрім рk завжди дорівнюють лишкам початкового числа Р. По-друге, відомо, що величина цієї суми завжди менше величини робочого діапазону Т < Р, тобто величина Т лежить а межах робочого діапазону і для неспотворених чисел Т = А.

Неважко помітити, що в останньому випадку в разі відсутності спотворень Т = А процес одержання величини αk є процесом кодування початкового числа ЛУ-кодом, оскільки значення А залежить тільки від цього початкового числа і не залежить від невідомої при кодуванні величини лишку по контрольному модулю рк (це означає, що знати значення αк до кодування не має потреби). Цей лишок (шукана контрольна ознака) αк формується як сума по модулю рк проміжних величин tі (і = 1, 2, ..., n) чи їх лишків по основі рк, тобто

αk = (mod рк) = (mod рк).

Після кодування цілком сформоване число як набір лишків по усім основам, включаючи контрольну:

А = (α1, α2 ..., { αi + Δαi } (mod pi),…, αm, αk)

передається в канал.

При декодуванні по прийнятому, можливо спотвореному числу знову формується величина T, яка віднімається з числа . Це приводить до того, що отримана різниця

Г = – T = (0, 0, 0 ..., , γ) = k∙Р

має по всіх основах, окрім контрольної, лишки, що дорівнюють нулю, а по контрольній

γ = (αk – (Т mod рк )) (mod рк) = (k∙Р) (mod рк),

тобто

- T = (0, 0 ., 0, ...,0, (k·Р) (mod рк)),

де k може приймати будь-яке значення із діапазону k = 0, 1, 2, ..., рk –1.

Для неспотворених чисел, тобто при k = 0, величина γ = 0, для спотворених − γ ≠ 0. Вище доведено, що при рk ≥ 2·рm·pm-1 є взаємно однозначна відповідність між величиною помилки Δαi і величиною γ, що дає можливість, отримавши γ, визначити місце і величину помилки, тобто здійснити її виправлення.

Недоліками цього алгоритму є:

1) обчислення величини T здійснюється послідовно, оскільки значення чергової величини tj може бути визначеним тільки при відомих попередніх ti (і = 1, 2, ..., j -1), що виключає можливість розпаралелювання процесу і досягнення при цьому високої швидкодії алгоритму;

2) багаторозрядність мінімальних чисел tj, оскільки перше мінімальне число потребує N розрядів, друге – (N – b)..., m - не – (N – (m – 1)∙b) розрядів, що вимагає наявність ЗП великій ємності;

3) відсутність розрахункових співвідношень між Δαi і γ, що потребує використовувати таблиці відповідності типу (γ→ Δαi).

Для ілюстрації можливостей алгоритму розглянемо два приклади.

Приклад 2. Хай необхідно закодувати з використанням алгоритму нулізації початковий код 110110, вважаючи, що можлива тривалість пакету спотворень b = 2. Тоді можливе розбиття початкового коду на три (n = 3) дворозрядні групи α1 =11, α2 =01, α3 =10, s = 4, а як умовні основи можна вибрати р1 = 4, р2 = 5, р3 = 7. При цьому значення контрольної основи (рк > 2·рn ·рn-1 = 2·5·7 = 70) можна вибрати рк = 71, що вимагає для свого відображення семи розрядів. В результаті цього для кодування формується код

А = 11.01.10.0000000.

Перше мінімальне число t1 повинне мати залишок по першій основі, який дорівнює 11(2)= 3(10). Таким числом є t1 = 3 або при представленні в СЛК з вибраними основами

t1 = 11.11.011.0000011.

Друге мінімальне число t2 повинне мати залишок по першій основі, рівний нулю (тобто число, яке є кратним 4), а по другій

((α2 - ) (mod p2) = (1 – 3) (mod 5) = 11(2).

Мінімальним числом, що має такі залишки по першій і другій основах, є t2 = 8, тобто

t2 = 00.11.001.0001000.

Третє мінімальне число t3 повинне мати нульові залишки по перших двох основах (тобто число, яке є кратним 20), а по третьому

((α3 - - ) (mod p3) = (2 – 3 - 1) (mod 7) = 5 = 101(2).

Мінімальним числом, що має такі залишки, є t3 = 40, тобто

t3 = 00.00.101.0101000.

Тоді сума цих чисел Т= рівна 51, тобто

Т = 11.01.10.0110011.

Код Т = А є шуканим результатом кодування.

Звернемо увагу на те, що величини t1, t2, t3 формуються послідовно, а також на їх велику розрядність.

Приклад 3. Декодувати з використанням алгоритму нулізації для умов прикладу 2 код = 11.01.01.0110011, в якому спотворена третя пара розрядів. Як і раніше

t1 = 11.11.011.0000011 = 310.

t2 = 00.11.001.0001000 = 810.

Для третього мінімального числа t3

((α3 - - ) (mod p3) = (1 – 3 - 1) (mod 7) = 4 = 100(2).

Мінімальним числом (тобто числом, яке є кратним 20), що має такі залишки, є t3 = 60, тобто

t3 = 00.00.100. 0111100

При цьому

Т = =71,

тобто оскільки Т (mod 71) = 0, то

Т = 11.01.01.0000000

і

γ = (αk – (Т mod рк )) (mod рк) = (0110011 - 0000000) (mod 71) = 51.

Оскільки γ ≠ 0, то робиться вивід про наявність в декодованому числі помилки. Оскільки, при цьому

γ = (k·Р) (mod рк) = (k·140) (mod 71),

то k = 10, тому що 1400 (mod 71) = 51.

Нескладно переконатися в тому, що декодоване число A = 1471 може бути отримано тільки в результаті спотворення початкового числа А = 51 на величину ΔА = 1420 = = 00.00.110.0000000, тобто при спотворенні третьої групи розрядів на величину Δα3 = 110, після чого корекція результату здійснюється просто:

α3 = ( 3 - Δα3 ) (mod 7) – (1 – 6) (mod 7) = 2 = 10(2).

Порівнявши набутого значення з початковим, неспотвореним (умова прикладу 1), переконуємося в тому, що корекція проведена вірно.