Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Розв'язання. При використанні завадостійкого (k, n)- коду Хеммінга контрольні суми, що додаються до інформаційного повідомлення





При використанні завадостійкого (k, n)- коду Хеммінга контрольні суми, що додаються до інформаційного повідомлення, необхідно розмістити не в правій частині кодового слова, а в позиціях цілого степеня 2. Тоді стовпці перевірної матриці коду HT (n-k) ´ n будуть двійковим поданням номера розряду кодової комбінації, в якому виникла помилка.

У даному випадку кількість інформаційних елементів k = 11.

Необхідна кількість перевірних розрядів r = 4 (див. табл. 3.3).

Отже, потрібно побудувати (11, 15) -код Хеммінга для заданого повідомлення.

Перевірна матриця (11, 15) -коду Хеммінга має вигляд

.

Систему перевірних рівнянь, що визначає правила знаходження перевірних розрядів (контрольних сум), дістанемо з рівняння кодового синдрому

S=u´HT=0,

де u – кодове слово лінійного блокового коду, заданого перевірною матрицею H.

S =(u 1, u 2, , u 15 = (u 8+ u 9+ u 10+ u 11+ + u 12+ u 13+ u 14+ u 15,, u 4+ u 5+ u 6+ u 7+ u 12+ u 13+ u 14+ u 15, u 2+ u 3+ u 6+ u 7+ +u 10+ u 11+ u 14+ u 15,, u 1+ u 3+ u 5+ u 7+ u 9+ u 11+ u 13+ u 15) = 0.

Звідси випливає система рівнянь

Перевірні розряди - це біти з номерами цілого степеня 2 – u 1, u 2, u 4, u 8, інші розряди - символи інформаційного повідомлення, тобто кодове слово будується так:

,

де m= (m1, m2, …, m11) – інформаційне повідомлення; r1, r2, r3, r4 – контрольні суми.

Система перевірних рівнянь коду має вигляд

(*)

Закодуємо задане повідомлення:

.

Скориставшись системою перевірних рівнянь (*), знайдемо контрольні суми:

r1 = 1+1+0+1+1+1+0 = 1;

r2 = 1+0+0+0+1+1+0 = 1;

r3 = 1+0+0+0+1+1+0 = 1;

r4 = 1+0+1+0+1+1+0 = 0.

Підставляючи у відповідні позиції знайдені значення контрольних сум, отримуємо закодовану послідовність:

(11001010110) ® (111110001010110).

Нехай у цьому кодовому слові при передачі виникла помилка, наприклад, прийнятий вектор y =(111110101010110).

На прийомній стороні обчислюється синдром

S = y ´ HT = (111110101010110) ´

´ = (0111).

Ненульове значення кодового синдрому означає наявність помилки у прийнятій послідовності. Вектор синдрома відповідає номеру помилкового розряду у двійковому вигляді: у даному випадку (0111)2= 7 10 – отже, помилка виникла у 7 -му розряді.

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

(111110 1 01010110)®(111110001010110

® (11 001010110).

Твірна матриця коду будується таким чином, щоб стовпці з номерами нестепеня 2 відповідали інформаційним елементам повідомлення, тобто утворювали одиничну підматрицю, а стовпці з номерами степеня 2 (перевірна частина матриці) визначалися рівняннями знаходження відповідних контрольних сум.

У такий спосіб, твірна матриця (11, 15) -коду Хеммінга має вигляд

.

Кодові слова лінійного блокового коду знаходяться множенням інформаційного повідомлення на твірну матрицю

u =(m1, m2,..., m11 =

=

Звідси випливає система перевірних рівнянь коду (*).

Надлишковість коду .

 

 

Задачі до розділу 11

 

1 Закодувати повідомлення 1100110, 1010111 (7, 11) - кодом Хеммінга. Побудувати твірну матрицю. Визначити його надлишковість.

2 Закодувати (4, 7) - кодом Хеммінга комбінації 1010, 1011, 1100. Навести приклад виправлення однократної помилки цим кодом. Побудувати твірну матрицю коду. Визначити його надлишковість.

3 Закодувати повідомлення 11001, 10100, 10110 кодом Хеммінга. Побудувати твірну матрицю коду. Визначити його надлишковість.

4 Закодувати повідомлення 110, 101, 011, 111 кодом Хеммінга. Побудувати твірну матрицю коду. Визначити його надлишковість.

5 Закодувати кодом Хеммінга комбінацію двійкового простого коду, що являє запис поточного року у двійковій системі числення. Навести приклад виправлення однократної помилки в цій комбінації.

6 Побудувати перевірну матрицю коду Хеммінга для інформаційних послідовностей довжиною k =6 символів, за її допомогою закодувати комбінації 011001, 100011. Навести приклад виправлення однократної помилки. Визначити надлишковість коду.

7 Побудувати перевірну матрицю коду Хеммінга для інформаційних послідовностей довжиною k =7 символів, за її допомогою закодувати комбінації 0110010, 1000111. Навести приклад виправлення однократної помилки. Визначити надлишковість коду.

8 Побудувати перевірну матрицю коду Хеммінга для інформаційних повідомлень довжиною k =8, за її допомогою закодувати комбінації 01100100, 10001101. Навести приклад виправлення помилки.


9 Декодувати повідомлення 110110001010110, закодоване (11, 15) - кодом Хеммінга, виправивши помилку, якщо вона є. Побудувати твірну матрицю коду.

10 Декодувати повідомлення 1101100, 1011101, 1010101, закодовані (4, 7) - кодом Хеммінга. Побудувати твірну матрицю коду.


Розділ 12 ПОЛІНОМІАЛЬНЕ КОДУВАННЯ ІНФОРМАЦІЇ. ЦИКЛІЧНІ КОДИ

 

Зручним і наочним способом задання лінійних блокових ( k, n)- кодівє подання символів кодових слів u0, u1.,un- 1 у вигляді коефіцієнтів многочлена від х, тобто

 

u(x) = u0 + u1 x + u2 x2 + … + un-1 xn-1. (3.11)

 

Подання кодових слів у такій формі дозволяє звести дії над комбінаціями символів до дій над поліномами.

 

 

12.1 Операції над поліномами в полі двійкових символів GF(2)

 

Сумою двох поліномів f (x) і g (x) в полі двійкових символів GF (2) називається поліном з GF (2), такий, що

 

, (3.12)

 

тобто додаванню двох поліномів з GF (2) відповідає операція додавання за mod 2 коефіцієнтів при однакових степенях х.

Наприклад:

x3 + x2 + 0∙x + 1

+ x2 + x + 1

x3 + 0∙x2 + x + 0 = x3+x.

Добутком двох поліномів f (x) і g (x) в полі двійкових символів GF (2) називається поліном з GF (2), такий, що

, (3.13)

тобто добуток поліномів знаходиться за звичайним правилом множення степеневих функцій, причому коефіцієнти при одному степені х додаються за mod 2.

Наприклад:

x3 + x2 + 0∙x + 1

× x2 + x_______ _

x4 + x3 +0×x2 + x

+ x5 + x4+ 0×x3 + x2 ___

x5 +0×x4 + x3 + x2 + x = x5 + x3 + x2 + x.

Ділення поліномівздійснюється за правилами ділення степеневих функцій, причому операція віднімання замінюється додаванням за mod 2 (додавання і віднімання за mod 2 збігаються).

Теорема. Для кожної пари поліномів c(x) і d(x) (d(x) ¹ 0) існує єдина пара поліномів, де q(x) – частка, r(x) - остача від ділення, таких, що

c(x)= q(x)×d(x) + ρ(x), (3.14)

 

Наприклад:

x4 +0×x3 + x2 + x + 1 x + 1

+ x4 + x3_ x3 + x2 + 1

x3 + x2 + x + 1

+ x3 + x2_______

x + 1

+ x + 1

0 – остача ρ(x).

 

 

12.2 Поліноміальні коди

 

Визначення. Поліноміальним кодом називається множина всіх многочленів степеня не більше n-1, що мають спільний множник – деякий фіксований многочлен g(x) степеня r=n-k (де n - довжина кодових слів, k - довжина інформаційного повідомлення; r - кількість перевірних символів). Цей многочлен g(x) називається твірним многочленомкоду.

Поліноміальний код з твірним многочленом g(x) кодує повідомлення m(x) поліномом вигляду

 

u(x)=m(x)×g(x)=u0 + u1x + u2x2 + … + un-1xn-1, (3.15)

 

або кодовим словом з коефіцієнтів цього многочлена u= (u0, u1, …, un-1).

Матриця поліноміального коду з твірним многочленом g(x) степеня r=n-k має вигляд

 

, (3.16)

 

де ненульові елементи в i -му рядку - це послідовність коефіцієнтів твірного многочлена, розташованих з j -го по (j+r) -й стовпець.

Приклад 1 Поліноміальний код заданий твірним многочленом вигляду g(x)= 1 + x 2 + x 3. Закодуємо за його допомогою повідомлення (01011).

Повідомленню (01011) відповідає многочлен


m(x)= 0× x0 +1× x+x2 +1× x3+x4 = x + x3 + x4

Тоді кодовим словом буде поліном

u(x)= m(x)×g(x) = (x + x3 + + x4) × (1 + x2 + x3) = x + x3 + x4 + x3 + +x5+ x6 +x4+x6+x7=x+ (1+1)× x3+ (1+1)× x3+x5+ (1+1)× x6+x7= x + x5 + x7.

Цьому поліному відповідає кодова послідовність u = (01000101).

Інші способи задання поліноміального (5, 8)- коду з твірним поліномом g(x)=1+x2+x3 – це його подання за допомогою твірної матриці

або відображення

00000 00000000,

00001 00001011,

00010 00010110,

01011 01000101.

Теорема. Вектор помилок e=e0, …, en- 1 залишиться не визначеним у тому і лише у тому випадку, якщо його многочлен e(x)=e0+e1x+…+en-1xn-1 ділиться на твірний поліном коду g(x) без остачі.

Доведення. Прийнята послідовність c(x)=m(x)g(x)+e(x) ділиться на g(x ) без остачі тоді і тільки тоді, коли e(x) ділиться на g(x) без остачі.

Тому будь-яка помилка, многочлен якої не ділиться на g(x),буде знайденою, відповідно будь-яка помилка, многочлен якої ділиться на g(x),знайденою не буде.Отже, виявлення помилки поліноміальним кодом з твірним поліномом g(x) може бути здійснене за допомогою ділення многочленів: якщо залишок від ділення многочлена прийнятої послідовності на твірний поліном g(x) ненульовий, то при передачі відбулося спотворення даних.

Теорема. Якщо твірний поліном g(x) не є дільником жодного з многочленів вигляду xj+ 1, де j<n, то мінімальна відстань між кодовими словами відповідного поліноміального коду dmin ≥ 3.

Доведення. Припустимо dmin= 2. Тоді існує многочлен m (x), такий, що m (x) ×g(x)=u (x) і степінь u (x) ≤ n. Мінімальна вага Хеммінга (мінімальна кодова відстань dmin) w (u)=2, тому u(x)=xm+xl, де l<m<n Отже, кодовий многочлен можна подати у вигляді u(x)=xl ( xm-l+ 1). Тоді двочлен (xm-l+ 1) повинен ділитися на g (x), що унеможливлює умову теореми. Якщо припустити, що dmin =1, то це приведе до твердження, що xm повинне ділитися на g (x), що також суперечить умові.

 

 

12.3 Циклічні коди

 

Серед поліноміальних кодів найпоширеніші циклічні коди.

Визначення. Лінійний блоковий ( k, n) - код називається циклічним, якщо в результаті циклічного зсуву кодового слова виходить інше кодове слово даного коду. Іншими словами, якщо u=(u0, u1, …, un-1)кодове слово, то і v=(un-1, u0, u1, …, un-2), отримане циклічним зсувом елементів u i, - кодове слово.

Наведемо властивостіциклічних кодів.

1) Для циклічного ( k, n) - коду кожний ненульовий поліном повинен мати степінь принаймні (n-k), але не більше n-1;

2) Існує тільки один кодовий поліном g(x)= 1 + g1x +g2x2 + … + +gn-k-1×xn-k- + xn-k степеня (n-k), що є дільником кожного кодового поліномаu(x)= m(x)×g(x), цей поліном називається твірним поліномом коду.


Припустимо, треба закодувати деяку послідовність m=(m0, m1, m2, , mk-1). Відповідний їй поліном матиме вигляд

 

m(x)=m0+m1x+m2x2+ … +mk-1xk-1. (3.17)

 

Помножимо m(x) на xn-k, що рівнозначно зсуву двійкової послідовності m=(m0, m1, m2, …, mk-1) на n-k розрядів праворуч. У результаті отримаємо поліном степеня n- 1 або меншого

 

xn-k×m(x)=m0xn-k+m1xn-k+1+ … +mk-1xn-1. (3.18)

 

Скориставшись теоремою ділення поліномів (3.14), можна записати

 

xn-k×m(x)=q(x)×g(x) + ρ(x), (3.19)

 

де q(x) і ρ(x) - частка і остача від ділення полінома xn-k × m(x) на твірний поліном g(x).

Оскільки степінь твірного полінома g(x) r =(n-k), то степінь остачі ρ (x) не більше (n-k-1), тобто

 

ρ(x)=ρ0+ ρ1x+ ρ2x2+…+ ρn-k-1xn-k-1. (3.20)

 

Використовуючи правила арифметики з GF (2), вираз (3.19) можна записати так:

 

ρ(x) + xn-k × m(x) = q(x)×g(x). (3.21)

 

Звідси випливає, що поліном ρ(x)+xn-k × m(x) кратний g (x) і має степінь не більше n - 1.

Отже, поліном ρ(x)+xn-k×m(x) є кодовим поліномом, що відповідає многочлену інформаційної послідовності m (x).

Розкривши вираз (3.21), отримуємо

 

ρ(x)+m(x)xn-k01x+ρ2x2+…+ρn-k-1xn-k-1+m0xn-k+m1xn-k+1 +…+

+ mk-1xn-1, (3.22)

 

що відповідатимемо кодовому слову

u= (r0, r1, …, rn-k-1, m0, m1, m2, …, mk-1),

де r0, r1, …, rn-k-1 – перевірні символи; m0, m1, m2, …, mk-1 -інформаційні символи.

Відтак, кодове слово циклічного коду складається з перевірної частини з (n-k) перевірних символів і інформаційної частини m завдовжки k символів. Перевірні символи є коефіцієнтами полінома ρ(x) – остачі від ділення кодового слова u(x)=m(x) × xn-k на твірний поліном g(x).

Приклад 2 Закодуємо послідовність m= (0111) циклічним кодом, заданим твірним поліномом g(x)=1+x+x3.

Вектору m =(0111) відповідає поліном m (x)= x + x 2+ x 3.

Помножимо m (x) на xn-k=x3, де n-k – кількість перевірочних символів: m(x)× xn-k=m(x)×x3= (x+x2+x3) x3=x4+x5+x6, або виконаємо зсув елементів інформаційної послідовності m(x) на r =3 розряди праворуч: (0111)® (0000111).

Розділимо добуток m(x)xn-k на твірний поліном коду g(x):

x6 + x5 + x4 x3+x+1

+ x6 + x4 + x3 x3+x2

x5 + x3

+ x5 + x3 + x2

x2= ρ(x).

Многочлен остачі від ділення має степінь n-k- 1 і такий вигляд:

ρ(x) = 0x0 + 0x1 +x2.

Отже, кодовий поліном заданої інформаційної послідовності:

u(x)=ρ(x) + xn-k × m(x)=x2 + x4 + x5 + x6 = 0∙ x0 + 0x1 +x2 + 0 ∙x3 + +x4 +x5 +x6,

що відповідає кодовому слову u =(0010111), де перші три символи перевірні.

Таким чином, алгоритм побудови циклічного( k, n)- коду для послідовності m=(m0, m1, m2, …, mk-1) такий:

1) многочлен інформаційної послідовності m(x) множиться на xn- k, тобто зсувається праворуч на n-k розрядів;

