Kodowanie i kompresja 1 Kody liniowe

Transkrypt

Kodowanie i kompresja 1 Kody liniowe
Kodowanie i kompresja
Streszczenie
Studia dzienne
Wykład 3, 2.03.2005
1 Kody liniowe - uogólnienie i powtórka
Fakt 1 Słowa kodowe binarnego kodu liniowego o długości n tworza˛ podprzestrzeń
liniowa˛ przestrzeni Z2n , gdzie Z2 oznacza ciało nad zbiorem {0, 1} z operacjami dodawania i mnoźenia modulo 2.
Liniowym (n, k) kodem nazywamy k-wymiarowa˛ podprzestrzeń Z2n .
Fakt 2 Kod liniowy (n, k) ma k bitów danych, tzn. słowo kodowe o długości n koduje
k bitów danych oryginalnych.
Definicja 1 Niech K b˛edzie kodem liniowym o długości n, którego baz˛e tworza˛ wektory
e1 , . . . , ek . Macierza˛ generatorów G kodu K nazywamy macierz wymiaru k × n której
i-ty wiersz jest równy ei dla i ∈ [1, k].
Przyjmijmy nast˛epujac
˛ a˛ metod˛e kodowania dla kodu liniowego (n, k) o bazie e1 , . . . , ek :
P
k bitom danych u1 , . . . , uk przyporzadkowujemy
˛
wektor ki=1 ui ei . Wówczas słowo kodowe dla u = u1 . . . uk jest równe v = uG, gdzie G to macierz generatorów dla K i
bazy {e1 , . . . , ek }.
Definicja 2 Kod liniowy nazywamy systematycznym, jeśli ma on macierz generatorów
postaci G = [IB], gdzie I jest macierza˛ identycznościowa.˛
Fakt 3 Stosujac
˛ macierz postaci G = [IB] do kodowania w liniowym kodzie systematycznym (n, k), bitom danych u1 . . . uk odpowiada słowo kodowe zaczynajace
˛ si˛e od
u1 . . . u k .
Fakt 4 Kod liniowy z macierza˛ generatorów G = [IB] ma macierz parzystości równa˛
H = [−B T I], gdzie B T oznacza transpozycj˛e macierzy B a I 0 macierz identycznościowa˛ rozmiaru (n − k) × (n − k).
Fakt 5 Kaźdy liniowy kod (n, k) ma macierz parzystości rz˛edu n − k i rozmiaru (n −
k) × n.
Definicja 3 (Kod rozszerzony) Kodem rozszerzonym liniowego (n, k) kodu K nazywamy liniowy (n + 1, k) kod K 0 otrzymany z K poprzez dodanie do kaźdego słowa
P
˛ do kaźdego
kodowego x = x1 . . . xn symbolu xn+1 równego ni=1 xi . Inaczej mówiac,
słowa kodowego dodajemy bit parzystości.
1
2 Jednoczesne wykrywanie i poprawianie bł˛edów
Definicja 4 Mówimy, źe kod blokowy K jednocześnie poprawia t bł˛edów i wykrywa s
bł˛edów jeśli dla kaźdego słowa kodowego v i kaźdego w spełniajacego
˛
warunek d(v, w) ≤
0
s, odległość Hamminga słowa w od kaźdego słowa kodowego w 6= w wynosi wi˛ecej niź
t.
Powyźsza własność umoźliwia jednoczesne poprawianie t bł˛edów i wykrywanie s bł˛edów w nast˛epujacym
˛
sensie:
• jeśli liczba bł˛edów jest mniejsza niź t wówczas wykonywane jest dekodowanie
odtwarzajace
˛ oryginalne słowo kodowe;
• jeśli liczba bł˛edów znajduje si˛e w przedziale [t + 1, s], wówczas wykryty zostaje
fakt wystapienia
˛
bł˛edów, ale bez moźliwości ich poprawienia.
Stosujemy w tym celu nast˛epujacy
˛ algorytm. Niech w b˛edzie słowem odebranym po
przejściu przez kanał komunikacyjny, niech v b˛edzie najbliźszym w słowem kodowym
w sensie miary Hamminga:
• jeśli d(v, w) ≤ t wówczas przyjmujemy, źe przesłane słowo kodowe to v;
• jeśli d(v, w) > t, wówczas sygnalizowany jest fakt wystapienia
˛
wi˛ecej niź t bł˛edów.
Fakt 6 Kod K jednocześnie poprawia t bł˛edów i wykrywa s bł˛edów wtedy i tylko wtedy,
gdy minimalna odległość kodu d(K) spełnia warunek
d(K) ≥ t + s + 1.
˛ i wykrywaja˛
Fakt 7 Rozszerzone kody Hamminga jednocześnie poprawiaja˛ jeden bład
dwa bł˛edy.
3 Kody Reeda-Mullera
3.1 Funkcje boolowskie
˛
kaźDefinicja 5 Funkcja boolowska m zmiennych f : Z2m → Z2 przyporzadkowuje
demu ciagowi
˛
zer i jedynek o długości m wartość 0 lub 1.
Niech pj oznacza wektor b˛edacy
˛ binarna˛ reprezentacja˛ liczby j.
Funkcj˛e boolowska˛ m zmiennych f moźna reprezentować przy pomocy tzw. tabeli wartości. W kolumnach tej tabeli umieszczamy w kolejności rosnacej
˛ wszystkie ciagi
˛ m
2
zer i jedynek, tzn. p0 , p1 , . . . , p2m −1 , a pod nimi umieszamy wartości funkcji f dla tych
ciagów.
˛
A zatem kaźda˛ boolowska˛ funkcj˛e m zmiennych moźna opisać przy pomocy
ciagu
˛ binarnego o długości 2m , definiujacego
˛
wartości funkcji dla kolejnych 2m argumentów. W dalszej cz˛eści notatki funkcj˛e boolowskie b˛edziemy cz˛esto utoźsamiać z
taka˛ ich reprezentacja.˛
3.2 Wielomiany boolowskie
Dla funkcji boolowskiej m zmiennych f , niech fi oznacza wartość f dla argumentu
b˛edacego
˛
binarna˛ reprezentacja˛ liczy i, pi . To znaczy, źe fi to i-ty bit w reprezentacji f
przy pomocy binarnego wektora o długości 2m .
Na funkcjach boolowskich f i g wykonujemy nast˛epujace
˛ operacje:
• dodawanie f + g: odpowiada dodawaniu modulo 2 odpowiadajacych
˛
im wektorów;
• mnoźenie logiczne:
f g = (f2m −1 . . . f1 f0 )(g2m −1 . . . g1 g0 ) = (f2m −1 g2m −1 ) . . . (f1 g1 )(f0 g0 ),
gdzie wynik mnoźenia dwóch elementów a, b ∈ {0, 1} jest równy 1 wtedy i tylko
wtedy gdy a = b = 1.
Jednomianem boolowskim n zmiennych nazywamy funkcj˛e boolowska˛ n zmiennych
x1 , . . . , xn postaci xi1 . . . xis , gdzie s, i1 , . . . , is ≤ n oraz funkcj˛e identycznościowa˛
równa˛ 1, oznaczana˛ 1.
Definicja 6 Wielomianem boolowskim m zmiennych nazywamy funkcj˛e boolowska˛ m
zmiennych wyraźona˛ jako suma wybranych jednomianów boolowskich m zmiennych.
Uwaga. W wielomianach boolowskich nie jest konieczne pot˛egowanie, poniewaź x·x =
x dla kaźdego wektora x ∈ {0, 1}n .
Obserwacja Funkcja boolowska m zmiennych f jest równa
f (x0 , . . . , xm−1 ) = f (x0 , . . . , xm−2 , 0)+xm−1 (f (x0 , . . . , xm−2 , 0) + f (x0 , . . . , xm−2 , 1))
Lemat 1 Kaźda funkcja boolowska n zmiennych jest wielomianem boolowskim n zmiennych.
Wniosek 1 Zbiór jednomianów m zmiennych (a dokładniej ich reprezentacji w postaci
m
wektorów binarnych o długości 2m ) tworzy baz˛e przestrzeni liniowej Z22 .
3
Definicja 7 Kodem Reeda-Mullera o długości n = 2m i stopniu r (dla r ≤ m) nazywamy kod binarny R(r, m) złoźony ze wszystkich słów binarnych o długości n reprezentujacych
˛
wielomiany n zmiennych stopnia co najwyźej r.
Dwa słowa binarne w = w1 . . . wn i v = v1 . . . vn sa˛ ortogonalne gdy ich iloczyn skalarny jest równy 0, tzn.
w·v =
n
X
vi wi = 0.
i=1
Kodem dualnym do kodu liniowego K, oznaczanym przez K ⊥ nazywamy kod złoźony
ze wszystkich słow ortogonalnych do wszystkich słów kodowych kodu K.
Twierdzenie 1 Kod Reeda-Mullera R(r, m) zawiera
k=
à !
r
X
m
i=0
i
bitów danych.
Kodem dualnym do R(r, m) jest kod R(m − r − 1, m).
4