WST†P DO TEORII INFORMACJI I KODOWANIA Grzegorz Szkibiel

Transkrypt

WST†P DO TEORII INFORMACJI I KODOWANIA Grzegorz Szkibiel
WST†P DO TEORII INFORMACJI I
KODOWANIA
Grzegorz Szkibiel
Wiosna 2014/15
Spis tre±ci
1 Kodowanie i dekodowanie
4
1.1
Kodowanie a szyfrowanie . . . . . . . . . . . . . . . . . . . . .
4
1.2
Podstawowe poj¦cia . . . . . . . . . . . . . . . . . . . . . . . .
5
1.3
Dekodowanie jednoznaczne . . . . . . . . . . . . . . . . . . . .
7
1.4
Kody blokowe i natychmiastowe . . . . . . . . . . . . . . . . .
7
1.5
Przykªady znanych kodów blokowych . . . . . . . . . . . . . .
8
2 Twierdzenia Krafta i McMillana
10
2.1
Konstruowanie kodów natychmiastowych . . . . . . . . . . . .
10
2.2
Twierdzenia
11
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 Kody Humana
13
3.1
™ródªo informacji . . . . . . . . . . . . . . . . . . . . . . . . .
13
3.2
Denicja kodu Humana . . . . . . . . . . . . . . . . . . . . .
14
3.3
Konstrukcja kodu Humana . . . . . . . . . . . . . . . . . . .
15
4 Kompresowanie kodów i entropia
18
4.1
Przykªad kompresowania danych . . . . . . . . . . . . . . . . .
18
4.2
Idea entropii . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
4.3
Denicja entropii
. . . . . . . . . . . . . . . . . . . . . . . . .
20
4.4
Maximum i minimum entropii . . . . . . . . . . . . . . . . . .
21
4.5
Rozszerzenie ¹ródªa . . . . . . . . . . . . . . . . . . . . . . . .
23
4.6
Entropia a przeci¦tna dªugo±¢ sªowa kodowego . . . . . . . . .
24
4.7
Twierdzenie Shannona o kodowaniu bezszumowym . . . . . . .
25
5 Pewna komunikacja poprzez niepewne ª¡cza
27
5.1
Symetryczne ª¡cze binarne . . . . . . . . . . . . . . . . . . . .
27
5.2
Pr¦dko±¢ przepªywu informacji . . . . . . . . . . . . . . . . . .
29
2
5.3
Bariera pojemno±ci . . . . . . . . . . . . . . . . . . . . . . . .
5.4
Odlegªo±¢ Hamminga . . . . . . . . . . . . . . . . . . . . . . .
31
5.5
Wykrywanie i poprawianie bª¦dów . . . . . . . . . . . . . . . .
33
6 Kody liniowe
30
35
6.1
Denicja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
6.2
Macierz generuj¡ca
. . . . . . . . . . . . . . . . . . . . . . . .
36
6.3
Równania opisuj¡ce kody . . . . . . . . . . . . . . . . . . . . .
39
6.4
Macierz sprawdzaj¡ca . . . . . . . . . . . . . . . . . . . . . . .
40
6.5
Waga Hamminga
. . . . . . . . . . . . . . . . . . . . . . . . .
41
6.6
Syndrom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
6.7
Wykrywanie i poprawianie bª¦dów . . . . . . . . . . . . . . . .
44
7 Kody Hamminga
46
7.1
Optymalne kody poprawiaj¡ce pojedyncze bª¦dy . . . . . . . .
46
7.2
Przykªady kodów Hamminga . . . . . . . . . . . . . . . . . . .
48
7.3
Dekodowanie kodów Hamminga . . . . . . . . . . . . . . . . .
49
7.4
Uwagi ko«cowe
50
. . . . . . . . . . . . . . . . . . . . . . . . . .
8 Kody ReedaMüllera
51
8.1
Funkcje Boole'a . . . . . . . . . . . . . . . . . . . . . . . . . .
8.2
Wielomiany Boole'a . . . . . . . . . . . . . . . . . . . . . . . .
54
8.3
Kody ReedaMüllera . . . . . . . . . . . . . . . . . . . . . . .
56
8.4
Geometria aniczna nad ciaªem
. . . . . . . . . . . . . . .
60
8.5
Dekodowanie kodu Reeda-Müllera . . . . . . . . . . . . . . . .
63
3
Z2
51
Rozdziaª 6
Kody liniowe
Jak ju» wiemy, w celu przesªania zakodowanego tekstu dzielimy go na bloki
równych dªugo±ci i do ka»dego z tych bloków dodajemy tak zwane bity
sprawdzaj¡ce. Bity te s¡ w ±cisªej zale»no±ci z bitami informacyjnymi, czyli
tymi, z których skªadaª si¦ blok przed dodaniem do niego symboli sprawdzaj¡cych. Wspomniana zale»no±¢ najcz¦±ciej jest liniowa i dlatego odpowiadaj¡cy kod nazwiemy
kodem liniowym.
W dalszym ci¡gu rozwa»a¢ b¦dziemy
tylko kody dwójkowe, jednak»e podane denicje i wªasno±ci przenosz¡ si¦ na
przypadek ogólny.
6.1 Denicja
W naszych rozwa»aniach przyjmiemy, »e alfabet kodowy ma struktur¦ ciaªa
(sko«czonego). W dalszym ci¡gu wykªadu oznaczymy go przez
F.
Wówczas
wn (F) wszystkich sªów nliterowych daj¡cych si¦ zapisa¢ za pomoc¡
alfabetu F ma struktur¦ przestrzeni wektorowej nad ciaªem F je»eli dziaªania
dodawania wektorów a = a1 a2 . . . an , b = b1 b2 . . . bn i mno»enia przez skalar λ
zbiór
okre±limy nast¦puj¡co:
a + b = (a1 + b1 )(a2 + b2 ) . . . (an + bn )
λa = (λa1 )(λa2 ) . . . (λan ).
λ jest dodawaniem i mno»eF.
Kodem liniowym dªugo±ci n nazywamy dowoln¡ podprzestrze« wektorow¡ K
przestrzeni wn (F). Je»eli dim K = k , kod K nazywamy liniowym (n, k)
Dodawanie wspóªrz¦dnych oraz mno»enie przez
niem zdeniowanym w ciele
35
kodem w alfabecie
F.
Nie trudno si¦ domy±li¢, »e wymiar podprzestrzeni
K
jest liczb¡ bitów informacyjnych. Mo»na te» zauwa»y¢, jak rozkodowujemy
kod liniowy. Mianowicie, je±li otrzymane w wyniku transmisji sªowo
do podprzestrzeni
K,
uznajemy, »e bª¡d nie zostaª popeªniony.
w nale»y
W przeci-
w nale»y do pewnej warstwy s +K o ,,standardowym
Zatem w − s ∈ K i w rozkodowujemy wªa±nie jako w − s.
wnym wypadku, sªowo
reprezentancie.
6.2 Macierz generuj¡ca
Zajmiemy si¦ teraz zwi¡zkiem bitów informacyjnych z bitami sprawdzaj¡cymi.
Czyli sposobem generowania kodu.
W przypadku kodów liniowych
wk (F) do wn (F) czyli mno»enie przez
k × n o wspóªczynnikach z F. Macierz t¦
nazwiemy macierz¡ generuj¡c¡.
Aby zdeniowa¢ precyzyjnie to poj¦cie,
przyjmijmy, »e dim K = k oraz u1 u2 . . . uk jest blokiem bitów informacyjnych,
który chcemy zakodowa¢. Niech e1 , e2 , . . . , ek b¦dzie baz¡ w K . Zatem
wykorzystujemy odwzorowanie liniowe z
pewn¡ macierz o wymiarach
k
X
v ∈ K ⇐⇒ v =
ui ei .
(6.1)
i=1
Tak wi¦c bity informacyjne
kodowe
v.
Macierz¡ generuj¡c¡
u1 , u2 , . . . , uk
kodu
K
jednoznacznie okre±laj¡ sªowo
nazywamy macierz