2) отриманий у такий спосіб поліном ділиться на твірний поліном коду g(x);

3) остача від ділення xn-k×m(x) на g(x) додається до xn-k×m(x), тобто записується в молодших n-k розрядах.

Ще однією важливою властивістю циклічного (k, n)- коду є те, що твірний поліном g(x) ділить без остачі двочлен xn +1, тобто комбінації лінійного коду мають властивість циклічності при виконанні умови

 

xn+1=g(x) × h(x). (3.23)

 

Кожний такий двочлен xn +1 може бути розкладений на декілька незвідних поліномів – таких поліномів, які не можуть бути подані як добуток многочленів меншого степеня, тобто вони діляться або самі на себе, або на 1.

Як твірні поліноми різних циклічних кодів використовуються незвідні поліноми і їх добутки, оскільки вони є дільниками двочлена xn +1. Деякі з твірних поліномів наведені у табл. 3.4.

Таблиця 3.4

Твірний поліном g(x) Двійковий запис полінома
1 +x  
1 +x+x2  
1 +x+x3  
1 +x2+x3  
1 +x+x4  
1 +x3+x4  
1 +x+x2+x4  
1 +x2+x3+x4  
1 +x+x2+x3+x4  

Продовження табл.3.4

Твірний поліном g(x) Двійковий запис полінома
1+ x2+x5  
1 +x3+x5  
1 +x+x2+x3+x5  
1 +x+x2+x4+x5  
1 +x4+x5+x6  
1 +x+x2+x5+x6+x7+x8  
1 +x3+x5+x9  
1 +x+x5+x6+x10+x11  
1 +x+x2+x3+x5+x7+x8+x11  
1 +x3+x4+x6+x8+x9+x10+x11  
1 +x+x2+x3+x4+x12+x13+x14+x15  
1 +x5+x12+x16  

 

