Припустимо, що
.Тоді для b=b1…bn=aE,
, отримуємотобто
. Отже, взаємно-однозначне відображення групи двійкових слів довжини m за допомогою заданої матриці E зберігає властивості групової операції, що означає, що кодові слова утворюють групу.Блоковий код називається груповим, якщо його кодові слова утворюють групу.
Більшість код, що коректують, є лінійними кодами. Лінійні коди - це такі коди, у яких контрольні символи утворюються шляхом лінійної комбінації інформаційних символів. Крім того, що коректують коди є груповими кодами. Групові коди (Gn) - це такі коди, які мають одну основну операцію. При цьому, повинна дотримуватися умова замкнутості (тобто, при складанні двох елементів групи виходить елемент що належить цій же групі). Число розрядів в групі не повинне збільшуватися. Цій умові задовольняє операція порозрядного складання по модулю 2. У групі, крім того, має бути нульовий елемент.
Наприклад, нижче приведені кодові комбінації, що є групою чи ні.
1) 1101 1110 0111 1011 – не група, оскільки немає нульового елементу
2) 0000 1101 1110 0111 – не група, оскільки не дотримується умова замкнутості (1101+1110=0011)
3) 000 001 010 011 100 101 110 111 - група
4) 000 001 010 111 - підгрупа
Якщо код є груповим, то найменша відстань між двома кодовими словами дорівнює найменшій вазі ненульового слова.
Це витікає із співвідношення
.При використанні групової коди непоміченими залишаються ті і лише ті помилки, які відповідають рядкам помилок, в точності рівним кодовим словам.
Такі рядки помилок переводять одне кодове слово в інше.
Отже, вірогідність того, що помилка залишиться невиявленою, дорівнює сумі вірогідності всіх рядків помилок, рівних кодовим словам.
Розглянемо завдання оптимізації декодування групової коди з двійковою матрицею кодування Е. Требуєтся мінімізувати вірогідність того, що
.Схема декодування складається з групи G всіх слів, які можуть бути прийняті (#G=2n). Оскільки кодові слова B утворюють нормальну (нормальність виходить з комутативності G) підгрупу G, то безлічі G можна додати структуру таблиці: записуватимемо в один рядок ті елементи G, які є членами одного суміжного класу G по B. Перший рядок, відповідний нульовому слову з G, буде тоді всіма кодовими словами з B, тобто
. У загальному випадку, якщо , то рядок, що містить gi (суміжний клас giB ), має вигляд .Лідером кожного з таких побудованих суміжних класів називається слово мінімальної ваги.
Кожен елемент g з G однозначно представляється у вигляді суми gi+bj де
- лідер відповідного суміжного класу і .Безліч класів суміжності групи утворюють чинник-групу, яка є чинник-множина безлічі G по відношенню еквівалентності-приналежності до одного суміжного класу, а це означає, що множини, складові це чинник-множина, утворюють розбиття G. Звідси витікає, що рядки побудованої таблиці попарно або не перетинаються, або збігаються.
Якщо в даній таблиці в першому стовпці записати лідери, то отримана таблиця називається таблицею декодування. Вона має вигляд:
Те, що рядків буде 2n-m виходить з теореми Лагранжа1), оскільки 2n-m - це порядок фактор-группы G/B #(G/B)=#(G)/#(B), #B=2m.
Декодування слова g=bj+gi полягає у виборі кодового слова bj як переданий і подальшому застосуванні операції, зворотної множенню на E. Така схема декодування зможе виправляти помилки.
Для (3,6) -кода з даного прикладу таблиця декодування буде наступною:
000000 | 100110 | 010011 | 110101 | 001111 | 101001 | 011100 | 111010 |
100000 | 000110 | 110011 | 010101 | 101111 | 001001 | 111100 | 011010 |
010000 | 110110 | 000011 | 100101 | 011111 | 001101 | 001100 | 101010 |
001000 | 101110 | 011011 | 111101 | 000111 | 100001 | 010100 | 110010 |
000100 | 100010 | 010111 | 110001 | 001011 | 101101 | 011000 | 111110 |
000010 | 100100 | 010001 | 110111 | 001101 | 101011 | 011110 | 111000 |
000001 | 100111 | 010010 | 110100 | 001110 | 101000 | 011101 | 111011 |
000101 | 100011 | 010110 | 11000 | 001010 | 101100 | 011001 | 111111 |
Перший рядок в ній - це рядок кодових слів, а перший стовпець - це лідери.
Щоб декодувати слово bj+e, слід відшукати його в таблиці і вибрати як переданого слово в тому ж стовпці і в першому рядку.
Наприклад, якщо прийнято слово 110011 (2-й рядок, 3-й стовпець таблиці), то вважається, що було передане слово 010011; аналогічно, якщо прийнято слово 100101 (3-й рядок, 4-й стовпець таблиці), за передане вважається слово 110101, і так далі
Групове кодування з схемою декодування за допомогою лідерів виправляє всі помилки, рядки яких збігаються з лідерами. Отже, вірогідність правильного декодування переданої по двійковому симетричному каналу коди дорівнює сумі вірогідності всіх лідерів, включаючи нульовий.
У розглянутій схемі вірогідність правильної передачі слова буде
p6+6p5q+p4q2.
Кодове слово будь-якого стовпця таблиці декодування є найближчим кодовим словом до всіх інших слів даного стовпця.
Хай передане слово bi прийняте як bi+e, d(bi,bi+e)=u(e), тобто ця відстань дорівнює вазі відповідного лідера. Відстань від bi+e до будь-якого іншого кодового слова bj дорівнює вазі їх порозрядної суми, тобто
оскільки e- лідер суміжного класу, до якого належать як bk+e, так і bi+e.
Доведено, при схемі декодування лідерами по отриманому слову береться найближче до нього кодове.
Груповий
-код, що виправляє всі помилки ваги, не більшої k, і ніяких інших, називається досконалим.Властивості досконалого коду:
1. Для досконалого
-кода, що виправляє всі помилки ваги, не більшої k, виконується співвідношення . Вірно і зворотне твердження;2. Досконалий код, що виправляє всі помилки ваги, не більшої k, в стовпцях таблиці декодування містить всі слова, віддалені від кодових на відстані, не більшому k. Вірно і зворотне твердження;
3. Таблиця декодування досконалого коду, що виправляє всі помилки в не більше ніж k позиціях, має як лідерів всі рядки, що містять не більш k одиниць. Вірно і зворотне твердження.
Досконалий код - це кращий код, що забезпечує максимум мінімальної відстані між кодовими словами при мінімумі довжини кодових слів. Досконалий код легко декодувати: кожному отриманому слову однозначно ставиться у відповідність найближчу кодову. Чисел m, n і
, що задовольняють умові досконалості коди, дуже мало. Але і при підібраних m, n і k досконалий код можна побудувати тільки у виняткових випадках.Якщо m, n і k не задовольняють умові досконалості, то кращий груповий код, який їм відповідає, називається квазідосконалим, якщо він виправляє всі помилки кратності, не більшої k, і деякі помилки кратності k+1. Квазідосконалі код також дуже мало.
Двійковий блоковий
-код називається оптимальним, якщо він мінімізує вірогідність помилкового декодування. Досконалий або квазідосконалий код - оптимальний. Загальний спосіб побудови оптимальних код поки невідомий.Для будь-якого цілого позитивного числа r існує досконалий
-код, що виправляє одну помилку, званий кодом Хеммінга (Hamming), в якому і .Дійсно
.Порядок побудови коди Хеммінга наступний:
1. Вибираємо ціле позитивне число r. Повідомлення будуть словами довжини
, а кодові слова - довжини ;2. У кожному кодовому слові
r біт з індексами-ступенями двійки - є контрольними, останні - в природному порядку - бітами повідомлення. Наприклад, якщо r=4, то биті - контрольні, а - з початкового повідомлення;