• Nie Znaleziono Wyników

Struktura kodu blokowego

W dokumencie Kody korekcyjne i kryptografia (Stron 63-67)

Część 2. Kody korekcyjne

2.2. Charakterystyka kodów

2.2.2. Struktura kodu blokowego

Kodowanie informacji za pomocą kodu blokowego wymaga podziału ciągu in-formacji na bloki k-elementowe. W wyniku kodowania w koderze powstaje ciąg

n-elementowy, gdzie n>k. Ciąg n-elementowy na wyjściu kodera nazywamy wektorem kodowym lub słowem kodowym, a n jest długością wektora kodowego lub po prostu

ko-dowego pokazano na rys 2.2.1. Wektor kodowy zawiera k elementów informacyjnych i n k− elementów kontrolnych, zwanych też nadmiarowymi lub elementami kontroli parzystości. W kodach binarnych elementami kodu są bity.

n

144424443

Rys. 2.2.1. Wektor kodu blokowego (n,k)

Część kontrolna wektora kodowego zawiera dodatkową informację umożliwiającą korekcję błędów transmisyjnych. Z drugiej strony część kontrolna zwiększa objętość przesyłanej informacji. Do oceny względnej długości części informacyjnej wektora kodowego stosuje się współczynnik nazywany sprawnością kodu (code rate).

Spraw-ność kodu R jest stosunkiem liczby znaków wprowadzonych do kodera k do liczby

znaków wyjściowych kodera n

R k n= . (2.2.1)

Nadmiar informacji wprowadzonej w procesie kodowania można ocenić za pomo-cą nadmiaru kodowego równego 1−R.

Kod blokowy, w którym można odróżnić elementy informacyjne od elementów kontrolnych nazywamy kodem systematycznym.

Przeanalizujmy system transmisyjny z korekcją błędów pokazany na rys. 2.1.1. Z systemu tego można wyodrębnić podsystem kodowy pokazany na rys. 2.2.2. Jeśli na wejście kodera są podawane binarne bloki informacji zawierające po k bitów, to koder wygeneruje 2k różnych wektorów kodowych o długości n, które zostaną podane na wejście kanału transmisyjnego. Ten zbiór wektorów nazywamy kodem.

Rys. 2.2.2. Elementy podsystemu kodowego

k n− k

Kanał transmisji danych 2k , (q k ) 2n , (q n )

Koder Dekoder

Podczas transmisji może nastąpić zmiana niektórych bitów wektorów kodowych w wyniku działania zakłóceń w kanale. Wskutek tego 2k-elementowy zbiór wektorów wejściowych kanału transmisyjnego zamieni się w zbiór wyjściowy, zawierający 2n

elementów. 2n-elementowy zbiór wyjściowy nazywa się przestrzenią wektorową nad ciałem binarnym. Przestrzeń wektorowa oprócz wektorów kodowych zawiera wekto-ry, które nie są wektorami kodowymi. Ilustruje to rys. 2.2.2. Na tym rysunku wektory kodowe oznaczono ciemnymi punktami, a wektory niekodowe − punktami jasnymi. W nawiasach podano liczby wektorów nad ciałem rozszerzonym q-elementowym.

Jeśli przyjmiemy oznaczenia z rys. 2.2.2, to wektor wejściowy dekodera cY będzie sumą wektora wyjściowego kodera cX i wektora błędów e

cY =cX + .e (2.2.2)

W wyniku nałożenia się błędów na wektory kodowe podczas transmisji mogą wy-stąpić następujące zdarzenia:

1. Wektor kodowy przechodzi przez kanał bez zmiany.

2. Wektor kodowy zostaje zamieniony na inny wektor kodowy. 3. Wektor kodowy zostaje zamieniony na wektor niekodowy.

Przypadek pierwszy ma miejsce, gdy nie ma błędów transmisyjnych, a pozostałe zdarzenia są spowodowane błędami transmisyjnymi.

Gdy wektor kodowy zostanie zmieniony w inny wektor kodowy, wówczas deko-der nie ma możliwości odróżnienia błędnie odebranego wektora i nie może wykryć błędu. Wektor taki powstaje w wyniku nałożenia się wektora błędu na wektor kodo-wy, gdy wektor błędu ma postać wektora kodowego. Zatem liniowy kod blokowy nie wykrywa tylko takich ciągów błędów, które są same ciągami kodowymi. Błędy takie są niekorygowalne.