Визначення. Поліном h(x) степеня k, що є часткою від ділення двочлена xn+1 на твірний поліном коду g(x), називається перевірним поліномом. Оскільки h(x) однозначно зв'язаний з g(x), то він також визначає код.

Спираючись на вищевикладене, можна дати інше визначення двійкового циклічного коду.

Визначення .Циклічним називається лінійний (k, n) - код, усі 2 k кодові комбінації якого подані поліномами степеня n-1 і менше, які діляться без остачі на деякий поліном g(x) степеня r=n-k,що є дільником двочлена xn+1.

 

 

12.4 Синдром і виправлення помилок у циклічних кодах

 

Позначимо через u(x) та у(x) поліноми, що відповідають переданому кодовому слову u і прийнятій послідовності у.

Розділивши поліном прийнятого повідомлення у(x) на твірний поліном коду g(x), отримаємо поліноми частки від ділення q(x) і остачі s(x), тобто многочлен прийнятого вектора у (x) можна записати так:

y(x)=q(x)g(x)+s(x). (3.24)

 

Якщо у(x) є кодовим поліномом, то він ділиться на g(x) без остачі, тобто s(x)= 0.

Ненульова остача s(x)≠ 0 від ділення полінома прийнятого вектора у(x) на твірний поліном коду g(x ) є ознакою наявності помилки у прийнятій послідовності, тобто кодовим синдромом.

