Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
pg82-101.doc
Скачиваний:
3
Добавлен:
15.09.2019
Размер:
855.55 Кб
Скачать

§5. Код Хеммінга.

Передавання інформації здійснюється від передавача до приймача за допоїмо-

Мал. 9

гою фізичного каналу зв’язку, конкретна природа якого нас зараз не цікавить. На жаль на практиці всі канали зв’язку не ідеальні, оскільки у них діє джерело перемішок (мал. 9). Перемішки проявляються в тому, що прийнята двійкова послідовність може відрізнятися в деяких символах від переданої послідовності. Нехай ми передаємо інформацію словами з двійкових символів. Виявляється, що при певних умовах можна передати разом з цими символами іще символів, які дозволять нам визначити чи були зроблені помилки при передаванні коду, а також виправити їх. Ці символів називаються контрольними символами, на відміну від самих символів слова , які називаються інформаційними. Звичайно, реалізувати цю ідею можна тільки якщо канал зв’язку, незважаючи на джерело перемішок, достатньо надійний, тобто робить не дуже багато помилок. Ми будемо вважати, що він робить не більше однієї помилки на символів.

Нехай . Ми зацікавлені в тому, щоб при фіксованому доля інформаційних символів у повідомленні була найбільшою, тобто щоб було найменшим. Задамося питанням, яке найменше значення можна взяти в якості . Нехай до каналу зв’язку поступило повідомлення , яке складається з інформаційних символів та контрольних символів, розташованих у певному порядку. Як ми домовились, канал зв’язку робить не більше однієї помилки на символів, отже можливі такі варіанти отримання кодів приймачем ( мал. 10). Число варіантів дорівнює . Для того, щоб додаткових розрядів у коді вистачило для кодування цих випадків передачі коду необхідно, щоб виконувалась нерівність

. (11)

Мал. 10

Нерівність (11) можна переписати у вигляді

. (12)

Отже число вибирається як найменше ціле число, яке задовольняє нерівність (12). В наведеній нижче таблиці вказані значення при деяких невеликих значеннях числа .

2

5

3

6

4

7

5

9

Оскільки експонента зростає значно швидше лінійної функції з (11) випливає, що при великому доля контрольних символів у коді відносно невелика (за порядком росту ).

Практичний спосіб побудови послідовності за послідовністю інформаційних символів , який дозволяє знайти та виправити одну помилку, зроблену в процесі передавання коду , був запропонований Хеммінгом у 1950 р. Тому повідомлення називається кодом Хеммінга слова .

Розгляд кодів Хеммінга нами складатиметься з трьох етапів.

І. Побудова кодів Хеммінга ( описання алгоритму кодування).

Відомо, що будь-яке натуральне число можна розкласти у суму за степенями двійки

,

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

Наприклад число 11 можна записати у вигляді

,

отже двійковий запис цього числа дорівнює 1011.

Розіб’ємо множину натуральних чисел на послідовностей наступним чином: нехай – довільне натуральне число ( ) і – його двійковий запис.

Послідовність 1, 3, 5, 7, 9,… містить усі числа у яких .

Послідовність 2, 3, 6, 7, 10,… містить усі числа у яких .

Послідовність 4, 5, 6, 7, 12,… містить усі числа у яких .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Послідовність , ,… містить усі числа у яких .

Першими членами цих послідовностей є числа

, ,…, ,

тобто степені двійки, причому , а .

Сформулюємо тепер правило побудови коду Хеммінга послідовності . Члени у яких індекс належить множині (таких є рівно ) резервуємо для контрольних символів. Інші членів заповнюємо інформаційними символами в тому самому порядку, в якому вони входять у послідовність . Після цього визначаємо контрольні символи за формулами

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

ІІ. Локалізація помилки в кодах Хеммінга.

Нехай через канал зв’язку був переданий код Хеммінга . Припустимо, що в процесі передачі була зроблена помилка в -му члені. Тоді на виході каналу зв’язку одержимо послідовність , де

.

Нехай – двійковий запис числа . Покажемо, як можна по послідовності знайти число .

Розглянемо число , де

(1-ша послідовність),

(2-га послідовність),

(3-тя послідовність),

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Стверджується, що . Дійсно, якщо , то не належить 1-й послідовності і тоді за означенням контрольного символу

,

якщо , то належить 1-й послідовності і

.

Отже . Аналогічно доводиться, що , …, . Звідси випливає що .

Якщо при передаванні коду Хеммінга помилки зроблено не було, то одержуємо . Отже число дозволяє дізнатися, чи була зроблена помилка при передаванні коду Хеммінга і, якщо була, встановити номер члена , переданого неправильно. В останньому випадку проводимо корекцію помилки: символ замінюємо на символ .

ІІІ. Декодування.

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

Задача 4. Побудувати код Хеммінга повідомлення 1101.

Розв’язання. Оскільки , то довжина коду Хеммінга . Спочатку визначаємо інформаційні символи: , , , . Тоді контрольні символи дорівнюють

,

,

.

Отже код Хеммінга даного повідомлення дорівнює 1010101.

Припустимо, що в процесі передавання цього коду Хеммінга була зроблена помилка у 5-му символі і ми прийняли код 1010001. Покажемо, як за допомогою описаної вище процедури можна знайти і виправити помилку. Підрахуємо число

,

,

.

Код 101 є двійковим записом числа 5, отже . Виправивши символ, який стоїть на 5-му місці одержимо початкове повідомлення 1010101.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]