Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Н. О. 0 Теорія інформації рекомендовано Міністе...doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
4.27 Mб
Скачать

Розв'язання

1) Закодуємо повідомлення 1011 довжиною k=4 символи.

Цій послідовності відповідає многочлен степеня k-1 m(x)=1x0+0x1+1x2+1x3=1+x2+x3.

Поліноміальний код повідомлення утворюється множенням многочлена інформаційної послідовності на твірний поліном коду.

За умовою задачі використовується поліноміальний код з твірним многочленом 5-го степеня і кодується повідомлення, якому відповідає многочлен 3-го степеня. У результаті одержуємо кодовий поліном u(x) степеня n-1 – у даному випадку 8-го степеня, що визначає послідовність довжиною n=9 бітів:

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

+ (1+1)x7+ x8= 1+ x2+ x3+ x4+ x5+ x6+ x8.

Отриманому многочлену u(x)= 1+x2+x3+x4+x5+x6+x8=1x+0x1+1x2+1x+1x4+1x5+1x6+0x7+1x8 відповідає вектор u=(101111101), отже, задане інформаційне повідомлення кодується так: (1011) (101111101).

Твірна матриця коду має розмірність (n-k)n і таку структуру:

,

де через g0, g1, …, gn-k-1 позначені коефіцієнти твірного многочлена коду.

У даному випадку маємо (49)- код, твірна матриця якого має вигляд

.

Закодуємо задане повідомлення за допомогою твірної матриці:

u=mG= (1011) =(101111101).

Одержали кодову послідовність (1011) (101111101).

2) Закодуємо повідомлення m=(11001100).

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

Кількість перевірних елементів r=n-k визначається степенем твірного полінома коду – у даному випадку r=5.

Довжина кодового слова n=k+r=8+5=13.

Многочлен інформаційного повідомлення m= (11001100) такий: m(x)= 1x0+1x1+0x2+0x3+1x4+1x5+0x6+0x7= 1+x+x4+x5.

Його кодовий поліном u(x) має степінь n-1=12 і визначається так:

u(x)=m(x)g(x)=(1+x+x4+x5)( 1+x4+x5)= 1+x+x5+x6+x8+x10.

Отриманий многочлен u(x)=1x0+1x1+0x2+0x+0x4+1x5+1x6+ +0x7+1x8+0x9+1x10 +0x11+0x12 визначає кодове слово u=(1100011010100).

Отже, задане інформаційне повідомлення кодується так:

(11001100) (1100011010100).

Твірна матриця даного (813)- коду має вигляд

.

Відповідь: (1011) (101111101); (11001100)  (1100011010100).

Приклад 2 Циклічний код заданий твірним поліномом g(x)=1+x+x3. Закодувати цим кодом комбінацію 0111. Виправити помилку в комбінаціях коду 0110111, 1101010.

Розв'язання

Кількість інформаційних елементів заданого інформаційного повідомлення m= (0111) k=4. Кількість перевірних елементів коду визначається степенем твірного полінома g(x) – у даному випадку кількість перевірних елементів r=3. Тоді довжина кодового слова n=k+r=4+3=7.

Подамо задану інформаційну послідовність m=(0111) у вигляді многочлена m(x)=0x0+1x1+1x2+1x3=x+ x2+ x3.

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

1) многочлен інформаційного повідомлення m(x) множимо на xn-k:

xn-k m(x)= x(x+x2+x3)= x4 +x5 +x6;

2 ) знаходимо остачу (x) від ділення добутку xn-k m(x) на твірний поліном коду g(x):

x6 + x5 + x4 x3 +x +1

+ x6 + x4 + x3 x3 +x2

x5 + x3

+ x+ x3 + x2

(x)= x2 = 0x0 +0x1 +1x2 (001);

3) кодовий поліном заданого інформаційного повідомлення знаходимо так:

u(x)=(x)+xn-km(x)= x2+x4+x5+x6=0x0+0x1+1x2+0x3+1x4+

+1x5 +1x6,

йому відповідає кодове слово u=(0010111).

Даний лінійний завадостійкий код, твірний поліном якого g(x) має степінь r=n-k=3, здатний виправляти помилки кратності l=1.

