- •Тема 6. Кодування інформації
- •1. Характеристики кодів
- •2. Приклади бінарних кодів без надлишковості.
- •3. Основні теореми кодування
- •4. Оптимальне кодування за відсутності шумів. Код Шеннона-Фано.
- •5. Принципи завадостійкого кодування
- •6. Приклади бінарних кодів з виявленням і виправленням помилок.
- •1. Код з перевіркою на парність.
- •2. Код з простим повторенням.
- •3. Інверсний код (код Бауера).
- •4. Кореляційний код (Манчестер - код).
- •5. Кoд з сталою вагою (код на одну сполуку).
- •6. Код Хеммінга.
5. Кoд з сталою вагою (код на одну сполуку).
Це
код з сталою W = Const одиниць
у кодових словах. Кількість дозволених
кодових слів у коді довжиною n дорівнює
Такий код утворюється з простого двійкового шляхом відбору кодових слів, що мають однакову кількість одиниць. На приймальному боці підраховується кількість одиниць у кодовому слові, і якщо вона відрізняється від W, - це свідчить про помилку. Код виявляє всі помилки непарної кратності і такі помилки парної кратності, що порушують умову W ' = Const.
Кодова
відстань dmin =
2, надлишковість
.
6. Код Хеммінга.
Це один з найпоширеніших коректуючих кодів. Він виправляє всі однократні помилки за dmin= 3, а за dmin = 4 (розширений код Хеммінга), крім того, виявляє всі двократні помилки.
За
заданої кількості інформаційних
символів k ,
(
)
кількість перевірочних символів (n-k)
і довжина коду n визначаються
нижньою межею Хеммінга (26) для S =
1
і для k = 1, 2...,10 наведено в таблиці |
k |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
n |
3 |
5 |
6 |
7 |
9 |
10 |
11 |
12 |
13 |
14 |
|
Перевірочні
символи b1, b2,
...
,
розташовуються на позиціях 1, 2, 4, 8,...,
,
номери яких є цілими степенями двійки,
таким чином, простому двійковому
слову al,a2,...,ak відповідає
у коді Хеммінга слово (вектор) (B)
= (b1, b2, a1, b4, a2, a3, a4, b8,...
,ak)
з шуканими перевірочними
символами.
Утворюється матриця (A) з (n-k) рядків і п стовпчиків, у якій кожний і-ий стовпчик (i = 1, 2,... ,n) є двійковим зображенням свого номера. Наприклад за k = 4, п = 7 зазначена (перевірочна) матриця має вигляд
Записується система рівнянь для визначення перевірочних символів
де множення і додавання відбувається за модулем 2.
Для наведеного прикладу (B) = (b1, b2, a1, b4, a2, a3, a4) і система перевірочних рівнянь має вигляд
За зазначених умов у кожному перевірочному рівнянні є один і тільки один з перевірочних символів b1,b2, b4,..., які легко знаходяться.
На приймальному боці перевіряється виконання наведених рівнянь для прийнятих символів аi' та bj'. Невиконання будь-якого з перевірочних рівнянь визначає помилку, а запис отриманих перевірочних значень (синдром перевірочних рівнянь) дорівнює двійковому зображенню номера спотвореного розряду, і цей розряд треба інвертувати.
Для наведеного прикладу двійковому слову 0101 відповідають перевірочні рівняння
і
слово у коді Хеммінга 0100101.
Припустимо, внаслідок спотворень у каналі зв'язку замість цього слова було прийнято 0100111. Для виявлення помилки виконуються перевірочні співвідношення
Номер помилкової позиції у двійковому записі 110, у десятковому записі 6 (=1·22 +1·21 + 0·20), отже помилка у шостому розряді. Таким чином, у прийнятому слові 0100111 слід змінити шостий символ, і отримуємо слово 010010, яке було передано.
7. Циклічні коди. Це різновид систематичних кодів (перевірочні (n-k) символів розташовані після kінформаційних).
Циклічний код - це бінарний код, у якому кожне дозволене слово є циклічною перестановкою іншого дозволеного (перша цифра переставляється у кінець). Наприклад, якщо 0111001 - дозволене слово, то 1110010 - також дозволене.
Кодові слова циклічного коду F(l,0) = al,a2,...,an, зручно зображати у вигляді поліномів від формальної змінної х
При цьому циклічний зсув формально відповідає символічному множенню ® полінома (кодового слова) F(x) на х
Таке уявлення кодових слів дозволяє звести дії над словами до дій над поліномами (за модулем 2).
Можна довести, що кожне кодове слово F(x) циклічного коду довжиною п ділиться без остачі на поліном Tn-k(x) степені (n-k), який є дільником двочлена хn +1. Для таких поліномів (твірних) складені таблиці, фрагмент яких має вигляд
n-k |
1 |
2 |
3 |
4 |
4 |
5 |
5 |
5 |
Tn-k(x) |
|
x2+x+1 |
x3+x+1 |
x4+x2+1 |
x4+x3+1 |
x5+x2+1 |
x5+x3+1 |
x5+x3+ +x2+x+1 |
(Приклад отримання твірних поліномів:
)
З зазначеної умови випливає формула утворення кодового слова F(x) циклічного коду довжиною п з простого двійкового числа Q(l,0) довжиною k, якому відповідає поліном Q(x) степені k
де
-
остача від ділення добутку
на
твірний поліном
На
цьому ґрунтується перевірка прийнятого
слова F'(x) на наявність помилки
,
свідчить про наявність помилки, а номер
розряду i (справа),
де є помилка визначається умовою
,
Один з алгоритмів циклічного кодування такий:
1.
З нижньої межі Хеммінга
знаходиться
довжина коду n і
кількість (n-k)
контрольних символів.
2. Знаходиться твірний поліном
3. Задане просте двійкове кодове слово Q(l,0) записується у вигляді поліному Q(x)
4. Утворюється кодове слово у вигляді поліному F(x) і у вигляді бінарного циклічного коду F(l,0)
Приклад:
|
|
|||||||||||||||||||
|
|
Нехай
на приймальному боці замість цього
слова отримано
|
|
|||||||||||||||||||||||||
|
|
помилка
є
і = 4: |
^iJW |
|
|
|
|
|
|
||||||||||||||||||||||||||||||
|
|
|
|
|
|
||||||||||||||||||||||||||||||
|
|
|
|
|
|
||||||||||||||||||||||||||||||
|
|
|
|
|
|
||||||||||||||||||||||||||||||
|
|
|
|
|
|
і=1: і=2:
і=3: і=4:
Таким чином помилка у четвертому розряді, який треба інвертувати: 0110010 => 0111010 = F(l,0)
Додаток 1.
Фрагмент таблиці значень війкових логарифмічних цілих чисел
x |
log2x |
x |
log2x |
x |
log2x |
x |
log2x |
1
|
0,000
|
36
|
5,170
|
71
|
6,150
|
106
|
6,728
|
2
|
1,000
|
37
|
5,209
|
72
|
6,170
|
107
|
6,741
|
3
|
1,585
|
38
|
5,248
|
73
|
6,190
|
108
|
6,755
|
4
|
2,000
|
39
|
5,285
|
74
|
6,209
|
109
|
6,768
|
5
|
2,322
|
40
|
5,322
|
75
|
6,229
|
110
|
6,781
|
6
|
2, 5л 5
|
41
|
5,358
|
76
|
6,248
|
111
|
6,794
|
7
|
2,807
|
42
|
5,392
|
77
|
6,207
|
112
|
6,807
|
8
|
3,000
|
43
|
5 426
|
78
|
6,285
|
113
|
6,820
|
9
|
3,170
|
44
|
5,159
|
79
|
6,304
|
114
|
6,833
|
10
|
3,332
|
45
|
5,192
|
80
|
6,322
|
115
|
6,845
|
11
|
3,459
|
46
|
5,524
|
81
|
6,340
|
116
|
6,858
|
12
|
3,585
|
47
|
5,555
|
82
|
6,358
|
117
|
6,870
|
13
|
3,700
|
48
|
5,585
|
83
|
6,375
|
118
|
6,883
|
14
|
3,807
|
49
|
5,615
|
84
|
6,392
|
119
|
6,895
|
15
|
3,907
|
50
|
5,644
|
85
|
6,409
|
120
|
6,907
|
16
|
4,000
|
51
|
5,672
|
86
|
6,426
|
121
|
6,919
|
17
|
4,087
|
52
|
5,700
|
87
|
6,443
|
122
|
6,931
|
18
|
4,170
|
53
|
5,728
|
88
|
6,459
|
123
|
6,943
|
19
|
4,248
|
54
|
5,755
|
89
|
6,476
|
124
|
6,954
|
20
|
4,322
|
55
|
5,781
|
90
|
6,492
|
125
|
6,966
|
21
|
4,392
|
56
|
5,807
|
91
|
6,508
|
126
|
6,977
|
22 |
4,459
|
57
|
5,833
|
92
|
6,524
|
127
|
6,989
|
23
|
4,524
|
58
|
5,858
|
93
|
6,539
|
128
|
7,000
|
24
|
4,585
|
59
|
5,883
|
94
|
6,555
|
200
|
7,644
|
25
|
4,644
|
60
|
5,907
|
95
|
6,570
|
256
|
8,000
|
26
|
4,700
|
61
|
5,931
|
96
|
6,585
|
300
|
8,229
|
27
|
4,755
|
62
|
5,951
|
97
|
6,600
|
400
|
8,644
|
28
|
4,807
|
63
|
5,977
|
98
|
6,615
|
500
|
8,966
|
29
|
4,858
|
64
|
6,000
|
99
|
6,629
|
512
|
9,000
|
30
|
4,907
|
65
|
6,022
|
100
|
6,614
|
600
|
9,229
|
31
|
4,954
|
66
|
6,044
|
101
|
6,658
|
700
|
9,451
|
32
|
5,000
|
67
|
6,066
|
102
|
6,672
|
800
|
9,644
|
33
|
5,044
|
68
|
6,087
|
103
|
6,687
|
900
|
9,814
|
34
|
5,087
|
69
|
6,109
|
104
|
6,700
|
1000
|
9,965
|
35
|
5,129
|
70
|
6,129
|
105
|
6,714
|
10000
|
13,288
|
Додаток 2.
Фрагмент таблиці значень функції -plog2p
p |
-plog2p |
p |
-plog2p |
p |
-plog2p |
p |
-plog2p |
0,001 |
0,0099 |
0,027
|
0,1407
|
0,150
|
0,4105
|
0,600
|
0,4432
|
0,002 |
0,0179 |
0,028
|
0,1444
|
0,160
|
0,4230
|
0,610
|
0,4350
|
0,003 |
0,0251 |
0,029
|
0,1481
|
0,175
|
0,4400
|
0,625
|
0,4238
|
0,004 |
0,0319 |
0,030
|
0,1518
|
0,180
|
0,4453
|
0,650
|
0,4040
|
0,005 |
0,0382 |
0,032
|
0,1589
|
0,190
|
0,4552
|
0,675
|
0,3828
|
0,006 |
0,0443 |
0,035
|
0,1693
|
0,200
|
0,4644
|
0,700
|
0,3602
|
0,007 |
0,0501 |
0,037
|
0,1760
|
0,210
|
0,4728
|
0,710
|
0,3508
|
0,008 |
0,0557
|
0,040
|
0,1858
|
0,225
|
0,4842
|
0,725
|
0,3364
|
0,009 |
0,0612
|
0,042
|
0,1941
|
0,250
|
0,5000
|
0,750
|
0,3113
|
0,010 |
0,0664
|
0,045
|
0,2013
|
0,275
|
0,5122
|
0,775
|
0,2850
|
0,011 |
0,0716
|
0,047
|
0,2073
|
0,300
|
0,5211
|
0,800
|
0,2575
|
0,012 |
0,0766
|
0,050
|
0,2161
|
0,310
|
0,5238
|
0,810
|
0,2462
|
0,013 |
0,0814
|
0,055
|
0,2301
|
0,325
|
0,5270
|
0,825
|
0,2290
|
0,014 |
0,0862
|
0,060
|
0,2435
|
0,350
|
0,5301
|
0,850
|
0,1993
|
0,015 |
0,0909
|
0,065
|
0,2563
|
0,375
|
0,5306
|
0,875
|
0,1810
|
0,016 |
0,0954
|
0,070
|
0,2686
|
0,400
|
0,5288
|
0,900
|
0,1368
|
0,017 |
0,0999
|
0,075
|
0,2803
|
0,410
|
0,5274
|
0,910
|
0,1238
|
0,018 |
0,1043
|
0,080
|
0,2915
|
0,425
|
0,5246
|
0,925
|
0,1040
|
0,019 |
0,1086
|
0,085
|
0,3023
|
0,450
|
0,5184
|
0,950
|
0,0703
|
0,020 |
0,1129
|
0,090
|
0,3127
|
0,475
|
0,5102
|
0,975
|
0,0356
|
0,021 |
0,1 170
|
0,095
|
0,3226
|
0,500
|
0,5000
|
0,930
|
0,0286
|
0,022 |
0,1211
|
0,100
|
0,3322
|
0,510
|
0,4954
|
0,990
|
0,0143
|
0,023 |
0,1252
|
0,110
|
0,3503
|
0,525
|
0,4880
|
0,095
|
0,0072
|
0,024 |
0,1291
|
0,125
|
0,3750
|
0,550
|
0,4744
|
0,097
|
0,0043
|
0,025 |
0,1330
|
0,130
|
0,3826
|
0,575
|
0,4591
|
0,999
|
0,0014
|
0,026 |
0,1369
|
0,140
|
0,3971
|
|
|
|
|
Список літератури
1. В. І. Федорук. Теорія інформації та кодування. - Чернівці, „Рута", 2001.
2. Ю. П. Жураковський, В. М. Полторак. Теорія інформації та кодування. - Київ, „Вища школа", 2001.
3. В. П. Цимбал. Теория информации и кодирование. - Киев, „Вища школа", 1992.
4. В. П. Цимбал. Задачник по теории информации и кодирования. - Киев, „Вища школа", 1976.
5. И. В. Кузьмин, В. А. Кедрус. Основы теории информации и кодирования. - Киев, „Вища школа", 1986.
6. В. А. Орлов, Л. И. Филиппов. Теория информации в упражнениях и задачах. -Москва, „Высшая школа", 1976.
7. А. М. Яглом, И. М. Яглом. Вероятность и информация. - Москва, „Наука", 1973.
8. Ф. П. Тарасенко. Введение в курс теории информации. - Томск, изд.тгу, 1963.
9. В. М. Дмитриев. Теория информации и кодирования. - Москва, Изд. МЭИ, 1997.
