Kodowanie i kompresja Streszczenie Studia dzienne Wykład 6 1 Kody cykliczne: dekodowanie Definicja 1 (Syndrom) Niech K będzie kodem cyklicznym z wielomianem generuja- cym g(x). Resztę z dzielenia słowa w przez g(x) nazywamy syndromem s(w). Metoda 1 (dla cyklicznego (n, k)-kodu): Preprocessing: tworzymy tablicę T, która każdej możliwej wartości syndromu s przyporządkowuje słowo e(s) o najmniejszej wadze takie, że s(e(s)) = s (możliwe wartości syndromu to wielomiany stopnia mniejszego od n k). LUB dla kodu korygującego t błędów tworzymy listę L, która każdemu słowu e o wadze t przyporządkowuje wartość syndromu s(e). Dekodujemy słowo w o długości n: wyznaczamy s = s(w) z tablicy T (lub listy L) odczytujemy e(s) jako wynik przyjmujemy w e(s). Fakt 1 Syndrom cyklicznego przesunięcia w prawo słowa w jest równy reszcie z dzielenia xs(w) przez wielomian generujacy g(x). Metoda Meggita (dla cyklicznego (n, k)-kodu) z wielomianem generujacym g(x) 1. dla kodu korygującego t błędów tworzymy listę L, która każdemu słowu e o wadze t i mającemu jedynkę na skrajnie prawej pozycji przyporządkowuje wartość syndromu s(e). 2. Dekodujemy słowo w: wyznaczamy syndrom s(w), następnie wykonaj n 1 razy: jeśli s(w) znajduje się na liście L, zmień wartość skrajnie prawego bitu w przesuń w prawo (cyklicznie w) za s(w) podstaw resztę z dzielenie xs(w) przez g(x). 1
2 Dekodowanie: error-trapping decoding Jeśli po przesłaniu słowa v do odbiorcy dociera słowo w, to e = w v nazywamy wzorcem błędów. Definicja 2 Cyklicznym wzorcem błędów o długości l nazywamy niezerowe słowo binarne binarne e = e 0... e n 1 takie, że wszystkie wartości niezerowe w e zawieraja się w bloku o długości l, w cyklicznym sensie. To znaczy, istnieje i takie, że jedynki sa zawarte w e i, e (i+1) mod n..., e (i+1) mod n... Fakt 2 Niech K będzie (n, k)-kodem cyklicznym korygujacym t błędów. Niech w będzie słowem otrzymanym ze słowa kodowego wskutek co najwyżej t błędów. Wówczas: 1. Jeśli waga Hamminga syndromu s(w) nie jest większa od t, to wzorzec błędów e(w) jest równy wielomianowi s(w). 2. Jeśli wzorzec błędów e(w) jest cyklicznym wzorcem o długości n k to pewne cykliczne przesunięcie słowa w ma syndrom o wadze nie większej od t. Algorytm error-trapping : Niech K będzie cyklicznym (n, k)-kodem korygującym t błędów. Wówczas następujący algorytm koryguje kaźdy cykliczny wzorzec co najwyżej t błędów o długości n k. Dla słowa w, powtarzaj co najwyżej n 1 razy 1. Wyznacz syndrom s(w) 2. Jeśli waga Hamminga słowa s(w) jest mniejsza lub równa t, odkoduj w jako w s(w) i zakończ. 3. Za w podstaw cykliczne przesunięcie w w prawo. Twierdzenie 1 Każdy cykliczny (n, k)-kod wykrywa każdy cykliczny wzorzec błędów o długości n k. 3 Kody BCH 3.1 Podstawy algebraiczne Definicja 3 (Algebraiczne rozszerzenie ciała) Algebraicznym rozszerzeniem ciała F nazywamy pierścień F [x]/mod p(x) gdzie p(x) jest wielomianem stopnia m 1. Elementami tego rozszerzenia sa wielomiany f(α) stopnia mniejszego niż m, zmiennej α nad F. Operacje algebraiczne sa zdefiniowane następujaco: 2
dodawanie to standardowe dodawanie wielomianów; mnożenie: f(α)g(α) jest równe h(α), gdzie h(x) to reszta z dzielenia f(x)g(x) przez p(x). Twierdzenie 2 Algebraiczne rozszerzenie F [x]/mod p(x) dla nierozkładalnego p(x) jest ciałem. Definicja 4 Algebraiczne rozszerzenie ciała Z p za pomoca nieredukowalnego wielomianu stopnia m nazywamy ciałem Galois i oznaczamy GF (p m ). Definicja 5 Rzędem elementu a ciała F nazywamy minimalne n takie, że a n = 1. Element a nazywamy generatorem ciała F, jeśli każdy element F można przedstawić jako a k dla pewnego naturalnego k. Fakt 3 Każdy niezerowy element ciała skończonego ma rzad będacy dzielnikiem r 1, gdzie r jest liczba elementów ciała. Twierdzenie 3 Każde ciało skończone ma generator. Definicja 6 Charakterystyka ciała nazywamy minimalna liczbę n taka, że 1 + 1 +... + 1 = 0, gdzie liczba jedynek jest równa n. Fakt 4 Każde ciało skończone ma charakterystykę, która jest liczba pierwsza. Twierdzenie 4 Każde ciało F o charakterystyce p spełnia następujace warunki: 1. a p = a wtedy i tylko wtedy gdy a Z p 2. dla każdych a, b zachodzi (a + b) p = a p + b p. 3. jeśli wielomian nad Z p ma miejsce zerowe w punkcie a F, to wszystkie elementy ciagu a p, a p2, a p3,... sa miejscami zerowymi funkcji f(x). Definicja 7 Niech F będzie ciałem i niech β będzie elementem rozszerzenia F. Wielomianem minimalnym elementu β jest moniczny wielomian (nad F ) o najmniejszym stopniu majacy zero w β. Fakt 5 Każdy element β ciała skończonego F ma jeden wielomian minimalny M(x). Ponadto, M(x) jest dzielnikiem każdego wielomianu nad F, który ma miejsce zerowe w β. Fakt 6 Każdy wielomian minimalny jest nieredukowalny. Twierdzenie 5 Wielomian minimalny (nad Z p ) elementu β należacego do ciała GF (p m ) jest równy M(x) = (x β)(x β p )(x β p2 ) (x β pi ), gdzie i to najmniejsza wartość taka, że β pi+1 = β. Fakt 7 W ciele złożonym z r elementów, rzad każdego elementu jest dzielnikiem r 1. Ponadto, każdy dzielnik r 1 jest rzędem pewnego elementu. 3
3.2 Kody Hamminga jako kody cykliczne Niech β będzie elementem pewnego rozszerzenia ciała Z 2, rząd β wynosi n. Zdefiniujmy kod K jako zbiór tych słów (wielomianów) w 0 w 1... w n 1, dla których w(β) = 0. Jest to kod cykliczny, ponieważ: wielomian minimalny M(x) elementu β jest dzielnikiem x n 1 (Fakt 5), a każdy inny wielomian v taki, że v(β) = 0 dzieli się przez M(x). Fakt 8 Niech β będzie generatorem GF (2 m ). Wówczas binarny kod cykliczny o długości 2 m 1 opisany równaniem w(β) = 0 jest (cyklicznym) kodem Hamminga. 3.3 Kody BCH Niech F będzie ciałem skończonym, n liczbą względnie pierwszą z liczbą elementów F. Kodem BCH korygującym t błędów nad alfabetem F jest kod cykliczny złożony ze wszystkich słów w F n spełniających równanie w(β) = w(β 2 ) = w(β 3 ) =... = w(b 2t ) = 0, gdzie β jest elementem rzędu n pewnego algebraicznego rozszerzenia F. Inaczej mówiąc, słowa kodowe to wielomiany nad F, stopnia mniejszego od n, mające zera w β, β 2,..., β 2t. Twierdzenie 6 Kod BCH o długości n, korygujacy t błędów jest kodem cyklicznym, którego wielomian generujacy jest równy g(x) = LCM(M 1 (x), M 2 (x),..., M 2t (x)), gdzie M i (x) to minimalny wielomian dla β i, a LCM oznacza najmniejsza wspólna wielokrotność argumentów. Macierz parzystości kodu BCH o długości n, korygującego t błędów: 1 β β 2 β 3... β n 1 1 β 2 (β 2 ) 2 (β 2 ) 3... (β 2 ) n 1 1 β 3 (β 3 ) 2 (β 3 ) 3... (β 3 ) n 1...... 1 β 2t (β 2t ) 2 (β 2t ) 3... (β 2t ) n 1 Twierdzenie 7 Minimalna odległość korygujacego t błędów kodu BCH wynosi co najmniej 2t + 1. Oznacza to, że kod ten rzeczywiście koryguje t błędów. Fakt 9 Niech K będzie kodem BCH utworzonym w oparciu o generator ciała GF (2 n ), korygujacym t błędów. Słowo kodowe kodu K ma długość 2 n 1 i zawiera co najmniej 2 n 1 2tn bitów danych. 4
3.4 Kody BCH - dekodowanie 1. Zastosowanie standardowych metod dekodowania dla kodów liniowych bądź kodów cyklicznych: dekodowanie jednego słowa kodowego wymaga listy syndromów o rozmiarze rzędu ( ) n t (czyli wykładniczym ze względu na t), gdzie n to długość słowa kodowego a t liczba korygowanych błędów. 2. Istnieją efektywne algorytmy dekodowania dla kodów BCH, których czas działania jest wielomianowy ze względu na n i t. 3. Przykład zastosowania algorytmu error-trapping : Niech K będzie kodem BCH zdefiniowanym przez generator dla ciała GF (2 4 ), korygujący 2 błędy. Jest to kod o długości 15, słowo kodowe zawiera 7 bitów danych, czyli jest to (15, 7)-kd. A zatem algorytm error trapping pozwala na skorygowanie cyklicznych wzorców co najwyżej 2 błędów o długości co najwyżej 8. Lecz w słowie o długości 15 każdy układ dwóch błędów jest cyklicznych wzorcem o długości 8. Algorytm dekodowania dla kodów BCH poprawiajacych 2 błędy 1. Niech K to kod BCH o długości n, zdefiniowany poprzez generator β ciała GF (2 m ) (czyli słowa kodowe spełniają w(β) = w(β 3 ) = 0). 2. Odtwarzanie słowa kodowego, gdy do odbiorcy dotarło słowo w: (a) Wyznacz s 1 = w(β), s 3 = w(β 3 ). (b) Jeśli s 1 = s 3 = 0, to w jest słowem kodowym. (c) Jeśli s 1 = 0 s 3, to liczba błędów jest większa od 2. (d) Jeśli s 1 0: rozwiązujemy metodą brute force układ równań: x 2 + s 1 x + (s 2 1 + s 3 s 1 1 ) = 0 (1) Niech pierwiastki tego równania będą równe β i i β j. Wówczas poprawiamy wartości bitów na pozycjach i oraz j. 5