Przestrzeń wektorowa oprócz elementów kodu zawiera 2n −2k ciągów niekodo-wych, które nie zostały nadane. Powstają one po stronie odbiorczej w wyniku zdarze-nia trzeciego. Dekoder jest tak skonstruowany, że odróżzdarze-nia ciągi kodowe od ciągów niekodowych. Ciągi niekodowe umożliwiają dekoderowi detekcję błędów transmisyj-nych. Ale dekoder, analizując ciąg odebrany, może również znaleźć ciąg kodowy, różniący się od ciągu odebranego najmniejszą liczbą pozycji, i przyjąć, że ten ciąg został właśnie nadany. Działanie to jest równoważne lokalizacji i korekcji błędów. Taka strategia dekodowania nazywa się dekodowaniem z maksymalną wiarygodnością (maximum likelihood decoding) i jest powszechnie stosowana w praktyce.

Omawiane wyżej zbiory: wektorów kodowych, wektorów niekodowych i prze-strzeń wektorowa mają odzwierciedlenie w strukturach algebraicznych. Pokazano to w tabeli 2.2.1. Kod liniowy jest podgrupą, a kod cykliczny ideałem. Pojęcia grupy ad-dytywnej, podgrupy i pierścienia opisano w p. 1.1.1.

Ideał jest podzbiorem pierścienia. Podzbiór S pierścienia R nazywa się podścieniem, jeśli jest zamknięty względem operacji dodawania i mnożenia oraz jest pier-ścieniem względem tych operacji. Podzbiór J pierścienia R nazywa się ideałem

(dwu-stronnym) tego pierścienia, jeżeli J jest podpierścieniem pierścienia R i dla wszystkich

a J∈ i r R∈ zachodzi a r J∈ i r a J∈ .

Tabela 2.2.1. Struktury algebraiczne stosowane w kodach blokowych

Zbiór Liczba elementów Kod liniowy Kod cykliczny

Przestrzeń wektorowa 2n,

( )

qn grupa addytywna,

ciało pierścień, ciało

Wektory kodowe 2k,

( )

qk podgrupa ideał

Wektory niekodowe 2n −2k,

(

qn qk

)

warstwy klasy reszt

W teorii blokowych kodów cyklicznych wykorzystuje się pojęcie pierścienia wielomianów. Pierścieniem wielomianów modulo wielomian stopnia n jest zbiór wielomianów, stopnia nie większego od n− 1, z określonymi operacjami dodawania i mnożenia.

Dla dowolnej pary wielomianów a x( ) i b(x) istnieje para wielomianów q x( ) i

r x( ) spełniająca zależność

( ) ( ) ( ) ( )

a x =b x q x +r x , (2.2.3)

gdzie stopień wielomianu r x( ) jest mniejszy od stopnia wielomianu b x( ) .

Powyższa zależność jest znana jako algorytm dzielenia Euklidesa i można ją zapi-sać w postaci kongruencji

( ) ( )( ( ))

r xia xi modb x . (2.2.4)

Wielomiany a xi( ), które mają tą samą resztę r xi( ) otrzymaną z dzielenia przez wielomian b x( ), nazywamy i-tą klasą reszt modulo wielomian b x( ). Nad ciałem bi-narnym różnych klas reszt może być 2n, gdzie n jest stopniem wielomianu b x( ). Na klasach reszt można zdefiniować operacje dodawania i mnożenia i utworzyć pierścień klas reszt modulo wielomian b x( ).

Teoria kodów cyklicznych opiera się na strukturze ciał rozszerzonych opisanej w p. 1.5.8, a wielomian b x( ) jest w tym przypadku dwumianem xn − 1. Faktoryzacja tego dwumianu umożliwia obliczenie wielomianów generujących kody cykliczne, które oznaczamy przez g(x).

Zbiór wszystkich możliwych wielokrotności wielomianu g(x), będącego podziel-nikiem dwumianu xn − 1, jest ideałem, a wielomian g(x) nazywamy wielomianem generującym ideał. Kody cykliczne z matematycznego punktu widzenia są ideałami.

Pierścień wielomianów modulo xn − 1 można rozłożyć na warstwy względem ideału. W wyniku tego rozkładu powstają klasy reszt modulo g(x).

W dokumencie Kody korekcyjne i kryptografia (Stron 63-67)

Powiązane dokumenty