- •1 Питання .
- •2 Питання.
- •3 Питання.
- •4 Питання.
- •5 Питання.
- •6 Питання.
- •7 Питання
- •8 Питання.
- •9 Питання
- •10 Питання.
- •11 Питання.
- •12 Питання.
- •13 Питання
- •14 Питання.
- •15 Питання.
- •16 Питання.
- •17 Питання.
- •18 Питання.
- •19 Питання.
- •20 Питання.
- •21 Питання
- •22 Питання
- •23 Питання.
- •24 Питання.
- •25 Питання.
- •26 Питання.
- •27 Питання.
- •28 Питання.
- •29 Питання.
- •30 Питання.
- •31 Питання.
- •32 Питання.
- •33 Питання.
- •34 Питання.
- •35 Питання.
- •36 Питання.
- •37 Питання.
- •38 Питання.
- •39 Питання.
- •40 Питання.
- •41 Питання.
- •42 Питання.
- •43 Питання.
- •44 Питання.
- •45 Питання.
- •46 Питання.
- •47 Питання.
- •48 Питання.
- •49 Питання.
- •50 Питання.
- •51 Питання.
- •52 Питання.
- •53 Питання
- •54 Питання.
- •55 Питання.
- •56 Питання.
- •57 Питання.
- •58 Питання
54 Питання.
Стиск данних. Алгоритм Лемпела-Зіва-Велча.
1. Висхідне повідомлення за деяким алгоритмом розбивається на послідовності символів, які називаються словами (слово може мати одно або декілька входжень у висхідний текст повідомлення).
2. Отримана множина слів вважається буквами нового алфавіту. Для цього алфавіту будується роздільна схема алфавітного кодування (рівномірного кодування або оптимального кодування, якщо для кожного слова підрахувати кількість входжень у текст). Отримана схема зазвичай називається словником, тому що вона співставляє слову код.
3. Далі код повідомлення будується як пара – код словника та послідовність кодів слів з цього словника.
4. При декодуванні висхідне повідомлення відновлюється шляхом заміни кодів слів на слова зі словника.
Словник будується під час кодування наступним чином: певним послідовностям символів (словам) ставляться у відповідність групи бітів фіксованої довжини (звичайно 12-бітні). Словник ініціалізується усіма 1-символьними рядками (у випадку 8-бітових рядків – це 256 записів). Під час кодування, алгоритм переглядає текст символ за символом, та зберігає кожний новий, унікальний 2-символьний рядок у словник у вигляді пари код/символ, де код
посилається у словнику на відповідний перший символ. Після того, як новий 2-символьний рядок збережений у словнику, на вихід передається код першого символу. Коли на вході зчитується черговий символ, для нього у словнику знаходиться рядок, який вже зустрічався і який має максимальну довжину, після чого у словнику зберігається код цього рядка з наступним символом на вході; на вихід видається код цього рядка, а наступний символ використовується в якості початку наступного рядка.
55 Питання.
Коди стійкі до завад. Норма коду, віддаль Геммінга (властивості, метрика Геммінга, кодова віддаль). Теорема про необхідні та достатні умови виявлення та виправлення помилок при кодуванні (з доведенням, графічна інтерпретація).
56 Питання.
Коди з самоконтролем (приклади). Коди з самовиправленням (приклади).
Для автоматичного виявлення помилок достатньо, щоб кодова віддаль ρ(V) була більша за кількість можливих помилок t на n переданих бітів інформації. Розглянемо кодування таблиці символів ASCII, в якій представлено 256 записів. Для кодування елементів таблиці використовується один байт – вісім бітів. Легко бачити, що кодова віддаль
ρ(V) для таблиці ASCII буде складати 1 (наприклад, відстань між кодом 00000000 та 00000001 складає якраз 1). Таким чином, якщо t = 1, то ми не зможемо автоматично виявляти помилки. Отже, ρ(V) повинно бути не менше 2. Як цього можна досягнути? На практиці використовується наступна схема. До кожного інформативного байту (8 розрядів) додається ще один розряд, який називається контрольним. Значення контрольного розряду встановлюється таким чином, щоб загальна кількість одиничних розрядів була парною (враховуючи як інформативні розряди, так і контрольні). Тоді, замість 8 розрядів буде передаватись 9. В попередньому прикладі ми отримуємо коди 000000000 та 000000011 (контрольний розряд позначений жирним). Як бачимо, в даному прикладі відстань між кодами вже становить 2, що призведе до автоматичного виявлення помилки.
Такий підхід дозволяє виявляти помилки, які відбулись в одному розряді, але не працює для помилок в більшій кількості розрядів.
22.3. Коди з самовиправленням
Нижче
розглянемо коди, які дозволяють
виправлення при одиничній помилці
(тобто коли t = 1).Можна показати, що
кількість контрольних розрядів k повинна
бути обрана такою, щоб виконувалась
рівність:
де
n – кількість
інформативних
розрядів. Мінімальні значення k для
заданого n наведені в таблиці 22.1
Зрозуміло, що можливі тільки два коди: X 1 =0 та X 2 =1. В даній системі кодова віддаль ρ(V)=1. За теоремою 22.1 ρ(V) повинно бути не менше 3 (ρ(V)>2), щоб код дозволяв автоматичне виправлення одиничних помилок. Якщо до кодів X i додати тільки один контрольний розряд, то відстань складатиме лише 2 (X 1 =00 та X 2 =11). Отже, необхідно додати мінімум 2 контрольних розряди, щоб уможливити автоматичну корекцію одиничних помилок: X 1 =000 та X 2 =111. Дійсно, припустимо ми передавали код X 1 і відбулась помилка в другому розряді – ми отримали код X´=010. Знаючи, що помилка можлива тільки в одному розряді, ми легко бачимо, що код X´ міг бути отриманий тільки з коду X 1 , адже від коду X 2 його віддаляє дві помилки (потрібно змінити два розряди в X 2 щоб отримати X´).
