arxiv: v1 [cs.it] 9 Nov 2014

Podobne dokumenty
PEWNE RODZINY CHARAKTERYSTYCZNE KODÓW LINIOWYCH

Quality characteristics of finite linear codes

Wykład 4 Udowodnimy teraz, że jeśli U, W są podprzetrzeniami skończenie wymiarowej przestrzeni V to zachodzi wzór: dim(u + W ) = dim U + dim W dim(u

Baza w jądrze i baza obrazu ( )

Wykład 12 i 13 Macierz w postaci kanonicznej Jordana , 0 A 2

Zadania z Algebry liniowej 3 semestr zimowy 2008/2009

Wektory i wartości własne

ALGEBRA LINIOWA Z ELEMENTAMI GEOMETRII ANALITYCZNEJ

B jest liniowo niezależny V = lin (B) 1. Układ pusty jest bazą przestrzeni trywialnej {θ}. a i v i = i I. b i v i, (a i b i ) v i = θ.

. : a 1,..., a n F. . a n Wówczas (F n, F, +, ) jest przestrzenią liniową, gdzie + oraz są działaniami zdefiniowanymi wzorami:

Zadania z Algebry liniowej 4 Semestr letni 2009

14. Przestrzenie liniowe

Wektory i wartości własne

dr Mariusz Grządziel 15,29 kwietnia 2014 Przestrzeń R k R k = R R... R k razy Elementy R k wektory;

4 Przekształcenia liniowe

Układy liniowo niezależne

Przekształcenia liniowe

Zadania z algebry liniowej - sem. I Przestrzenie liniowe, bazy, rząd macierzy

Układy równań liniowych

φ(x 1,..., x n ) = a i x 2 i +

Wykład 14. Elementy algebry macierzy

Kryptografia - zastosowanie krzywych eliptycznych

Obliczenia naukowe Wykład nr 8

Zastosowania wyznaczników

Lista. Algebra z Geometrią Analityczną. Zadanie 1 Przypomnij definicję grupy, które z podanych struktur są grupami:

Ciała skończone. 1. Ciała: podstawy

Algebra liniowa. 1. Macierze.

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 6

Przestrzenie wektorowe

3 Przestrzenie liniowe

Zadania z Algebry Studia Doktoranckie Instytutu Matematyki Uniwersytetu Śląskiego 1

Kody blokowe Wykład 1, 3 III 2011

14. Wykład 14: Grupa Galois wielomianu. Zasadnicze twierdzenia teorii Galois. Rozszerzenia rozwiązalne, cykliczne i abelowe

Endomorfizmy liniowe

Macierze. Rozdział Działania na macierzach

spis treści 1 Zbiory i zdania... 5

Algebra z Geometrią Analityczną. { x + 2y = 5 x y = 9. 4x + 5y 3z = 9, 2x + 4y 3z = 1. { 2x + 3y + z = 5 4x + 5y 3z = 9 7 1,

Algebra liniowa. Macierze i układy równań liniowych

Postać Jordana macierzy

1 Zbiory i działania na zbiorach.

1 Działania na zbiorach

Zestaw zadań 5: Sumy i sumy proste podprzestrzeni. Baza i wymiar. Rzędy macierzy. Struktura zbioru rozwiązań układu równań.

R n = {(x 1, x 2,..., x n ): x i R, i {1,2,...,n} },

Lista. Algebra z Geometrią Analityczną. Zadanie 1 Zapisz za pomocą spójników logicznych i kwantyfikatorów: x jest większe niż 6 lub mniejsze niż 4

9 Przekształcenia liniowe

ALGEBRA LINIOWA Z GEOMETRIĄ, LISTA ZADAŃ NR 8

Przekształcenia liniowe

13 Układy równań liniowych

Równania liniowe. Rozdział Przekształcenia liniowe. Niech X oraz Y będą dwiema niepustymi przestrzeniami wektorowymi nad ciałem

Przestrzenie liniowe

Kombinacje liniowe wektorów.

Kodowanie i kompresja Tomasz Jurdziński Studia Wieczorowe Wykład Kody liniowe - kodowanie w oparciu o macierz parzystości

a 11 a a 1n a 21 a a 2n... a m1 a m2... a mn a 1j a 2j R i = , C j =

DB Algebra liniowa 1 semestr letni 2018

1 Przestrzeń liniowa. α 1 x α k x k = 0

Pokazać, że wyżej zdefiniowana struktura algebraiczna jest przestrzenią wektorową nad ciałem

= b i M i [x], gdy charf = p, to a i jest pierwiastkiem wielomianu x n i

Kody blokowe Wykład 2, 10 III 2011

13. Cia la. Rozszerzenia cia l.

5. Algebra działania, grupy, grupy permutacji, pierścienie, ciała, pierścień wielomianów.

Rozdział 5. Macierze. a 11 a a 1m a 21 a a 2m... a n1 a n2... a nm

R n jako przestrzeń afiniczna

0 + 0 = 0, = 1, = 1, = 0.

Seria zadań z Algebry IIR nr kwietnia 2017 r. i V 2 = B 2, B 4 R, gdzie

PODSTAWY AUTOMATYKI. MATLAB - komputerowe środowisko obliczeń naukowoinżynierskich - podstawowe operacje na liczbach i macierzach.

1 Podobieństwo macierzy

Zadania egzaminacyjne

Treść wykładu. Układy równań i ich macierze. Rząd macierzy. Twierdzenie Kroneckera-Capellego.

Topologia Algebraiczna 2 Zadania egzaminacyjne

Algebra liniowa z geometrią

Lista. Przestrzenie liniowe. Zadanie 1 Sprawdź, czy (V, +, ) jest przestrzenią liniową nadr :

Diagonalizacja macierzy i jej zastosowania

Analiza funkcjonalna 1.

Wykład 5. Ker(f) = {v V ; f(v) = 0}

SIMR 2016/2017, Analiza 2, wykład 1, Przestrzeń wektorowa

Zał nr 4 do ZW. Dla grupy kursów zaznaczyć kurs końcowy. Liczba punktów ECTS charakterze praktycznym (P)

ZWIĄZKI ROZMAITOŚCI SCHUBERTA Z REPREZENTACJAMI KOŁCZANÓW

Matematyka dyskretna

Przekształcenia liniowe

z = x + i y := e i ϕ z. cos ϕ sin ϕ = sin ϕ cos ϕ

Suma i przeciȩcie podprzestrzeni, przestrzeń ilorazowa Javier de Lucas

Wykład Ćwiczenia Laboratorium Projekt Seminarium Liczba godzin zajęć zorganizowanych w Uczelni 30 30

Sylabus do programu kształcenia obowiązującego od roku akademickiego 2012/13

Zestaw zadań 14: Wektory i wartości własne. ) =

Wyk lad 11 1 Wektory i wartości w lasne

Algebra z geometrią analityczną zadania z odpowiedziami

A. Strojnowski - Twierdzenie Jordana 1

Przestrzenie liniowe

Sylabus do programu kształcenia obowiązującego od roku akademickiego 2014/15

Imię i nazwisko... Grupa...

Diagonalizacja macierzy i jej zastosowania

Jak łatwo zauważyć, zbiór form symetrycznych (podobnie antysymetrycznych) stanowi podprzestrzeń przestrzeni L(V, V, K). Oznaczamy ją Sym(V ).

DB Algebra liniowa semestr zimowy 2018

ciałem F i oznaczamy [L : F ].

W11 Kody nadmiarowe, zastosowania w transmisji danych

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Algebra Liniowa 2 (INF, TIN), MAP1152 Lista zadań

Algebra i jej zastosowania ćwiczenia

0.1 Pierścienie wielomianów

Działania na przekształceniach liniowych i macierzach

Transkrypt:

arxiv:1411.2885v1 [cs.it] 9 Nov 2014 GENERATOR KODÓW LINIOWYCH O SKOŃCZONYCH CHARAKTERYSTYKACH Mariusz Frydrych, Wojciech Horzelski Uniwersytet Łódzki, Wydział Matematyki i Informatyki frydrych@math.uni.lodz.pl, horzel@math.uni.lodz.pl Streszczenie Praca opsuje metodę szybkiego generowania kodów liniowych w wymiarze połówkowym, tzn. gdy wymiar kodu jest równy jego kowymiarowi. Kod jest reprezentowany w przestrzeni wektorowej nad ciałem skończonym charakterystyki większej niż dwa, co dało mozliwość wykorzystania automorfizmu Frobeniusa do konstrukcji pewnych operatorów liniowych majacych naturę geometryczna. Metodę zilustrowano przykładem w wymiarze trzy (wymiar i kowymiar kodu) nad ciałem charakterystyki siedem. Słowa kluczowe: kody liniowe, kodowanie, Grassmanian 1 Wprowadzenie Kody liniowe stosowane sa powszechnie w przesyłaniu danych w zaszumionym medium transmisyjnym. Przez wymiar kodu rozumie się przepustowość łacza dla transitowanej informacji, z kolei kowymiar kodu, mierzy tak zwana nadmiarowość czyli ilo informacji niezbędnej do wykrywania i ewentualnej korekcji błędów w przesyłanych danych. Liniowość kodu zankomicie upraszcza procesy kodowania i dekodowania, co skutkuje duża wydajnościa implementowanych algorytmów. Z oczywistych powodów, najczęściej stosuje się kody binarne, co znacznie zawęża spektrum możliwej do uzyskania jakości kodu. Zastosowanie większej liczby stanów (ciał skończonych charakterystyki większej niż dwa), daje elastyczna strukturę kolekcji kodów liniowych. 2 Kod liniowy Niech, k,n,p,w,q N, p liczba pierwsza, q = p w, k n. Definicja. Każda k-wymiarowa podprzestrzeń wektorowa C przestrzeni n-wymiarowej F n q nazywamy kodem liniowym o długości n, wymiaru k,

nad ciałem F q ([4], [3]). indukuje monomor- Wybór bazy B = (b 1,...,b k ), b 1,...,b k C F n q fizm przestrzeni liniowych ι: F k q Fn q, ξ 1. ξ k k ξ j b j, im(ι) = C. j=1 zwany kodowaniem liniowym. Dostajemy 0 F k ι q F n q π F n q/c 0 tzw. krótki ciag dokładny przestrzeni wektorowych. codim C = dimf n q/c = n k. Składajac π z dowolnym izomorfizmem F n q/c Fq n k dostajemy ponownie (krótki ciag dokładny). Operator (macierz) H nazywamy anihilatorem, macierza kontrolna (check matrix) kodu C. 0 F k q ι F n q H F n k q 0 Kowymiar podprzestrzeni codim C = n k to ilość stopni kontrolnych kodu - nadmiarowość a wymiar dim C = k zawartość informacji. Wektory bazoweb 1,...,b k F n q s a liniowo niezależne, więc znajdziemy podciag 1 j 1 <... < j k n, taki że macierz jest nieosobliwa. b j1,...,j k = P B b 1 j 1,...,k k = b j1,1... b j1,k... b jk,1... b jk,k 1... 0..... 0... 1 a 1,1... a 1,k..... a n k,1... a n k,k P jest odpowiednią macierza permutacji osi współrzędnych przestrzeni F n q. Jest to tzw. standardowa postać bazowa kodu liniowego C.

Dla postaci standardowej kodu C [ Ik,k B = A ] anihilator (macierz kontrolna, check matrix) H ma postać H = [ A I n k,n k ]. gdzie I k,k, I n k,n k sa macierzami jednostkowymi odpowiednich wymiarów. 2.1 Grassmanian Definicja. Ogół wszystkich podprzestrzeni k-wymiarowych przestrzeni n- wymiarowej F n q nazywamy rozmaitościa Grassmana lub Grassmanianem i oznaczamy Grass(k,n,F q ) = {V : V F n q dim F q V = k}. Z postaci standardowej widać, że Grassmanian Grass(k,n,F q ) jest rozmaitościa wymiaru k (n k) nad ciałem F q i można go naturalnie zanurzyć jako kwadrykę w przetrzeni rzutowej Grass(k,n,F q ) P(Λ k F n q ) span(v 1,...,v k ) span(v 1... v k ). Pełna grupa liniowa GL(F n q ) działa tranzytywnie na podprzestrzeniach ustalnego wymiaru, stad Stwierdzenie. Grassmanian jest przestrzenia jednorodną Grass(k,n,F q ) GL(F n q)/f(k,n,f q ) F(k,n,F q ) jest grupa macierzy postaci [ ] a b 0 c gdzie a GL(F k q), c GL(F n k q ), b M(k,n k,f q ). b jest dowolną macierza prostkatn a o k wierszach i n k kolumnach i elemntach w ciele F q.

Ponieważ grupa liniowa składa się z # GL(F n q ) = (qn 1)(q n q)(q n q 2 ) (q n q n 1 ) elementów, otrzymujemy = (q n 1)(q n 1 1) (q 1) q (n 2) Wniosek. Liczba elementów rozmaitości Grassmana wynosi # Grass(k,n,F q ) = (qn 1)(q n 1 1) (q n k+1 1) (q k 1)(q k 1. 1) (q 1) Poniżej przedstawiono kilka przykładów zestawienia wymiaru kodu( k), długości kodu ( n), ilości elementów w ciele F q ( q) z ilościa elementów Grassmanianu ( # [k,n] q ). k n q # [k,n] q 4 7 2 4 301490686407185 4 8 2 4 19758795115067683345 8 16 2 63379954960524853651 3 6 7 2 1663045363565300 3 Generowanie kodów Rozważmy teraz liczbę pierwsza p > 2, oraz liczby naturalne k, n = 2k. Będziemy poszukiwać k-wymiarowych kodów liniowych o długości n, tzn. długość kodu będzie równa podwojonemu wymiarowi. Grassmanian Grass(k,2k,F p ) jest najbogatszy w wymiarze połówkowym bowiem składa się z (p 2k 1)(p 2k 1 1) (p k+1 1) (p k 1)(p k 1 1) (p 1) elementów. Przestrzeń wekorowaf n p nad ciałem F p możemy potraktować jako ciało F p n poprzez rozszerzenie stopnia n ciała prostego F p za pomoca nieprzywiedlnego wielomianu f F p [X], degf = n. Od tej pory będziemy w powyższy sposób utożsamiać ciało F p n z przestrzenia liniowa F n p nad ciałem F p: F p n f F n p. Rozważmy automorfizm Frobeniusa σ : F n p F n p, σ(x) = x p,

którego n-ta iteracja σ n (x) = x pn jest identycznościa (Id = 1) na F n p. σ k (x) = x pk jest inwolucja. Oznaczmy ja przez τ. Otrzymaliśmy operator liniowy τ : F n p Fn p, τ2 = 1, Ponieważ n = 2k, to k-ta iteracja który w naturalny sposób rozkłada przestrzeń F n p na sumę prosta dwóch podprzestrzeni własnych: V + = ker(τ 1), V = ker(τ +1) F n p = V + V Ponieważ charakterystka ciała jest różna od dwóch, dostajemy dwa operatory idempotentne (rzuty) π +,π : F n p F n p π + = 1 2 (1 τ), π = 1 2 (1+τ), spełniajace warunki: π + +π = 1, π + π = 0 = π π +, kerπ + = imπ = V +, kerπ = imπ + = V. Z drugiej strony zauważmy, że V + = kerπ + = ker(1 τ) = ker(1 σ k ), co oznacza, że V + jest rozszerzeniem stopnia k ciała prostego F p, tzn. jest izomorficzne z ciałem skończonym p k -elementowym F p k. Podsumowując, otrzymaliśmy ciag kolejnych ciał, rozszerzeń ciała prostego F p : F p V + F n p gdzie V + F p k, F n p F p n. V + : F p = k, F n p : V + = 2, F n p : F p = n = 2k.

Kluczowe dla naszej konstrukcji jest rozszerzenie stopnia dwa F n p /V + ciała p k -elementowego V + przez ciało p n -elementowe F n p. Mianowicie, traktujemy ciało F n p jako dwuwymiarową przestrzeń wektorowa nad ciałem V +. Automofizm ciała F n p jako operator liniowy nad ciałem prostym F p τ : F n p Fn p jest niezmienniczy na podprzestrzeniv +, więc możemy go traktować jako operator liniowy nad ciałem V + F p k. Jeżeli wybierzemy dowolny element ξ V,ξ 0 to możenie przez ξ 1 ustala izomorfizm pomiędzy podprzestrzeniami: a izomorfizmem odwrotnym jest: ξ 1 : V V +, ξ 1 (x) = ξ 1 x ξ : V + V, ξ(x) = ξ x Ponieważ ξ 2 V +,ξ / V + to F n p V + [ξ], tzn. element ξ realizuje rozszerzenie F n p/v + stopnia dwa. W powyższy sposób dostajemy rozkład ciała F n p na sumę prosta podprzestrzeni liniowych F n p ξ V + V + F n p u (ξ 1 π + u,π u) V + V + Każdej jednowymiarowej (nad V + F p k) podprzestrzeni wektorowej odpowiada naturalnie k-wymiarowa (nad F p ) podprzestrzeń liniowa przestrzeni F n p. Θ : P 1 (F p k) Grass(k,2k,F p ). Wykorzystujac wsółrzędne jednorodne, prosta rzutowa P 1 (F p k) możemy utożsamić z F p k { } { x (V + V + dla y 0 )/F p k [x,y] y dla y = 0. Jawna postać włożenia Θ wyglada następujaco: F p k V + x span Fp k {x+ξ} Fn p V + F n p.

4 Implementacja metody Generator kodów opisana metoda został zaimplementowany w języku C, przy wykorzystaniu biblioteki algebraicznej Computer Algebra System z Uniwersytetu w Bordeaux. Wykorzytano tu ciało skończone F 7 6 rzędu 7 6 = 117649 przyjmujac następujace wartości parametrów: p = 7, k = 3, n = 2k = 6, wielomian nieprzywiedlny f F 7 [X] stopnia n = 6: f(x) = X 6 +X 5 +2X 4 +X 3 +5X 2 +3X +2, generator (pierwiastek pierwotny) g ciała F 7 6 rzędu 7 6 1 = 117648 g(x) = 3X 5 +4X 4 +5X 2 +2X +2. Do obliczeń wykorzystano funkcje biblioteki Computer Algebra System (ffinit(),ffgen(), ffprimroot(), fforder()) : void init_kody(long prec) { GEN p1; p = pol_x(fetch_user_var("p")); k = pol_x(fetch_user_var("k")); n = pol_x(fetch_user_var("n")); f = pol_x(fetch_user_var("f")); t = pol_x(fetch_user_var("t")); g = pol_x(fetch_user_var("g")); p = stoi(7); k = stoi(5); n = gmulsg(2, k); f = ffinit(p, gtos(n), -1); t = ffgen(f, -1); g = ffprimroot(t, NULL); p1 = fforder(g, NULL); { GEN j; for (j = gen_0; gcmp(j, p1) <= 0; j = gaddgs(j, 1)) pari_printf("%ps; %Ps\n", j, gpow(g, j, prec)); } return; }

Realizacja ciała F 7 6 jest ucięta algebra wielomianów: F 7 6 F 7 [X]/(f). Obliczenia będziemy prowadzić w uporzadkowanej bazie sześciowymiarowej przestrzeni wektorowej F 7 6 F 6 7 nad ciałem F 7: (X 5,X 4,X 3,X 2,X,1). Macierze automorfizmu Frobeniusa σ : F 6 7 F6 7 oraz inwolucjaτ = σ3 : σ = 6 0 2 5 6 0 4 5 6 4 1 0 2 3 5 1 3 0 4 2 1 3 2 0 2 4 3 6 1 0 6 6 4 6 2 1, τ = operatory rzutu (idempotenty) π + i π : π + = 6 1 1 0 1 0 4 5 0 2 1 0 5 5 1 6 3 0 3 6 1 0 4 0 3 6 1 6 5 0 4 6 2 4 6 0, π = 3 5 5 0 5 0 6 5 0 3 5 0 4 4 6 2 1 0 1 2 5 1 6 0 1 2 5 2 5 0 6 2 3 6 2 1 2 6 6 0 6 0 3 3 0 5 6 0 2 2 0 1 4 0 4 1 6 1 3 0 4 1 6 1 3 0 3 1 5 3 1 1 bazy podprzestrzeni V + i V (jako odpowiednie kolumny macierzy): V + = elementy ξ, ξ 1 V : 6 1 0 5 0 0 1 0 0 0 1 0 0 1 0 0 0 1, V = 3 1 2 0 4 5 6 4 6 1 0 0 0 1 0 0 0 1 ξ = 2X 5 +6X 4 +5X 3 +5X 2 +4, ξ 1 = 3X 5 +6X 3 +X 2. Dla ujednolicenia oznaczeń, baza przestrzeni F 6 7 jest (X 5,X 4,X 3,X 2,X,1) = (e 1,e 2,e 3,e 4,e 5,e 6 )

oraz baza podprzestrzeni V + f 1 = 6e 1 +5e 2 +e 3 f 2 = e 1 +e 4 +e 5 f 3 = e 6. Mnożenie w ciele F 6 7 można przedstawić jako tensor e j e k = F 6 7 F 7 F 6 7 F6 7 6 c l j,k e l, j,k = 1,...,6 l=1 gdzie współczynniki c l j,k F 7 sa stałymi struktury (mnożenia). Gdy mnożenie przez lewy czynnik ograniczymy do podprzestrzeni V + F 7 3 to otrzymamy częściowy tensor w postaci trzech macierzy f 1 = 0 6 6 4 6 6 2 6 5 3 3 5 3 0 4 6 1 1 0 2 6 1 5 0 5 2 4 5 3 0 2 2 6 2 2 0, f 2 = 1 3 3 6 6 1 4 4 6 2 5 0 1 3 3 4 0 0 6 4 6 2 3 1 6 0 5 1 4 1 1 1 2 2 5 0 Włożenie generujace 7 3 +1 = 344 kodów liniowych realizujemy teraz następujaco: Θ : P 1 (F 7 3) Grass(3,6,F 7 ), f 3 = Id. F 7 3 V + x span F7 3 {x+ξ} F6 7 V + F 6 7. Ogólnie, każda podprzestrzeń jednowymiarowa nad F 7 3 jest odwzorowywana na podprzestrzeń wymiaru trzy nad F 7 za pomoca operacji F 6 7 u, span F 7 3 {u} span F 7 {f 1 u,f 2 u,f 3 u}. Poniżej przedstawiono niektóre z funkcji realizujace obliczanie kodów. Funkcja tuple() generuje potrzebne krotki, natomiast wywoływana przez nia funkcja act() wykonuje odpowiednie operacja macierzowe:

void tuple( int n, int k, int d, int (*f)( int*, int, int[_n][_k] ), int *a, int b[_n][_k]) { if( d > 0 ) { int j; for( j=0; j<n; ++j ) { a[d-1]= j; tuple( n, k, d-1, f, a, b ); } } else f( a, k, b ); } int act( int u[_k]) { int v[_n], w[_n], r[_n][_k]; static unsigned long l= 1UL; mulv3( v, Vplus, u ); addv( w, v, xi0 ); mul3u( r, w ); print3u( r ); } W wyniku tych działań otrzymujemy poszukiwane kody: 1. [6 5 1 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1] 2. [5 2 4 5 4 0 6 2 6 3 4 0 2 6 5 5 0 4] 3. [6 0 5 0 6 0 2 3 2 2 3 6 1 4 6 5 0 4]... 344. [2 5 6 4 3 1 3 4 5 6 0 0 2 1 4 4 6 3] Kolejnym krokiem będzie analiza jakościowa otrzymanego kodu.

LITERATURA [1] David Winter. The Structure of Fields. Springer-Verlag New York-Heidelberg-Berlin, 1974. [2] F.J. MacWilliams and N.J.A Sloane. The Theory of Error-Correcting Codes. North- Holland Publishing Company, 1978. [3] Vera Pless. Introduction to the Theory of Error-Correcting Codes.. John Wiley and Sons, Inc., 1998. [4] Siddhartha Biswas. Introduction to Codding Theory: Basic codes and Shannon s theorem. Internet, 2011. [5] Jerzy Browkin. Teoria ciał.. PWN, Biblioteka Matematyczna, tom 49, 1978.