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