- •1.Сигнали неперервні і дискретні
- •2.Системи числення. Позиційні та непозиційні
- •6.Арифметичні операції з двійковими числами
- •7.Теорема Шеннона
- •Пример кодового дерева
- •10.Префіксний код Хаффмана
- •11.Поняття сигналу та повідомлення.
- •Коди, що самокоректуються
- •16.Код Хемінга. Загальне поняття.
- •Коди, що самоконтролюються
- •Побудова коду Хеммінга
- •Виявлення і виправлення помилки в кодах Хеммінга
- •20.Інформаційна система. Основні поняття.
- •21.Автоматизовані системи управління.
- •22.Інтелектуальні іс.
- •Класифікація ііс
- •Забезпечення роботи ііс
- •23.Вимоги до комп’ютерних іс. !??????????????????7
- •25.Жизненный цикл ас
- •26.Арифметичні операції з використанням додаткового коду числа. Віднімання чисел у додатковому коді
- •27.Методи зжаття інформації.
- •28.Тестування в розробці пз.
- •Основні поняття та визначення
- •Види тестування програмного забезпечення
- •Рівні тестування
Побудова коду Хеммінга
Вважатимемо,
що в каналі зв'язку при передачі
повідомлення може відбутися не більш
ніж одна помилка. Це означає, що якщо
початкове повідомлення 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.
