Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы тои.docx
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
152 Кб
Скачать
☆

Побудова коду Хеммінга

Вважатимемо, що в каналі зв'язку при передачі повідомлення може відбутися не більш ніж одна помилка. Це означає, що якщо початкове повідомлення a1a2...am кодується набором b1b2...bl (l = m + k), то на виході можливі наступні варіанти кода: ́́́́́  . Таким чином, число варіантів рівне l+1. Це пояснюється тим, що помилка може не відбутися, або вона відбудеться в одному з l розрядів і символ bi заміниться на протилежний . Число додаткових розрядів для побудови коду Хеммінга потрібно вибрати так, щоб їх вистачило для кодування перерахованих l+1 випадків. Отже, необхідно, щоб 2k≥ l+1 або 2m ≤ 2l/(l+1). Тому, знаючи m, l вибираємо як найменше ціле число, що задовольняє умову: 2m ≤ 2l/(l+1). Число l називається довжиною коду Хеммінга. Число m – число інформаційних символів. Враховуючи, що l=m+k, можна вибирати не l, а число k, яке називається числом контрольних символів і є найменшим цілим числом, що задовольняє умові: 2k > k + m + 1. Наприклад, якщо m = 4, то l = 7, k = 3; якщо m = 9, то l = 13, k = 4. Таким чином, при побудові кода Хеммінга, перше, що потрібно зробити: це по числу t визначити числа k і l. Нехай для повідомлення а = a1a2...am довжини m необхідно побудувати код Хеммінга. Візьмемо m=9; початкове повідомлення а=101110111=a1a2a3a4a5a6a7a8a9.

Тоді l = 13, k = 4; код Хеммінга b = b1b2b3b4b5b6b7b8b9b10b11b12b13.

Крок 1. Представимо кожне число і з множини L = {1,2...,l} у вигляді к-розрядного двійкового числа w = Vk-1Vk-2...V1V0. Результати запишемо у вигляді таблиці

w/i

1

2

3

4

5

6

7

8

9

10

11

12

13

V0

1

0

1

0

1

0

1

0

1

0

1

0

1

V1

0

1

1

0

0

1

1

0

0

1

1

0

0

V2

0

0

0

1

1

1

1

0

0

0

0

1

1

V3

0

0

0

0

0

0

0

1

1

1

1

1

1

Крок 2. Розіб’ємо множину L на k підмножин таким чином: L0 = {і ∈ L0 : V0 = 1}; L0 = {1, 3, 5, 7, 9, 11, 13}, L1 = {і ∈ L1 : V1 = 1}; L1 = {2, 3, 6, 7, 10, 11}, L2 = {і ∈ L2 : V2 = 1}; L2 = {4, 5, 6, 7, 12, 13}, L3 = {і ∈ L3 : V3 = 1}; L3 = {8, 9, 10, 11, 12, 13}.

Крок 3. Перші елементи (їх рівно k) цих множин є степенем числа 2; вони визначають номери контрольних розрядів коду Хеммінга. Решта елементів множини L визначають номери інформаційних розрядів. Отже, в коді Хеммінга розряди b1b2b4b8 – контрольні, решта розрядів b3b5b6b7b9b10b11b12b13 – інформаційні.

Крок 4. Формування значень інформаційних символів. Інформаційні символи коду Хеммінга формуються природним чином з символів початкового повідомлення a1a2...am . А саме: b3=a1, b5=a2, b6=a3, b7=a4, b9=a5, b10=a6, b11=a7, b12=a8, b13=a9. Оскільки початкове повідомлення а = 101110111, то b3=1 b5=0, b6=1, b7=1, b9=1, b10=0, b11=1, b12=1, b13=1.

Крок 5. Формування значень контрольних символів. Після визначення інформаційних символів контрольні символи визначаються таким чином: b1= ⊕ ∑ bj ; j ∈ L0 ; j ≠ 1 b2= ⊕ ∑ bj ; j ∈ L1 ; j ≠ 2 b4= ⊕ ∑ bj ; j ∈ L2 ; j ≠ 4 b8= ⊕ ∑ bj ; j ∈ L3 ; j ≠ 8. Тут ⊕ ∑ – сума по модулю два, bj – розряди, що мають номери з відповідної множини Lj. У розглянутому прикладі матимемо: b1 = b3 ⊕ b5 ⊕ b7 ⊕ b9 ⊕ b11 ⊕ b13 = 1 ⊕ 0 ⊕ 1 ⊕ 1 ⊕ 1 ⊕ 1 = 1 b2 = b3 ⊕ b6 ⊕ b7 ⊕ b10 ⊕ b11 =1 ⊕ 1 ⊕ 1 ⊕ 0 ⊕ 1= 0 b4 = b5 ⊕ b6 ⊕ b7 ⊕ b12 ⊕ b13 = 0 ⊕ 1 ⊕ 1 ⊕ 1 ⊕ 1 = 0 b8 = b9 ⊕ b10 ⊕ b11 ⊕ b12 ⊕ b13 = 1 ⊕ 0 ⊕ 1 ⊕ 1 ⊕ 1 = 0

Крок 6. Остаточно, для повідомлення а = 101110111 код Хеммінга b буде наступним: b=b1b2b3b4b5b6b7b8b9b10b11b12b13 = 1010011010111. Таким чином можна побудувати код Хеммінга для довільного повідомлення довжиною m.