Код Адамара

Матеріал з testwiki
Перейти до навігації Перейти до пошуку
Матриця точкового коду Адамара [32, 6, 16] для коду Ріда–Маллера (1, 5) з космічного зонда NASA «Марінер-9»
Операція XOR
Тут білі поля позначають 0, а червоні — 1

Код Адамара — завадостійкий код, який використовується для виявлення і корекції помилок під час передавання повідомлень через дуже шумні й ненадійні канали. У 1971 році код було використано для передавання на Землю фотографій Марса з космічного зонда NASA «Марінер-9».[1]

Через його унікальні математичні властивості код Адамара використовується не тільки інженерами, але й інтенсивно вивчається в теорії кодування, математиці та теоретичній інформатиці.

Код Адамара названо на честь французького математика Жака Адамара. Він також відомий під назвами код Уолша, сімейство Уолша,[2] і код Уолша–Адамара[3] на визнання внеску американського математика Шаблон:Нп.

Код Адамара є прикладом лінійного коду на двійковому алфавіті, який перетворює повідомлення довжини k на кодові слова довжини 2k. Він відрізняється тим, що кожне ненульове кодове слово має Шаблон:Нп рівно 2k1, отже відстань коду також дорівнює 2k1. У стандартній нотації теорії кодування для блокових кодів, код Адамара є кодом [2k,k,2k1]2, що означає лінійний код на двійковому алфавіті, що має довжину блока 2k, довжину повідомлення (або розмірність) kі найменшу відстань 2k/2. Довжина блока дуже велика, порівняно з довжиною повідомлення, завдяки чому помилки можуть бути виправлені за значного шуму. Проколотий код Адамара — покращена версія коду Адамара; він є кодом [2k,k+1,2k1]2, тому, має трохи кращу швидкість, зберігаючи відносну відстань 1/2, і таким чином переважає в практичних застосуваннях. Проколотий код Адамара збігається з Шаблон:Нп першого порядку на двійковому алфавіті.[4]

Як правило, коди Адамара ґрунтуються на побудованих Сильвестром матрицях Адамара, але термін «код Адамара» також використовується для позначення кодів, побудованих з довільних матриць Адамара, які не обов'язково є Сильвестрового типу. В загальному випадку, такий код не є лінійним. Такі коди було вперше побудовано Шаблон:Нп і Шаблон:Нп у 1959 році.[5] Якщо n — розмір матриці Адамара, то код має параметри (n,2n,n/2)2, отже, це не обов'язково лінійний двійковий код з 2n кодових слів з довжиною блока n і мінімальною відстанню n/2. Схеми побудови і розшифровки, описані нижче, застосовні для довільного n, але властивість лінійності та ідентичності з кодом Ріда-Маллера досягається лише, якщо n є степенем 2 і якщо матриця Адамара еквівалентна матриці, побудованій методом Сильвестра.

Код Адамара є Шаблон:Нп кодом, який дозволяє відновити частини початкового повідомлення з високою ймовірністю, якщо отримано лише невелику частину кодового слова. Це дозволяє застосовувати його в теорії обчислювальної складності та особливо при розробці Шаблон:Нп. Оскільки відносна відстань коду Адамара 12, як правило, можна сподіватися на відновлення за не більше ніж 14 помилок. Однак, використовуючи Шаблон:Нп, можна обчислити короткий список можливих повідомлень-кандидатів, поки в прийнятому слові пошкоджено менше ніж 12ϵ біт.

У каналах телефонного зв'язку з множинним доступом з кодовим поділом (CDMA) код Адамара називають кодом Волша, і використовують для визначення індивідуальних каналів зв'язку. Зазвичай в літературі з CDMA кодові слова називають «кодами». Кожен користувач використовує різні кодові слова, або «коди», для модуляції свого сигналу. Оскільки кодові слова Волша є математично ортогональні, то сигнал, кодований за Волшем, сприймається мобільним Шаблон:Нп стандарту CDMA як випадковий шум, якщо термінал використовує пароль, відмінний від використаного для кодування вхідного сигналу.[6]

Побудова

Хоча всі коди Адамара ґрунтуються на матрицях Адамара, побудова може дещо відрізнятися, залежно від наукового напрямку, автора і призначення. Інженери, які використовують коди для передавання даних і теоретики кодування, аналізуючи екстремальні властивості кодів, як правило, потребують якомога вищої швидкості коду, навіть якщо побудова буде математично менш елегантною.

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

Побудова з використанням внутрішнього добутку

Коли дано двійкове повідомлення x{0,1}k довжини k, код Адамара кодує повідомлення у кодове слово Had(x) використовуючи функцію кодування Had:{0,1}k{0,1}2k. Ця функція використовує внутрішній добуток x,y двох векторів x,y{0,1}k, який визначається таким чином:

x,y=i=1kxiyi mod 2.

Потім кодування Адамара x визначається як послідовність всіх внутрішніх добутків з x:

Had(x)=(x,y)y{0,1}k

Як вже згадувалося вище, на практиці використовується проколотий код Адамара, оскільки власне код Адамара є дещо марнотратним. Це пояснюється тим, що, якщо перший біт y дорівнює нулю, y1=0 тоді внутрішній добуток не містить ніякої інформації про x1 і, отже, неможливо повністю розшифрувати x з цих позицій кодового слова. З іншого боку, коли кодове слово обмежене позицією, де y1=1 ще можна повністю розшифрувати x. Отже, є сенс обмежити код Адамара з цих позицій, що породжує проколотий код Адамара для x; тобто, pHad(x)=(x,y)y{1}×{0,1}k1.


Примітки

Шаблон:Reflist

Див. також

Шаблон:Compu-stub