Поліном синдрому s(x) має вигляд

 

s(x)=s0+s1x+…+sn-k-1xn-k-1. (3.25)

 

Покажемо, що многочлен синдрому однозначно зв'язаний з многочленом помилок e(x) і, отже, за допомогою полінома синдрому можна не тільки виявляти, але й виправляти помилки у прийнятих послідовностях.

Нехай e(x)=e0+e1x+…+en-1xn-1 - многочлен вектора помилок. Тоді поліном прийнятої послідовності

 

y(x)=u(x)+e(x). (3.26)

 

Додавши до лівої і правої частин виразу (3.26) кодовий поліном u (x), отримаємо

 

u(x)+y(x)=e(x). (3.27)

 

З урахуванням того, що

y(x)=q(x)×g(x) + s(x),

u(x)=m(x)×g(x),

вираз (3.27) запишемо так:

 

e(x)= [ m(x)+q(x)g(x)+s(x)=f(x)×g(x)+s(x), (3.28)

 

тобто поліном синдрому s(x) – це остача від ділення многочлена помилки e(x) на твірний поліном коду g(x). Звідси випливає, що, знайшовши поліном синдрому, можна однозначно визначити вектор помилок, і отже, виправити помилку.

 

 

12.5 Твірна і перевірна матриці циклічного коду

 

Подамо кодове слово циклічного (k, n) - коду таким чином:

 

u(x)= ρ(x) + xn-k × m(x), (3.29)

 

де ρ(x) – остача від ділення многочлена xn-k×m (x) на твірний поліном коду g(x).

Твірна матриця циклічного коду складається з двох частин: перевірної підматриці Pk×(n-k) розмірністю k×(n-k), щовизначається поліномами остачі ρ(x) від ділення кодового многочлена xn-k×m(x) на твірний поліном коду g (x) та одиничної підматриці Ik×k розмірністю k×k, що відповідає інформаційній частині кодової послідовності.

Для побудови твірної матриці циклічного кодуберуться тільки ті з комбінацій інформаційних послідовностей mi (x), де i =1.. k, що мають одиницю тільки в одному розряді. Ці комбінації помножують на xn-k і знаходять остачі від їх ділення на твірний поліном коду

 

, (3.30)

 

їм відповідні (n-k-1) - послідовностібудуть рядками перевірної частини Pk×(n-k) твірної матриці коду.

Твірна матриця циклічного кодускладається з k лінійно незалежних кодових комбінацій, решта 2k-k-1 кодових комбінацій, окрім нульової, знаходиться порозрядним додаванням за mod 2 усіх пар кодових слів, що утворюють твірну матрицю коду.

Приклад Для циклічного (4, 7)- коду, заданого твірним поліномом g(x)= 1 +x2+x3, побудувати твірну матрицю.

Запишемо чотириментні одиничні комбінації інформаційних повідомлень mi (x): (1000) ® m1(x)= 1; (0100) ® m2(x)= x; (0010) ® m3(x)= x2; (0001) ® m4(x)= x3.

Помножимо кожну з них на x3 (кількість перевірних символів r=n-k= 7-4 = 3) і розділимо на твірний поліном коду g(x)= x3+x2+ 1.

Поліноми остач від ділення r (x) мають степінь n - k -1 = 2, на одиницю менший за степінь дільника, і будуть такими:

1) 1 × x3 x3+x2+1 + x3+x2+1 1 x2+1, ρ1(x)= 1 + x2 ® (101);   2) x∙x3 x3+x2+1 + x4 + x3 + x x+1 x3 + x + x3 + x2 + 1 x2 + x +1, ρ2(x)= 1+ x + x2® (111);
3) x2∙x3 x3+x2+1 + x5 + x4 + x2 x2+x+1 x4 + x2 + x4 + x3 + x x3 + x2 + x + x3 + x2 + 1___ x + 1, ρ3(x)= 1+ x ® (110); 4) x3∙x3 x3+x2+1 + x6 + x5 + x3 x3+x2+x x5 + x3 + x5 + x4 + x2 x4 + x3 + x2 + x4 + x3 + x___ x2 + x, ρ4(x)= x + x2 ® (011).

