Eötvös Loránd Tudományegyetem Természettudományi kar Labancz Norbert Matematika BSc Alkalmazott matematikus szakirány Hibajavító kódolás Szakdolgozat Témavezet : Dr. Hermann Péter egyetemi docens Algebra és Számelmélet Tanszék Budapest, 2016
Tartalomjegyzék 1. A hibajavító kódolás 3 1.1. Kódolási alapfogalmak............................. 3 2. Lineáris kódok 8 2.1. Bináris lineáris kódok.............................. 8 2.2. Szindróma dekódolás.............................. 11 2.2.1. A binális Hamming-kód........................ 13 3. Véges test 14 3.1. Aritmetika GF(p)-ben............................. 16 3.2. Véges test feletti polinomok.......................... 16 3.3. Aritmetika GF(p m )-ben............................. 18 4. Nembináris lineáris kód 20 4.1. Lineáris kódok kib vítése és ekvivalenciája.................. 22 4.2. Reed-Solomon kód............................... 22 5. Ciklikus kódok 24 5.1. Ciklikus kódok szisztematikus generálása................... 25 5.2. Ciklikus Reed-Solomon kód.......................... 26 6. A Golay-kódok 27 6.1. Blokkrendszerek................................. 27 6.2. A bináris Golay-kód.............................. 29 6.2.1. G 24 el állítása az ikozaéder adjacenciamátrixa segítségével..... 34 6.2.2. A mohó módon el állított G 24..................... 36 6.3. A ternáris Golay-kód.............................. 36 2
1. fejezet A hibajavító kódolás A hibakorlátozó kódolás célja információhibázó kommunikációs csatornákon történ megbízható átvitele, illetve hibázó adattárolókon történ megbízható tárolása. E célból az információt kisebb egységekre bontjuk, majd redundáns információval b vítve kódszavakba képezzük, kódoljuk. A redundancia hozzáadása teszi lehet vé az információ védelmét hibázás esetén. A hibakorlátozó kódolás két f technikája a hibajelzés illetve a hibajavítás. Hibajelzés esetén a cél annak eldöntése, hogy történt-e meghibásodás az információ továbbítása illetve tárolása során. Hibajavítás esetén ezen túlmen en a hibák kijavítása is feladat. Több kapcsolatos kérdés merül fel: hogyan történjen a kódszavakba történ leképezés, azaz a kódolás, ha célunk a minél er sebb hibakorlátozó képesség, azon feltétel mellett, hogy a rekonstrukció (dekódolás) a számításigényét tekintve hatékony maradjon. Az alábbiakban a hibakorlátozó kódok konstrukciós és dekódolási alapelveit tekintem át, a hangsúlyt a kapcsolatos fogalmakra és alapvet algoritmusokra helyezve. A fejezet elkészítésekor felhasznált szakirodalom: [1], [2], [3], [4], [5] 1.1. Kódolási alapfogalmak A hibajavító kódolás alapvet módszereit a lenti ábrán látható egyszer hírközlési struktúra kapcsán vizsgálom. Az u és u vektorok koordinátái egy F halmazból veszik értékeiket, mely halmazt forrásábécének nevezzük. A kódoló a k hosszú u vektort (az üzenetet) egy n hosszú c vektorba (a kódszóba) képzi le. A c koordinátái egy Q halmazból veszik értékeiket. A Q-t kódábécének vagy csatorna bemeneti ábécének nevezik. A csatorna kimenete v, szintén egy n hosszú vektor, melynek koordinátái szintén Q-beliek. forrás u kódoló c csatorna v dekódoló u nyel 1. Deníció. Egy c = (c 1,..., c n ) bemeneti, és egy v = (v 1,..., v n ) kimeneti sorozat esetén azt mondjuk, hogy az m-edik id pontban a csatorna hibázott, ha c m v m. Jelölje d(c, v) azon i pozíciók számát, ahol c i v i. d(c, v) = { i : c i v i, i = 1,..., n } 3
A d(c, v) számot nevezzük a c, v sorozat Hamming-távolságának, és azt mondjuk, hogy c sorozat küldésekor és a v sorozat vételekor a hibák száma t = d(c, v). Azt az esetet, mikor a hiba helye és értéke egyaránt ismeretlen, egyszer hibázásnak nevezik. d(c, v) valóban távolság, hiszen d(c, v) > 0 d(c, v) = d(v, c) illetve teljesül a háromszög-egyenl tlenség is: d(c, v) d(c, w) + d(w, v) Kód (blokk-kód) alatt a Q n halmaz egy C részhalmazát értjük, azaz C minden eleme egy n hosszú vektor, melynek koordinátái Q-beliek. C elemeit kódszavaknak nevezzük. A továbbiakban a C(n, k, d), illetve rövidítettebb formában a C(n, k) jelölést alkalmazom, kiemelve a kód paramétereit. A kódolás egy invertálható függvény, mely k hosszú F -beli sorozatot - üzenetet - képez le egy kódszóban, formalizálva: φ : F k C melyre minden u u F k esetén φ(u) φ(u ) C Dekódolás alatt két függvény egymásutánját értjük. Az egyik a csatorna kimenetének n hosszú szegmensét képezi le C-be, azaz igyekszik eltalálni a küldött kódszót, a másik pedig a φ függvény inverze, tehát ψ : Q C φ 1 : C F k φ 1 ψ : Q F k Mivel φ egyértelm en meghatározza φ 1 -et, ezért a dekódolás alatt a kés bbiekben csak a ψ függvényt értjük. A ψ dekódoló függvényként az algebrai hibajavító kódok elméletében speciális függvényt választunk, nevezetesen a v vektorhoz megkeressük azt a c C kódszót, mely Hamming-távolsága szerint hozzá a legközelebb van, vagy ha több ilyen van, akkor az egyiket, tehát teljesül, hogy ha c = ψ(v), akkor d(c, v) = min d(c, v) c C A dekódolás feladata ezek után arra a messze nem triviális feladatra sz kül, hogy egy v vett szóhoz hogyan keressük meg a hozzá legközelebbi c kódszót anélkül, hogy minden d(c, v)-t kiszámítanánk. Ha mégis kiszámítjuk ezeket a távolságokat, és minden v-hez megkeressük a hozzá legközelebbi c kódszót, majd a neki megfelel üzenetet, akkor elvben azt eltároljuk, és így egy táblázathoz jutunk, melynek címét v adja, tartalma pedig a v-nek 4
megfelel dekódolt üzenet. Ez a táblázatos dekódolásnak a legegyszer bb, de legpazarlóbb esete, hiszen a táblázat q n darab üzenetb l áll, ahol q a Q kódábécé elemszáma. A kés bbiekben kiderül, hogy a kódoló f függvény leglényegesebb tulajdonsága a C kód egy paramétere, amit kódtávolságnak nevezünk, és d min -nel jelölünk. d min = min c c d(c, c ) c, c C A hibajelzés a hibakorlátozó kódolás azon feladata, amikor a vev ben csupán detektálni akarjuk a hibázás tényét, azaz azt kérdezzük, hogy van-e hiba. Nyilván egy v vett szó esetén akkor tudjuk a hibázást észrevenni, ha v nem kódszó, amire garancia, hogy ha c küldött kódszó esetén d min > d(v, c) azaz a hibák számára d min > t tehát egy d min kódtávolságú kód minden, legfeljebb d min 1 számú hibát jelezni tud. Hibajavítás esetén azt kérdezzük, hogy ha t a hibák száma, akkor mi biztosítja, hogy a v vett szóból a c küldött kódszó egyértelm en visszaállítható legyen, azaz minden más c kódszóra d(v, v ) > d(v, c) legyen. Mivel a Hamming-távolság valóban távolság, ezért teljesíti a háromszög-egyenl tlenséget, azaz d(v, c ) d(c, c ) d(v, c) tehát úgy biztosítható, hogy d(c, c ) d(v, c) > d(v, c) ugyanis, ha ez utóbbi teljesül, akkor is teljesül, azaz minden c c-re vagyis Összefoglalva: egyszer hibázás esetén d(c, c ) > 2d(v, c) d min 2 > d(v, c) dmin 1 2 (1.1) hiba javítható. Gyakran fordul el olyan hibázás, amikor tudjuk, hogy egy pozícióban hiba lehet, vagyis tudjuk, hogy más pozíciókban nincs hiba, tehát a hiba helyét ismerjük, csak a hiba értékét nem. Az ilyen hibát törléses hibának nevezzük. Egyszer en belátható, hogy 5
minden d min 1 törléses hiba javítható, ugyanis a legrosszabb esetben sem fordulhat el, hogy két c és c kódszó ugyanazon, de legfeljebb d min pozíciójának törlésével ugyanazt a szót kapnánk. Nyilván adott n kódhosszúság és d min kódtávolság esetén nem lehet akármilyen nagy méret kódot konstruálni: 1. Tétel (Singleton-korlát). Egy M kódszóból álló, n hosszú és d min kódtávolságú kódra M q n d min+1 Bizonyítás. Legyen k egy természetes szám, melyre q k 1 < M q k Mivel a k 1 hosszú különböz sorozatok száma q k 1, ezért q k 1 < M miatt létezik két kódszó c és c, melyek els k 1 koordinátában megegyeznek. Ezekre következésképpen azaz d(c, c ) n k + 1 d min n k + 1 M q k q n d min+1 Jellegzetes esetben M = q k, vagyis a kódoló k hosszú forrásszegmensekhez rendel n hosszú vektorokat. Azt mondjuk ilyenkor, hogy a kódunk (n, k) paraméter. Ebben az esetben a Singleton-korlát alakja d min n k + 1 2. Deníció. Azon kódot, melyre a Singleton-korlátban egyenl ség áll, maximális távolságú vagy MDS (maximum distance separable) kódnak nevezzük. Képzeljünk el egy olyan kódot, mely 1-hibát képes javítani. Ehhez a következ szemléletes geometriai képet rendelhetjük. A kódszavak, mint középpontok körül képzeljünk el 1 Hamming-sugarú gömböket, azaz a gömb felületén olyan kódszóhossz hosszúságú bináris szavak találhatók, amelyeknek a középpontban lév szótól való Hamming-távolsága 1. Ha egy hiba keletkezik, akkor a vett szó a leadott kódszó körüli gömbön helyezkedik el. Más szavakkal ezen gömbök a dekódolási tartományok. Abban az esetben, ha gömbi dekódolási tartományokkal hézagmentesen képesek vagyunk lefedni a teret, perfekt kódokról beszélünk. Nagyon egyszer összefüggés adódik az 1 hibát javító bináris perfekt kódok paraméterei közötti összefüggésre. A tér elemeinek száma 2 n, a kódszavak száma 2 k, így egy gömb elemeinek száma ezek hányadosa, azaz 2 n k. Másfel l, egy 1 Hamming sugarú gömbben 1 + n elem van, így adódik, hogy 1 hibát javító bináris perfekt kódok esetén 1 + n = 2 n k 6
A következ szakaszban bemutatok egy, az ismétléses kódnál hatékonyabb perfekt kódot, a bináris Hamming-kódot. Az összefüggés könnyen általánosítható tetsz leges t 1 hiba javítás esetére: a képlet bal oldalán a gömb elemeinek a száma, a középpontól 0, 1, 2,..., t Hamming-távolságra lév szavak számának összege, azaz V (n, t) = 1 + n + ( ) n 2 + + ( ) n t áll. A fenti gondolatmenet alapján adódó Hamming-korlát bináris esetben az alábbi V (n, t) 2 n k A Hamming-korlát nembináris esetben a következ alakot ölti: t i=0 ( ) n (q 1) i q n k (1.2) i 7
2. fejezet Lineáris kódok 2.1. Bináris lineáris kódok Ebben a szakaszban el ször a bináris kódok egy fontos csoportját ismertetem. A továbbiakban a kódjainkban szerepl kódszavakat alkotó szimbólumok legyenek 0 vagy 1 érték ek, a m veletek a (mod 2) összeadás és (mod 2) szorzás. A fejezet elkészítésekor felhasznált szakirodalom: [1], [2], [3], [4], [5] Vezessük be a lineáris kód fogalmát: 3. Deníció. Egy bináris C kód lineáris, ha a C halmaza lineáris tér, azaz ha minden c, c C-re c + c C. A lineáris kód deníciójából következik, hogy a 0 vektor eleme minden lineáris kódnak, vagyis minden lineáris kód esetén a 0 kódszó. A lineáris kódok jelent ségét az adja, hogy az egyes üzenetekhez tartozó kódszavak viszonylag egyszer en generálhatók, és ugyancsak egyszer módszer található a vett kódszavak hibamentességének vizsgálatára, vagyis a hibadetektálásra, és a hibák javítása sem bonyolult. A következ kben e módszereket fogom bemutatni. Jelentsen C továbbra is egy lineáris kódot, a kódszóhossz legyen n. Ekkor C az n hosszúságú bináris koordinátájú vektorok terének egy altere. A valós vektortérben megszokott lineáris függetlenség és bázis fogalmak itt is teljesen hasonlóan értelmezhet ek, vagyis 4. Deníció. A { g i } n i=1 C vektorok lineárisan függetlenek, ha α i 0, 1 esetén k α i g i = 0 i=1 csak α i = 0 esetén teljesük minden i {1,..., k}-ra. 5. Deníció. A { } n g i C vektorok a C lineáris tér egy bázisát alkotják, ha lineárisan i=1 függetlenek, továbbá igaz az, hogy minden c C vektor el állítható c = k µ i g i i=1 8
alakban, ahol µ i {0, 1} minden i {1,..., k}-ra. Az utóbbi denícióban a bázist alkotó vektorok függetlenségéb l következik, hogy a kódszavak fenti típusú el állítása egyértelm is, ha ugyanis létezne két különböz el állítás valamely c C-re, tehát k c = µ i g i és c = i=1 k γ i g i i=1 ahol nem áll fenn µ i = γ i minden i-re, akkor a két egyenletet kivonva egymásból a nullvektornak egy nem triviális el állítását kapnánk a bázisvektorokkal, ami ellentmondana azok lineáris függetlenségének. Az egyenl ség felírható mátrix alakban: c = µg ahol µ = (µ 1,..., µ k ), G pedig a bázisvektorokból mint sorvektorokból álló mátrix. Az egyenlettel tehát egy k-dimenziós és egy n-dimenziós vektort rendelünk össze lineáris transzformációval, mégpedig kölcsönösen egyértelm módon. Azt fogjuk mondani, hogy az µ üzenethez a c kódszó tartozik. A k-dimenziós µ vektorokkal 2 k -féle üzenetet fejezhetünk ki, s ezeket kódoljuk a C kóddal. C elemei azonban n-dimenziós vektorok, és n nem kisebb k-nál, hiszen k az n-dimenziós vektorok C alterének a dimenziószáma. A k = n esetnek nincs most jelent sége, ha k kisebb, mint n, akkor viszont világos, hogy nem minden vektort kell felhasználni kódszónak, vagyis kódunk redundáns lesz, s ezt a redundanciát tudjuk hibajavításra felhasználni. Az üzenetekhez a kódszavakat a G mátrix segítségével rendeljük hozzá, vagyis a G mátrix jelöli ki az n-dimenziós vektortérnek a kódot jelent C alterét, a kódot G generálja. 6. Deníció. A fenti tulajdonságú G mátrixot a C kód generátormátrixának nevezzük. Vegyük észre, hogy ha nem tör dünk azzal, hogy melyik kódszó melyik üzenethez tartozik, csak a kódszavak halmazát tekintjük, akkor G nem egyértelm, vagyis több mátrix is generálhatja ugyan azt a kódszóhalmazt. A következ deníció egy megfeleltetést deniál az üzenetek és a kódszavak között. 7. Deníció. Egy (n, k) paraméter lineáris kód szisztematikus, ha minden kódszavára igaz, hogy annak utolsó n k szimbólumát elhagyva éppen a neki megfelel k hosszúságú üzenetet kapjuk, más szavakkal a k hosszú üzenetet egészítjük ki n k karakterrel. Már leszögeztük, hogy dekódolás alatt csak az esetleges hibák kijavítását értjük, aminek eredményeképp egy kódszót kapunk. Az üzenetvektor visszanyeréséhez még el kell ugyan végezni a kódolás inverz m veletét, ez azonban rendszerint triviális lépés, szisztematikus 9
kód esetén például csak el kell hagyni a kódszó egy részét (a végét). Szisztematikus kód esetén a generátormátrix is egyértelm, mégpedig G = ( I k B ) alakú, ahol I k a k k méret egységmátrix, B pedig k (n k) méret mátrix. Az µ üzenethez tartozó c kódszó szerkezete tehát: c = (µ 1,..., µ k, c k+1, c k+2,..., c n ) A c els k koordinátájából álló szegmensét üzenetszegmensnek, az utolsó n k koordinátájából álló paritásszegmensnek nevezzük. A lineáris kódok további tulajdonságai elvezetnek az ígért egyszer hibadetektáláshoz illetve hibajavításhoz. 8. Deníció. Ha egy n k sorból és n oszlopból álló H mátrixra Hc T = 0 akkor és csak akkor, ha c C, akkor H-t a C kód paritásellen rz mátrixának nevezzük. H segítségével tehát meg tudjuk állapítani, hogy egy vett szó valóban kódszó-e. 2. Tétel. Legyen G a C lineáris kód generátormátrixa, H a C lineáris kód paritásellen rz mátrixa. Ekkor HG T = 0. Bizonyítás. Jelölje Q k a k hosszú bináris sorozatok halmazát. Ekkor minden µ Q k - hoz létezik c C, amire c = µg Ugyanakkor c C miatt azaz Hc T = 0 Hc T = H ( µg ) T = HG T µ T = 0 Az utóbbi egyenl ség csak úgy állhat fent minden µ Q k -ra, ha HG T = 0. Ez pedig pontosan a tétel állítása. Az el z tétel alapján szisztematikus generátormátrix felhasználásával könnyen el állíthatjuk a kód egy paritásellen rz mátrixát. Keressük H-t H = ( A In k ) alakban. A tétel állítása alapján HG T = ( A In k ) [ ( Ik B ) ] T = A + B T = 0. 10
Azaz A = B T kell teljesüljön. Binális esetben B T = B T A következ kben a súly fogalmát deniálom, majd megmutatom, hogy lineáris kódoknál a minimális súly a kódtávolsággal egyenl. 9. Deníció. Legyen c = (c 1,..., c n ) C. A c C vektor súlya ω(c) = { i : c i 0, i = 1,..., n }, vagyis a c C vektor súlya a koordinátái között lév nem nulla elemek száma. 10. Deníció. Egy C kód minimális súlyán az ω min = min ω(c), ahol c 0. c C 3. Tétel. Ha C lineáris kód, akkor a kódtávolsága megegyezik a minimális súlyával. d min = ω min Bizonyítás. d min = min c c d(c, c ) = min c c ω(c c ) = min c 0 ω(c ) = ω min, ahol az utolsó el tti egyenl ség felírásakor a C kód linearitását használtuk ki, ebb l következik ugyanis, hogy c = c c is kódszó, továbbá az is, hogy minden kódszó el áll ilyen különbség alakjában. (Utóbbi ahhoz szükséges, hogy a minimum képzésekor valóban minden c C-t gyelembe vehessünk.) A tétel jelent sége abban áll, hogy segítségével a d min deníció alapján történ kiszámításához szükséges C ( C 1) 2 m veletet az ω min kiszámításához szükséges C 1 m veletre redukáljuk. 2.2. Szindróma dekódolás A H paritásellen rz mátrix hasznosnak bizonyul dekódolás során. 11. Deníció. Legyen c az adott kódszó, v a vett szó. Jelölje ε = c v a hibavektort. Ekkor a σ mennyiséget szindrómának nevezzük, ahol σ = εh T. 11
1. Megjegyzés. A Hv T értéke csak a hibavektortól függ, a kódszótól nem, ugyanis Hv T = H(c + ε) T = Hc T + Hε T = Hε T. A szindróma tehát a hibavektor egy lineáris leképzése. A dekódolás leggyakoribb módja a szindróma dekódolás. A fentiek alapján a dekódolás a következ képpen mehet végbe: a vett v szóból kiszámítjuk a σ T = Hv T = Hε T szinndrómát, ennek alapján megbecsüljük a hibavektort, és ezt v-b l levonva megkapjuk a kódszóra vonatkozó becslésünket. A szindrómának hibamintára történ leképzési módját táblázatba szokás foglalni, az un. standard elrendezési táblázatba. Valamely ε hibaminta által generált mellékosztály az ε + c, c C(n, k) vektorok halmaza. Adott mellékosztály elemeihez azonos szindróma tartozik. Az ε = 0 zérus hibavektorhoz tartozó mellékosztály a C(n, k) kóddal azonos.ha egy ε hibaminta ε = ε +c alakba írható fel, akkor a két hibaminta (ε és ε ) azonos mellékosztályt generál. Azonos mellékosztályba tartozó hibaminták közül válasszuk ki a legkisebb súlyút, s azt mellékosztályvezet nek nevezzük. Ennek megfelel en a standard elrendezési táblázat az alábbi struktúrájú: Mellékosztályvezet {}}{ ε (0) = 0 c (1) c (2k 1) σ (1) ε (1) c (1) + ε (1) c (2k 1) + ε (1) Szindróma {}}{ σ (0).. σ (2n k 1) ε (2n k 1) }{{} Mellékosztály elemek. c (1) + ε (2n k 1) }{{} Mellékosztály elemek... }{{} Mellékosztály elemek. c (2k 1) + ε (2n k 1) }{{} Mellékosztály elemek Az ω ( ε (i+1)) ω ( ε (i)), ε (0) = 0, i = 0, 1,..., 2 n k 2 a szokásos sorrend. 2. Megjegyzés. A fenti táblázat elemei különböz ek. Bizonyítás. Egy soron belül ez nyilvánvaló. Különböz sorokat tekintve tegyük fel, hogy ε (i) + c (j) = ε (k) + c (l) ahol i > k. Ebb l ε (i) = ε (k) + c (l) c (j) = ε (k) + c (n) következik, ahol c (l), c (j), c (n) C(n, k), ezért ε (i) -nek is az ε (k) mellékosztályvezet j sorba kell lennie, ami ellentmondás kiindulási feltételünknek. Az ε (i), i = 1,..., 2 n k 1 mellékosztályvezet ket javítható hibamintáknak nevezzük, ugyanis ha a v vett szó szindrómája σ (i), akkor a c = v ε (i) kódszóra döntünk. A szindróma dekódolásnak ezt az els sorban elvi módját táblázatos dekódolásnak nevezzük. (Megjegyzem, hogy a fenti dekódolási módszer nembináris ábécé esetére történ kiterjesztésekor 2 n k helyett q n k áll.) A szindrómát használó táblázatos dekódoló tárja a vizsgált bináris esetben 2 n k darab hibavektort tartalmaz, és a táblázat elemeit a szindróma segítségével címezzük. Következésképpen a táblázatos módszer a gyakorlatban addig használható, amíg gyorselérés tárunk mérete lehet vé teszi a javítható hibaminták tárolását. 12
2.2.1. A binális Hamming-kód Illusztrációként egy klasszikusnak számító kódot mutatok be, mely bináris Hammingkód néven ismeretes. A konstrukció az alábbi tételen alapul: 4. Tétel. C lineáris kód kódtávolsága legalább akkor és csak akkor, ha a paritásellen rz mátrixa tetsz legesen választott 1 oszlopa lineárisan független. A fenti tétel alapján 1-hibát javító bináris kódot kapunk, ha H tetsz leges két oszlopa lineárisan független, azaz oszlopai különböz k. Mivel a különböz, nemzérus n k hosszú bináris vektorok száma 2 n k 1, ezért ezen vektorokat használva a H mátrix különböz oszlopaiként, az n = 2 n k 1 összefüggésre jutunk, ami azt is jelenti, hogy a kapott kód perfekt tulajdonságú. Ennek alapján bináris Hamming-kód paraméterei az alábbi számpárok (d min = 3): n k 3 1 7 4 15 11 31 26 63 57 127 120 13
3. fejezet Véges test Hatékony hibajavító kódok konstrukciójához szükséges, hogy a nembináris Q kódábécé strukturált legyen, mely például úgy lehetséges, hogy m veleteket vezetünk be Q-n. A fejezet elkészítésekor felhasznált szakirodalom: [1], [2], [3], [4], [5] 12. Deníció. Egy Q halmazt testnek nevezünk, ha értelmezve van tetsz leges két elem között két m velet, amelyeket összeadásnak illetve szorzásnak nevezünk, + illetve szimbólumokkal jelölünk, és Q rendelkezik a következ tulajdonságokkal: 1. Q az összeadásra nézve kommutatív csoport. Minden α, β Q estén α + β Q, tehát Q az összeadásra nézve zárt. Minden α, β, γ Q esetén α + (β + γ) = (α + β) + γ, vagyis az összeadás asszociatív. Létezik a Q-nak az összeadásra nézve neutrális eleme, 0 Q, melyre minden α Q-ra α + 0 = 0 + α = α. Ezt a neutrális elemet nullelemnek nevezzük. Minden α Q elemhez létezik β Q, hogy α + β = 0. Ezt a β elemet az α additív inverzének nevezzük, és α-val jelöljük. Minden α, β Q estén α + β = β + α (kommutativitás). 2. Q \ {0} a szorzásra nézve kommutatív csoport. Minden α, β Q \ {0} estén α β Q, tehát Q a szorzásra nézve zárt. Minden α, β, γ Q \ {0} esetén α (β γ) = (α β) γ, vagyis az szorzás asszociatív. Létezik a Q \ {0}-nak a szorzásra nézve neutrális eleme, 1 Q \ {0}, melyre minden α Q \ {0}-ra α 1 = 1 α = α. Ezt a neutrális elemet egységelemnek nevezzük. Minden α Q\{0} elemhez létezik β Q\{0}, hogy α β = 1. Ezt a β elemet az α multiplikatív inverzének nevezzük, és α 1 -zel jelöljük. Minden α, β Q \ {0} estén α β = β α (kommutativitás). 14
3. Minden α, β, γ Q esetén α 0 = 0 α = 0 és α (β + γ) = (α β) + (α γ) (disztributivitás). Egyszer konvenciókkal egy Q testben deniálható a kivonás és az osztás a következ módon: α β alatt az α-nak és β additív inverzének összegét értjük, azaz α + ( β)- t. α β alatt α-nak és β multiplikatív inverzének a szorzatát értjük, azaz α β 1 -t értjük, amennyiben β 0. Test példálul a valós számok halmaza a valós összeadással és szorzással, a racionális számok halmaza a valós összeadással és szorzással, a komplex számok halmaza a komplex összeadással és szorzással és a {0, 1} halmaz a (mod 2) összeadással és szorzássa. 13. Deníció. Legyen q N, Q test, melyre Q = q <. Ekkor Q-t véges testnek nevezzük és GF(q)-val jelöljük. Miel tt a véges testek aritmetikáját tárgyalnám, néhány a továbbiakban felhasznált fontos tulajdonságukat ismertetem. 5. Tétel. GF(q) esetén q = p m alakú, ahol p prímszám, tehát q vagy prímszám, vagy prímhatvány. 1. Lemma. Minden 0 α GF(q)-ra α q 1 = 1 2. Lemma. Minden 0 α GF(q)-ra létezik egy legkisebb m N (ezt az m számot az α elem rendjének nevezzük és o(α)-val jelöljük), melyre α m = 1 m = 0 (mod q 1), és minden i j esetén (i = 1,..., m, j = 1,..., m) α i α j. 14. Deníció. Egy α GF(q)-t a GF(q) primitív elemének nevezzük, ha o(α) = q 1. 6. Tétel. Minden GF(q)-ban létezik primitív elem. 15
3.1. Aritmetika GF(p)-ben 7. Tétel. A G = {0, 1,..., p 1} halmaz a (mod p) aritmetikával egy p prímszám esetén véges test, azaz a testm veletek a + b := a + b (mod p), a b := a b ahol + és jelöli a valós összeadást illetve szorzást. (mod p), A primitív elem egyrészt igen fontos hatékony kódok konstrukciójakor, másrész GF(q)- beli szorzások és osztások elvégzésekor. Ha α a GF(q) egy primitív eleme, akkor bevezethetjük egy a GF(q) testelem α alapú logaritmusát az α loga = a egyenlet (egyértelm ) megoldásával, ahol a 0. Ha a, b GF(q) nemnulla elemei, akkor a b = α loga α logb = α loga+logb, tehát egy α alapú logaritmustábla és egy inverzlogaritmus-tábla segítségével a szorzás (illetve az osztás) visszavezethet valós összeadásra (illetve kivonásra). A következ kben nagyon hasznosnak bizonyulnak a GF(q) feletti polinomok, így többek között egy fontos kódcsalád (a ciklikus kódok) leírásában, illetve a prímhatvány méret véges testek aritmetikája generálásakor fogom használni ket. 3.2. Véges test feletti polinomok GF(q) feletti vektorok reprezentálására, és vektorok közötti szorzás kényelmes bevezetésére egy célszer eszköz a polinomreprezentáció: 15. Deníció. Az α(x) GF(q) feletti m-ed fokú polinom, ha α(x) = m α i x i i=0 α i GF(q) i {0,..., m} a m 0 x GF(q) A fenti α(x) polinom m fokszámát degα(x) jelöli. Deníció szerint α(x) = 0, akkor degα(x) =. 16
16. Deníció. α(x) = β(x) akkor és csak akkor, ha α i = β i minden i {0,..., m}-re 17. Deníció. M veletek polinomok között: Polinomok összeadása: γ(x) = α(x) + β(x) tagonként történik GF(q) feletti m veletekkel. γ i = α i + β i. degγ(x) max{degα(x), degβ(x)} Polinomok szorzása: γ(x) = α(x)β(x) minden tagot minden taggal szorzunk, majd az azonos fokú tagokat csoportosítjuk (az összeadások és szorzások GF(q) felettiek). γ i = min{i,degα(x)} j=0 a j b i j degγ(x) = degα(x) + degβ(x) 8. Tétel (Euklidészi osztás polinomokra). Adott α(x) és δ(x) 0 polinomok esetén egyértelm en létezik olyan q(x), r(x) polinomok, melyekre és degr(x) < degδ(x). α(x) = q(x)δ(x) + r(x), 18. Deníció. r(x)-et az α(x)-nek δ(x)-re vonatkozó maradékának nevezzük. ( ) r(x) = α(x) mod δ(x) 19. Deníció. A δ(x) polinom osztja az α(x) polinomot, ha α(x) = 0 ( mod δ(x) ). Ezt δ(x) α(x) jelöli. 20. Deníció. Egy ξ GF(q) gyöke az α(x) polinomnak, ha α(ξ) = 0 9. Tétel. Ha ξ GF(q) gyöke az α(x) polinomnak, akkor α(x) el áll α(x) = β(x)(x ξ) alakban. 10. Tétel. Legyen α(x) k-adfokú polinom, azaz Ekkor k α(x) = α i x i α k 0. i=0 {ξ GF(q) : α(ξ) = 0} k 17
3.3. Aritmetika GF(p m )-ben Lényeges különbség van a prím illetve a prímhatvány méret testek aritmetikája között. Prím méret testben a modulo aritmetika megfelelt. Prímhatvány méret esetén sajnos a modulo aritmetika nem teljesíti a testaxiómákat, például egy 4 elem halmazban 2 2 = 0 (mod 4), tehát két nemnulla elem szorzata 0 lenne, ami axiómát sért. A GF(p m ) feletti aritmetika konstrukciója azért alapvet fontosságú, mert manapság a hibajavító kódokat tömegesen alkalmazzák számítástechnikai környezetben, ahol a természetes ábécé a GF(2 8 ), vagyis a bájt. A GF(p m )-beli elemek legyenek 0,..., p m 1 számok, melyeknek m hosszú vektorokat feleltetünk meg, ahol a koordináták GF(p)-beliek. Ezt megfogalmazhatjuk például úgy is, hogy a 0,..., p m 1 számokat p alapú számrendszerben írjuk fel. Ezek után a GF(p m )- beli aritmetikát m hosszú vektorok közötti m veletekkel deniáljuk. A két m velet közül az összeadás az egyszer bb: két vektor összegén a koordinátánkénti GF(p)-beli összeget értjük, vagyis a koordinátánkénti mod(p) összeget. A szorzás egy kicsit bonyolultabb. A két m hosszú vektort legfeljebb m 1-ed fokú polinom formájában reprezentáljuk, és összeszorozzuk. Az eredmény fokszáma meghaladhatja m 1-et, ezért itt egy speciális polinom szerinti maradékot képzünk. Ezt a speciális polinomot irreducíbilis polinomnak nevezzük, és ez a polinom ugyanolyan szerepet játszik, mint a prímszám a GF(p)-beli aritmetikában. 21. Deníció. A GF(p) feletti, nem nulladfokú P (x) polinomot irreducibilis polinomnak nevezzük, ha nem bontható fel két, nála alacsonyabb fokú GF(p) feletti polinom szorzatára, azaz nincs GF(p) feletti α 1 (x), α 2 (x) polinom, melyekre P (x) = α 1 (x)α 2 (x) és 0 < deg ( α i (x) ) < deg ( P (x) ) i {1, 2}. 3. Megjegyzés. Minden véges testben található tetsz leges fokszámú irreducibilis polinom. Példát mutatok arra, hogy hogyan lehet GF(2) feletti irreducibilis polinomokat generálni. A denícióból következik, hogy minden els fokú polinom (x és x + 1) irreducibilis. Ha találunk olyan másodfokú polinomot, mely különbözik az x 2, az x(x + 1) és az (x + 1) 2 mindegyikét l, akkor találtunk irreducibilis másodfokú polinomot. Egy ilyen van: x 2 + x + 1 Más testben és nagyobb fokszámok esetén ennél hatékonyabb konstrukciókat érdemes használni, de bináris esetben így is találhatók irreducibilis polinomok, amelyeket táblázatban foglalok össze: 18
Fokszám Irreducibilis polinom 2 x 2 + x + 1 3 x 3 + x + 1 4 x 4 + x + 1 5 x 5 + x 2 + 1 6 x 6 + x + 1 7 x 7 + x 3 + 1 8 x 8 + x 4 + x 3 + x 2 + 1 9 x 9 + x 4 + 1 11. Tétel. Legyen p egy prím, m egy természetes szám, P (x) egy GF(p) feletti m-edfokú, irreducibilis polinom, és Q = {0,..., p m 1}. Egy α Q és β Q elemeknek kölcsönösen egyértelm en feleltessük meg GF(p) feletti, legfeljebb (m 1)-edfokú α(x) és β(x) polinomokat. α + β deníció szerint az a γ Q, melynek megfelel γ(x) polinomra γ(x) = α(x) + β(x). α β deníció szerint az a δ Q, melynek megfelel δ(x) polinomra δ(x) = α(x)β(x) ( mod P (x) ). Ezzel az aritmetikával Q egy GF(p m ). 19
4. fejezet Nembináris lineáris kód Ebben a szakaszban a kódok egy fontos csoportjával ismerkedek meg, melyek a már megismert bináris lineáris kódok kiterjesztései nembináris esetre. A továbbiakban a kódjainkban szerepl kódszavakat alkotó szimbólumokat vegyük GF(q)-ból, a lehetséges szimbólumok tehát a {0,..., q 1} számoknak feleltethet k meg. A fejezet elkészítésekor felhasznált szakirodalom: [1], [2], [3], [4], [5] 22. Deníció. Egy C kód lineáris, ha C halmaz lineáris tér GF(q) fölött, azaz minden c, c C esetén c + c C, illetve µ GF(q) esetén µc C. Itt is hasonló módon belátható, hogy tetsz leges C lineáris kódhoz létezik egy k lineárisan független sorból és n oszlopból álló G mátrix, melyre c = ug, ahol a k hosszú u üzenethez a c kódszó tartozik, és a G mátrixot a C kód generátormátrixának nevezzük. A bináris esethez hasonlóan a C lineáris kódhoz egy n k sorból és n oszlopból álló H mátrixot paritásellen rz mátrixnak nevezzük, amennyiben Hc T = 0 akkor és csak akkor teljesül, ha c C. A bináris eset másolataként kapjuk, hogy 12. Tétel. Minden lineáris C kódnak létezik paritásellen rz mátrixa. Példaként bemutatom a nembináris Hamming-kódot. Ismét 1-hibát javító kódot konstruálok. A bináris esetben a hiba javításához elég volt ismerni a hiba helyét, amihez elégséges volt, ha a H paritásellen rz mátrix minden oszlopa különböz. Nembináris esetben 20
nem csak a hiba helyét, hanem a hiba értékét is meg kell állapítani, ezért a H mátrix oszlopait úgy választom, hogy azok nem 0-k, mind különböz k legyenek, és az els nem 0 elem miden oszlopban 1 érték legyen. Ekkor, ha egy hiba az i-edik helyen fordul el és értéke ε i, akkor a szindróma σ = ε i h i, ahol h T i a H i-dik oszlopa. Tehát a hiba értéke, ε i éppen a szindróma els nem 0 értéke, míg h i = σ ε i, amib l az i visszakereshet. Ha H tartalmazza az összes lehetséges, a fenti módon megengedett oszlopvektort, akkor n = qn k 1 q 1, azaz 1 + n(q 1) = q n k, másrészt a Hamming-korlát miatt tehát 1 + n(q 1) q n k, 13. Tétel. A maximális hosszúságú nembináris Hamming-kód perfekt kód. A nembináris Hamming-kódok közül különösen érdekes az az eset, amikor a kód szisztematikus és a paritásszegmens hossza 2, azaz n k = 2. Legyen α GF(q) egy nem 0 elem, melynek rendje m 2. Válasszunk n (m + 2)-t és k = (n 2)-t. Ekkor a paritásellen rz mátrix: ( ) 1 1 1... 1 1 0 H = 1 α α 2... α n 3 0 1 Ez egy (n, n 2) paraméter nembináris Hamming-kód paritásmátrixa. A 10. oldal 2. tétele alapján meghatározhatjuk a C lineáris kód generátormátrixát. 1 0 0... 0 1 1 0 1 0... 0 1 α G = 0 0 1... 0 1 α 2......... 0 0 0... 1 1 α n 3 ezért Mivel ez a kód 1-hibát tud javítani, ezért d min 3, de a Singleton-korlát miatt d min n k + 1 = 3, 14. Tétel. Az (n, n 2) paraméter nembináris Hamming-kód MDS kód. 21
4.1. Lineáris kódok kib vítése és ekvivalenciája 23. Deníció. A GF(q) test feletti, n hosszú C lineáris kód kib vítettje a C kód, ha C = { (c, c n+1 ) : c = (c 1,..., c n ) C és n+1 c i = 0 (mod q) } i=1 1. Következmény. Ha a {0, 1} ábécé feletti C bináris lineáris kódra d min = k páratlan, akkor a kib vített C kódra a kódtávolság k + 1. 24. Deníció. A C lineáris kód permutáció-ekvivalens (vagy ekvivlens) a C lineáris kóddal, ha létezik egy olyan P permutáció-mátrix, melyre c C akkor, és csak akkor, ha: cp C 4.2. Reed-Solomon kód Ebben a szakaszban a lineáris kódok egyik leggyakrabban használt osztályát, a Reed- Solomon kódokat, azok különböz konstrukcióit mutatom be. 1. Konstrukció. Legyenek { α i } n 1 i=0 u = (u 0, u 1,..., u k 1 ) a k hosszúságú üzenetszegmens, amelyhez az GF(q) különböz elemei (n q), és u i GF(q) üzenetpolinomot rendeljük. k 1 u(x) = u i x i i=0 Ekkor a Reed-Solomon kódnak az u üzenethez tartozó n hosszú c kódszavát a következ módon állítjuk el : c i = u(α i ) i {0,..., n 1} c = (c 0, c 1,..., c n 1 ) A konstrukcióból látható, hogy a Reed-Solomon kód lineáris, és G generátormátrixa a következ. 1 1 1... 1 α 0 α 1 α 2... α n k G =....... α0 k 1 α1 k 1 α2 k 1... α k 1 n k 15. Tétel. Az (n, k) paraméterü Reed-Solomon kód MDS kód, melyre d min = n k + 1. 22
tehát Bizonyítás. ω(c) = { i : c i 0, i = 1,..., n } = n { i : ci = 0, i = 1,..., n } n { λ GF(q) : u(λ) = 0 } n (k 1), ω min n k + 1. Ugyanakkor a 6. oldal 1. tételét, illetve a 11. oldal 3. tételét felhasználva n k + 1 d min = ω min. Az (n, k) paraméter Reed-Solomon kód tehát n k hibát tud jelezni, n k 2 egyszer hibát javítani, és n k törléses hibát javítani. Ez utóbbi azt jelenti, hogy az u ismeretére vonatkozó ug = c n darab egyenletb l bármelyik n k egyenlet elhagyásával egy egyértelm en megoldható egyenletrendszer marad, tehát G mátrix minden k k-s négyzetes részmátrixa invertálható. 2. Konstrukció. Legyen α( 0) GF(q), melynek rendje m (m n), és az 1. konstrukcióban legyen α i = α i i {0,..., n 1}. Ekkor a generátormátrix: 1 1 1... 1 1 α α 2... α n 1 1 α 2 α 4... α 2(n 1) G =....... 1 α k 1 α 2(k 1)... α (k 1)(n 1) 23
5. fejezet Ciklikus kódok A fejezet elkészítésekor felhasznált szakirodalom: [1], [2], [3], [4], [5] 25. Deníció. Egy c = (c 0, c 1,..., c n 1 ) vektor ciklikus eltoltja a Σ-t a ciklus eltolási operátorának nevezzük. Σc = (c n 1, c 0,..., c n 2 ). 26. Deníció. A C kódot ciklikusnak nevezzük, ha bármely kódszó ciklikus eltoltja is kódszó. A ciklikus eltolás operátorát kényelmesebben tudjuk kezelni, ha a kódszavakat mint vektorokat a már megszokott polinomos formában reprezentáljuk. 27. Deníció. Rendeljünk polinomot az egyes kódszavakhoz a következ módon: n 1 c = (c 0, c 1,..., c n 1 ) c(x) = c i x i Ekkor a c kódszónak megfeleltetett c(x) polinomot kódszópolinomnak nevezzük. A kódszópolinomok halmazát jelölje C[x]. 3. Lemma. Legyen c (x) a c kódszó Σc eltoltjához rendelt kódszópolinom. Ekkor i=0 c (x) = xc(x) (mod x n 1) 16. Tétel. Minden (n, k) paraméter, ciklikus, lineáris C kódban a nem azonosan nulla kódszópolinomok között egyértelm en létezik egy minimális fokszámú g(x) normált polinom. A g(x) polinom fokszáma n k, és egy c C akkor és csak akkor, ha g(x) c(x), azaz létezik egy u(x) polinom úgy, hogy c(x) = u(x)g(x). 24
28. Deníció. A fenti g(x)-et a kód generátorpolinomjának nevezzük. 17. Tétel. Minden ciklikus, lineáris kód g(x) generátorpolinomjára g(x) x n 1. Valamint, ha egy g(x) polinomra g(x) x n 1, akkor létezik egy lineáris ciklikus kód, melynek g(x) a generátorpolinomja. A paritásellen rz mátrixnak is van polinomos megfelel je: 29. Deníció. Egy g(x) generátorpolinomú lineáris, ciklikus kód esetén a h(x) = xn 1 g(x) polinomot paritásellen rz polinomnak nevezzük. 18. Tétel. Egy lineáris, ciklikus kódra c(x) akkor és csak akkor kódszópolinom, ha c(x)h(x) = 0 (mod x n 1) és degc(x) n 1. 5.1. Ciklikus kódok szisztematikus generálása A ciklikus kódok el nyös tulajdonságai egyrészt a generálási lehet ségek sokféleségében, másrészt egyszer dekódolási eljárásokban jelentkeznek. Egy lineáris ciklikus kódot lehet például a generátorpolinom és az üzenetpolinom szorzásával generálni. Ez a módszer megfogalmazható egy olyan G generátormátrix segítségével is, amelyhez legegyszer bben úgy juthatunk el, ha G sorai a g(x)-nek megfelel vektor eltoltjai: g 0 g 1 g 2... g n k 1 1 0... 0 0 0 g 0 g 1... g n k 2 g n k 1 1... 0 0 G =........... 0 0 0... g 0 g 1 g 2... 1 0 0 0 0... 0 g 0 g 1... g n k 1 1 kihasználva, hogy g(x) polinom, így g n k = 1. Egy másik generálási módszer kapcsán azt is megmutatom, hogy 19. Tétel. Minden lineáris ciklikus kód generálható szisztematikusan. 25
Bizonyítás. Vegyük észre, hogy g 0 0, mert ha 0 lenne, akkor a g-t balra eltolva egy g-nél egyel kisebb fokszámú kódszópolinomot kapnánk, ami lehetetlen. g 0 0 miatt viszont a Gauss-eliminációt balról jobbra végrehajtva szisztematikus generátormátrixot kapunk. A szisztematikus generálás egy praktikus módszere a következ : Legyen u(x) egy legfeljebb (k 1)-edfokú üzenetpolinom, p(x) a paritás részt. c(x) = u(x)x n k + p(x) Mivel a c(x) kódszópolinomnak oszthatónak kell lennie g(x)-szel, így c(x) = 0 ( mod g(x) ). Tekintettel arra, hogy deg ( p(x) ) n k 1, és deg ( g(x) ) = n k, így p(x) = u(x)x n k ( mod g(x) ) Ezen generálás szisztematikus: a c(x)-et deniáló egyenl ség jobb oldalának els tagja adja az üzenetszegmenst, míg a második tagja a paritásszegmenst. 5.2. Ciklikus Reed-Solomon kód A Reed-Solomon kód legfontosabb gyakorlati el állítási módja a 20. tételen alapszik. 20. Tétel. A Reed-Solomon kódok esetén legyen a kódszó n hossza egyenl az ott szerepl α elem m rendjével. Ekkor a kód ciklikus, és generátorpolinomja továbbá paritásellen rz polinomja n k g(x) = (x α i ), h(x) = i=1 n i=n k+1 tehát a nem rövidített Reed-Solomon kód ciklikus. (x α i ), 21. Tétel. A 20. tétel Reed-Solomon kódjának paritásellen rz mátrixa: 1 α α 2... α n 1 1 α 2 α 4... α 2(n 1) H =....... 1 α n k α 2(n k)... α (n 1)(n k) 26
6. fejezet A Golay-kódok A fejezet elkészítésekor felhasznált szakirodalom: [2], [6], [7], [8], [9], [10] 6.1. Blokkrendszerek 30. Deníció. Legyen H = v, H 2 H, melyre minden B H esetén B = k, továbbá H minden t elem részhalmazát H-nak pontosan λ eleme tartalmazza. Ekkor a (H, H) halmazrendszer t (v, k, λ)-blokkrendszer. H elemeit blokkoknak, H elemeit pontoknak nevezzük 4. Lemma. Legyen C egy 0-t tartalmazó e-hibajavító bináris perfekt kód. Továbbá legyen (H, H) halmazrendszer, melyre H elemei a koordináta-pozíciók, H 2 H elemei a minimális súlyú kódszavak tartói. Ekkor a (H, H) halmazrendszer (e + 1) (n, 2e + 1, 1)- blokkrendszer. Bizonyítás Tudjuk, hogy H = n. Egy h H legyen eleme pontosan akkor egy B H blokknak, ha a B-hez tartozó kódszóban az adott helyen 1 érték szerepel. Ekkor minden B H blokkra igaz, hogy B = 2e + 1. Legyen H H, melyre H = e + 1. Ez a H egy e + 1 súlyú szó. Minden ilyen H szóhoz egyértelm en létezik olyan h kódszó a perfektség miatt, melyre d( H, h) e. Mivel e-nél közelebb csak 2e + 1 súlyú szavak vannak, melyek nem kódszavak, így d( H, h) = e teljesül. Azokon a helyeken, ahol az e + 1 súlyú szóban 1 érték szerepel, ott a hozzá tartozó 2e + 1 súlyú kódszóban is 1-nek kell szerepelnie, ellenkez esetben kisebb lenne a súlya, azaz bármely e + 1 koordináta-pozícióhoz létezik egyértelm en egy blokk, mely tartalmazza. 27
4. Megjegyzés. Tetsz leges t (v, k, λ) blokrendszerre teljesül, hogy ( v H = ( t) k t)λ. 1. Állítás. Egyértelm en létezik a 2 (11, 5, 2) blokkrendszer. Bizonyítás. Az állításban szerepl létezésre bizonyíték a Paley-féle konstrukció. 3. Konstrukció (Paley-féle konstrukció). Legyen H = {k Z : 0 k 10}. Legyen S = {0, 1, 3, 4, 5, 9} H a kvadratikus maradékok, valamint H = {S + i i H}. Ekkor (H, H) 2 (11, 5, 2) blokkrendszer. Az egyértelm ség bizonyításához el ször vezessük be a következ jelölést: S i = S + i i H Tekintsük minden halmaz komplementerét, melyet jelöljön rendre S i = H \ S i. Az így kapott S halmazrendszer minden S i S elemére: S i = 5 és minden i j esetén S i S j = 2 Sj S Most tegyük fel, hogy léteznek az s 1, s 2 pontok, melyeket három halmaz is tartalmaz, vagyis {s 1, s 2 } S l S m S n. Az tudjuk, hogy bármely két halmaz metszete két elem, így S l \ {s 1, s 2 }, Sm \ {s 1, s 2 }, Sn \ {s 1, s 2 } halmazok páronként diszjunktak, és mivel S l = S m = S n = 5, így S l S m S n = 11. Most tekintsünk egy eddigiekt l különböz S j halmazt, és S j {s 1, s 2 } elemszámát. 1. eset S j {s 1, s 2 } = 0, ekkor S j = 6. 2. eset S j {s 1, s 2 } = 1, ekkor S j = 4. 3. eset S j {s 1, s 2 } = 2, ekkor S j = 2. Mind a három eset ellentmondás, ami azt jelenti, hogy bármely {s 1, s 2 } pontpárt legfeljebb két halmaz tartalmaz. Most számoljuk meg az {(s 1, s 2, S i ) : s 1 s 2 S i } halmaz elemszámát. Ez egyrészt 11 5 4, mert 11 halmazból 5, illetve 4 féleképpen választhatok ki s 1 -t és s 2 -t. Másrészt legfeljebb 11 5 4, mert tetsz leges két pontot legfeljebb két halmaz tartalmaz. Összegezve a kapott eredményeket, tetsz leges két pontot pontosan kett halmaz tartalmaz. Most deniáljunk hat darab gráfot a következ módon (Hussain-gráf): minden s / S 1 esetén deniáljuk a G s (V s, E s ) gráfot S 1 -en úgy, hogy a (v 1, v 2 ) E s él, abban az esetben, ha (v 1, v 2 )-re illeszked, S1 -t l különböz halmaz átmegy s-en. Azt az el bb láttuk, hogy bármely két pontra pontosan két halmaz illeszkedik, így különböz s és s esetén a G s (V s, E s ) G s (V s, E s ) az {s, s }-re illeszked két halmaz metszete S 1 -gyel, vagyis E s E s = 2. Továbbá vegyük észre, hogy tetsz leges v 1 S 1 két szomszédja G s (V s, E s ) gráfban az s-re és v 1 -re illeszked két halmaz metszete S 1 -gyel, így G s (V s, E s ) gráf minden pontjának foka 2. Az így deniált gráfokból egyértelm en visszavezethet ek a halmazok, ugyanis egy {v 1, v 2 } S 1 meghatározza a {v 1, v 2, s 1, s 2, s 3 } halmazt, ahol (v 1, v 2 ) G si (V si, E si ), 28
i {1, 2, 3}. Minegyik gráf 5 csúcsának a foka 2, vagyis a gráf nem más, mint egy 5 hosszú kör. Legyen G s1 (V s1, E s1 ) az a gráf, melyre: V s1 = {1, 2, 3, 4, 5} E s1 = {(1, 2), (2, 3), (3, 4), (4, 5), (5, 1)} Mindegyik gráf ezekb l pontosan két élt tartalmaz, de ezek nem lehetnek szomszédosak, mert akkor tartalmaznia kellene a szomszédos élekkel szemközti éleket is, ami nem lehetséges, tehát csak két nem szomszédos élt tartalmazhatnak, ami egyértelm en meghatározzák a többi gráfot. Konkrétan a hat gráf az {(1, 3), (3, 2), (2, 5), (5, 4), (4, 1)} gráf és ennek elforgatottjai. Ezzel beláttuk, hogy a Hussain-gráfok rendszere egyértelm, amib l következik a blokkrendszer egyértelm sége. 2. Következmény. Mivel egy 2 (11, 5, 2) blokkrendszer komplementere (H, {H \ B : B H}) 2 (11, 6, 3) blokkrendszer, és fordítva, így ez is egyértelm. 5. Megjegyzés. Ha H 2 H egy t (v, k, λ) blokkrendszer, és A H, A = a t, akkor (H \ A, {B \ A : B H, A B}) egy (t a) (v a, k a, λ) blokkrendszer. 6.2. A bináris Golay-kód Tekintsük a C, {0, 1} ábécé feletti, 24 hosszú, 2 12 elem, 8 kódtávolságú lineáris kódot (röviden a (24, 2 12, 8) 2 paraméter lineáris kódot). Próbáljuk el állítani C egy "szép" bázisát a következ módon: Legyen c 1 C tetsz leges kódszó, melyre és ω(c 1 ) = 12. Tegyük fel, hogy a c 1 C kódszó koordinátái úgy vannak permutálva, hogy c (s) 1 = 0 s S = {2,..., 13} c (k) 1 = 1 k K \ S, ahol K = {1,..., 24}. Tekintsük minden c i C kódszó S koordináta-halmazra vetítettjét, vagyis minden c i C kódszó esetén a m S c (m) i számot. Az így kapott kód 12 hosszú, és bármely c C kódszóra c és c + c 1 vetítettje ugyanaz, másnak viszont nem lehet ugyanez a vetítettje, ha ugyanis a 0 szót kapjuk, akkor az eredeti c nem lehet 8 súlyú, mert akkor c + c 1 4 súlyú szó lenne, tehát csak 0, vagy 12 súlyú lehet, vagyis 0 vagy c 1 maga. Tehát az így kapott C kód 11 dimenziós. Bármely c m C kódszóra 2 ω( c m ), 29
mert minden szó súlya eredetileg is páros volt, és c, c 1 = 0 minden c C esetén. A kapott kód [12, 11, 2] paraméter és minden páros súlyú szót tartalmaz. Most válasszuk c 2,..., c 12 kódszavakat úgy, hogy a c i i-edik és 13-dik helyen 1 érték áll, vetítettje többi helyén 0. Mivel c i helyett c i + c-t is vehetjük, ezért feltehetjük, hogy a c 2,..., c 12 kódszavak els koordinátája 0. Az így kapott 12 vektor C bázisa, mert lineárisan függetlenek az els 12 koordináta miatt. Most tekintsük c 2,..., c 12 kódszavak utolsó 11 koordinátáját. Ezt a 11 vektort jelölje a 2,..., a 12. Mivel ω(c i ) 8, így ω(a i ) = 6 vagy ω(a i ) = 10. Ha ω(a i ) = 10 valamely i {2,..., 12} esetén, akkor ω(c 1 +c i ) = 4, ami ellentmondás, vagyis: ω(a i ) = 6 i {2,..., 12} így Jelölje Ekkor supp(a i ) = { a (l) i : a (l) i = 1 l {2,..., 12} } x = supp(a i ) supp(a j ) ω(c i + c j ) = 2 + (6 x) + (6 x) = 14 2x x = 1 vagy x = 3 Ha x = 1 lenne, akkor ω(c + c i + c j ) = 4 lenne, így x = 3 a helyes megoldás, vagyis supp(a i ) halmazok mindegyike egy 11 elem halmaz 6 elem részhalmaza, és bármely kett metszete 3 elem. A fentieket felhasználva megalkothatjuk C egy bázisát: 31. Deníció. Legyen I 12 {0, 1} 12 12 egység-mátrix, A {0, 1} 12 12. 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 0 1 0 1 1 0 1 1 1 0 0 0 1 0 1 1 0 1 1 1 0 0 0 1 0 1 1 1 1 1 1 0 0 0 1 0 1 1 0 A = 1 1 1 0 0 0 1 0 1 1 0 1 1 1 0 0 0 1 0 1 1 0 1 1 A T = A 1 0 0 0 1 0 1 1 0 1 1 1 1 0 0 1 0 1 1 0 1 1 1 0 1 0 1 0 1 1 0 1 1 1 0 0 1 1 0 1 1 0 1 1 1 0 0 0 1 0 1 1 0 1 1 1 0 0 0 1 Ekkor a G = ( I 12 A ) {0, 1} 12 24 mátrix által generált bináris, lineáris kód a kib vített Golay-kód, melyet G 24 jelöl. 30
A 33. denícióból következik, hogy a G 24 kód hossza 24, és dim(g 24 ) = 12. 2. Állítás. A kib vített G 24 Golay-kód paritásellen rz -mátrixa H = ( A I 12 ) {0, 1} 12 24 Bizonyítás. A 2. tételt felhasználva adódik az állítás. 32. Deníció. Az x = (x 1,..., x n ) és y = (y 1,..., y n ) bináris kódszavak ortogonálisak, ha n x, y = x i y i = 0 (mod 2) i=1 5. Lemma. Legyen x és y bináris kódszó, melyre 4 ω(x) és 4 ω(y). Ekkor 4 ω(x+y) akkor és csak akkor, ha x és y ortogonálisak. és Bizonyítás. Legyen c = supp(x) supp(y). Ekkor Mindkét állítás páros c esetén teljesül. ω(x + y) = ω(x) + ω(y) 2c x, y = c (mod 2) 3. Állítás. A kib vített G 24 Golay-kód önortogonális. G 24 = G 24 Bizonyítás. Legyen G 24 kód generátor-mátrixának tetsz leges két sora g i és g j. A fejezet elején leírt konstrukcióból adódik, hogy 4 ω(g i ) és 4 ω(g j ), vagyis teljesülnek az 5. lemma feltételei, azaz G bármely két sora ortogonális, vagyis supp(g i ) supp(g j ) érték páros, G 24 kód lineáris, Ezzel beláttuk, hogy G 24 G 24. Azt láttuk, hogy dim(g 24 ) = 12, így vagyis G 24 = G 24. G 24 = 2 12. dim(g 24) = 24 dim(g 24 ) = 24 12 = 12, 3. Következmény. G 24 paritásellen rz -mátrixa H = ( I 12 A ) 31
4. Következmény. G 24 generátor-mátrixa G = ( A I 12 ) 4. Állítás. Legyen c G 24 tetsz leges kódszó. Ekkor: 4 ω(c) Bizonyítás. Egy c G 24 kódszóról tudjuk, hogy az a G 24 kód G generátor-mátrix sorainak egy lineáris kombinációja. 1. eset: Legyen c G 24 kódszó a G generátor-mátrix egy sora. Mivel a G generátormátrix sorainak súlya 8 vagy 12, így triviálisan teljesül, hogy 4 ω(c). 2. eset: Most legyen g i és g j a G generátor-mátrix két tetsz leges sora, és tegyük fel, hogy c = g i +g j. Ekkor azt kell megmutatni, hogy 4 ω(g i +g j ). Tudjuk, hogy G generátormátrix sorainak súlya 4 töbszöröse, valamint bármely két sora ortogonális egymásra, így alkalmazható az 5. lemma, azaz: 4 ω(c) Innen indukcióval adódik az állítás. 5. Állítás. A kib vített G 24 Golay-kódra: d min = 8 Bizonyítás. A 4. állítás alapjána a kib vített G 24 Golay-kódra d min = 4 vagy d min = 8. Most tekintsük G 24 egy nemnulla v kódszavát, melyre ω(v) = 4. Írjuk fel v G 24 kódszót (v 1, v 2 ) alakban, ahol a v 1 12-dimenziós vektor v els 12 koordinátája, a v 2 12-dimenziós vektor v utolsó 12 koordinátája. Ekkor a következ esetekfordulhatnak el : 1. eset: ω(v 1 ) = 0 és ω(v 2 ) = 4. Ez az eset nem fordulhat el, mert ha megnézzük a G 24 kód G generátor-mátrixát, az egyetlen 0 súlyú szó a 0. 2. eset: ω(v 1 ) = 1 és ω(v 2 ) = 3. Ebben az esetben v kódszó a G generátor-mátrix egy sora kell, hogy legyen, ami ismét ellentmondás. 3. eset: ω(v 1 ) = 2 és ω(v 2 ) = 2. Ekkor v kódszó a G generátor-mátrix két különböz sorának összege. Könnyen látható, hogy semelyik két sor összegére nem fordulhat el, hogy ω(v 2 ) = 2, mert az ilyen sorok súlya 8 vagy 12. 4. eset: ω(v 1 ) = 3 és ω(v 2 ) = 1. Jelölje G = ( A I 12 ) {0, 1} 24 12 mátrixot, ami szintén generátormátrix. Ebben az esetben v kódszó a G generátor-mátrix egy sora, így itt a 2. eset fordul el. 5. eset: ω(v 1 ) = 4 és ω(v 2 ) = 0. Ez az eset megegyezik az 1. eset-tel, mikor a kód generátor-mátrixa a G. A fent leírt 5 eset mindegyikében ellentmondásra jutottunk, így a d min = 4 eset nem lehetséges, vagyis szükségképp d min = 8. Az el bb megmutattam, hogy a kib vített G 24 Golay-kódra d min = 8. Az 1.1. képlet d alapján egyszer hibázás esetén min 1 hiba javítható. Elvégezve a helyettesítést kapjuk, 2 hogy 32
6. Állítás. A kib vített G 24 Golay-kód 3-hibajavító kód. 33. Deníció. Legyen I 12 {0, 1} 12 12 egység-mátrix, Ā {0, 1} 12 11. 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 0 1 1 1 0 1 1 1 0 0 0 1 0 1 0 1 1 1 0 0 0 1 0 1 1 1 1 1 0 0 0 1 0 1 1 Ā = 1 1 1 0 0 0 1 0 1 1 0 1 1 0 0 0 1 0 1 1 0 1 1 0 0 0 1 0 1 1 0 1 1 1 0 0 1 0 1 1 0 1 1 1 1 0 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 0 0 1 0 1 1 0 1 1 1 0 0 0 Ekkor a Ḡ = ( I 12 Ā) {0, 1} 12 23 mátrix által generált kód a bináris Golay-kód, melyet G 23 jelöl. 6. Megjegyzés. A bináris G 23 Golay-kód 23 hosszú, 12 dimenziós és paritásellen rz mátrixa H {0, 1} 12 23 H = (ĀT I 11) 7. Megjegyzés. A bináris G 23 Golay-kód kib vítettje egy paritásbittel a kib vített G 24 Golay-kód. 5. Következmény. A bináris G 23 Golay-kódra: d min = 7 Ebb l látható, hogy a bináris G 23 Golay-kód szintén 3-hibajavító kód az 1.1. képletbe helyettesítve. 22. Tétel. A G 23 3-hibajavító bináris kód perfekt. Bizonyítás. A GF(2) test feletti (23, 2 12, 7) 2 3-hibajavító kódra a Hamming-korlát a következ : 3 ( ) n 2 12 2 23 i i=0 Az egyenl tlenség bal oldalát kiírva láthatjuk, hogy az egynl séggel teljesül, vagyis a kód eléri a Hamming-korlátot, így perfekt. ( ) ( )) 23 23 2 (1 12 + 23 + + = 2 23 2 3 33
23. Tétel. A kib vített G 24 Golay-kód egyértelm. 8. Megjegyzés. Az egyértelm ség úgy értend, hogy bármely (24, 2 12, 8) 2 paraméter bináris, lineáris kód permutáció-ekvivalens a kib vített G 24 Golay-kóddal. Bizonyítás. A fejezetben eddig leírtakat gyelembe véve már csak azt kell megmutatnunk, hogy a G 24 G generátor-mátrixában szerepl A mátrixból képzett A {0, 1} 11 11 mátrix, melyet az els sor és az els oszlop elhagyásával kapunk, permutáció erejéig egyértelm. A = 1 1 0 1 1 1 0 0 0 1 0 1 0 1 1 1 0 0 0 1 0 1 0 1 1 1 0 0 0 1 0 1 1 1 1 1 0 0 0 1 0 1 1 0 1 1 0 0 0 1 0 1 1 0 1 1 0 0 0 1 0 1 1 0 1 1 0 0 0 1 0 1 1 0 1 1 1 0 0 1 0 1 1 0 1 1 1 0 0 1 0 1 1 0 1 1 1 0 0 1 0 1 1 0 1 1 1 0 0 0 0 1 1 0 1 1 1 0 0 0 1 Az 5. állításban már láttuk, hogy d min = 8, emiatt A minden sorában legalább 6 darab 1-es áll. Ellenben 6-nál több nem lehet, mert a súlyok 4 többszörösei, így ebben az esetben 10 darab 1-nek kell állnia, és egy ilyen sort az els höz adva 4 súlyú kódszót kapnánk. A fejezet elején leírt konstrukcióban már láttuk, hogy A bármely két sorában "közös egyeseinek" száma 3, vagyis: supp(a i ) supp(a j ) = 3, azaz A sorainak mindegyike egy 11 elem halmaz 6 elem részhalmaza, és bármely kett metszete 3 elem. Ezzel beláttuk, hogy A egy 2 (11, 6, 3) blokkrendszer illeszkedési mátrixa, mely a 6.1. következmény alapján a 2 (11, 5, 2) blokkrendszer komplementere, így létezik, és permutáció erejéig egyértelm. 6.2.1. G 24 el állítása az ikozaéder adjacenciamátrixa segítségével Jelölje N {0, 1} 12 12 mátrix az ikozaéder csúcsaiból és éleib l alkotott gráf (6.1. ábra) adjacenciamátrixát, továbbá tekintsük az E {1} 12 12, illetve I 12 {0, 1} 12 12 mátrixokat. Állítsuk el a kib vített G 24 Golay-kód generátor-mátrixát ezen mátrixok segítségével. 24. Tétel. A kib vített G 24 Golay-kód G {0, 1} 12 24 generátor-mátrixa felírható a következ alakban: G = ( I 12 E N ) 34