Loading AI tools
З Вікіпедії, вільної енциклопедії
Лінійний код у теорії кодування — код з виправленням помилок, для якого будь-яка лінійна комбінація кодових слів також є кодовим словом. Лінійні коди традиційно розділяють на блокові коди і згорткові коди, хоча турбо-коди можна розглядати як гібрид цих двох типів.[1] Лінійні коди, в порівнянні з іншими кодами, дозволяють реалізовувати більш ефективні алгоритми кодування і декодування інформації.
Лінійні коди використовуються при попередній корекції помилок і застосовуються для передачі символів (наприклад, біт) через канал зв'язку, так що, якщо відбуваються помилки в повідомленні, деякі помилки можуть бути виправлені або виявлені при отриманні блоку. Кодові слова в лінійному блоковому коді є блоком символів, які кодуються з використанням більшої кількості символів, ніж у даних для відправки.[2] Лінійний код довжини N передає блоки, що містять N символів. Так, наприклад, [7,4,3] код Гемінга є лінійним двійковим кодом, який представляє 4-бітові повідомлення з використанням 7-розрядних кодових слів. Два різних кодових слова розрізняються принаймні в трьох бітах. Як наслідок, до двох помилок на кодове слово може бути виявлено і одна помилка може бути виправлена.[3] Цей код містить 24 = 16 кодових слів.
де G — породжувальна матриця; H — матриця перевірки парності.
Лінійний код довжини n і рангу k — це лінійний підпростір C з розмірністю k векторного простору , де — скінченне поле з q елементами. Такий код має назву «q-нарний код». Якщо q = 2 або q = 3, код описується як бінарний або тернарний відповідно. Вектори в C називаються кодовими словами. Розмір коду — це кількість кодових слів та дорівнює qk.
Вага кодового слова — це кількість його ненульових елементів, а відстань між двома кодовими словами — це відстань Геммінга, яка є кількістю елементів, які в них відрізняються. Відстань d лінійного коду — це мінімальна вага його ненульових кодових слів або, еквівалентно, мінімальна відстань між різними кодовими словами. Лінійний код довжини n, розмірності k та відстані d називається [n,k,d] код.
Ми хочемо використовувати у стандартний базис, оскільки кожна координата являє собою «біт», який передається через «канал з шумом» з деякою невеликою ймовірністю помилки передачі (двійковий симетричний канал). Якщо використовувати якийсь інший базис, тоді ця модель буде не придатна, бо відстань Геммінга не буде вимірювати кількість помилок при передачі, як нам би того хотілося.
Як уже відзначалося, завадостійкість кодування забезпечується за рахунок внесення надмірності в кодові комбінації. Це значить, що з n символів кодової комбінації для передачі інформації використовується k < n символів. Отже, із загального числа No=2n можливих кодових комбінацій для передачі інформації використовується тільки N = 2k комбінацій. Відповідно до цього вся множина No=2n можливих кодових комбінацій поділяється на дві групи. У першу групу входить множина N = 2k дозволених комбінацій, друга група містить у собі множину (No — N) = 2n−2k заборонених комбінацій.
Якщо на стороні приймання встановлено, що прийнята комбінація належить до групи дозволених, то вважається, що сигнал прийшов без перекручувань. В іншому випадку робиться висновок, що прийнята комбінація перекручена. Однак це справедливо лише для таких перешкод, коли усунута можливість переходу одних дозволених комбінацій в інші.
Коригуюча здатність коду визначається мінімальною кодовою відстанню. Складемо матрицю відстаней між кодовими комбінаціями для таких дозволених комбінацій: 00000; 01110; 10101; 11011.
Таблиця — Матриця відстаней
00000 | 01110 | 10101 | 11011 | |
---|---|---|---|---|
00000 | 0 | 3 | 3 | 4 |
01110 | 3 | 0 | 4 | 3 |
10101 | 3 | 4 | 0 | 3 |
11011 | 4 | 3 | 3 | 0 |
Як видно з матриці, мінімальна кодова відстань dmin=3. Отже, даний код здатний:
Код Адамара — це лінійний код, який дає можливість виправити багато помилок. Код Адамара можна побудувати за стовпцями: стовпець — це біти побітового представлення цілого числа , див. наступний приклад. Код Адамара має мінімальну відстань , отже може виправити помилку.
Приклад: Лінійний код з наступною породжувальною матрицею — це код Адамара: .
Код Адамара — це окремий випадок кода Ріда-Мюллера. Якщо взяти перший стовпець (нульовий стовпець) з , то ми отримаємо симплексний код, який є подвійним кодом коду Хеммінга.
Параметр d тісно пов'язаний із можливістю виправляти помилки коду. Наступний алгоритм це ілюструє (та має назву «алгоритм найближчого сусіда»):
Вхідні дані: отриманий вектор v в .
Вихідні дані: кодове слово в найближчий до , якщо таке існує.
Лінійний код називається виправляючим -помилку, якщо є щонайбільше одне кодове слово в для кожного у .
Коди загалом часто позначаються літерою C, а код довжини n і рангу k (тобто код, який має n кодових слів у своїй основі та k рядків у його породжувальній матриці) зазвичай називають (n, k) код. Лінійні коди часто позначаються [n, k, d] кодами, де d означає мінімальну відстань коду Хеммінга між будь-якими двома кодовими словами. ([n, k, d] позначення не слід плутати з (n, M, d) позначенням, яке використовується для позначення нелінійного коду довжиною n, розміром M (тобто має M кодових слів) та мінімальною відстанню Хеммінга d.)
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.