
- •Теорія інформації
- •Тулякова н.О.0 теорія інформації
- •Теорія інформації
- •1.1 Предмет курсу. Види інформації. Теорема дискретизації
- •1.2 Базові поняття теорії інформації
- •1.3 Способи вимірювання інформації
- •1. 4 Ентропія джерела. Властивості кількості інформації та ентропії
- •Розв'язання
- •Розв'язання
- •2.1 Умовна ентропія
- •2.2 Модель системи передачі інформації
- •2.3 Види умовної ентропії
- •2.4 Ентропія об'єднання двох джерел інформації
- •2.5 Продуктивність дискретного джерела інформації. Швидкість передачі інформації
- •2.6 Інформаційні втрати при передачі інформації по дискретному каналу зв'язку
- •2.7 Пропускна здатність дискретного каналу. Основна теорема про кодування дискретного джерела
- •Розв'язання
- •Розв'язання
- •3.1 Способи задання кодів. Статистичне кодування
- •3.2 Елементи теорії префіксних множин
- •3.3 Оптимальні методи статистичного стиснення інформації Шеннона-Фано і Хаффмена
- •Розв'язання
- •I Метод Шеннона-Фано:
- •II Метод Хаффмена:
- •4.1 Теоретичні границі стиснення інформації
- •4.2 Метод блокування повідомлення
- •Розв'язання
- •Розв'язання
- •Розв'язання
- •Метод Шеннона-Фано
- •Арифметичний метод
- •Розв'язання
- •Розв'язання
- •Розв'язання
- •Розв'язання
- •7.1 Алгоритм lz77
- •7.2 Алгоритм lzss
- •7.3 Алгоритм lz78
- •7.4 Алгоритм lzw
- •Розв'язання
- •Розв'язання
- •Розв'язання
- •Розв'язання
- •8.1 Огляд типів систем стиснення інформації
- •8.2 Стиснення без втрат інформації
- •8.3 Стиснення із втратами інформації
- •9.1 Основні принципи
- •9.2 Елементи двійкової арифметики
- •9.3 Код з перевіркою на парність
- •9.4 Ітеративний код
- •Розв'язання
- •Розв'язання
- •10.1 Способи задання лінійних кодів. Твірна матриця лінійного блокового коду
- •10.2 Перевірна матриця лінійного блокового коду
- •10.3 Кодовий синдром і виявлення помилок лінійним блоковим кодом
- •10.4 Синдромне декодування лінійних блокових кодів
- •10.5 Вага і відстань Хеммінга. Можливості лінійних кодів виявляти і виправляти помилки
- •Розв'язання
- •Розв'язання
- •Розв'язання
- •12.1 Операції над поліномами в полі двійкових символів gf(2)
- •12.2 Поліноміальні коди
- •12.3 Циклічні коди
- •12.4 Синдром і виправлення помилок у циклічних кодах
- •12.5 Твірна і перевірна матриці циклічного коду
- •12.6 Способи декодування циклічного коду
- •Розв'язання
- •Розв'язання
- •Розв'язання
10.3 Кодовий синдром і виявлення помилок лінійним блоковим кодом
Нехай u=(u1, u2, …, un) - кодове слово, передане по каналу з шумом; y=(y1, y2, …, yn) - прийнята послідовність, що через вплив завад може відрізнятися від переданої.
Для описання виникаючих у двійковому симетричному каналі помилок використовується вектор помилок е=(e1, e2, …, en), що є двійковою послідовністю завдовжки n з одиницями у тих позиціях, де виникли помилки.
Наприклад, вектор помилок е=(0001000) означає однократну помилку у четвертому біті, е=(1100000) - двократну помилку у першому і другому бітах.
При передачі кодового слова u по каналу з шумом прийнята послідовність матиме вигляд y = u+е, де u - передане кодове слово; e – вектор помилок у каналі.
Наприклад: u=(0001000), e=(0001000), тоді y=(0000000).
Щоб перевірити наявність помилок у прийнятій послідовності y, декодер обчислює таку (n-k)- послідовність:
S=(S1,
S2,
…,
Sn-k)=y
,
де y - прийнята кодована послідовність; - транспонована перевірна матриця коду.
При цьому у є кодовим словом тоді, коли S=(0 0 … 0), і не є кодовим словом даного коду, якщо S≠0.
Послідовність S є ознакою наявності помилок у прийнятій послідовності y і називається кодовим синдромом.
Приклад 3 Для розглянутого прикладу лінійного блокового (4, 7)- коду знайдемо значення кодового синдрому.
Нехай y=(y1, y2, …, y7) - прийнята кодована послідовність. Тоді
S=y
=(y1, y2, …, y7)×
=((y1+y3+y4+y5),
(y1+y2+y3+y6),
(y2+y3+y4+y7)).
Деякі комбінації помилок, використовуючи кодовий синдром, виявити неможливо. Наприклад, якщо передане кодове слово під впливом завад перетвориться на інше кодове слово цього самого коду, то синдром S=y× =0, і декодер помилок не виявить.
10.4 Синдромне декодування лінійних блокових кодів
Нехай u=(u1, u2, …, un) - передане кодове слово; е=(е1, е2, …, еn) - вектор помилок; y=(y1, y2, … yn) - прийнята послідовність. Тоді y=u+е.
Кодовий синдром
S=y
=(u+e)
=u
+e
=0+e
=e
,
оскільки
для будь-якого кодового слова
u
=0.
Таким чином, кодовий синдром залежить лише від вектора помилок і не залежить від переданого слова.
Визначивши координати вектора помилок, можна відновити кодове слово так: u*=y+е.
Приклад 4 Знайдемо значення синдрому для всіх можливих однократних помилок в послідовності з семи символів для наведеного прикладу лінійного блокового (4, 7)- коду.
1) e0=(0000000),
е0
=(0000000)
=(000)
- помилки
немає;
2) е1=(1000000),
е1
=(1000000)
=(110)
- помилка у
1-му
біті;
3) e2=(0100000),
е2
=(0100000)
=(011)
- помилка
у 2-му
біті;
4) е3=(0010000),
е3 =(0010000) =(111) - помилка у 3-му біті;
5) е4=(0001000),
е4 =(0001000) =(101) - помилка у 4-му біті;
6) е5=(0000100),
е5 =(0000100) =(100) - помилка у 5-му біті;
7) е6=(0000010),
е6 =(0000010) =(010) - помилка у 6-му біті;
8) е7=(0000001),
е7 =(0000001) =(001) - помилка у 7-му біті.
Існує однозначна відповідність між координатами поодиноких помилок і їх синдромами, тобто, знаючи синдром, можна визначити позицію коду, в якій виникла помилка.
Приклад 5 З перевірної матриці лінійного блокового (4, 7)- коду знайдемо систему перевірних рівнянь:
Звідси
де (m1, m2, m3, m4) – інформаційні символи; r1, r2, r3 - перевірні символи; (u1, u2, …, u7)=(m1, m2, m3, m4, r1, r2, r3) - кодове слово.
Виникнення помилки у кодовій комбінації призведе до невиконання тих рівнянь у системі перевірних рівнянь коду, в які входить значення помилкового розряду.
Наприклад, якщо помилка у четвертому розряді кодової комбінації u=(u1, u2, u3, u4, u5, u6, u7)=(m1, m2, m3, m4, r1, r2, r3), то не виконаються перше і третє рівняння, в які входить помилковий символ u4=m4. Вектором синдрому буде послідовність S=(101), що збігається з четвертим стовпцем перевірної матриці коду H.
У такий спосіб номер помилкового розряду кодової комбінації є номером стовпця перевірної матриці H, що збігається з вектором синдрому, це дозволяє визначити місце виникнення помилки і таким чином її виправити.
Зазначимо, що кодовий синдром виправляє тільки однократні помилки в коді.
Приклад 6 Припустимо, що в прийнятій послідовності виникла не одна, а дві помилки, наприклад, у другому і шостому бітах: е=(0100010).
Тоді вектор синдрому
S=(0100010) =(001).
Цей синдром збігається з сьомим стовпцем перевірної матриці H, що означає наявність однієї помилки у сьомому біті. Отже, декодер не тільки не виправить помилкові біти, але і внесе помилку у позицію, де її не було.
Отже, лінійний блоковий (4, 7) - код не виправляє двократні помилки і помилки більшої кратності.