КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Двійкові коди, що виправляють однократні помилки
Коди, що виправляють одну помилку, повинні мати мінімальну кодову відстань dmin Найбільшого поширення серед двійкових кодів, що виправляють однократні помилки, одержали систематичні (лінійні, групові) блокові коди: · Хеммінга, · ітеративний (Елайеса), · з багатократним повторенням, · інверсний, · та несистематичний код Бергера. Систематичний код з dmin =3, який називають кодом Хеммінга, використовується для виправлення однієї або виявлення двох помилок. Систематичний (груповий, лінійний) код довжиною n з кількістю інформаційних символів k позначають як
Як відомо, у систематичних кодах перевірочні елементи можна одержати шляхом додавання за модулем 2 визначених інформаційних елементів. Систематичний код можна задавати твірною (породжувальною) матрицею, якій притаманні такі особливості: – матриця має k рядків та n стовпців; – кожний елемент матриці є або “0”, або “1”; – кожний рядок матриці являє собою кодову комбінацію коду, що цією матрицею задається, і повинен мати не менше трьох одиниць; – всі рядки матриці повинні бути лінійно незалежними; – поелементна сума за модулем 2 будь-якої кількості рядків матриці (яка, до речі, завжди буде комбінацією коду) повинна мати не менше трьох одиниць. Підібрані за даних умов вихідні комбінації, які називають базисними, записуються у вигляді матриці: Gn , k = де aji та bjm – відповідно i- ий інформаційний та m- ий перевірочний елементи j- ої базисної кодової комбінацій. Твірну матрицю (8.2) можна подати у вигляді двох підматриць: інформаційної (Еk) та перевірочної (Сr , k ). Інформаційну підматрицю зручно подати у канонічній формі як одиничну підматрицю розміром Еk = Перевірочна підматриця Сr , k будується підбором r -розрядних двійкових послідовностей з числом одиниць у кожному рядку не менше за dmin –1=2. При цьому необхідно враховувати, що сума за модулем 2 будь-яких рядків цієї підматриці не повинна мати менше за dmin –2=1 одиниць, тобто однакові набори є неприпустимими. Рядки у перевірочній підматриці можна міняти місцями. При цьому можна одержати декілька варіантів твірних матриць. Твірна матриця дозволяє одержати всі кодові комбінації систематичного групового коду. Це досягається послідовним додаванням за модулем 2 рядків матриці у всіх можливих сполученнях (тобто першого і другого рядків матриці; першого і третього; першого і четвертого;...; другого і третього; другого і четвертого;...; першого, другого і третього; першого, другого і четвертого;..., нарешті усіх k рядків). Нульова комбінація дописується окремо. Задача 8.2.1 Побудувати твірну матрицю і визначити всі комбінації двійкового систематичного (групового) коду, здатного виправляти поодинокі помилки для Розв’язання. Кількість інформаційних розрядів коду Згідно з правилом побудови підматриці За інформаційну підматрицю Еk твірної матриці обирають одиничну підматрицю. Дописавши до неї перевірочну підматрицю, одержимо твірну матрицю систематичного коду, здатного виправляти однократні помилки, G 6,3 = За допомогою одержаної твірної матриці G 6,3 визначимо всі 8 кодових комбінацій, які належать до цього систематичного коду:
Опираючись на твірну, матрицю можна побудувати перевірочну матрицю Нn , r , яка налічує r рядків та n стовпців. Перевірочна матриця складається з двох підматриць: підматриці
Перевірочна матриця (8.3) дозволяє спростити операції кодування і декодування. Запишемо довільну кодову комбінацію коду у вигляді V = [ a 1 a 2 a 3... ak b 1 b 2 b 3 ... br ], де ai та b m– відповідно інформаційні та перевірочні елементи. Позиції, які зайняті одиницями у і -ому рядку підматриці Dk , r , визначають ті інформаційні елементи, які повинні брати участь у формуванні і -ого перевірочного елемента bi: b 1 = b 11 a 1Å b 21 a 2Å... Å bk 1 ak, b 2 = b 12 a 1Å b 22 a 2Å...Å bk 2 ak, (8.4)
br = b 1 r a 1Å b 2 r a 2Å... Å bkrak. Існування співвідношень (8.4), що пов’язують інформаційні та перевірочні елементи кодової комбінації, дає можливість при декодуванні виявляти та виправляти помилки в кодових комбінаціях, які можуть з’являтися через спотворення елементів у двійковому каналі під час їх передачі. Аналізуючи результати перевірки цих співвідношень у прийнятій кодовій комбінації, можна отримати певну інформацію про помилки. Задача 8.2.2 Побудувати перевірочну матрицю двійкового систематичного коду, здатного виправляти однократні помилки з Розв’язання. Для побудови перевірочної матриці систематичного коду, здатного виправляти однократні помилки, скористуємось твірною матрицею, побудованою для одержання 8 комбінацій систематичного коду у задачі 8.2.1. Перевірочна матриця
Перевірочні елементи, згідно матриці b 1 = a 1Å a 2; b 2 = a 1Å a 3; b 3 = a 2Å a 3. За допомогою одержаної перевірочної матриці b 1 =1Å1=0; b 2 =1Å1= 0; b 3 =1Å1= 0, а для комбінації b 1 =0Å1=1; b 2 =0Å1=1; b 3 =1Å1= 0. Таким чином, кодові комбінації систематичного (групового) коду будуть мати вигляд:
Позначимо кодову комбінацію, яка пройшла через двійковий канал та підлягає декодуванню, V * = [ a де a Для з’ясування питання, чи відповідає кодова комбінація sj = b 1 j a Кожний елемент sj дає інформацію про те, задовольняють чи ні символи кодової комбінації V *відповідному рівнянню системи (8.4). Набір елементів (s 1,..., sr) називається кодовим синдромом або пізнавачем помилок. Якщо синдром складається з одних нулів, кодова комбінація V * є дозволеною, тобто задовольняє правилам побудови коду. Такий результат буде мати місце, якщо в кодовій комбінації немає помилок або конфігурація помилок є такою, що вона не може бути виявлена цим кодом. Присутність хоча б одного ненульового елемента в комбінації синдрому вказує на спотворення хоча б одного елемента у прийнятій кодовій комбінації. Значення синдрому при однократній помилці у прийнятій кодовій комбінації збігаються із стовпцями перевірочної матриці. Порівнюючи кодовий синдром з стовпцями матриці Нn , r , можна знайти місце помилки у комбінації по їх збігу. У разі помилки виправляється той розряд кодової комбінації, який відповідає порядковому номеру стовпця матриці, що збігається з синдромом. Задача 8.2.3 Для групового
Визначити синдром для виправлення однократних помилок в комбінаціях цього коду. Показати на прикладі виправлення однократної помилки. Розв’язання. Згідно з (8.3) перевірочна матриця
Перевірочні елементи, згідно матриці b 1 = a 1Å a 2Å a 3; b 2 = a 1Å a 2Å a 4; b 3 = a 1Å a 3Å a 4. Користуючись ними, закодуємо комбінацію b 1=1Å1Å0=0; b 2=1Å1Å1=1; b 3=1Å0Å1=0; таким чином, комбінація групового коду буде мати вигляд У декодері для виявлення і виправлення однократної помилки у прийнятій кодовій комбінації систематичного групового коду виконують перевірку – визначають синдром помилки. Для одержаної перевірочної матриці елементи синдрому помилки визначаються таким чином: s 1 = a s 2 = a s 3 = a Знайдемо і виправимо однократну помилку, наприклад, у комбінації
Вкорочені систематичні (групові) коди утворюються з повних кодів, при цьому одержують dmin не меншу, ніж у повного систематичного коду зі збереженням такої ж кількості перевірочних елементів, тобто Одержання вкороченого коду ґрунтується на тому, що через те що з загального числа 2 k комбінацій первинного коду, які потрібно закодувати, наприклад, систематичним (n –1, k –1)-кодом, 2 k –1 комбінацій починаються з ”0”, а 2 k –1 – з “1”, то і після кодування 2 k –1 комбінацій систематичного групового (n, k)-коду також будуть починатися з ”0”. Будемо ці 2 k –1 комбінацій розглядати як новий груповий код. Тоді, якщо вони належать вихідному ( Вкорочений груповий код легко одержати з повного (n, k)-коду, який поданий у вигляді твірної матриці Gn , k розміру (k ´ n) вигляду (8.2), шляхом виключення з матриці першого рядка і першого стовпця. У результаті цього одержимо твірну матрицю Gn– 1, k– 1 нового вкороченого коду розмірності (k –1)´(n –1), що утворює 2 k– 1 комбінацій вкороченого коду. Для одержання перевірочної матриці Hn –1, r вкороченого коду досить виключити перший стовпець з матриці Hn , r відповідного повного коду. Після вкорочення на один символ групового Наведена вище інтерпретація коду Хеммінга ґрунтується на сучасних уявленнях про цей код як різновид лінійних кодів. Згідно з цією теорією можна побудувати не менше, ніж n!/ r! різноманітних лінійних кодів, що мають dmin =3, тобто кодів Хеммінга. Кожен із цих кодів задається однією із перестановок стовпців перевірочної матриці. Всі ці коди еквівалентні за корегувальною здатністю; відрізняються вони розташуванням перевірочних символів, співвідношеннями, яким відповідають символи, та, звичайно, наборами кодових комбінацій. Код, запропонований Р.В.Хеммінгом ще до формування теорії лінійних кодів, – це один із варіантів вищеозначених кодів, для якого перевірочна матриця будується так, що i -ий стовпець її є двійковим поданням числа і. За такою умовою кодовий синдром, у разі виникнення однократної помилки, буде двійковим поданням номера спотвореного розряду кодової комбінації. Перевірочні розряди в такому коді розташовані на позиціях з номерами Задача 8.2.4 Закодувати традиційним двійковим кодом Хеммінга комбінацію двійкового простого коду Розв’язання. Згідно із співвідношенням (8.1) при
b 1 b 2 a 1 b 3 a 2 a 3 a 4 b 4 a 5 Під матрицею для полегшення процесу кодування записана у загальному вигляді кодова комбінація, де через ai та bj позначені інформаційні та перевірочні елементи відповідно. Користуючись побудованою перевірочною матрицею b 1= a 1Å a 2Å a 4Å a 5=1Å0Å1Å0=0; b 2= a 1Å a 3Å a 4=1Å1Å1=1; b 3= a 2Å a 3Å a 4=0Å1Å1=0; b 4 = a 5=0. Кодова комбінація традиційного коду Хеммінга буде мати вигляд: Виконаємо декодування одержаної кодової комбінації з виправленням однократної помилки. Припустимо, що при передачі сталося спотворення і замість Для виявлення і виправлення помилки у декодері виконують перевірки на парність з урахуванням перевірочних елементів, тобто знаходять синдром помилки згідно перевірочній матриці s 1= b 1Å a 1 Å a 2Å a 4Å a 5=0 Å1Å0Å0Å0=1; s 2= b 2Å a 1Å a 3Å a 4=1Å1Å1Å0=1; s 3= b 3Å a 2 s 4= b 4Å a 5=0Å0=0. Маємо синдром Надмірність коду
Розширений код Хеммінга використовується, головним чином, для виявлення помилок. Цей код має кодову відстань dmin = 4 і забезпечує виявлення одно-, дво- і трикратних помилок завдяки введенню додаткового перевірочного елемента b 0, який одержують за допомогою перевірки кодової комбінації коду Хеммінга на парність. При цьому перевірочний елемент, який розміщується, як правило, на початку кодової комбінації, дорівнює “0” при парній кількості одиниць у кодовій комбінації і “1” – при непарній. Декодування розширеного коду Хеммінга виконують у зворотній послідовності: спершу виконують загальну перевірку прийнятої кодової комбінації на парність, а потім – перевірку кодової комбінації без b 0. При цьому можуть виникнути ситуації, які показані у таблиці 8.1. Таблиця 8.1
Для одержання вкорочених кодів Хеммінга з dmin = 3 або 4 керуються правилами, що були викладені при побудові вкорочених систематичних кодів.
Код з багатократним повторенням (з повторенням без інверсії) є роздільним лінійним кодом. Код містить k інформаційних та mk перевірочних елементів, де m – число повторень первинної кодової комбінації. У цьому коді кожні k перевірочних елементів є просто повтореннями інформаційних елементів bj = bj + k = bj + 2 k = … = bj +(m –1) k = aj, j = 1... k. Кодова відстань коду з багатократним повторенням dmin = m +1, тому при m ³2 код здатен не тільки виявляти, але і виправляти помилки. Процедура виявлення помилок у прийнятій кодовій комбінації полягає у порівнянні однойменних інформаційних і перевірочних розрядів. Їх незбіг говорить про наявність помилок у прийнятій комбінації. При виправленні помилок у комбінації застосовується мажоритарний принцип виправлення для кожного інформаційного елемента, тобто "голосування за більшістю", коли за істинне значення приймається те, яке частіше зустрічається у цьому інформаційному і відповідних йому перевірочних елементах. Код дозволяє виправляти всі помилки кратності від 1 до цілої частини числа m /2 та деякі помилки більш високої кратності у залежності від розміщення помилок у комбінації. Надмірність коду Задача 8.2.5 Закодувати кодову комбінацію Розв’язання. Число Покажемо процес з багатократним повторенням якщо виникла однократна помилка, вектор якої У декодері прийнята кодова комбінація розбивається на три частини по 5 елементів у кожній і виконується порозрядне їх порівняння: 01101, у результаті якого виявляється помилка у п’ятому розряді. Застосувавши “голосування за більшістю”, можна виправити цю помилку. Виправлена комбінація двійкового первинного коду буде мати вигляд 01101. Надмірність коду
Ітеративні коди (коди Елайеса), якщо вони орієнтовані на виправлення однократних помилок, являють собою, як правило, двомірні лінійні коди з кодуванням рядків і стовпців завадостійкими кодами з перевіркою на парність. Такі ітеративні коди мають мінімальну кодову відстань dmin =4 і у режимі виправлення помилок дозволяють виправити будь-які однократні помилки і деякі помилки більшої кратності. Рекомендується на практиці використовувати коди з числом перевірочних елементів 8, 9 та 16. Для коду з При виправленні помилки у декодері визначають рядок і стовпець, для яких не виконуються умови парності. Спотворений інформаційний елемент, розташований на місці перетину рядка і стовпця, для яких не виконується перевірка на парність, інвертується. Надмірність двомірних ітеративних кодів: для для для Задача 8.2.6 Закодувати ітеративним кодом (Елайеса), що виправляє однократні помилки, комбінацію Розв’язання. Розбиваємо комбінацію первинного коду на три частини, записуємо у вигляді матриці з трьома рядками та робимо перевірку на парність елементів кожного рядка і кожного стовпця, дописуючи перевірочні елементи: Таким чином отримали кодовий двовимірний масив (комбінацію) ітеративного коду з перевірками на парність, який має мінімальну кодову відстань dmin =2´2=4 (добуток мінімальних кодових відстаней кодів, якими захищаються рядки та стовпці). У лінію (канал) зв’язку передаються послідовно рядок за рядком двійкові елементи отриманого масиву: 01100101110101010001. Довжина цієї комбінації Припустімо, що при передачі у результаті спотворень виникла помилка і на приймач прийшла комбінація 01100101010101010001. При декодуванні у декодері прийняту двійкову послідовність знову записують у вигляді матриці, структура якої співпадає зі структурою масиву після кодування, і виконують перевірку на парність кожного рядка і кожного стовпця цієї матриці: Помилка знаходиться на перетині рядка та стовпця, які мають непарну кількість одиниць. В даному випадку це другий рядок та четвертий стовпець. Для виправлення помилки цей елемент інвертуємо, тобто замість прийнятого “0” записуємо “1”. Тоді виправлена інформаційна частина комбінації буде мати вигляд Надмірність коду
Несистематичний код Бергера є найбільш поширеним з несистематичних кодів. У такому коді перевірочні елементи, які дописуються у кінці первинної кодової комбінації, – це інвертований запис двійкового числа, яке дорівнює сумі вагів тих елементів інформаційної частини кодової комбінації, на яких розташовані одиниці. При цьому число Для виправлення помилки в декодері підраховується сума S * вагів тих інформаційних розрядів прийнятої кодової комбінації, на яких розташовані одиниці. Далі інвертуються перевірочні розряди прийнятої кодової комбінації; отримане двійкове число переводиться у десяткове і віднімається від обчисленої суми S *. Якщо в інформаційній частині кодової комбінації є однократна помилка, то модуль різниці буде збігатись із вагою спотвореного розряду; для виправлення помилки відповідний інформаційний розряд потрібно інвертувати. Надмірність коду Задача 8.2.7 Закодувати несистематичним кодом Бергера, що виправляє однократні помилки, комбінацію двійкового первинного коду Розв’язання. Для побудови коду Бергера визначимо кількість перевірочних елементів з виразу r Далі визначимо сумарну вагу комбінації первинного коду, для чого треба додати послідовно вагу першого, третього, четвертого і п’ятого розрядів, одержане десяткове число записати у двійковій формі п’ятьма двійковими розрядами, інвертувати його і дописати до комбінації первинного коду: Зробимо припущення, що при передачі по лінії зв’язку в результаті дії завад у кодовій комбінації виникає помилка і на приймач надходить комбінація 1001100110. Для виявлення помилки у декодері спочатку виконуються такі ж операції, що і у кодері, тобто визначається сума вагів тих інформаційних елементів, на місцях яких розташовані “1”: Надмірність коду Висновки
Дата добавления: 2014-01-11; Просмотров: 6172; Нарушение авторских прав?; Мы поможем в написании вашей работы! |