Виправимо помилку в комбінаціях коду 0110111, 1101010.

1) Прийнятій комбінації y= (0110111) відповідає многочлен y(x)= xxxx5+ x6.

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

x6 + x5 + x4 + x2 + x x3 +x +1

+ x6 + x4 + x3 x3 +x2 +1

x5+ x3 + xx

+ x5+ x3 + x2

s(x)= x поліном остачі не дорівнює нулю, відтак, у заданій комбінації є помилка.

Поліном остачі s(x)=x=0x0+1x1+0x2 має степінь n-k-1 – у даному випадку 2 (оскільки степінь многочлена дільника n-k=3), і йому відповідає вектор (010) 0.

Вага Хеммінга вектора остачі визначається кількістю одиниць в ньому: (010)=  l, де l=1 – кратність помилок, що виправляються кодом.

Вага остачі   l, тому виправлену комбінацію одержуємо додаванням многочленів прийнятої послідовності і остачі від її ділення на твірний поліном коду:

y(x) + s(x)= x6 + x5 + x4 + x2 + x + x= x6 + x5 + x4 + x2 =

0x0x1x0x1x4 +1x5 +1x6 (0010111).

Одержана у такий спосіб комбінація декодируется так:

(0110111) (0010111) (0111).

2) Прийнятій комбінації y= (1101010) відповідає многочлен y(x)= 1xx3x5.

Перевіримо дану комбінацію на наявність помилки. Для цього розділимо її на твірний поліном коду:

x5+ x3 + x + 1 x3 +x +1

+ x5+ x3 + x2 x2

s(x)= x2 + x + 1 0.

Многочлен остачі s(x)=1+x+x2 визначає вектор s=(111), вага якогого (111)= 3 > l, де l – кратність помилок, що виправляються кодом.

Вага остачі більше кратності помилок l=1, тому необхідно виконати циклічний зсув кодованої послідовності (1101010) на 1 розряд вправо: (1101010) (0110101).

Одержаній комбінації відповідає многочлен

y(x)=0x0+1x1+1x2+0x3+1x4+ 0x5+ 1x6=x+x2+x4+x6.

Знайдемо остачу від ділення даного многочлена на твірний поліном коду:

x6+ x4+ x2+ x x3 +x +1

+ x6+ x4+ x3 x3 +1

x3+ x+ x

+ x3 + x + 1

s(x)= x2 +1 (101).

Вага остачі (101)= 2 > l.

Вага остачі більше l=1, тому знову виконуємо циклічний зсув кодованої послідовності на 1 розряд вправо: (0110101) (1011010). Одержаній комбінації відповідає многочлен

y(x)=1x0+0x1+1x2+1x3+0x4+1x5 +0x6 =1+x2+x3+x5.

Розділимо даний многочлен на твірний поліном коду:

x5+ x3+ x2+ 1 x3 +x +1

+ x5+ x3 + x2 x2 +1

s(x)= 1 (100).

Вага вектора остачі (100)=  l – кратності помилок, що виправляються кодом. Таким чином одержуємо кодовий поліном u (x) додаванням останнього многочлена і многочлена його остачі від ділення на твірний поліном коду:

u(x)= x5+ x3+ x21+ 1 =  x2x3+ x50x00x11x21x3

+0x41x50x (0011010).

Для того щоб одержати закодовану послідовність, виконуємо циклічний зсув кодового слова u (x) назад (вліво) на 2 розряди:

(0011010 (1101000).

Таким чином, одержуємо виправлену кодову комбінацію u= (1101000), в якій контрольним сумам відповідають молодші розряди в лівій частині кодового слова.

Отже, повідомлення декодуємо так:

(1101010) (1101000) (1000).

Відповідь: (0111) (0010111); (0110111)  (0010111) (0111), (1101010) (1101000) (1110).

Приклад 3 Циклічний (47)- код заданий твірним поліномом g(x)=1+x+x3. Визначити синдром виправлення поодиноких помилок цим кодом. Побудувати перевірну й твірну матриці коду. Декодувати повідомлення (1001110).