
- •Теорія інформації
- •Тулякова н.О.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 Способи декодування циклічного коду
- •Розв'язання
- •Розв'язання
- •Розв'язання
Розв'язання
1) Закодуємо повідомлення 1011 довжиною k=4 символи.
Цій послідовності відповідає многочлен степеня k-1 m(x)=1x0+0x1+1x2+1x3=1+x2+x3.
Поліноміальний код повідомлення утворюється множенням многочлена інформаційної послідовності на твірний поліном коду.
За умовою задачі використовується поліноміальний код з твірним многочленом 5-го степеня і кодується повідомлення, якому відповідає многочлен 3-го степеня. У результаті одержуємо кодовий поліном u(x) степеня n-1 – у даному випадку 8-го степеня, що визначає послідовність довжиною n=9 бітів:
u(x)=m(x)g(x)= (1+x2+x3)(1+x4+x5)= 1+ x2+ x3+ x4+ x5+ x6+
+ (1+1)x7+ x8= 1+ x2+ x3+ x4+ x5+ x6+ x8.
Отриманому многочлену u(x)= 1+x2+x3+x4+x5+x6+x8= = 1x0 +0x1+1x2+1x3 +1x4+1x5+1x6+0x7+1x8 відповідає вектор u=(101111101), отже, задане інформаційне повідомлення кодується так: (1011) (101111101).
Твірна матриця коду має розмірність (n-k)n і таку структуру:
,
де через g0, g1, …, gn-k-1 позначені коефіцієнти твірного многочлена коду.
У даному випадку маємо (4, 9)- код, твірна матриця якого має вигляд
.
Закодуємо задане повідомлення за допомогою твірної матриці:
u=mG= (1011)
=(101111101).
Одержали кодову послідовність (1011) (101111101).
2) Закодуємо повідомлення m=(11001100).
Кількість інформаційних елементів у повідомленні k=8.
Кількість перевірних елементів r=n-k визначається степенем твірного полінома коду – у даному випадку r=5.
Довжина кодового слова n=k+r=8+5=13.
Многочлен інформаційного повідомлення m= (11001100) такий: m(x)= 1x0+1x1+0x2+0x3+1x4+1x5+0x6+0x7= 1+x+x4+x5.
Його кодовий поліном u(x) має степінь n-1=12 і визначається так:
u(x)=m(x)g(x)=(1+x+x4+x5)( 1+x4+x5)= 1+x+x5+x6+x8+x10.
Отриманий многочлен u(x)=1x0+1x1+0x2+0x3 +0x4+1x5+1x6+ +0x7+1x8+0x9+1x10 +0x11+0x12 визначає кодове слово u=(1100011010100).
Отже, задане інформаційне повідомлення кодується так:
(11001100) (1100011010100).
Твірна матриця даного (8, 13)- коду має вигляд
.
Відповідь: (1011) (101111101); (11001100) (1100011010100).
Приклад 2 Циклічний код заданий твірним поліномом g(x)=1+x+x3. Закодувати цим кодом комбінацію 0111. Виправити помилку в комбінаціях коду 0110111, 1101010.
Розв'язання
Кількість інформаційних елементів заданого інформаційного повідомлення m= (0111) k=4. Кількість перевірних елементів коду визначається степенем твірного полінома g(x) – у даному випадку кількість перевірних елементів r=3. Тоді довжина кодового слова n=k+r=4+3=7.
Подамо задану інформаційну послідовність m=(0111) у вигляді многочлена m(x)=0x0+1x1+1x2+1x3=x+ x2+ x3.
Закодуємо задане повідомлення за таким алгоритмом:
1) многочлен інформаційного повідомлення m(x) множимо на xn-k:
xn-k m(x)= x3 (x+x2+x3)= x4 +x5 +x6;
2
)
знаходимо остачу (x)
від ділення добутку xn-k
m(x)
на твірний поліном коду
g(x):
x6 + x5 + x4 x3 +x +1
+ x6 + x4 + x3 x3 +x2
x5 + x3
+ x5 + x3 + x2
(x)= x2 = 0x0 +0x1 +1x2 (001);
3) кодовий поліном заданого інформаційного повідомлення знаходимо так:
u(x)=(x)+xn-km(x)= x2+x4+x5+x6=0x0+0x1+1x2+0x3+1x4+
+1x5 +1x6,
йому відповідає кодове слово u=(0010111).
Даний лінійний завадостійкий код, твірний поліном якого g(x) має степінь r=n-k=3, здатний виправляти помилки кратності l=1.
Виправимо помилку в комбінаціях коду 0110111, 1101010.
1) Прийнятій комбінації y= (0110111) відповідає многочлен y(x)= x+ x2 + x4 + x5+ x6.
Перевіримо дану комбінацію на наявність помилки: для цього розділимо її многочлен на твірний поліном коду:
x6
+
x5 +
x4 +
x2 +
x x3
+x
+1
+ x6 + x4 + x3 x3 +x2 +1
x5+ x3 + x2 + x
+ x5+ x3 + x2
s(x)= x – поліном остачі не дорівнює нулю, відтак, у заданій комбінації є помилка.
Поліном остачі s(x)=x=0x0+1x1+0x2 має степінь n-k-1 – у даному випадку 2 (оскільки степінь многочлена дільника n-k=3), і йому відповідає вектор (010) 0.
Вага Хеммінга вектора остачі визначається кількістю одиниць в ньому: (010)= 1 l, де l=1 – кратність помилок, що виправляються кодом.
Вага остачі ≤ l, тому виправлену комбінацію одержуємо додаванням многочленів прийнятої послідовності і остачі від її ділення на твірний поліном коду:
y(x) + s(x)= x6 + x5 + x4 + x2 + x + x= x6 + x5 + x4 + x2 =
= 0x0 + 0x1 + 1x2 + 0x3 + 1x4 +1x5 +1x6 (0010111).
Одержана у такий спосіб комбінація декодируется так:
(0110111) (0010111) (0111).
2) Прийнятій комбінації y= (1101010) відповідає многочлен y(x)= 1+ x+ x3+ x5.
Перевіримо дану комбінацію на наявність помилки. Для цього розділимо її на твірний поліном коду:
x5+
x3 +
x + 1 x3
+x
+1
+ x5+ x3 + x2 x2
s(x)= x2 + x + 1 0.
Многочлен остачі s(x)=1+x+x2 визначає вектор s=(111), вага якогого (111)= 3 > l, де l – кратність помилок, що виправляються кодом.
Вага остачі більше кратності помилок l=1, тому необхідно виконати циклічний зсув кодованої послідовності (1101010) на 1 розряд вправо: (1101010) (0110101).
Одержаній комбінації відповідає многочлен
y(x)=0x0+1x1+1x2+0x3+1x4+ 0x5+ 1x6=x+x2+x4+x6.
Знайдемо остачу від ділення даного многочлена на твірний поліном коду:
x6+
x4+
x2+
x x3
+x
+1
+ x6+ x4+ x3 x3 +1
x3+ x2 + x
+ x3 + x + 1
s(x)= x2 +1 (101).
Вага остачі (101)= 2 > l.
Вага остачі більше l=1, тому знову виконуємо циклічний зсув кодованої послідовності на 1 розряд вправо: (0110101) (1011010). Одержаній комбінації відповідає многочлен
y(x)=1x0+0x1+1x2+1x3+0x4+1x5 +0x6 =1+x2+x3+x5.
Розділимо даний многочлен на твірний поліном коду:
x5+
x3+
x2+
1 x3
+x
+1
+ x5+ x3 + x2 x2 +1
s(x)= 1 (100).
Вага вектора остачі (100)= 1 l – кратності помилок, що виправляються кодом. Таким чином одержуємо кодовий поліном u (x) додаванням останнього многочлена і многочлена його остачі від ділення на твірний поліном коду:
u(x)= x5+ x3+ x2+ 1+ 1 = x2+ x3+ x5= 0x0+ 0x1+ 1x2+ 1x3+
+0x4+ 1x5+ 0x6 (0011010).
Для того щоб одержати закодовану послідовність, виконуємо циклічний зсув кодового слова u (x) назад (вліво) на 2 розряди:
(0011010) (1101000).
Таким чином, одержуємо виправлену кодову комбінацію u= (1101000), в якій контрольним сумам відповідають молодші розряди в лівій частині кодового слова.
Отже, повідомлення декодуємо так:
(1101010) (1101000) (1000).
Відповідь: (0111) (0010111); (0110111) (0010111) (0111), (1101010) (1101000) (1110).
Приклад 3 Циклічний (4, 7)- код заданий твірним поліномом g(x)=1+x+x3. Визначити синдром виправлення поодиноких помилок цим кодом. Побудувати перевірну й твірну матриці коду. Декодувати повідомлення (1001110).