Kodowanie i kompresja 1 Kody liniowe

Transkrypt

Kodowanie i kompresja 1 Kody liniowe
Kodowanie i kompresja
Streszczenie
Studia dzienne
Wykład 4
1 Kody liniowe - kodowanie w oparciu o macierz parzystości
Niech H b˛edzie macierza˛ parzystości kodu liniowego, rozmiaru k × n, rz˛edu k. Wówczas, słowa kodowe maja˛ długość n, każde słowo kodowe koduje n − k bitów danych.
Nasze zadanie, to jednoznacznie przyporzadkować
˛
słowo kodowe do każdego binarnego
ciagu
˛ danych v1 . . . vn−k . Robimy to w nast˛epujacy
˛ sposób:
• W układzie równań Hx = 0 ustalamy n − k zmiennych xi1 , . . . , xin−k , którym
przyporzadkowane
˛
sa˛ wartości v1 , . . . , vn−k .
• W efekcie uzyskujemy układ k równań liniowych z k niewiadomymi H 0 x0 =
b0 , który rozwiazujemy
˛
standardowymi metodami algebry liniowej. Macierz H 0
składa si˛e z kolumn macierzy H o numerach spoza zbioru i1 , . . . , in−k .
• UWAGA: Powyżej zdefiniowany układ k równań liniowych z k niewiadomymi
powinien mieć jednoznaczne rozwiazanie.
˛
A zatem, macierz H 0 powinna mieć
rzad
˛ k. Oznacza to, że kolumny odpowiadajace
˛ bitom “korygujacym”
˛
powinny
być liniowo niezależne!
Przykład: Kody Hamminga (2m − 1 − m, 2m ). Jeśli bitom danych przyporzadkujemy
˛
wartości wszystkich zmiennych, które nie sa˛ pot˛egami dwójki, wówczas macierz H 0 w
układzie równań H 0 x0 = b0 b˛edzie macierza˛ jednostkowa.˛
Lecz przyporzadkowanie
˛
bitom danych zmiennych xm+1 , . . . , x2m −1 spowoduje, że układ
równań H 0 x0 = b0 nie b˛edzie miał jednoznacznego rozwiazania!
˛
2 Kody Reeda-Mullera - powtórzenie
Funkcj˛e boolowska˛ m zmiennych f : Z2m → Z2 reprezentujemy przy pomocy słowa
binarnego o długości 2m , i-ty bit tego słowa reprezentuje wartość funkcji f dla argumentu b˛edacego
˛
reprezentacja˛ binarna˛ liczby i.
Definicja 1 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.
1
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).
P
³ ´
Algorytm kodowania dla kodu R(r, m): ciag
˛ k = ri=0 mi bitów danych u1 . . . uk
kodujemy mnożac
˛ w przez macierz, której kolejnymi wierszami sa˛ funkcje charakterystyczne wszystkich jednomianów stopnia co najwyżej r.
3 Kody liniowe – ogólna metoda dekodowania
Definicja 2 Załóżmy, że po przejściu przez kanał komunikacyjny otrzymaliśmy słowo
binarne w, gdy wysłane było słowo kodowe v. Wówczas wektor e(w, v) = w + v
nazywamy wektorem bł˛edów.
Zauważmy, że wektor bł˛edów ma jedynki na tych pozycjach, na których wystapiły
˛
przekłamania. Ponadto, zgodnie z arytmetyka˛ w Z2n , zachodzi v = w + e, czyli do
odkodowania słowa kodowego wystarczy wyznaczyć wektor bł˛edów.
Definicja 3 Niech H b˛edzie macierza˛ parzystości (o rozmiarze m × n) kodu liniowego
K. Wówczas syndromem słowa w ∈ {0, 1} nazywamy słowo s(w) = HwT (wT oznacza
transpozycj˛e).
Zauważmy, że syndrom każdego słowa kodowego kodu K jest równy wektorowi zerowemu. Ponadto, zachodzi nast˛epujaca
˛ własność:
Lemat 1 Załózmy, że przez kanał komunikacyjny przesłane zostało słowo kodowe v
a odebrane słowo w, stosowaliśmy kod liniowy z macierza˛ parzystości H. Wówczas
syndrom słowa w jest równy syndromowi wektora bł˛edów e(w, v).
2
Dekodowanie
Dane: Słowo w oraz macierz parzystości H. A zatem wyznaczyć też możemy syndrom
słowa w, s(w).
Szukamy: słowa kodowego v, takiego że d(w, v) jest minimalna.
Algorytm: Szukamy słowa binarnego e długości n o najmniejszej liczbie jedynek
spośrów zbioru słów, których syndrom jest równy s(w), czyli Hw = He. Nast˛epnie
przyjmujemy, że e jest wektorem bł˛edów, czyli v = w + e.
Uzasadnienie: Liczba jedynek w wektorze bł˛edów odpowiada liczbie bł˛eów transmisji.
Ponadto,
H(w + e) = H(w) + H(e) = H(w) + H(w) = 0.
Przykład: Powyższa metoda stosowana jest w kodzie Hamminga. Zaleta˛ kodu Hamminga jest, iż wartość syndromu jednoznacznie i efektywnie identyfikuje wektor bł˛edów
o najmniejszej liczbie jedynek.
Twierdzenie 2 Niech K b˛edzie binarnym kodem liniowym o macierzy parzystości H
rozmiaru m × n i wadze w(K) = p. Wówczas:
• czas zakodowania n − m bitów danych jest rz˛edu O(m · n + m3 ); w kodzie
systematycznym jest to O(m · n)
• czas dekodowania
słowa kodowego
(odpowiadajacego
˛
n−m bitom danych)
³P jednego
³ ´
´
b(p−1)/2c n
jest rz˛edu O
·m·n .
i=1
i
• dla długich ciagów
˛
danych możliwe jest szybsze dekodowanie, ale kosztem pami˛eci:
³P
b(p−1)/2c
³ ´
´
n
– Preprocessing: w czasie O
· m · n wyznaczamy dla każdej
i=1
i
˛
wartości syndromu s słowo e o minimalnej wadze wśród słów spełniajacych
warunek He = s (czyli s(e) = s); wyniki umieszczamy w tablicy A o 2m
elementach długości n.
– Dekodowanie: dla każdego ciagu
˛ o długości n wyznaczamy jego syndrom w
czasie O(mn) i ustalamy wektor bł˛edów w oparciu o tablic˛e A.
4 Kody Reeda-Mullera – efektywny algorytm dekodowania
Twierdzenie 3 Minimalna waga kodu R(r, m) wynosi 2m−r .
Wniosek 1 Kod R(r, m) koryguje 2m−r−1 − 1 bł˛edów.
3
4.1 Interpretacja geometryczna
Definicja 4 Niech K b˛edzie r-wymiarowa˛ podprzestrzenia˛ liniowa˛ Z2m . Wówczas zbiór
a + K = {a + b | b ∈ K}
dla a ∈ {0, 1}m nazywamy przestrzenia˛ afiniczna˛ wymiaru r.
Fakt 1 Niech H b˛edzie macierza˛ parzystości kodu K o długości n (czyli K jest podrzestrzenia˛ liniowa˛ Z2n ). Wówczas przestrzeń afiniczna a + K równa jest zbiorowi
rozwiazań
˛
układu równań liniowych Hx = c, gdzie c = HaT .
Definicja 5 Funkcja˛ charakterystyczna˛ zbioru X ⊆ {0, 1}n nazywamy słowo binarne
f = f2n −1 . . . f1 f0 takie, że fi = 1 wtedy i tylko wtedy gdy pi ∈ X.
Twierdzenie 4 Funkcja charakterystyczna r wymiarowej przestrzeni afinicznej w Z2m
jest wielomianem boolowskim stopnia m − r.
Wniosek 2 (1) Kod Reeda-Mullera R(r, m) jest równy podprzestrzeni liniowej rozpi˛etej
na wektorach odpowiadajacych
˛
wszystkim funkcjom charakterystycznym przestrzeni afinicznych
m
w Z2 o wymiarze m − r lub wi˛ekszym.
(2) Funkcja charakterystyczna przestrzeni afinicznej rozmiaru r+1 jest elementem kodu
dualnego do R(r, m) (czyli kodu R(m − (r + 1), m)).
Idea dowodu. Na mocy twierdzenia 4, R(r, m) zawiera wszystkie funkcje charakterystyczne wszystkich przestrzeni afinicznych o wymiarze s ≥ m−r. Z drugiej strony,
każdy jednomian xi1 . . . xis opisuje przestrzeń afiniczna˛ (zdefiniowana˛ odpowiednimi
równaniami), co daje (1). Natomiast (2) wynika z (1) i twierdzenia 1.
4.2 Algorytm dekodowania
Idea algorytmu Do odbiorcy dotarło słowo w. Zakładamy, że liczba bł˛edów jest
mniejsza niż 2m−r−1 − 1. Dla każdej pozycji w chcemy ustalić czy wystapił
˛ na niej
bład:
˛
• Każda˛ pozycj˛e potraktujemy jako punkt w przestrzeni Z2m a dokładniej jako 0wymiarowa˛ przestrzeń afiniczna.˛
• parzystościa˛ przestrzeni afinicznej L nazywać b˛edziemy parzystość liczby bł˛edów
w słowie w na pozycjach odpowiadajacych
˛
punktom należacym
˛
do L;
• jeśli w jest słowem kodowym to fL · w = 0, gdzie fL to funkcja charakterystyczna dowolnej przestrzeni afinicznej rozmiaru r + 1; ogólnie, fL · w wyznacza
parzystość L;
4
• Trik: parzystość przestrzeni afinicznej L rozmiaru s ≤ r można wyznaczyć na
podstawie parzystości przestrzeni afinicznych rozmiaru s + 1 zawierajacych
˛
L! A
parzystość przestrzeni rozmiaru 0 odpowiadjacej
˛ bitowi w słowie w jest równa 1
wtedy i tylko wtedy gdy na tej pozycji wystapił
˛ bład.
˛
Twierdzenie 5 Każda przestrzeń afiniczna L w Z2m rozmiaru s jest zawarta w 2m−s − 1
różnych przestrzeniach afinicznych rozmiaru s + 1. Każdy punkt, który nie należy do L,
należy do dokładnie jednej przestrzeni afinicznej rozmiaru s + 1.
Wniosek 3 Jeśli liczba bł˛edów w odebranym słowie w jest mniejsza od 2m−r−1 wówczas parzystość przestrzeni afinicznej L rozmiaru s ≤ r jest taka sama jak parzystość
wi˛ekszości przestrzeni afinicznych rozmiaru s + 1 zawierajacych
˛
L.
Idea dowodu Załóżmy, że odebrane słowo w ma t < 2m−r−1 bł˛edów. Z powyższego
twierdzenia wiemy, że każdy punkt nie należacy
˛ do L należy do tylko jednej przestrzeni
0
afinicznej L rozmiaru s + 1 zawierajacej
˛ L. Parzystość L i L0 może si˛e wi˛ec różnić
0
tylko wtedy, gdy L zawiera punkt odpowiadajacy
˛ bitowi, na którym wystapił
˛ bład.
˛ A
0
m−r−1
takich L jest nie wi˛ecej niż 2
− 1. A wszystkich przestrzeni rozmiaru s + 1
zawierajacych
˛
L jest
2m−s − 1 > 2 · (2m−r−1 − 1).
Algorytm dekodowania dla kodu R(r, m)
Krok bazowy Niech w b˛edzie słowem odebranym po przejściu przez kanał komunikacyjny. Przestrzeń afiniczna˛ L rozmiaru r + 1 nazywamy parzysta,˛ jeśli iloczym skalarny
w i wektora charakterystycznego L jest równy 0; w przeciwnym razie L jest nieparzysta.
Krok rekurencyjny Dla s = r, r −1, . . . , 1, 0, i dla każdej przestrzeni afinicznej L rozmiaru s, L oznaczamy jako nieparzysta˛ jeśli wi˛ekszość przestrzeni afinicznym rozmiaru
s + 1 zawierajacych
˛
L jest oznaczonych jako nieparzyste. W przeciwnym razie L oznaczamy jako parzysta.˛
Korekcja bł˛edów Wartość i-tego bitu słowa w zostaje zmieniona wtedy i tylko wtedy,
gdy przestrzeń afiniczna rozmiaru zero składajaca
˛ si˛e (tylko) z punktu pi została oznaczona jako nieparzysta.
Wniosek 4 Kod R(r, m) koryguje 2m−r−1 − 1 bł˛edów.
5