Твірна матриця матиме вигляд

.

Відповідно перевірна матриця матиме вигляд

.

 

З перевірної матриці випливає система перевірних рівнянь коду

Кодові слова даного циклічного (4,7)-коду утворюються так:

u = (r0, r1, r2, m0, m1, m2, m3).

 

 

12.6 Способи декодування циклічного коду

 

Для виправлення помилок циклічним кодом використовують умову, що кількість різних ненульових поліномів синдрому – остач від ділення многочлена прийнятої послідовності на твірний поліном коду – дорівнює кількості елементів n кодової послідовності, якщо кратність помилки, що виправляється, l =1 або числу сполук з n по l. Наприклад, при n =15 та l =2 необхідно =105 ненульових остач для однозначного виправлення двох помилок в коді довжини n. Для цього необхідно вибрати поліном g (x) степеня r= 7, оскільки 27 >105, де r =7 – кількість перевірних елементів, k=n-r = 8 – довжина інформаційної послідовності.

Розглянемо способи виправлення поодиноких помилок циклічним кодом (багатократні помилки виправляються так само).

1-й спосіб декодування циклічного кодуґрунтується на побудові гіпотез про наявність помилки у певному розряді кодової комбінації. Цей спосіб декодування такий:

1) будуємо гіпотезу про наявність помилки у 1-му біті прийнятої комбінації у(x), тобто припускаємо, що вектор помилок (e1= 10 … 00 ). Знаходимо порозрядну суму у(x)+e(x) і ділимо її на твірний поліном g(x): якщо остача від ділення (поліном синдрому) s(x)=0, то гіпотеза підтверджується, інакше відхиляється;