e1
 e2 

G=
 ... ,
ek

gdzie
e1 , e 2 , . . . , ek
informacyjnych
jest baz¡ w
u1 , u2 , . . . , uk ,
6.1 Przykªad.
K.
(6.2)
Aby otrzyma¢ sªowo kodowe z bitów
mno»ymy
u1 u2 . . .
Kod powtórze«
Kn
uk G.
jest liniowym
generuj¡cej
G=
1 1 ...
36
1 .
(6.3)
(n, 1)kodem
o macierzy
6.2 Przykªad.
Kod sprawdzaj¡cy parzysto±¢
Kn⊥
jest liniowym
(n, n − 1)
kodem o macierzy generuj¡cej

1
 0

G=
 ...
0
0
1
...
...
.
..
...
0 ...

1
1 

.

...
1 1
0
0
Zauwa»my, »e je±li pomno»ymy macierz generuj¡c¡ kodu
macierz generuj¡c¡ kodu powtórze«
Kn⊥ przez transponowan¡
Kn , to otrzymamy macierz zerow¡.
Mo»emy
wi¦c przyj¡¢, »e oba kody s¡ w opisanym sensie ortogonalne do siebie (macierz
zerow¡ otrzymamy tak»e mno»¡c macierz kodu
Kn⊥ .
Kn
przez transponowan¡
macierz generuj¡c¡ kodu
6.3 Przykªad.
Macierze generuj¡ca nie jest okre±lona jednoznacznie.
Nie
chodzi tu tylko o wybór wektorów bazowych ale i o ich kolejno±¢. Na przykªad
∗
dla kodu K4 (zobacz przykªad 5.2) ma 6 macierzy generuj¡cych:
1 0 0 0
0 1 1 1
1 1 1 1
0 1 1 1
1 0 0 0
1 1 1 1
0 1 1 1
1 0 0 0
0 1 1 1
1 1 1 1
1 1 1 1
1 0 0 0
.
00, 01, 10 i 11 pomno»one kolejno
{0000, 1000, 0111, 1111}.
∗
macierzy generuj¡cej dla kodu K6 jest macierz


1 0 0 0 1 1
G =  0 1 0 1 0 1 .
0 0 1 1 1 0
Zauwa»my, »e bloki bitów informacyjnych
przez ka»d¡ z powy»szych macierzy daj¡ zbiór
Przykªadem
Zauwa»my, »e po pomno»eniu u1 u2 u3 przez powy»sz¡ macierz G, otrzymamy
∗
wzór na sªowo w kodzie K6 : u1 u2 u3 (u2 + u3 )(u1 + u3 )(u1 + u2 ).
6.4 Przykªad.
Niech
r>1
i
Podamy teraz przykªad kodu, który jeszcze si¦ nie pojawiª.
s>1
b¦d¡ ustalonymi liczbami naturalnymi i niech
n = rs.
Ka»de sªowo kodowe zapisujemy w postaci macierzy w nast¦puj¡cy sposób:
•
W ka»dym z wierszy 1, 2,
cyjnych. W sumie daje to
. . . , s − 1 zapisujemy r − 1 bitów informa(r − 1)(s − 1) bitów informacyjnych.
37
•
Ostatni bit w wierszu jest bitem, który sprawdza parzysto±¢ sªowa w
danym wierszu.
•
Ostatni wiersz skªada si¦ z bitów sprawdzaj¡cych parzysto±ci swoich
kolumn.
Ustalmy
r = 4 i s = 3.
Przykªadem sªowa kodowego jest


1 1 0 0
 0 1 1 0 
1 0 1 0.
Bitami informacyjnymi s¡ tu (czytane wierszami) 110011.
(12, 6)kod
Jest to wi¦c
i jego baza musi by¢ sze±cio-elementowa. Przyjmijmy, »e sªowa
kodowe odczytujemy z macierzy poprzez ª¡czenie kolejnych wierszy. Przykªadem macierzy generuj¡cej jest tu wi¦c








1
0
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
1
1
1
0
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
1
1
1
1
0
0
1
0
0
0
1
0
0
1
0
0
0
1
0
0
1
1
1
1
1
1
1




.



Jak ju» zauwa»yli±my, baz¦ w podprzestrzeni mo»na wybra¢ na wiele
sposobów, wi¦c macierz generuj¡ca nie jest dla danego kodu wyznaczona
jednoznacznie.
Zawsze jednak mo»emy otrzyma¢ sªowo kodowe
blok bitów informacyjnych
u
v
mno»¡c
przez macierz generuj¡c¡ (patrz (6.2) i (6.3)).
Tak wi¦c
v = uG.
Zmiana macierzy generuj¡cej oznacza zmian¦ bazy w kodzie, a w konsekwencji zmian¦ reguªy kodowania bitów informacyjnych. Je»eli na przykªad w
(4, 3)kodzie sprawdzaj¡cym parzysto±¢ przyjmiemy baz¦ {1001, 0101, 0011},
to macierz generuj¡ca b¦dzie miaªa posta¢


1 0 0 1
G = 0 1 0 1
0 0 1 1
38
i wynik mno»enia macierzy
uG
da nam sªowo kodowe, w którym bity in-
formacyjne b¦d¡ na pocz¡tku (czyli ka»de sªowo kodowe b¦dzie si¦ zaczyna¢ od
u),
a bit sprawdzaj¡cy b¦dzie ostatni.
{1001, 1100, 1111},
Je»eli za baz¦ przyjmiemy
bity informacyjne ,,schowaj¡ si¦ i nie b¦dzie ich mo»na
odczyta¢ patrz¡c na sªowo kodowe. Na przykªad 101 b¦dzie zakodowane jako
0110.
Najbardziej wygodnym kodem liniowym jest taki kod, w którym bity
informacyjne znajduj¡ si¦ na pocz¡tku sªowa kodowego.
Takiemu kodowi
odpowiada macierz generuj¡ca postaci
G = [I|B] ,
B macierz¡, która ustala zasady dobierasystematycznym, je±li
0
jego macierz generuj¡ca ma posta¢ (6.4). Dwa kody liniowe K oraz K o tej
samej dªugo±ci n nazywamy równowa»nymi, je»eli istnieje taka permutacja σ
zbioru nelementowego, »e sªowu kodowemu v1 v2 . . . vn ∈ K odpowiada sªowo
vσ(1) vσ(2) . . . vσ(n) ∈ K 0 . Na przykªad kody K4∗ oraz {0000, 1011, 0100, 1111}
s¡ równowa»ne (σ = (12)).
Okazuje si¦, »e prawdziwe jest nast¦puj¡ce
gdzie
I
(6.4)
jest macierz¡ jednostkow¡, a
nia bitów sprawdzaj¡cych.
Kod liniowy nazywamy
twierdzenie, które pozwala nam skupi¢ caª¡ uwag¦ na kodach systematycznych.
6.5 Twierdzenie. Ka»dy kod liniowy jest równowa»ny pewnemu kodowi systematycznemu.
Dowód.
Niech
K
(n, k)kodem liniowym o macierzy generuj¡cej G.
k , a to oznacza, »e ma ona k liniowo
Przestawmy kolumny tak, aby owe k liniowo nieza-
b¦dzie
Zatem rz¡d tej macierzy jest równy
niezale»nych kolumn.
le»nych kolumn znalazªo si¦ z lewej strony. Oznacza to ustalenie pewnej permutacji bitów sªowa kodowego. Nast¦pnie poprzez wykonanie pewnej liczby
elementarnych operacji na wierszach (zamiany wierszy lub dodanie do siebie
dwóch wierszy) dochodzimy do postaci
[I|B].
Wykonuj¡c te operacje nie
zmieniamy podprzestrzeni, tylko jej baz¦. ustalona permutacja nie zmienia
si¦.
6.3 Równania opisuj¡ce kody
Macierz generuj¡ca daje nam mo»liwo±¢ zakodowania bloku informacyjnego.
Je»eli bity informacyjne mamy ju» zakodowane, mo»emy powstaªy kod opisa¢
39
stosuj¡c jednorodne ukªady równa« liniowych. Na przykªad, dla kodu powtórze«
Kn wiemy, »e wszystkie bity s¡ równe.
· · · = xn lub, równowa»nie, w postaci
Mo»na wi¦c to zapisa¢ jako
x1 + xn = 0
x2 + xn = 0
(6.5)
.
· · · ..
xn−1 + xn = 0.
···
x1 = x 2 =
Kod sprawdzaj¡cy parzysto±¢ opisuje natomiast równanie
x1 + x2 + · · · + xn = 0.
(6.6)
Zauwa»my, »e macierz generuj¡ca kod sprawdzaj¡cy parzysto±¢ jest macierz¡
ukªadu (6.5), czyli ukªadu opisuj¡cego kod powtórze«.
Natomiast macierz
ukªadu opisuj¡cego kod sprawdzaj¡cy parzysto±¢ (6.6) jest macierz¡ generuj¡c¡ kod powtórze«.
Ka»dy jednorodny ukªad równa« opisuje pewien kod liniowy i odwrotnie,
ka»dy kod liniowy mo»e by¢ opisany za pomoc¡ ukªadu równa« jednorodnych.
0
Niech dane b¦d¡ dwa kody liniowe K oraz K . Je»eli istnieje taki ukªad
równa« jednorodnych opisuj¡cy kod K , »e macierz tego ukªadu jest macierz¡
0
0
generuj¡c¡ kod K , to kody K i K nazywamy ortogonalnymi lub dualnymi,
0
⊥
co zapisujemy K = K . Zatem kod powtórze« oraz kod sprawdzaj¡cy
parzysto±¢ s¡ ortogonalne.
6.4 Macierz sprawdzaj¡ca
K oraz ukªad równa« jednorodnych opisuj¡cy ten kod,
macierz¡ sprawdzaj¡c¡ kod K nazywamy macierz tego ukªadu. Macierz t¦
oznacza¢ b¦dziemy przez H . Dla kodu sprawdzaj¡cego parzysto±¢ mamy
H = 1 1 . . . 1 , a dla kodu powtórze« mamy


1
0 ... 0 1
 0
1 . . . 0 1


H=
.
. . . . . . . . . . . . 
0
0 ... 1 1
Maj¡c dany kod
Wprost z denicji wynika, »e je±li
v ∈ K , to
H v T = 0T .
40
Podobnie jak macierz generuj¡ca, tak»e macierz sprawdzaj¡ca nie jest okre±lona
jednoznacznie.
Poka»emy teraz jaki zwi¡zek zachodzi pomi¦dzy macierz¡
generuj¡c¡ a macierz¡ sprawdzaj¡c¡.
6.6 Twierdzenie. Kod systematyczny
o macierzy generuj¡cej G = [I|B] ma
macierz sprawdzaj¡c¡ H = −B T |I .
Dowód.
K jest liniowym (n, k)kodem o macierzy
sªowo kodowe w kodzie K ma posta¢ uG
Dla dowodu przyjmijmy, »e
generuj¡cej
G = [I|B].
Dowolne
dla pewnego bloku bitów informacyjnych
bloku bitów informacyjnych
u
u.
Sprawdzimy, czy dla dowolnego
T
T
zachodzi równo±¢ H( G) =
. Korzystaj¡c
z wªasno±ci transpozycji oraz postaci macierzy
H(uG) = HG u = −B T |I
T
T
oraz
0
H
mamy
I
uT = (−B T I + IB T )uT = 0T .
BT
K i je±li H jest macierz¡
K ⊂ L. Poka»emy, »e dim K = dim L,
co, razem z inkluzj¡ K ⊂ L, oznacza, »e K = L. Ale dim L = n − ordH , a
ordH jest stopniem macierzy jednostkowej I zawartej w H . Poniewa» G jest
T
macierz¡ k × n, wi¦c B ma rozmiary k × (n − k), czyli −B jest macierz¡ o
rozmiarach (n−k)×k i podmacierz I macierzy H ma rozmiary (n−k)×(n−k).
Zatem dim L = k = dim L.
Zatem macierz
H
T
u
G
sprawdza dowolne sªowo kodu
sprawdzaj¡c¡ pewnego kodu
L,
to
6.7 Wniosek. Ka»dy liniowy (n, k)kod ma macierz sprawdzaj¡c¡ o wymiarach (n − k) × n.
6.8 Wniosek. Dla danego kodu (n, k)kodu liniowego K zachodzi równo±¢
dim K + dim K ⊥ = n.
6.5 Waga Hamminga
Do tej pory mówili±my jak opisa¢ dany kod liniowy oraz jak zakodowa¢ blok
bitów informacyjnych.
Zajmiemy si¦ teraz dekodowaniem, czyli odczyty-
waniem bitów informacyjnych, pami¦taj¡c, »e przy tej czynno±ci musimy te»
korygowa¢ lub wykrywa¢ ewentualne bª¦dy powstaªe w wyniku transmisji.
Okazuje si¦, »e w przypadku kodów liniowych zasad¦ MLD ªatwiej jest zastosowa¢ ni» w przypadku ogólnym.
Przede wszystkim, dzi¦ki strukturze
przestrzeni wektorowej, mo»emy dla danego kodu wprowadzi¢ norm¦, któr¡
jest zdeniowana poni»ej
waga Hamminga.
41
Wag¡ Hamminga binarnego sªowa kodowego
a = a1 a2 . . . an
nazywamy
liczb¦ ró»nych od zera symboli w tym sªowie, tj.
||a|| = # {i : ai 6= 0} .
Zauwa»ymy zaraz, »e waga Hamminga jest norm¡ na przestrzeni wektorowej
wn (F),
a metryka generowana przez t¦ norm¦ jest odlegªo±ci¡ Hamminga.
Dzi¦ki wadze Hamminga, zastosowanie twierdze« 5.5 oraz 5.6 znacznie si¦ upro±ci, gdy» zamiast rozpatrywa¢ odlegªo±ci pomi¦dzy ka»dymi dwoma sªowami,
wystarczy rozwarzy¢ odlegªo±¢ ka»dego ze sªów od zera.
6.9 Twierdzenie. Dla dowolnych sªów a, b ∈ wn (F) zachodz¡ nast¦puj¡ce
wªasno±ci:
(i)
||a|| = 0 ⇐⇒ a = 0;
|| − a|| = ||a||;
(ii)
(iii)
||a + b|| ≤ ||a|| + ||b||.
(iv)
Je±li okre±limy d(a, b) = ||a − b||, to d jest odlegªo±ci¡ Hamminga.
Dowód.
Wªasno±ci (i) oraz (ii) s¡ ªatwe do pokazania.
wªasno±ci¡ (iii).
pewnego
i,
to
Rozwa»my w tym celu
ai 6= 0
lub
bi 6= 0,
||a + b||.
Zajmijmy si¦ wi¦c
Je±li
ai + bi 6= 0
dla
czyli
# {i : ai + bi 6= 0} ≤ # {i : ai 6= 0} + # {i : bi 6= 0} .
Zatem
||a + b|| ≤ ||a|| + ||b||.
Dla dowodu (iv) zauwa»my, »e sªowa
same znaki wtedy i tylko wtedy, gdy
a
oraz
b
ai − b i = 0 .
maj¡ na pozycji
||a − b||
czyli d(a, b).
Zatem
liczb¦ pozycji, na których symbole obu sªów s¡ ró»ne,
i
takie
oznacza
Podobnie jak dla odlegªo±ci Hamminga zdeniowali±my odlegªo±¢ mini-
Wag¡ minimaln¡
niezerowego sªowa a ∈ K :
maln¡, tak teraz zdeniujemy wag¦ minimaln¡.
nazywamy najmniejsz¡ wag¦ Hamminga
kodu
K
w(K) = min {||a|| : a 6= 0} .
W celu obliczenia minimalnej wagi rozwa»amy tylko odlegªo±ci Hamminga sªów kodowych od sªowa
0,
a nie wszystkie mo»liwe odlegªo±ci.
Na
przykªad waga minimalna kodu sprawdzaj¡cego parzysto±¢ wynosi 2, a kodu
powtórze« n.
42
6.10 Twierdzenie. Dla dowolnego nietrywialnego kodu dwójkowego, waga
minimalna jest równa odlegªo±ci minimalnej.
Dowód.
Niech
gdzie przez
iowego
K.
a oraz b b¦d¡ sªowami kodowymi, dla których d(a, b) = d(K),
d(K)
oznaczyli±my minimaln¡ odlegªo±¢ dla naszego kodu lin-
Wówczas, poniewa»
d(K) > 0,
d(K) = ||a − b|| ≥ w(K),
gdzie
w(K)
oznacza wag¦ minimaln¡ kodu
Z drugiej strony, niech
w(K) > 0.
c
K.
b¦dzie sªowem kodowym, dla którego
||c|| =
Wówczas mamy
w(K) = ||c − 0|| = d(c, 0) ≥ d(K).
Zatem
w(K) = d(K).
6.11 Wniosek. Kod liniowy poprawia (wykrywa) t bª¦dów wtedy i tylko wt-
edy, gdy jego waga minimalna jest wi¦ksza od 2t (t).
6.6 Syndrom
Zajmiemy si¦ teraz dekodowaniem kodów liniowych stosuj¡c zasad¦ MLD.
v otrzymali±my sªowo w.
e = w − v. Aby rozkodowa¢ sªowo w
bª¦du e. Wówczas v = w − e. Oczywi±cie,
Zaªó»my, »e w wyniku wysªania sªowa kodowego
Sytuacj¡ bª¦du1
nazywamy sªowo
musimy wi¦c zna¢ sytuacj¦
e, które ma najmniejsz¡ wag¦ Hamminga, poniewa» prowadzi
w, w sensie odlegªo±ci Hamminga,
sªowa kodowego v.
szukamy sªowa
to, zgodnie z MLD, do najbli»szego od
Du»o informacji na temat sytuacji bª¦du daje nam ªatwo obliczalny syndrom. Dokªadnie, Niech kod liniowy K ma macierz sprawdzaj¡c¡ parzysT
to±¢ H . Syndromem sªowa w nazywamy iloczyn s = H w . Zatem, je±li K
jest (n, k)kodem, macierz sprawdzaj¡ca parzysto±¢ H ma n kolumn i n − k
wierszy. Zatem syndrom s ∈ wn−k (F).
6.12 Twierdzenie. Sytuacja bª¦du ma ten sam syndrom, co otrzymane sªowo,
tj. dla dowolnego sªowa kodowego v i sytuacji bª¦du e,
H eT = H(v + e)T .
1 ang.
error pattern
43
Dowód.
Poniewa»
v
jest sªowem kodowym, wi¦c
H v T = 0T .
St¡d
H(v + e)T = H vT + H eT = H eT .
Powy»sze twierdzenie, cho¢ jest wyj¡tkowo proste w tre±ci i dowodzie,
stanowi podstaw¦ dekodowania kodów liniowych: otrzymujemy sªowo, liczymy
jego syndrom i szukamy sªowa kodowego o najmniejszej wadze Hamminga,
które posiada taki sam syndrom.
6.7 Wykrywanie i poprawianie bª¦dów
Przypomnijmy, »e kod
jest wi¦ksza od
t.
K
t
wykrywa
bª¦dów, je±li jego waga minimalna
Zatem kod liniowy jest tym lepszy im wi¦ksza jest jego
waga minimalna i im wi¦ksza jest liczba bitów informacyjnych. Niestety te
dwa warunki stoj¡ ze sob¡ w jawnej sprzeczno±ci, o czym mówi nast¦puj¡ce
twierdzenie
6.13 Twierdzenie. Waga minimalna w liniowego (n, k)kodu speªnia nierówno±¢
w ≤ n − k + 1.
Dowód. Poniewa» kod równowa»ny kodowi K ma t¦ sam¡ wag¦ minimaln¡ w,
co K , wi¦c mo»emy zaªo»y¢, »e K jest kodem systematycznym. Dla takiego
kodu sªowo
v = 1 00
. . . 0} vk+1 vk+2 . . . vn
| {z
k−1
jest sªowem kodowym oraz
||v|| ≤ n − (k − 1).
Opiszemy teraz procedur¦ tak zwanego
ªó»my, »e
H,
K
w ≤ n − k + 1.
dekodowania przez syndrom.
Za-
(n, k)kodem z macierz¡ sprawdzaj¡c¡ parzysto±¢
liniowo niezale»ne. Tworzymy warstwy e + K pod-
jest liniowym
której wiersze s¡
przestrzeni
Zatem
K
wybieraj¡c reprezentantów o najmniejszej wadze Hamminga.
e
Wszystkie elementy warstwy +K maj¡ ten sam syndrom (twierdzenie 6.12).
T
Sªowo
= H T
nazywamy syndromem warstwy. Zaªó»my, »e otrzymal-
s
i±my sªowo
w.
e
Dekodowanie wygl¡da nast¦puj¡co:
1. Liczymy syndrom
s = H wT
2. Znajdujemy reprezentanta
T
e
;
warstwy o syndromie
wadze Hamminga;
44
s
o najmniejszej
3. Zakªadamy, »e wysªanym sªowem jest
v = w − e.
Oczywi±cie, przed rozpocz¦ciem opisanej procedury, warto sporz¡dzi¢ jest
tablic¦ syndromów i odpowiadaj¡cych im sytuacji bª¦du.
6.14 Przykªad.
Rozwa»my kod
K6∗ .
Jego macierz¡ generuj¡c¡ jest


1 0 0 0 1 1
0 1 0 1 0 1 .
0 0 1 1 1 0
Zatem macierz¡ sprawdzaj¡c¡ jest


0 1 1 1 0 0
H = 1 0 1 0 1 0 .
1 1 0 0 0 1
Poniewa» kod ma 8 elementów, a caªa przestrze« 64 elementy, wi¦c mamy
tu 8 warstw. Dla ka»dej warstwy wybieramy reprezentatnta o najmniejszej
wadze Hamminga i obliczamy jego syndrom.
reprezentant
syndrom
000000
000
000001
001
000010
010
100000
011
000100
100
010000
101
001000
110
010010
111
Zaªó»my, »e otrzymali±my sªowo 111111. Jego syndrom, to 111. Z powy»szej
tabeli odczytujemy sytuacj¦ bª¦du któr¡ jest 010010. Zatem otrzymane sªowo
rozkodowujemy jako 101101. Je±li otrzymanym sªowem jest 001101, to syndromem jest 011, czyli zakªadamy, »e wysªane zostaªo 101101. Je»eli otrzymamy, 010101, to syndrom tego sªowa wynosi 000, wi¦c jest to sªowo kodowe
i zakªadamy, »e takowe zostaªo wysªane.
45