Cyklické kódy 5. řednáška z algebraického kódování Alena Gollová, TIK Cyklické kódy 1/23
Obsah 1 Cyklické kódy Generující olynom - kódování Kontrolní olynom - objevování chyb Alena Gollová, TIK Cyklické kódy 2/23
Generující olynom - kódování Kontrolní olynom - objevování chyb Cyklický kód Definice Cyklický kód K délky n nad Z je lineární kód, který je uzavřen na cyklický osun ísmen. Pro každé v Z n latí: Je-li v = (v 1 v 2... v n ) K, ak c( v) = (v 2... v n v 1 ) K. Příklad Oakovací kód délky n nad Z je cyklický. Binární kód kontroly arity délky n je cyklický (rotože obsahuje rávě všechna slova délky n o sudém očtu jedniček) Koktavý kód K = { v = (aabbcc), a, b, c Z} není cyklický, ale je ekvivalentní cyklickému kódu K = { v = (abcabc), a, b, c Z}. Alena Gollová, TIK Cyklické kódy 3/23
Generující olynom - kódování Kontrolní olynom - objevování chyb Cyklický kód Poznámka Cyklický kód K délky n je uzavřen na cyklické osuny o libovolných i míst doleva, ro 1 i n. v K imlikuje c( v) K, imlikuje c 2 ( v) = c(c( v)) K atd. c i ( v) K. Cyklický kód je uzavřen na cyklické osuny ísmen doleva i dorava, neboť osun o i míst doleva je vlastně osunem o n i míst dorava, ro 1 i n. Alena Gollová, TIK Cyklické kódy 4/23
Generující olynom - kódování Kontrolní olynom - objevování chyb Cyklický kód - slova nebo olynomy Kódové olynomy - nový ohled na věc U cyklických kódů se vylatí cháat kódová slova délky n jako olynomy stuně nejvýše (n 1): v = (v 1 v 2... v n ) v(z) = v 1 z n 1 + v 2 z n 2 +... + v n Cyklický osun je ak realizován vynásobením roměnnou z odle ravidla z n = 1: c( v) = (v 2... v n v 1 ) z v(z) = v 1 z n + v 2 z n 1 +... + v n z = v 2 z n 1 +... + v n z + v 1 Alena Gollová, TIK Cyklické kódy 5/23
Generující olynom - kódování Kontrolní olynom - objevování chyb Cyklický kód - slova nebo olynomy Nic tím neztratíme Množina Z n všech slov nad Z délky n tvoří lineární rostor nad Z. Množina všech olynomů nad Z stuně nejvýše (n 1) také tvoří lineární rostor nad Z. Přitom sčítání a násobení konstantou ze Z je v obou říadech realizováno stejně, oba lineární rostory jsou izomorfní. Množinu všech olynomů nad Z stuně nejvýše (n 1) budeme značit Z (n). Alena Gollová, TIK Cyklické kódy 6/23
Generující olynom - kódování Kontrolní olynom - objevování chyb Cyklický kód - slova nebo olynomy Něco tím získáme Na množině všech olynomů nad Z stuně nejvýše (n 1) máme však navíc oeraci násobení: Umíme vynásobit dva olynomy nad Z a oužitím řeisovacího ravidla z n = 1 (z n+1 = z, z n+2 = z 2 atd.) získáme oět olynom stuně nejvýše (n 1). (Pozn: Pravidlo z n = 1 jsme otřebovali ři cyklickém osunu kódových olynomů!) Takto definované násobení odovídá násobení ve faktorovém okruhu Z[x]/(x n 1), aneb Z (n) tvoří komutativní okruh s jednotkou. Alena Gollová, TIK Cyklické kódy 7/23
Generující olynom - kódování Kontrolní olynom - objevování chyb Cyklický kód - slova nebo olynomy Shrnutí Množina Z (n) všech olynomů nad Z v roměnné z stuně nejvýše (n 1) tvoří lineární rostor nad Z komutativní okruh, v němž násobíme dle ravidla z n = 1 Cyklický kód K délky n nad Z je odrostor v lineárním rostoru Z (n) uzavřený na násobení roměnnou z Alena Gollová, TIK Cyklické kódy 8/23
Generující olynom - kódování Kontrolní olynom - objevování chyb Cyklický kód - slova nebo olynomy Definice Nechť (R, +, ) je komutativní okruh. Podmnožina I R se nazývá ideál okruhu R, jestliže 1 (I, +) je odgrua gruy (R, +), 2 ro všechny r R a všechny i I je r i I. Tvrzení Cyklický kód K délky n nad Z je ideál okruhu Z (n). Alena Gollová, TIK Cyklické kódy 9/23
Generující olynom - kódování Kontrolní olynom - objevování chyb Generující olynom Tvrzení Nechť K je cyklický kód délky n nad Z. Pak existuje kódový olynom g(z) K tak, že latí v(z) K iff v(z) = a(z) g(z) ro nějaký a(z) Z (n). Definice Výše uvedený olynom g(z) se nazývá generující olynom cyklického kódu K. Generujícím olynomem je jakýkoliv nenulový kódový olynom nejmenšího stuně. Takových olynomů je ( 1) a jsou navzájem asociované, obvykle se generující olynom volí monický. Alena Gollová, TIK Cyklické kódy 10/23
Generující olynom - kódování Kontrolní olynom - objevování chyb Kódování Navíc latí: Pro každý v(z) K existuje jediný a(z) stuně nejvýše (k 1), kde k = n st(g), ro nějž v(z) = a(z) g(z). Máme zde vzájemně jednoznačné zobrazení mezi kódovými olynomy v(z) K a olynomy a(z) Z (k). Kódování omocí generujícího olynomu Nechť K je cyklický (n, k)-kód s generujícím olynomem g(z), tedy st(g) = n k. Kódování informace délky k omocí g(z) robíhá takto: ā a(z) ϕ v(z) = a(z) g(z) v Alena Gollová, TIK Cyklické kódy 11/23
Generující matice Cyklické kódy Generující olynom - kódování Kontrolní olynom - objevování chyb Tvrzení Buď g(z) generující olynom cyklického (n, k)-kódu K nad Z. Množina {g(z), z g(z), z 2 g(z),..., z k 1 g(z)} tvoří bázi odrostoru K lineárního rostoru Z (n). Aneb bázi v odrostoru K lineárního rostoru slov Z n získáme cyklickým otáčením slova ḡ g(z). Generující matice G = jako generující olynom g(z). c k 1 (ḡ) : c(ḡ) ḡ určuje stejné kódování Alena Gollová, TIK Cyklické kódy 12/23
Generující olynom - kódování Kontrolní olynom - objevování chyb Kódování Příklad Binární kód kontroly arity délky 3 K = {(0 0 0), (0 1 1), (1 0 1), (1 1 0)} {0, z + 1, z 2 + 1, z 2 + z}. Generujícím olynomem je g(z) = z + 1 a určuje toto kódování: ā = (0 0) v(z) = 0 g(z) = 0 v = (0 0 0) ā = (0 1) v(z) = 1 g(z) = z + 1 v = (0 1 1) ā = (1 0) v(z) = z g(z) = z 2 + z v = (1 1 0) ā = (1 1) v(z) = (z + 1) g(z) = z 2 + 1 v = (1 0 1) Stejné kódování určuje matice G = ( 1 1 0 0 1 1 ) ( z g(z) g(z) ). Alena Gollová, TIK Cyklické kódy 13/23
Systematické kódování Generující olynom - kódování Kontrolní olynom - objevování chyb Buď K cyklický (n, k)-kód s generujícím olynomem g(z). Poíšeme systematické kódování informace ā = (a 1,..., a k ). 1 Naíšeme info-znaky na začátek olynomu stuně (n 1): u(z) = z n k a(z) = a 1 z n 1 +... + a k z n k 2 Polynom u(z) vydělíme generujícím olynomem g(z): u(z) = f (z) g(z) + r(z), st(r) < st(g) = n k 3 Odečteme zbytek o dělení. Odečítání nezasáhne informační znaky a vzniklý olynom bude kódový: v(z) = u(z) r(z) = f (z) g(z) v = (a 1,..., a k, r n k 1,..., r 0 ) Alena Gollová, TIK Cyklické kódy 14/23
Generující olynom - kódování Kontrolní olynom - objevování chyb Systematické kódování Příklad Binární kód kontroly arity délky 3 má g(z) = z + 1. Zakódujeme systematicky informaci ā = (10) a(z) = 1z + 0 1 u(z) = z a(z) = z 2 2 z 2 = (z + 1)g(z) + 1 3 v(z) = u(z) 1 = z 2 + 1 v = (101) Alena Gollová, TIK Cyklické kódy 15/23
Generující olynom - kódování Kontrolní olynom - objevování chyb Kolik je cyklických kódů délky n nad Z? Tvrzení Nechť K je cyklický kód délky n nad Z s generujícím ol. g(z). Pak g(x) x n 1 v Z[x]. Důsledek Je tolik cyklických kódů délky n nad Z, kolik je monických dělitelů olynomu x n 1 v Z[x]. Příklad x 3 1 = (x + 1)(x 2 + x + 1) je ireducibilní rozklad v Z2[x], existují tedy ouze dva (netriviální) binární cyklické kódy délky 3: oakovací kód s g(z) = z 2 + z + 1 kód kontroly arity s g(z) = z + 1 Alena Gollová, TIK Cyklické kódy 16/23
Kontrolní olynom Cyklické kódy Generující olynom - kódování Kontrolní olynom - objevování chyb Tvrzení Nechť K je cyklický kód délky n nad Z s generujícím ol. g(z) a nechť x n 1 = h(x)g(x) v Z[x]. Pak ro každý olynom v(z) Z (n) latí: Definice v(z) K iff v(z) h(z) = 0 v Z (n) (kde z n = 1). Výše uvedený olynom h(z) se nazývá kontrolní olynom cyklického kódu K. Kontrolní olynom budeme volit monický, každý jeho konstantní nenulový násobek je též kontrolním olynomem kódu K. Alena Gollová, TIK Cyklické kódy 17/23
Generující olynom - kódování Kontrolní olynom - objevování chyb Kontrolní olynom Příklad Binární kód kontroly arity délky 3 má g(z) = z + 1. x 3 1 = (x + 1)(x 2 + x + 1) v Z2[x], tedy h(z) = z 2 + z + 1. Zkontrolujeme kódové slovo z 2 + 1: h(z) (z 2 + 1) = z 4 + z 3 + z + 1 = z + 1 + z + 1 = 0, očítáme dle ravidla z 3 = 1. Tvrzení Pro cyklický (n, k)-kód K nad Z latí: st(h(z)) = k, rotože st(g(z)) = n k; g(z) i h(z) mají nenulový absolutní člen Alena Gollová, TIK Cyklické kódy 18/23
Generující olynom - kódování Kontrolní olynom - objevování chyb Objevování chyb Detekce chybného slova Nechť K je cyklický (n, k)-kód nad Z s generujícím olynomem g(z) a kontrolním olynomem h(z). Bylo osláno slovo v K a řijato slovo w = v + ē Z n. Kontrolu srávnosti můžeme rovést dvěma zůsoby: Pokud g(z) w(z) v Z[z], ak w(z) K, tedy řijaté slovo je chybné. Pokud h(z) w(z) 0 v Z (n) (kde z n = 1), ak w(z) K, tedy řijaté slovo je chybné. V oačném říadě ovažujeme w(z) = v(z) za slovo oslané, neboť ravděodobnější je menší očet chyb. Alena Gollová, TIK Cyklické kódy 19/23
Generující olynom - kódování Kontrolní olynom - objevování chyb Objevování chyb a dekódování Objevování shluků chyb Cyklický kód K objevuje všechna chybová slova, která obsahují shluky chyb o délce d st(g(z)) = n k. Chybový olynom má tvar e(z) = z i f (z), kde st(f (z)) d 1, a gcd(g(z), z i ) = 1, tudíž g(z) e(z) v Z[z]. Vlastní dekódování Vlastní dekódování kódového olynomu v(z) K ři nesystematickém kódování rovedeme vydělením generujícím olynomem g(z) nad Z: v(z) : g(z) = a(z) v Z[z] Alena Gollová, TIK Cyklické kódy 20/23
Generující olynom - kódování Kontrolní olynom - objevování chyb Oravování chyb Oravování jedné chyby Pokud je v řijatém olynomu jedna chyba, ak w(z) = v(z) + a z i, kde v(z) K. Při vynásobení kontrolním olynomem vznikne syndrom: s(z) = w(z) h(z) = 0 + a z i h(z) Určíme-li jednoznačně konstantu a a z i, ak můžeme chybu oravit: v(z) = w(z) a z i. Pozor, násobení jsme rováděli odle ravidla z n = 1, nelze tedy jednoduše odělit s(z) : h(z) jakožto olynomy nad Z. K oravování chyb budeme raději oužívat kontrolní matici. Alena Gollová, TIK Cyklické kódy 21/23
Kontrolní matice Cyklické kódy Generující olynom - kódování Kontrolní olynom - objevování chyb Tvrzení Nechť h(z) = h k z k + + h 1 z + h 0 je kontrolní olynom cyklického (n, k)-kódu K nad Z. Pak kontrolní matice kódu K má tvar H = 0... 0 h 0 h 1... h k : 0 h 0 h 1... h k 0... 0 h 0 h 1... h k 0... 0 Matice má (n k) lineárně nezávislých řádků, stačí tedy ověřit jejich kolmost na kódová slova. (dim K = k, dim K T = n k.) V syndromu s T = H v T jsou koeficienty olynomu s(z) = h(z) v(z), tudíž ro kódová slova je syndrom nulový. Alena Gollová, TIK Cyklické kódy 22/23
Generující olynom - kódování Kontrolní olynom - objevování chyb Duální kód Řádky matice H tvoří bázi duálního kódu K T. Tyto řádky vznikly cyklickým otáčením slova (0... 0 h 0 h 1... h k ), které odovídá recirokému olynomu k olynomu h(z) (reciroký olynom má koeficienty v oačném ořadí): Tvrzení h(z) = h k z k + h k 1 z k 1 + + h 1 z + h 0 h r (z) = h 0 z k + h 1 z k 1 + + h k 1 z + h k Duální kód K T cyklického kódu K je také cyklický. Jeho generujícím olynomem je h r (z), reciroký olynom ke kontrolnímu olynomu kódu K. Alena Gollová, TIK Cyklické kódy 23/23