2) будуємо гіпотезу про помилку у 2-му розряді, тобто припускаємо, що e2= (01 … 00). Знаходимо суму у(x)+e(x) і ділимо на g(x)у результаті підтверджуємо або спростовуємо цю гіпотезу: якщо остача s(x)≠ 0, то гіпотеза відкидається, інакше – приймається і т. д. до того часу, поки не отримаємо остачу s(x)= 0, тобто підтвердження гіпотези. Нульовий поліном синдрому s(x)=0 свідчить про те, що помилки немає. Сума многочленів прийнятої кодованої послідовності і вектора помилок, що відповідає нульовій остачі s(x)=0, визначає передане кодове слово так: u(x)= y(x) + e i(x).

2-й спосіб декодування циклічного коду такий:

1) визначається вага w вектора синдрому s(x) – остачі від ділення многочлена прийнятої послідовності у(x) на твірний поліном коду g(x). Якщо w £ l, де l - кратність помилок, що виправляються кодом, то остача s(x) додається доприйнятої комбінації у(x), і у такий спосіб вона виправляється;

2) якщо w > l, то виконується циклічний зсув прийнятої кодової комбінації у(x) на один розряд праворуч, і отримана так комбінація знову ділиться на g(x). Якщо вага вектора остачі s(x) w£ l, то циклічно зсунута комбінація додається з цією остачею, а потім циклічно зсовується на один розряд ліворуч (тобто повертається до попереднього положення). Отримана таким чином кодова комбінація вже не містить помилок;

3) якщо після першого циклічного зсуву і ділення на твірний поліном вага остачі залишається w > l, то так само виконується наступний циклічний зсув, ділення на g(x), визначення ваги остачі і т. д. Цей процес продовжується, поки вага остачі не стане w £ l. Кодова комбінація, отримана у результаті послідовного циклічного зсуву, для якої виконуватиметься умова w £ l, додається з остачею s(x) від ділення цієї комбінації на твірний поліном g(x). Після цього виконується циклічний зсув назад на стільки розрядів, на скільки був зсув щодо початкової прийнятої комбінації у(x). У результаті отримуємо виправлену кодову комбінацію u(x).

 

 

Зразки розв'язування задач до розділу 12

Приклад 1 Поліноміальний код заданий твірним многочленом g(x)=1+x4+x 5. Закодувати двійкові комбінації 1011, 11001100. Побудувати твірну матрицю для кожного з одержаних кодів.







Date: 2015-11-15; view: 1014; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.115 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию