KOODAUSTEORIA 800667S syksy 2009 Marko Rinta-aho
Sisältö 1 Perusteita 1 1.1 Johdanto.............................. 1 1.2 Kanavista............................. 2 1.3 Koodaus-dekoodausjärjestelmä.................. 4 2 Äärellisistä kunnista 7 2.1 Perustuloksia........................... 7 2.2 Kunnan F p m konstruointi..................... 10 3 Lineaariset koodit 15 3.1 Lineaarisen koodin määrittely.................. 15 3.2 Tarkistusmatriisi......................... 17 3.3 Lineaarisen koodin dekoodaus.................. 19 3.4 Hammingin koodit........................ 21 3.5 Reedin Mullerin koodit...................... 22 3.6 Uusien lineaaristen koodien muodostaminen tunnetuista... 26 4 Sykliset koodit 29 4.1 Algebrallisia apuneuvoja..................... 29 4.1.1 Jäännösluokkarengas R n................. 29 4.1.2 Minimipolynomi..................... 31 4.1.3 Ykkösen juurista..................... 32 4.2 Syklisen koodin määritelmä ja perusominaisuuksia....... 33 4.3 Generoija- ja tarkistusmatriisi.................. 35 4.4 Systemaattinen koodaus..................... 36 4.5 Syklisen koodin nollakohdat................... 38 4.6 Idempotentit........................... 39 4.7 Syklisen koodin jälkiesitys.................... 42 4.8 Mattsonin Solomonin polynomit................. 44 5 BCH-, RS- ja Goppa-koodit 47 5.1 BCH-koodien määrittely..................... 47 5.2 BCH-koodin dekoodaus...................... 50 5.3 Reedin Solomonin koodit..................... 53 5.4 Goppa-koodit........................... 55 5.5 Alternanttikoodit ja niiden Eukleideen algoritmiin perustuva dekoodaus............................. 60 5.6 Alternanttikoodin dekoodaus, kun esiintyy pyyhkyitymiä ja virheitä.............................. 67
6 Ryöppyvirheitä korjaavat koodit 71 6.1 Peruskäsitteitä.......................... 71 6.2 RS-koodeista johdetut koodit.................. 72 6.3 Tulokoodit............................. 73 6.4 Kiedotut koodit.......................... 75 7 Koodijonot hajaspektritekniikassa 78 7.1 Monen käyttäjän kanavat..................... 78 7.2 Korrelaatioista.......................... 79 7.3 Additiivinen karakteeri...................... 80 7.4 Goldin jonoista.......................... 81 8 Hadamardin matriisit ja koodit 84 8.1 Hadamardin matriisit....................... 84 8.2 Hadamardin koodit........................ 89 9 Koodirajoista 92 9.1 Peruskäsitteitä.......................... 92 9.2 Plotkin-raja............................ 93 9.3 Elias-raja............................. 94 9.4 Gilbert Varšamov-raja...................... 96
1 Perusteita Tämä luentomoniste on kirjoitettu professori (emeritus) Keijo Väänäsen koodausteorian kurssin luentomonisteen pohjalta. Kurssin aiheista löytyy kirjallisuudesta tietoa muun muassa lähteistä R. Lidl, H. Niederreiter: Finite Fields, Cambridge Univeristy Press. J. H. van Lint: Introduction to Coding Theory, Springer-Verlag, 1982. F. J. MacWilliams, N. J. A. Sloane: The Theory of Error-correcting Codes, North-Holland, 1977. S. Roman: Coding and Information Theory, Springer-Verlag, 1992. S. A. Vanstone, P. C. Oorschot: An Introduction to Error Correcting Codes with Application, Kuwer Academic Publishers, 1989. Näistä ensimmäinen käsittelee varsin kattavasti äärellisiä kuntia, muut keskittyvät koodausteoriaan. 1.1 Johdanto 1940-luvun lopulla Claude Shannon esitti tiedonsiirtojärjestelmiä käsittelevän matemaattisen teorian, informaatioteorian perusideat. Yksi tämän teorian keskeisimpiä alueita on koodausteoria. Yksinkertainen tiedonsiirtojärjestelmä koostuu kolmesta osasta: tietolähteestä, tiedonsiirtokanavasta ja tiedon vastaanottajasta. Usein käytetyt kanavat ovat esimerkiksi puhelinlinjat, ilmakehä tai avaruus radioliikenteessä, jne. Yleensä kanavat ovat alttiita häiriöille, jotka aiheuttavat virheitä lähetettyyn tietoon. Koska vastaanottaja ei voi tietää, mitä tietoa kanavaan on lähetetty, on korjaukset pystyttävä tekemään kanavasta vastaanotetun tiedon perusteella. Koodausteoria pyrkii mahdollistamaan tämän. Jo Shannon osoitti, että häiriöisessäkin kanavassa tiedonsiirto saadaan halutun luotettavaksi käyttämällä sopivaa koodausta, jonka löytäminen tosin ei ole helppoa. Kun halutaan suorittaa virheenkorjaus, on edellä mainittuun tiedonsiirtojärjestelmään lisättävä vielä kaksi osaa: kooderi ja dekooderi. Kooderi muodostaa lähetettäväksi halutusta tiedosta m (viesti tai sanoma) jonkin koodisanan c, joka lähetetään kanavaan. Dekooderin tehtävänä on arvata, mikä viesti on haluttu lähettää. Arvaus m perustuu kanavasta vastaanotettuun tietoon r. 1
Kokonaisuudessaan tiedonsiirtojärjestelmän tässä kurssissa suoritettavan matemaattisen käsittelyn kannalta olennainen kaavio on seuraava: tietolähde m kooderi tiedonsiirtokanava c r dekooderi kohina m vastaanottaja Tieto saapuu yleensä vektorina, jonka komponentit ovat äärellisen kunnan, useimmiten kunnan F 2 = {0, 1}, alkioita. Koodausteorian perusidea on se, että koodisanat ovat jollakin tavalla mitattuna kaukana toisistaan, jolloin virheellinenkin muoto voidaan tulkita oikeaksi (eli lähinnä olevaksi koodisanaksi). Viestityksen tapahtuessa bitteinä, ts. aakkoston {0, 1} alkioina, voidaan sanojen välistä etäisyyttä mitata esimerkiksi sillä, kuinka monessa kohdassa bitit eroavat toisistaan. Jotta virhe voitaisiin havaita ja mahdollisesti korjata, joudutaan käyttämään pitempiä sanoja kuin häiriöttömässä kanavassa olisi tarpeellista. Tämä on koodauksen hinta. Yksi yksinkertainen esimerkki virheenpaljastavasta koodista on pariteetintarkistuskoodi. Siinä, sen jälkeen kun viesti on käännetty bittimuotoon, kooderi lisää loppuun yhden bitin niin, että bittien summa 0 (mod 2) (esimerkiksi 10010 koodataan vektoriksi 100100). Jos kanavassa syntyy yksi virhe, se paljastuu, koska tällöin vastaanotetun sanan bittien summa 0 (mod 2). 1.2 Kanavista Matemaattisesti kanavia kuvataan todennäköisyysavaruuksien avulla. Seuraavassa tarkastellaan ainoastaan yksinkertaisinta kanavaluokkaa: diskreettejä muistittomia kanavia (DMC, discrete memoryless channel). Diskreetin kanavan syöttö koostuu jonkin aakkoston A = {a 1, a 2,..., a n } kirjaimista muodostetuista jonoista, joita kutsutaan sanoiksi. Vastaavasti tulostus koostuu jonkin aakkoston B = {b 1, b 2,..., b m } kirjaimista muodostetuista jonoista. 2
Syötettä x = x 1... x n vastaava tulostus y = y 1... y n määräytyy siirtotodennäköisyyksien P (b j a i ) perusteella, missä P (b j a i ) on todennäköisyys, että tulostus on b j, kun syöttö on a i. Muistittomassa kanavassa tulostuksen y = y 1... y n jokainen kirjain y i riippuu vain vastaavasta syöttösanan kirjaimesta x i. Lähetettäessä kanavaan sana x = x 1... x n, vastaanotettu sana on y = y 1... y n todennäköisyydellä P (y x) = P (y 1 x 1 ) P (y n x n ). Yksinkertainen esimerkki DMC:stä on binäärinen symmetrinen kanava (BSC, binary symmetric channel). Tällä kanavalla sekä syöttö- että tulostusaakkosto on {0, 1} ja siirtotodennäköisyydet ovat P (0 1) = P (1 0) = p ja P (0 0) = P (1 1) = q = 1 p. Luonnollisesti voidaan olettaa, että p < q. Yleensä p on hyvin pieni, esimerkiksi p < 10 6. Dekoodausvirheen todennäköisyys P e = P error DMC:ssä minimoidaan dekoodaamalla vastaanotettu sana y sellaiseksi koodisanaksi x, että P (y x) = max{p (y x i ) i = 1,..., k}. Tässä x 1,..., x k ovat lähetettäviä sanoja, jotka yleensä oletetaan yhtä todennäköisiksi. Esimerkiksi BSC:ssä on P (y x) = P (y 1 x 1 ) P (y n x n ) = p d H(x,y) (1 p) n d H(x,y), missä d H (x, y) määritellään seuraavasti. Määritelmä 1.2.1. Avaruuden {0, 1} n alkioiden x ja y Hamming-etäisyydeksi d H (x, y) sanotaan niiden komponenttien määrää, joissa x ja y eroavat. Huomautus 1.2.2. Pari ({0, 1} n, d H ) on metrinen avaruus; seuraavassa merkitään yleensä d = d H. Yllä olevan nojalla BSC:ssä todennäköisyys P (y x) maksimoidaan dekoodaamalla y sellaiseksi koodisanaksi x, että d(x, y) = min{d(x i, y) i = 1,..., k}. Hamming-etäisyys on siis tässä yhteydessä käyttökelpoinen. Tarkastellaan seuraavaa esimerkkiä: Huoneessa heitetään rahaa nopeudella t heittoa minuutissa. Huone on yhdistetty toiseen huoneeseen BSC:llä, jonka virhetodennäköisyys on p. Oletetaan, että kanava välittää 2t kirjainta minuutissa ja käytössä on T minuuttia, jos rahanheitto kestää T minuuttia. Kruunun tullessa lähetetään 0 ja klaavan tullessa 1. Shannonin tulosten mukaan tässäkin tilanteessa on mahdollista päästä mielivaltaisen pieneen virhetodennäköisyyteen sopivalla koodin valinnalla. 3
Virhetodennäköisyyttä voidaan pienentää esimerkiksi lähettämällä kahden heiton tulokset seuraavasti: kr, kr 0000 kl, kr 1001 kr, kl 0111 kl, kl 1110 Informaatio on siis kahdessa ensimmäisessä symbolissa, toiset kaksi varmistavat perillemenon. Dekoodaaja toimii seuraavasti. Jos saatu sanoma ei ole yksikään neljästä edellä mainituista, niin oletetaan, että neljäs symboli on oikea ja että virhe on yhdessä kolmesta ensimmäisestä symbolista. Tällöin jokainen saatu nelikkö voidaan dekoodata yksikäsitteisesti (jos viimeinen symboli on 0: 000, 111; jos taas viimeinen symboli on 1: 011, 100). Valitaan p = 0,001, jolloin q = 1 p = 0,999. Jos edellä mainitut oletukset ovat oikeita, niin tulos on oikea todennäköisyydellä q 4 + 3q 3 p 0,999. Lähetettäessä kaksi symbolia yksinään tulos on oikein todennäköisyydellä q 2 0,998. 1.3 Koodaus-dekoodausjärjestelmä Määritelmä 1.3.1. Koodausjärjestelmäksi sanotaan järjestettyä nelikköä (M, A, n, γ), missä M ja A ovat äärellisiä epätyhjiä joukkoja, n Z + ja γ on injektio M A n. Joukkoa M sanotaan viestiaakkostoksi, joukkoa A koodiaakkostoksi, joukkoa C = γ(m) koodiksi, lukua n koodin C pituudeksi ja kuvausta γ koodauskuvaukseksi. Määritelmä 1.3.2. Koodaus-dekoodausjärjestelmäksi sanotaan järjestettyä kuusikkoa (M, A, n, γ,?, δ), missä (M, A, n, γ) on koodausjärjestelmä,? on symboli, joka ei kuulu joukkoon M, ja δ on kuvaus A n M {?}, jolle δ(γ(m)) = m kaikilla m M. Kuvausta δ sanotaan dekoodauskuvaukseksi ja symbolia? virheilmoitussymboliksi. Määritelmä 1.3.3. Tiedonvälitysjärjestelmäksi sanotaan järjestettyä paria (K, D), missä K on Määritelmän 1.3.2 mukainen koodaus-dekoodausjärjestelmä ja D on diskreetti muistiton kanava, jonka syöttö- ja tulostusaakkosto on A. Jatkossa merkintä F q tarkoittaa kertalukua q olevaa äärellistä kuntaa ja oletetaan, että A = F q (usein q = 2). Joukkoa F n tarkastellaan lineaariavaruutena kunnan F suhteen. 4
Määritelmä 1.3.4. Avaruuden F n alkioiden a ja b Hamming-etäisyydeksi d H (a, b) = d(a, b) sanotaan niiden komponenttien lukumäärää, joissa a ja b eroavat toisistaan. Avaruuden F n alkion a Hamming-painoksi wt H (a) = wt(a) sanotaan vektorin a nollasta eroavien komponenttien lukumäärää. Vektorin a paino on siis wt(a) = d(a, 0). Selvästi (F n, d H ) on metrinen avaruus. Joukkoa B(a, e) = {x F n d(x, a) e} sanotaan a-keskiseksi e-säteiseksi palloksi ja joukkoa S(a, e) = {x F n d(x, a) = e} a-keskisen e-säteisen pallon pinnaksi. Joukon A alkioiden lukumäärälle käytetään merkintää A, tai joskus #A. Määritelmä 1.3.5. Koodin C minimietäisyydeksi sanotaan lukua d min C = min{d(a, b) a, b C, a b}. Koodia C sanotaan e virhettä korjaavaksi koodiksi, jos koodisanakeskiset e- säteiset pallot ovat erillisiä. Jos lisäksi nämä pallot yhdessä täyttävät koko avaruuden F n, niin koodia C sanotaan täydelliseksi e virhettä korjaava koodiksi. Koodia C F n, jolle C = K ja d min C = d, sanotaan (n, K, d)-koodiksi. Lukua R(C) = 1 n log q C sanotaan koodin C informaatiosuhteeksi. Huomautus 1.3.6. Sen, että koodi C on e virhettä korjaava, voi ilmaista myös muodossa d min C 2e + 1. Koodin C täydellisyyden ehto toisin ilmaistuna on c C B(c, e) = F n. Minimietäisyyden selville saaminen vaatii yleensä C ( C 1) 2 laskutoimitusta. Jos C = q k, niin informaatiosuhde on R(C) = k n. Määritelmä 1.3.7. Binäärisen symmetrisen kanavan kapasiteetiksi kutsutaan lukua K = 1 + p log 2 p + (1 p) log 2 (1 p), missä p on virhetodennäköisyys. Oletetaan, että 0 < R < K ja ε > 0. Tällöin pätee Shannonin lause: On mahdollista löytää koodi, jonka informaatiosuhde on R ja virhetulkinnan todennäköisyys pienempi kuin ε. Olkoon F = q. Asetetaan A q (n, d) = max{k on olemassa (n, K, d)-koodi C F n }, R q (n, d) = 1 n log q A q (n, d). 5
Koodausteoriassa keskeisiä kysymyksiä ovat muun muassa seuraavat: luvun A q (n, d) arviointi; hyvien koodien konstruointi, siis sellaisten (n, K, d)- koodien, joille K A q (n, d); nopeiden ja halpojen koodaus- ja dekoodausalgoritmien löytäminen. Määritelmä 1.3.8. Dekoodausfunktiota δ sanotaan e virhettä korjaavaksi, jos δ(r) = m aina, kun d(γ(m), r) e. Jos C on e virhettä korjaava koodi ja δ on funktio, joka dekoodaa lähimmäksi koodisanaksi, niin myös δ on e virhettä korjaava. Tällaisen funktion δ löytäminen on kuitenkin yleensä sekä matemaattisesti että teknisesti hankalaa. Tehokkaan koodaus-dekoodausjärjestelmän löytämiseksi annetaan tarkasteltaville joukoille ja funktioille sopivia algebrallisia ominaisuuksia. Tällaisten käsittelyjen mahdollistamiseksi tarkastellaan seuraavassa äärellisten kuntien ominaisuuksia. 6
2 Äärellisistä kunnista Kommutatiiviseksi ykköselliseksi renkaaksi kutsutaan epätyhjää joukkoa R varustettuna laskutoimituksilla + (yhteenlasku) ja (kertolasku), jotka toteuttavat jokaisella a, b, c R ehdot 1. assosiatiivisuus ja kommutatiivisuus: a + (b + c) = (a + b) + c, a + b = b + a, a(bc) = (ab)c, ab = ba; 2. distributiivisuus: a(b + c) = ab + ac; 3. on olemassa sellainen 0 R (nolla-alkio), että a + 0 = a kaikilla a R; 4. jokaista a R kohti on olemassa sellainen b R (vasta-alkio), että a+b = 0; 5. on olemassa sellainen 1 R, 1 0 (ykkösalkio), että a 1 = a kaikilla a R \ {0}. Jatkossa renkaalla tarkoitetaan kommutatiivista ykkösellistä rengasta. Rengasta sanotaan kunnaksi, jos edelläolevien ehtojen lisäksi 6. jokaista a R \ {0} kohti on olemassa sellainen b R (käänteisalkio), että ab = 1. Alkion a vasta-alkiota merkitään a ja käänteisalkiota a 1. 2.1 Perustuloksia Olkoon m Z +. Kokonaislukujen a ja b sanotaan olevan kongruentteja modulo m, jos m (a b). Tätä merkitään a b (mod m). Kongruenssi modulo m on ekvivalenssirelaatio ja se jakaa joukon Z alkiot ekvivalenssiluokkiin. Nämä ovat jäännösluokkia modulo m ja alkion a määräämä jäännösluokka a koostuu luvuista x, joille x a (mod m). Siis a = {a + nm n Z}. Näitä jäännösluokkia on m kappaletta, esimerkiksi 0, 1,..., m 1, ja niiden muodostamalle joukolle käytetään merkintää Z m. Kun määritellään joukon Z m yhteen- ja kertolasku asettamalla a + b = a + b ja a b = ab, joukosta Z m saadaan rengas. 7
Lause 2.1.1. Rengas Z m on kunta, jos ja vain jos m on alkuluku. Todistus. Jos m on yhdistetty luku, niin m = kl joillakin 1 < k, l < m. Tällöin k, l 0, mutta k l = m = 0. Jos esimerkiksi l 1 olisi olemassa, niin k = k 1 = k(l l 1 ) = (k l)l 1 = 0 l 1 = 0, mikä on ristiriita. Siten alkiolla l ei ole käänteisalkiota eikä Z m ole kunta. Olkoon sitten m = p alkuluku ja olkoon a 0. Tällöin syt(a, p) = 1 ja Eukleideen algoritmin mukaan on olemassa sellaiset x, y Z, että ax+py = 1 renkaassa Z. Täten renkaassa Z m saadaan yhtäsuuruus a x + p y = 1. Tässä p y = 0, joten a x = 1 eli x = a 1. Näin ollen Z p on kunta. Esimerkiksi kunnille Z 2 ja Z 5 saadaan seuraavat laskutaulut: Z 2 : Z 5 : + 0 1 0 0 1 1 1 0 + 0 1 2 3 4 0 0 1 2 3 4 1 1 2 3 4 0 2 2 3 4 0 1 3 3 4 0 1 2 4 4 0 1 2 3 0 1 0 0 0 1 0 1 0 1 2 3 4 0 0 0 0 0 0 1 0 1 2 3 4 2 0 2 4 1 3 3 0 3 1 4 2 4 0 4 3 2 1 Kunnassa Z p, p alkuluku, pätee a } + {{ + a } = p a = 0 kaikilla a Z p. p kpl Määritelmä 2.1.2. Kunnan F karakteristikaksi n sanotaan pienintä sellaista positiivista kokonaislukua (jos on olemassa), että na := a } + {{ + a } = 0 kaikilla a F. n kpl Jos tällaista lukua n ei ole olemassa, sanotaan, että kunnan F karakteristika on 0. Lause 2.1.3. Kunnan karakteristika on aina alkuluku tai 0. 8
Todistus. Riittää tarkastella määritelmän ehtoa, kun a = 1. Oletetaan, että karakteristika on n 0 ja että n1 = 0. Jos n olisi yhdistetty luku, niin n = kl joillakin k, l {2, 3,..., n 1}. Tällöin 0 = n1 = (kl)1 = (k1)(l1). Koska kunta on kokonaisalue, niin k1 = 0 tai l1 = 0. Tämä on ristiriidassa karakteristikan määritelmän kanssa, joten n on alkuluku. Lause 2.1.4. Jos kunnan F karakteristika on 0, niin sen suppein alikunta on Q (isomorfinen kunnan Q kanssa). Jos taas kunnan F karakteristika on alkuluku p, niin sen suppein alikunta on Z p (isomorfinen kunnan Z p kanssa). Todistus. Harjoitustehtävä 6. Kun otetaan huomioon, että kuntaa voidaan tarkastella vektoriavaruutena suppeimman alikuntansa suhteen, saadaan helposti seuraava tulos. Lause 2.1.5. Äärellisen kunnan F kertaluku F (eli kunnan F alkioiden lukumäärä) on muotoa p m, missä m Z + ja p on kunnan F karakteristika. Todistus. Koska F on äärellinen, niin sen karakteristika on jokin alkuluku p (Lause 2.1.3) ja sen suppein alikunta voidaan samaistaa kunnan Z p kanssa (Lause 2.1.4). Kun F ajatellaan vektoriavaruudeksi kunnan Z p suhteen, on sen dimensio välttämättä äärellinen. Olkoon dim F = m ja {α 1,..., α m } F avaruuden F kanta. Tällöin kunnan F jokaisella alkiolla on yksikäsitteinen esitys kantavektoreiden lineaariyhdisteenä eli F = {a 1 α 1 + + a m α m a i Z p }. Siten F = p m, koska tässä jokainen kerroin a i voidaan valita p eri tavalla Seurauksessa 2.2.15 todetaan, että mielivaltaista alkuluvun potenssia p m vastaa kunta, jonka kertaluku on p m. Voidaan osoittaa, että kaikki samaa kertalukua olevat äärelliset kunnat ovat isomorfisia. Isomorfiaa vaille yksikäsitteiselle kertalukua p m olevalle kunnalle käytetään yleensä merkintää F p m tai GF(p m ) (Galois field, Évariste Galois, 1811 32). Esimerkiksi Z p ja F p voidaan samaistaa. Seuraavassa jätetään yleensä viivat pois ja merkitään Z p = {0, 1,..., p 1}. 9
2.2 Kunnan F p m konstruointi Polynomirenkaalle kunnan F suhteen käytetään seuraavassa merkintää F[x]. Astetta m olevaa polynomia sanotaan jaottomaksi, jos se ei ole jaollinen millään sellaisella renkaan F[x] polynomilla, jonka aste on positiivinen ja pienempi kuin m. Tämä on yhtäpitävää sen kanssa, että polynomilla ei ole olemassa tekijöihinjakoa fg, missä deg f, deg g 1. Olkoon g F[x] astetta m 1 oleva polynomi. Jos p, q F[x], niin merkitään p q (mod g) jos ja vain jos g (p q). Tämä kongruenssi on ekvivalenssirelaatio ja jakaa joukon F[x] alkiot ekvivalenssiluokkiin, jotka ovat jäännösluokkia modulo g. Jos f F[x] on mielivaltainen, niin jakoyhtälön mukaan f(x) = s(x)g(x) + r(x), missä deg r < m. Tässä, kuten jatkossakin, nollapolynomin asteeksi sovitaan deg 0 =, jolloin edellä voi olla r(x) = 0. Näin ollen f r (mod g), joten kustakin jäännösluokasta löytyy edustaja, jonka aste on < m, esimerkiksi edellä f {r + pg p F[x]} =: r (= f). Toisaalta, jos r 1 ja r 2 ovat kaksi eri polynomia ja deg r i < m, niin r 1 r 2, sillä g (r 1 r 2 ). Jäännösluokkien modulo g joukko F[x]/ g(x) on siis { r m 1 r(x) = i=0 } a i x i, a i F. Kun määritellään yhteen- ja kertolasku asettamalla r 1 + r 2 = r 1 + r 2 ja r 1 r 2 = r 1 r 2, niin F[x]/ g(x) tulee renkaaksi, jonka nolla- ja ykkösalkio ovat 0 ja 1. Lause 2.2.1. Olkoon p alkuluku ja g Z p [x] astetta m 1 oleva polynomi. Tällöin jäännösluokkarengas Z p [x]/ g(x) on kunta jos ja vain jos g on jaoton. Kyseisessä kunnassa on p m alkiota. Todistus. Harjoitustehtävä 7. Jos merkitään α = x, niin yllä olevan mukaan F p m = { m 1 i=0 } a i α i ai Z p, g(α) = 0, missä g on astetta m 1 oleva renkaan Z p [x] jaoton polynomi. Kunnan F p m konstruoiminen on siis mahdollista heti, kun löytyy sopiva jaoton polynomi. Jaottomuustarkastelussa lineaarinen tekijä löytyy seuraavan lauseen avulla. 10
Lause 2.2.2. Olkoon F kunta. Jos f(x) F[x] ja a F, niin (x a) f(x) jos ja vain jos f(a) = 0. Todistus. Jakoyhtälön mukaan f(x) = h(x)(x a) + r, missä r F on vakiopolynomi. Toisaalta (x a) f(x), jos ja vain jos r = 0, ja toisaalta r = f(a). Väite seuraa tästä. Seuraus 2.2.3. Olkoon F kunta ja f F[x]. Jos deg f {2, 3}, niin f on jaoton, jos ja vain jos sillä ei ole nollakohtia kunnassa F. Esimerkki 2.2.4. Konstruoidaan kunta F 16 = F 2 4 käyttämällä polynomia g(x) = x 4 + x + 1 Z 2 [x]. Koska g(0) = g(1) = 1 0, niin polynomilla g ei ole lineaarisia tekijöitä. Mahdolliset toisen asteen tekijät saadaan yhtälöstä x 4 + x + 1 = (x 2 + ax + b)(x 2 + cx + d). Ratkaisemalla kertoimet a, b, c ja d saadaan ristiriita. Siten g on jaoton renkaassa Z 2 [x] ja { 3 } F 16 = a i α i ai Z 2, α 4 + α + 1 = 0, ts. α 4 = 1 + α. i=0 Merkitään jälleen alkiota a 0 + a 1 α + a 2 α 2 + a 3 α 3 jonona a 0 a 1 a 2 a 3. Tällöin saadaan seuraavat potenssit: 1 = 1000 α = 0100 α 2 = 0010 α 3 = 0001 α 4 = 1100 α 5 = 0110 α 6 = 0011 α 7 = 1101 α 8 = 1010 α 9 = 0101 α 10 = 1110 α 11 = 0111 α 12 = 1111 α 13 = 1011 α 14 = 1001 (Seuraavana saataisiin α 15 = 1000 = 1.) Esimerkki 2.2.5. Kunta F 32 saadaan konstruoitua vastaavasti esimerkiksi polynomin x 5 + x 2 + 1 F 2 [x] avulla. (Totea, että tämä todella on jaoton!) Jos α on tämän polynomin nollakohta eli α 5 + α 2 + 1 = 0, niin alkion α potenssit ovat: α = 01000 α 2 = 00100 α 3 = 00010 α 4 = 00001 α 5 = 10100 α 6 = 01010 α 7 = 00101 α 8 = 10110 α 9 = 01011 α 10 = 10001 α 11 = 11100 α 12 = 01110 α 13 = 00111 α 14 = 10111 α 15 = 11111 α 16 = 11011 α 17 = 11001 α 18 = 11000 α 19 = 01100 α 20 = 00110 α 21 = 00011 α 22 = 10101 α 23 = 11110 α 24 = 01111 α 25 = 10011 α 26 = 11101 α 27 = 11010 α 28 = 01101 α 29 = 10010 α 30 = 01001 11
Edellä olevissa esimerkeissä F := F\{0} on kertolaskun suhteen syklinen ryhmä. Tämä ominaisuus pätee yleisesti äärellisissä kunnissa, kuten pian osoitetaan. Määritelmä 2.2.6. Kunnan F alkion a F (multiplikatiiviseksi) kertaluvuksi sanotaan pienintä sellaista k Z +, että a k = 1. Tätä merkitään k = ord a tai k = a. Määritelmä 2.2.7. Kunnan F q alkiota γ 0 sanotaan primitiiviseksi eli kunnan F q primitiivialkioksi, jos ord γ = q 1, ts. jos F q = γ = {γ k 0 k < q 1}. Astetta m olevaa polynomirenkaan F q [x] polynomia sanotaan primitiiviseksi, jos sillä on nollakohta, joka on kunnan F q m primitiivialkio. Lause 2.2.8. Äärellisen kunnan nollasta eroavien alkioiden muodostama ryhmä on syklinen eli jokaisessa äärellisessä kunnassa on primitiivialkio. Jos γ on kunnan F q yksi primitiivialkio, niin kunnan F q primitiivialkiot ovat täsmälleen alkiot γ j, missä syt(j, q 1) = 1. Todistus. Joukko Fq on ryhmä kertolaskun suhteen. Olkoon α Fq annettu ja olkoon r = ord α. Koska ryhmässä Fq on q 1 alkiota, niin potensseilla α i, i = 0, 1, 2,..., q 1 on korkeintaan q 1 eri arvoa. Siten r q 1. Valitaan nyt α Fq niin, että sen kertaluku r on mahdollisimman suuri. Osoitetaan, että ryhmän Fq jokaisen alkion kertaluku on luvun r tekijä. Olkoon β Fq ja l = ord β. Olkoon π alkuluku, jolle π l, l = π b l ja π l. Olkoon edelleen r = π a r ja π r. Tällöin ord α πa = r ja ord β l = π b. Harjoitustehtävän 13b mukaan ord α πa β l = π b r, joten alkion α valinnasta johtuen b a. Täten l r, ja jokainen β Fq toteuttaa yhtälön x r 1 = 0. Polynomilla x r 1 on siten vähintään q 1 nollakohtaa, eli r q 1. Siis r = q 1, ja yllä valittu α generoi ryhmän Fq, joka on syklinen. Jälkimmäinen väite seuraa yleisistä syklisten ryhmien ominaisuuksista ja se jätetään harjoitustehtäväksi. Seuraus 2.2.9. Kunnan F q jokainen alkio toteuttaa yhtälön x q x = 0 ja x q x = β Fq(x β). Lause 2.2.10. Jos kunnan F karakteristika on p, niin siellä pätee yhtälö (x + y) p = x p + y p. 12
Todistus. Binomikaavan nojalla (x + y) p = p ( ) p 1 p ( ) p x i y p i = x p + y p + x i y p i. i i i=0 Koska p ( p i) kaikilla i = 1,..., p 1, niin ( ) p x i y p i = pa = 0 jollakin a F. i Tämä todistaa väitteen. Seuraus 2.2.11. Jos l Z + ja β i F q, missä q = p m, niin i=1 ( k ) p l β i = i=1 k i=1 β pl i. Jos edelleen f F q [x], niin (f(x)) ql = f(x ql ). Todistus. Väitteet seuraavat Lauseesta 2.2.10 induktiolla ja huomaamalla, että Seurauksen 2.2.9 mukaan jokainen a F q toteuttaa ehdon a q = a. Seuraus 2.2.12. Kuvaus σ : F p m F p m, σ(x) = x p on bijektiivinen (kunta)homomorfismi, kunnan F p m ns. Frobenius-automorfismi. Todistus. Lauseet 2.2.10 ja 2.2.8. Lause 2.2.13. Polynomi x pm x Z p [x] on renkaan Z p [x] niiden jaottomien ykköspolynomien (korkeimman potenssin kerroin 1) tulo, joiden asteet ovat luvun m tekijöitä. Todistus. Todistetaan väite kolmessa osassa. Osoitetaan ensin, että jokainen väitetynlainen ykköspolynomi jakaa polynomin x pm x, sitten että polynomin x pm x jokaisen jaottoman tekijän aste jakaa luvun m ja lopuksi, että polynomin x pm x tekijät ovat yksinkertaiset. Olkoon siis ensin r(x) Z p [x] jaoton ykköspolynomi, deg r = d ja d m. Tapaus r(x) = x on selvä, joten oletetaan, että r(x) x. Tarkastellaan kuntaa F p d = Z p [x]/ r(x). Polynomin r(x) nollakohdalle α pätee α pd 1 1 = 0. Lisäksi r on jaoton, joten r(x) (x pd 1 1). Koska d m, niin (p d 1) (p m 1). Edelleen (x pd 1 1) (x pm 1 1) ja r(x) (x pm 1 1). Olkoon sitten r jaoton astetta d oleva ykköspolynomi ja r(x) (x pm x). Osoitetaan, että d m. Tapaus r(x) = x on selvä, joten oletetaan, että 13
r(x) x. Tällöin r(x) (x pm 1 1). Olkoon F = Z p [x]/ r(x), jolloin kunnan F kertaluku on p d. Jos α on polynomin r nollakohta ja β kunnan F primitiivialkio, niin on olemassa sellaiset kunnan Z p alkiot a 0, a 1,..., a d 1, että β = a 0 + a 1 α + + a d 1 α d 1. Koska r(α) = 0, niin α pm = α ja Seurauksen 2.2.11 nojalla myös β pm = β. Täten β pm 1 = 1 ja, koska ord β = p d 1, niin (p d 1) (p m 1). Harjoitustehtävän 28 nojalla d m. Enää on osoitettavana, että polynomin x pm x tekijät ovat yksinkertaiset. Jos f(x) = x pm x, niin f (x) = 1. Siten syt(f, f ) = 1 eikä polynomilla f ole useammankertaisia tekijöitä. Lause 2.2.14. Jokaista alkulukua p ja positiivista kokonaislukua m kohti renkaassa Z p [x] on jaoton ykköspolynomi, jonka aste on m. Todistus. Olkoon I p (m) renkaan Z p [x] jaottomien astetta m olevien ykköspolynomien lukumäärä. Lauseen 2.2.13 mukaan p m = d m di p(d), joten Näin ollen I p (m) 1. mi p (m) = p m di p (d) p m d m d m d<m d<m m 1 p m p i = p m pm 1 p 1 > 0. i=0 Seuraus 2.2.15. On olemassa kunta F p m. p d 14
3 Lineaariset koodit 3.1 Lineaarisen koodin määrittely Olkoon F äärellinen kunta. Joukko F n on vektoriavaruus kunnan F suhteen, jonka kannaksi voidaan valita esimerkiksi vektorit E 1 = 10... 0, E 2 = 010... 0,..., E n = 0... 01. Lineaarialgebrasta tiedetään, että epätyhjä joukko U F n on avaruuden F n aliavaruus, jos x + y U kaikilla x, y U ja ax U kaikilla a F ja x U. Jos F = F p, erityisesti F 2, riittää todeta vain ensimmäinen ehto, sillä toinen on selvä. Määritelmä 3.1.1. Koodausjärjestelmää (M, F, n, γ) sanotaan lineaariseksi, jos M on vektoriavaruus F k (luonnollisesti k n) ja γ on injektiivinen lineaarinen kuvaus M F n. Tällöin C = γ(m) on selvästi avaruuden F n k-ulotteinen aliavaruus, joten on luonnollista asettaa seuraava määritelmä. Määritelmä 3.1.2. Lineaariseksi koodiksi kutsutaan avaruuden F n aliavaruutta. Aliavaruuden ollessa k-ulotteinen ja koodin minimietäisyyden ollessa d koodia kutsutaan [n, k, d]-koodiksi tai lyhyemmin [n, k]-koodiksi. Lineaarista koodia sanotaan myös ryhmäkoodiksi, koska (C, +) on ryhmä. Jos C on [n, k]-koodi ja {g 1,..., g k } sen kanta, niin koodin C sanat ovat muotoa a 1 g 1 + a 2 g 2 + + a k g k = (a 1... a k )G, missä g 1 g 2 G =. g k Koodauskuvaus γ voidaan siis valita niin, että viestivektori m F k kerrotaan matriisilla G, eli valitaan γ(m) = mg. Tällöin k n C = {c c = mg, m F k }. Määritelmä 3.1.3. Edellä mainittua koodin kantavektoreista muodostettua k n-matriisia G sanotaan [n, k]-koodin C generoijamatriisiksi.. 15
Huomautus 3.1.4. Koska kanta ei ole yksikäsitteinen, ei myöskään G ole sitä. Sen sijaan aina rank G = k. Esimerkki 3.1.5. Seuraavassa on esimerkkejä lineaarisista koodeista kunnan F 2 suhteen annettuna generoijamatriisin avulla. [ ] 0 1 1 C 1 : G 1 = [3, 2]-koodi 1 0 1 [ ] 0 1 1 0 1 C 2 : G 2 = [5, 2]-koodi 1 0 1 1 0 1 1 1 1 1 1 1 C 3 : G 3 = 1 0 0 0 1 0 1 1 1 0 0 0 1 0 [7, 4]-koodi 0 1 1 0 0 0 1 Toistokoodi on [n, 1]-koodi, jolle G = [ 1 1... 1 ]. Valitsemalla matriisiksi G muotoa [ I k P ] oleva matriisi, missä I k on k- rivinen yksikkömatriisi ja P on k (n k)-matriisi, saadaan koodisana c = mg muotoon, jossa k ensimmäistä komponenttia muodostavat viestisanan m ja muut n k komponenttia ovat tarkistussymboleja: }..........{{...........}. }.....{{.....}. k informaatio n k tarkistus Tätä muotoa olevaa koodausta sanotaan systemaattiseksi koodaukseksi. Systemaattisesta koodauksesta puhutaan myös silloin, kun viestivektori on luettavista suoraan koodisanasta, mutta ei välttämättä sen alusta. Jos koodi C 1 saadaan koodista C permutoimalla koodin C koodisanojen komponentteja, niin koodeja C 1 ja C sanotaan ekvivalenteiksi, merkitään C 1 C. Lisäksi lineaarialgebrasta tiedetään, että elementaariset vaakarivimuunnokset eivät muuta matriisin vaakarivien virittämää aliavaruutta. Näin ollen jokaista koodia vastaa sellainen ekvivalenttinen koodi, jossa koodaus on systemaattista. Yksi lineaaristen koodien merkittävä etu on se, että minimietäisyyden laskemiseen tarvitaan vain C 1 etäisyyden laskemista. Lause 3.1.6. Jos C on lineaarinen koodi, niin d min C = min{wt(x) x C, x 0}. Todistus. {x y x, y C, x y} = C \ {0}. 16
3.2 Tarkistusmatriisi Määritelmä 3.2.1. Lineaarisen [n, k]-koodin C tarkistusmatriisiksi kutsutaan (n k) n-matriisia H, jolle C = {x F n xh T = 0}. Huomautus 3.2.2. Tarkistusmatriisi on olemassa: Olkoon C [n, k]-koodi kunnan F suhteen ja olkoot koodin kantavektorit g 1,..., g k. Tällöin matriisin H jokaisen vaakarivin y tulee toteuttaa ehto g i y T = 0 kaikilla i = 1,..., k eli Gy T = 0 T. Kyseessä on lineaarinen homogeeninen yhtälöryhmä, jonka kerroinmatriisin G aste on k. Tunnetusti (LA I) tämän yhtälöryhmän ratkaisuvektorit muodostavat (pysty)vektoriavaruuden F (n) aliavaruuden, jonka dimensio on n rank G = n k. Olkoon H matriisi, jonka vaakariveinä ovat tämän aliavaruuden kantavektorit vaakavektoreina. Tällöin g i H T = 0 kaikilla i = 1,..., k eli xh T = 0 kaikilla x C, ja C {x F n xh T = 0}. Erityisesti rank H = n k. Toisaalta, jos xh T = 0, niin Hx T = 0 T. Ratkaisut x T muodostavat vektoriavaruuden, jonka dimensio on n rank H = n (n k) = k. Matriisin G lineaarisesti vapaita vaakarivejä vastaavat pystyvektorit muodostavat tämän avaruuden kannan, joten x C. Siten H on koodin C tarkistusmatriisi. Tarkistusmatriisi ei ole yksikäsitteinen. Yllä olevan nojalla jokainen matriisi H, jolle rank H = n k ja GH T = 0, kelpaa tarkistusmatriisiksi. Lause 3.2.3. Olkoon C [n, k]-koodi ja olkoon sen generoijamatriisi systemaattisessa muodossa G = [ I k P ]. Silloin matriisi H = [ P T I n k ] on koodin C tarkistusmatriisi. Todistus. Annetun matriisin H aste on n k ja GH T = [ I k P ] [ ] P = P + P = 0. I n k Huomautuksen 3.2.2 mukaan H on koodin C tarkistusmatriisi. Huomautus 3.2.4. Lauseesta 3.2.3 seuraa, että rank H = n k. Edelleen Lauseesta 3.2.3 seuraa, että jos H = [ ] A I n k on koodin C tarkistusmatriisi, niin G = [ I k A T] on koodin C yksi generoijamatriisi, vieläpä systemaattisessa muodossa. Edelleen binääritapauksessa P T = P T. 17
Avaruuden F n sisätulo määritellään kuten euklidinen sisätulo: Jos a = a 1 a 2... a n F n ja b = b 1 b 2... b n F n, niin a b = a 1 b 1 + a 2 b 2 + + a n b n. Määritelmä 3.2.5. [n, k]-koodin C duaalikoodiksi C sanotaan koodia C = {y F n x y = 0 kaikilla x C}. Lause 3.2.6. [n, k]-koodin C duaalikoodi C on [n, n k]-koodi. Todistus. Jos y 1, y 2 C ja λ 1, λ 2 F, niin kaikilla x C pätee (λ 1 y 1 + λ 2 y 2 ) x = λ 1 y 1 x + λ 2 y 2 x = 0. Tästä johtuen C on avaruuden F n aliavaruus ja siis lineaarinen koodi. Olkoon G koodin C generoijamatriisi. Silloin y C, jos ja vain jos Gy T = 0. Tämän homogeenisen yhtälöryhmän kerroinmatriisin G aste on k, joten ratkaisuavaruuden C dimensio on n k ja C on [n, n k]-koodi. Lause 3.2.7. Koodin C tarkistusmatriisi on duaalikoodin C generoijamatriisi ja päinvastoin. Seuraava tarkistusmatriisia koskeva tulos osoittautuu hyödylliseksi. Lause 3.2.8. Jos C on [n, k]-koodi ja H sen tarkistusmatriisi, niin d min C = d täsmälleen silloin, kun jokainen matriisin H (d 1):n sarakkeen joukko on lineaarisesti vapaa ja löytyy sellainen matriisin H d:n sarakkeen joukko, joka on lineaarisesti sidottu. Todistus. Olkoon c = (c 1,..., c n ) C koodisana, jonka paino on e. Olkoot sanan c nollasta eroavat koordinaatit c i1,..., c ie ja olkoot h 1,..., h n matriisin H sarakkeet. Tällöin h T 1 ch T = 0 c. h T n = c i1 h T i 1 + + c ie h T i e = 0 matriisin H e saraketta h i1,..., h ie ovat lineaarisesti sidottuja. Nyt d min C d, jos ja vain jos koodissa C ei ole nollasta eroavaa sanaa, jonka paino olisi korkeintaan d 1. Ekvivalenssien (1) nojalla tämä on yhtäpitävää sen kanssa, että matriisin H mitkä tahansa d 1 saraketta ovat lineaarisesti vapaita. Lisäksi d min C d, jos ja vain jos koodissa C on nollasta eroava sana, jonka paino on korkeintaan d. Ekvivalenssien (1) nojalla tämä on yhtäpitävää sen kanssa, että matriisissa H on d:n lineaarisesti sidotun sarakkeen joukko. Väite seuraa näistä kahdesta tuloksesta. 18 (1)
Tästä saadaan välittömästi seuraava yläraja lineaarisen koodin minimietäisyydelle. Seuraus 3.2.9. Lineaarisen [n, k]-koodin minimietäisyys on korkeintaan n k + 1. Todistus. Tarkistusmatriisissa on n k riviä, joten Lauseen 3.2.8 mukaan d 1 n k eli d n k + 1. Määritelmä 3.2.10. Lineaarista [n, k]-koodia, jonka minimietäisyys on n k + 1, sanotaan maksimietäisyyskoodiksi eli MDS-koodiksi. 3.3 Lineaarisen koodin dekoodaus Oletetaan, että lähetettäessä kanavaan sana c saadaan sana r = c + e, missä e on häiriön aiheuttama virhe. Dekoodaaja ei tunne vektoria c eikä vektoria e. Näiden löytämiseksi käytetään syndromia. Määritelmä 3.3.1. Vektorin x F n syndromiksi sanotaan vektoria s(x) = xh T. Määritelmästä seuraa, että s(x) = 0 täsmälleen silloin, kun x C. Koska C on ryhmä yhteenlaskun suhteen, voidaan muodostaa sivuluokat x + C = {x + c c C}. Osoitetaan, että syndromin arvo liittyy juuri sivuluokkiin. Lause 3.3.2. Vektorit x ja y ovat samassa koodin C sivuluokassa täsmälleen silloin, kun niillä on sama syndromi. Todistus. Vektorit x ja y ovat samassa sivuluokassa jos ja vain jos x = y + c jollakin c C eli x y = c C. Tämä on yhtäpitävää sen kanssa, että (x y)h T = 0 eli xh T = yh T. Esimerkki 3.3.3. Olkoon C kunnan F 2 suhteen oleva koodi, jonka generoijamatriisi ja tarkistusmatriisi ovat 1 0 0 0 1 1 0 1 1 1 0 0 G = 0 1 0 1 0 1 ja H = 1 0 1 0 1 0 0 0 1 1 1 0 1 1 0 0 0 1 Koodin C sanat ovat tällöin c 1 = 000000 c 2 = 100011 c 3 = 010101 c 4 = 001110 c 5 = 110110 c 6 = 101101 c 7 = 011011 c 8 = 111000 Binäärisille koodeille pätee 19
Lause 3.3.4. Binäärisen koodin tapauksessa, jos virhevektorissa e on ykkönen kohdissa i 1,..., i w, niin vektorin r = c + e syndromi on matriisin H sarakkeiden i 1,..., i w summa transponoituna. Jos s(r) = s, niin virhevektori e voi olla mikä tahansa sana, jonka syndromi on s, ts. mikä tahansa sivuluokan r + C alkio. Todennäköisimmät ehdokkaat ovat ne, joiden painot ovat pienimmät. Valitaan jokaisesta sivuluokasta tällainen alkio ja sanotaan sitä kyseisen sivuluokan johtajaksi. Tarkastellaan seuraavaa standardikaaviota, jonka 1. ensimmäiselle riville tulee koodisanat vektorista 0 (sivuluokan C johtajasta) alkaen: 0, c 2,..., c q k; 2. ensimmäiseen sarakkeeseen tulee sivuluokkien johtajat 0, e 2,..., e q n k; 3. rivin i ja sarakkeen j risteykseen tulee alkio e i + c j. Dekoodaaja δ käyttää taulukkoa seuraavasti: saatu sana r muutetaan sen yläpuolella olevaksi koodisanaksi c, jolloin wt(r c ) on pienin mahdollinen eli r c on todennäköisin virhe. Esimerkki 3.3.5. Olkoon C [4, 2]-koodi kunnan F 3 = {0, 1, 2} suhteen ja olkoon sen generoijamatriisi [ ] 1 0 1 1 G =. 0 1 1 2 Tarkistusmatriisiksi tulee H = [ ] 2 2 1 0. 2 1 0 1 Lauseen 3.2.8 avulla nähdään, että koodin C minimietäisyys on 3. Koodille C saadaan seuraava standardikaavio: c 1 c 2 c 3 c 4 c 5 c 6 c 7 c 8 e 9 e 1 0000 1011 2022 0112 0221 1120 2210 1202 2101 e 2 1000 2011 0022 1112 1221 2120 0210 2202 0101 e 3 2000 0011 1022 2112 2221 0120 1210 0202 1101 e 4 0100 1111 2122 0212 0021 1220 2010 1002 2201 e 5 0200 1211 2222 0012 0121 1020 2110 1102 2001 e 6 0010 1021 2002 0122 0201 1100 2220 1212 2111 e 7 0020 1001 2012 0102 0211 1110 2200 1222 2121 e 8 0001 1012 2020 0110 0222 1121 2211 1200 2102 e 9 0002 1010 2021 0111 0220 1122 2212 1201 2100 20
Yllä oleva täydellinen kaavio vaatii yleensä liikaa tilaa. Koska jokaisella rivillä on sama syndromi, riittää tallentaa sivuluokkien johtajat ja niiden syndromit. Näin saadun syndromiluettelon avulla voidaan toimia seuraavasti: Jos saadaan sana r, niin 1. lasketaan syndromi rh T ; 2. etsitään syndromiluettelon avulla vastaava sivuluokan johtaja e i ; 3. lasketaan r e i = c. Esimerkki 3.3.6. Esimerkin 3.3.5 koodille saadaan seuraava syndromiluettelo: e 1 : s(0000) = 00 e 4 : s(0100) = 21 e 7 : s(0020) = 20 e 2 : s(1000) = 22 e 5 : s(0200) = 12 e 8 : s(0001) = 01 e 3 : s(2000) = 11 e 6 : s(0010) = 10 e 9 : s(0002) = 02 3.4 Hammingin koodit Hammingin koodit keksi Richard W. Hamming 1940-luvun lopulla. Ne ovat täydellisiä yhden virheen korjaavia koodeja. Olkoon H binäärisen lineaarisen koodin tarkistusmatriisi. Jos c on lähetetty ja r = c + e saatu sana, niin Lauseen 3.3.4 mukaan s(r) = eh T on matriisin H niiden sarakkeiden summan transpoosi, joita vastaavissa kohdissa on syntynyt virhe. Sen vuoksi matriisissa H mahdollisesti olevaa saraketta 0 T vastaavassa kohdassa oleva virhe ei vaikuta syndromiin ja jää näin havaitsematta. Jos taas matriisissa H on kaksi samanlaista saraketta, niin näitä vastaavissa kohdissa syntynyt virhepari ei vaikuta syndromiin ja jää sekin havaitsematta. Jos toisaalta matriisin H kaikki sarakkeet ovat nollasta eroavia ja erisuuria sekä wt(e) = 1, missä 1 on kooordinaatissa i, niin eh T on matriisin H sarake i transponoituna. Täten yhden bitin virhe voidaan paikallistaa ja korjata. Lause 3.4.1. Lineaarinen binäärinen koodi on (vähintään) yhden virheen korjaava, jos ja vain jos sen tarkistusmatriisin sarakkeet ovat nollasta eroavia ja erisuuria. Jos H on r-rivinen eli n k = r, niin selvästi matriisissa H voi olla enintään 2 r 1 nollasta eroavaa erisuurta saraketta. 21
Määritelmä 3.4.2. Binääristä lineaarista koodia, jonka tarkistusmatriisin H sarakkeet ovat lukujen 1, 2, 3,..., 2 r 1 binääriesitykset, sanotaan (binääriseksi) Hammingin [2 r 1, 2 r r 1]-koodiksi. Edellä todettiin, että Hammingin koodin minimietäisyys on vähintään 3 eli että koodisanakeskiset 1-säteiset pallot ovat erilliset. Osoitetaan lisäksi, että nämä pallot B(c, 1) täyttävät koko avaruuden F n ja koodi on siis täydellinen. Lause 3.4.3. Binäärinen Hammingin koodi on täydellinen. Todistus. Edellisen mukaan koodisanakeskiset 1-säteiset pallot ovat erilliset. Kussakin tällaisessa pallossa on n+1 = (2 r 1)+1 = 2 r alkiota. Koodisanoja on 2 k = 2 n r = 2 2r 1 r kappaletta. Yhteensä palloissa on siis 2 r 2 2r 1 r = 2 2r 1 = 2 n = F n 2 alkiota. Huomautus 3.4.4. Koska Hammingin koodi on täydellinen, se dekoodaa väärin kaikki vähintään 2-painoisesti virheelliset sanat. Hammingin koodi voidaan määritellä myös silloin, kun q 2. Kunnassa F q valitaan Hammingin koodin tarkistusmatriisi H niin, että sen sarakkeina ovat kaikki avaruuden F r q pareittain lineaarisesti vapaat vektorit transponoituina. Näiden lukumäärä on q r 1 q 1. Näin saadaan yhden virheen korjaava Hammingin [ qr 1 q 1, qr 1 q 1 r]-koodi H r(q). Esimerkki 3.4.5. Kun valitaan q = 3, r = 3, qr 1 q 1 = 13, niin saadaan ternäärinen [13, 10]-koodi. Tämä koodi antaa ratkaisun seuraavalle vakioveikkausongelmalle: Kuinka monta saraketta tarvitaan, että vähintään 12 oikein on varma? Koska edellä mainittu Hammingin [13, 10]-koodi on täydellinen, niin avaruuden F3 13 jokaisen alkion 1-säteisessä ympäristössä on jokin koodisana. Täten 3 10 = 59 049 saraketta riittää. 3.5 Reedin Mullerin koodit Reedin Mullerin koodit löysi vuonna 1954 D. E. Muller ja ovat siten eräitä vanhimmista koodityypeistä. Samana vuonna Irving S. Reed kehitti niille enemmistöpäätökseen perustuvan dekoodausalgoritmin. Olkoon tässä kappaleessa F = F 2 ja n = 2 m. Määritellään avaruuteen F n kertolasku koordinaateittain: ab = (a 0 b 0, a 1 b 1,..., a n 1 b n 1 ), kun a = (a 0, a 1,..., a n 1 ) ja b = (b 0,..., b n 1 ). Tällöin avaruuden F n alkiot ovat idempotentteja: a 2 = a. 22
Tarkastellaan m n-matriisia, jonka sarakkeina ovat lukujen 0, 1,..., 2 m 1 binääriesitykset. Olkoot v m, v m 1,..., v 1 tämän matriisin rivit. Olkoon edelleen m j = ξ ij 2 i 1, ξ ij {0, 1}, i=1 luvun j {0, 1,..., 2 m 1} binääriesitys ja A i avaruuden F m niiden alkioiden joukko, joilla on 1 kohdassa i, toisin sanoen A i = {x j F m ξ ij = 1}. Vektori v i voidaan tulkita joukon A i karakteristiseksi funktioksi (vektorin v i koordinaatti on 1 täsmälleen niille j, joille x j A i ). Jos luvut i 1, i 2,..., i k ovat erisuuria, niin vastaavasti v i1 v i2 v ik on joukon A i1 A i2 A ik karakteristinen funktio. Tämä joukko muodostuu avaruuden F m niistä alkioista, joissa on 1 kohdissa i 1, i 2,..., i k. Siten A i1 A i2 A ik = 2 m k ja on todistettu seuraava tulos. Lause 3.5.1. Jos luvut i 1, i 2,..., i k ovat erisuuria, niin wt(v i1 v i2 v ik ) = 2 m k. Osoitetaan nyt, että nämä vektorit ja v 0 = (1, 1,..., 1) ovat lineaarisesti vapaita. Lause 3.5.2. Joukko muodostaa avaruuden F n kannan. {v 0 } {v i1 v ik k = 1,..., m} Todistus. Väitteen vektorien lukumäärä on korkeintaan ( ) ( ) ( ) ( ) m m m m 1 + + + + + = (1 + 1) m = 2 m = n. 1 2 3 m Riittää siis osoittaa, että jokainen luonnollisen kannan vektori E j on esitettävissä annettujen vektorien lineaariyhdisteenä. Huomaa aluksi, että v 2 i = v i kaikilla i. Lisäksi vektoreiden v i muodostaman matriisin sarakkeet ovat erisuuria, joten seuraavassa tulossa komponenttia j lukuunottamatta komponenteissa esiintyy tekijänä 0. Siten ( )( E j = v i ξ ij =1 ξ ij =0 ) (v i + v 0 ) = m (v i + (1 + ξ ij )v 0 ). i=1 23
Määritelmä 3.5.3. Kun 1 r m, niin 2 m -pituiseksi r:nnen kertaluvun Reedin Mullerin koodiksi eli RM-koodiksi sanotaan sitä avaruuden F 2m aliavaruutta, jonka kantavektoreina ovat v 0 ja kaikki vektorien v 1, v 2,..., v m tulot v i1 v i2 v ik, missä k r. Tälle koodille käytetään merkintää R(r, m). Nollannen kertaluvun Reedin Mullerin koodiksi R(0, m) sanotaan vektorin v 0 generoimaa toistokoodia. Lause 3.5.4. 2 m -pituisen r:nnen kertaluvun RM-koodin duaalikoodi on 2 m - pituinen (m r 1):nnen kertaluvun RM-koodi: R(r, m) = R(m r 1, m). Todistus. Olkoon a = v i1 v i2 v ik jokin koodin R(r, m) kantavektori, jolloin k r. Olkoon vastaavasti b = v j1 v j2 v jl jokin koodin R(m r 1, m) kantavektori, jolloin l m r 1. Nyt ab = v t1 v t2 v ts, missä s k + l m 1. Lauseen 3.5.1 nojalla wt(ab) = 2 m s, joka on parillinen, koska s < m. Siten a b = 0 ja R(m r 1, m) R(r, m). Lisäksi dim R(m r 1, m) = i=0 m r 1 i=0 ( ) m i ( ( ) ( ) ) m m m = + + + 0 1 m r 1 ( ) ( ) ( ) m m m m = + + + = m m 1 r + 1 i=r+1 m ( ) m r ( ) m r ( ) m = = 2 m i i i i=0 i=0 = n dim R(r, m) = dim R(r, m), joten R(m r 1, m) = R(r, m). Lause 3.5.5. Koodin R(r, m) minimietäisyys on 2 m r. ( ) m i Todistus. Lauseen 3.5.1 nojalla d min R(r, m) 2 m r. Osoitetaan induktiolla, että d min R(r, m) 2 m r. Kun m = 1, niin R(0, 1) = {00, 11}, joten d min R(0, 1) = 2 = 2 1 0. Lisäksi R(1, 1) = {00, 10, 01, 11}, joten d min R(1, 1) = 1 = 2 1 1 ja väite pätee, kun m = 1. Oletetaan sitten, että d min R(r, m) 2 m r kaikilla r = 0, 1,... m ja osoitetaan, että myös d min R(r, m+1) 2 m+1 r kaikilla r = 0, 1,... m+1. Koodi 24
R(0, m+1) on 2 m+1 -pituinen toistokoodi, jonka minietäisyys on 2 m+1 0. Kun r 0, niin harjoitustehtävän 24 mukaan R(r + 1, m + 1) = {(u, u + v) u R(r + 1, m), v R(r.m)}. Edelleen tehtävän 23 ja induktio-oletuksen mukaan d min R(r + 1, m + 1) min{2d min R(r + 1, m), d min R(r, m)} min{2 2 m (r+1), 2 m r } = 2 m r = 2 m+1 (r+1). Näin ollen d min R(r, m + 1) 2 m+1 r ja saadaan väite. Koodi R(r, m) on siis 2 m r 1 1 virhettä korjaava koodi. Tutkitaan nyt RM-koodien koodausta ja dekoodausta. Tarkastellaan koodia R(r, m). Jos ( ) ( ) m m M = 1 + + +, 1 r niin vektori a = (a 0, a 1,..., a M 1 ) on luonnollista (mutta ei systemaattista) koodata vektoriksi c = a 0 v 0 + a 1 v 1 + + a M 1 v m r 1 v m. (2) Olkoon k {0, 1,..., m} ja olkoon C(i 1,..., i k ) sellaisten lukujen j = m ξ ij 2 i 1 i=1 joukko, että ξ ij = 0 kaikilla i / {i 1,..., i k }. Tällöin Lauseen 3.5.2 todistuksen nojalla m E j = (v i + (1 + ξ ij )v 0 ), joten v i1... v ik i=1 on vektorin E j kehitelmässä täsmälleen silloin, kun m i=1 i/ {i 1,...,i k } (1 + ξ ij )v 0 = v 0, toisin sanoen täsmälleen silloin, kun ξ ij = 0 kaikilla i / {i 1,..., i k } eli j C(i 1,..., i k ). Näin ollen E j = m k=0 (i 1,...,i k ) j C(i 1,...,i k ) v i1 v i2 v ik. 25
Kun f = (f 0,..., f n 1 ) F n, niin n 1 f = f j E j = j=0 m ( f j )v i1 v i2 v ik. (3) k=0 (i 1,...,i k ) j C(i 1,...,i k ) Olkoon nyt f = c koodisana. Jos a s on termin v i1 v ir kerroin yhtälössä (2), niin yhtälön (3) nojalla a s = f j. (4) Jos t / {i 1,..., i r }, niin yhtälössä (3) j C(i 1,...,i r) j C(i 1,...,i r,t) f j = 0, (5) sillä kun f = c, tulossa v i1 v i2 v ik voi olla korkeintaan r tekijää. Koska C(i 1,..., i r, t) voidaan kirjoittaa pistevieraiden joukkojen C(i 1,..., i r ) ja C(i 1,..., i r ) + 2 t 1 unionina, niin yhtälöiden (4) ja (5) nojalla a s = f j, j C(i 1,...,i r)+2 t 1 kun t / {i 1,..., i r }. Tämä ylestyy induktiolla seuraavaan muotoon. Lause 3.5.6. Jos a s on yhtälössä (2) r:n vektorin v i tulon kerroin, niin on olemassa sellainen joukon {0,..., n 1} jako 2 r alkion osajoukoiksi C 1,..., C 2 m r, että jokaisella v {1,..., 2 m r } pätee a s = j C v f j. Olkoon saatu sana x = (x 0,..., x n 1 ). Jos vektorissa x on vähemmän kuin 2 m r 1 virhettä, niin suurin osa Lauseen 3.5.6 yhtälöistä a s = j C v x j, v = 1,..., 2 m r, on voimassa ja siten a s saadaan enemmistöratkaisulla oikein määrätyksi. Kun kaikki r:n vektorin v i tuloa vastaavat kertoimet a s on löydetty, päästään nämä termit vähentämällä R(r 1, m)-koodiin, johon voidaan toistaa sama menettely. Jatkamalla menettelyä saadaan kaikki enintään (2 m r 1 1)- painoiset virheet korjatuiksi dekoodauksessa. Hyvän virheenkorjauskykynsä johdosta R(1, m) on sopiva käytettäväksi poikkeuksellisen häiriöisissä kanavissa. Niinpä muun muassa avaruusaluksen Mariner 9 lähettäessä kuvia Marsista käytettiin tällaista 32-pituista R(1, 5)- koodia, jolloin kuvan jokaisen pisteen tummuus ilmoitettiin 64-jakoisella asteikolla (64 = 2 6, 2 6 = 1 + ( 5 1) = dim R(1, 5)). 26
3.6 Uusien lineaaristen koodien muodostaminen tunnetuista Määritelmä 3.6.1. Olkoon C koodi kunnan F q suhteen. Laajennetuksi koodiksi kutsutaan koodia C = {( n ) c 1,..., c n, c k (c1,..., c n ) C }. k=1 Binääritapauksessa laajentaminen tarkoittaa pariteetintarkistusbitin lisäämistä. Tällöin myös d min C = d min C + 1, jos d min C on pariton, ja d min C = d min C muulloin. Lause 3.6.2. Jos C on (n, M, d)-koodi kunnan F q suhteen, niin C on (n + 1, M, d 0 )-koodi, missä d d 0 d + 1. Jos C on lineaarinen, niin myös C on lineaarinen. Tällöin edelleen 0 H = H. 0 1... 1 1 on koodin C tarkistusmatriisi, jos H on koodin C tarkistusmatriisi. Määritelmä 3.6.3. Kunnan F q suhteen olevien [n i, k i, d i ]-koodien C i, i = 1, 2, suoraksi summaksi sanotaan koodia C 1 C 2 = {(c 1, c 2 ) c 1 C 1, c 2 C 2 }. Lause 3.6.4. Määritelmän merkinnöin koodi C 1 C 2 on [n 1 + n 2, k 1 + k 2, min{d 1, d 2 }]-koodi. Jos G i on koodin C i generoijamatriisi, niin [ G 1 ] 0 0 G 2 on koodin C 1 C 2 generoijamatriisi lohkomuodossa. Todistus. Pituus, lineaarisuus, minimietäisyys ja generoijamatriisi ovat selviä. Dimensiota varten huomataan, että C 1 C 2 = q k 1 q k 2 = q k 1+k 2, joten koodin C 1 C 2 dimensio on log q C 1 C 2 = k 1 + k 2. Määritelmä 3.6.5. Kunnan F q suhteen olevien [n, k i, d i ]-koodien C i, i = 1, 2, (u, u + v)-konstruktioksi kutsutaan koodia C = {(u, u + v) u C 1, v C 2 }. Lause 3.6.6. Yllä määritelty C on [2n, k 1 + k 2, min{2d 1, d 2 }]-koodi. Jos G i on koodin C i generoijamatriisi, niin [ G 1 G 1 ] 0 G 2 on koodin C generoijamatriisi lohkomuodossa. 27
Todistus. Generoijamatriisia koskeva väite on selvä ja muut kohdat ovat harjoitustehtävänä 23. Seuraus 3.6.7. Jos A on binäärinen [n, k, d]-koodi, niin C = {(c, c) c A} {(c, 1 + c) c A} on binäärinen [2n, k + 1, min{2d 1, n}]-koodi. Todistus. Valitaan Lauseessa 3.6.6 C 1 = A ja C 2 = {0, 1}. Lause 3.6.8. Reedin Mullerin koodi R(m 2, m) on ekvivalenttinen laajennetun Hammingin [2 m, 2 m m 1]-koodin kanssa. Todistus. Lauseen 3.5.4 mukaan R(m 2, m) = R(1, m). Koodin R(1, m) kantavektorit ovat v 0, v 1,..., v m, ja generoijamatriisi on 0 1 0... 1 v m v m 1 0 0 1... 1 0 0 0... 1 G =. = = 0. H v 1.... 0, 0 0 0... 1 1 1... 1 v 0 1 1 1... 1 missä H on Hammingin koodin tarkistusmatriisi. Tästä saadaan laajennetun Hammingin koodin tarkistusmatriisi siirtämällä ensimmäinen sarake viimeiseksi. Muita tapoja muodostaa uusia koodeja annetusta [n, k]-koodista C: 1. Koordinaatin poistaminen (punkteeraus) muuttaa koodin C [n 1, k]- koodiksi, jonka minimietäisyys on tavallisesti yhtä pienempi kuin alkuperäisen koodin. 2. Paritonpainoisten sanojen poistaminen binäärisestä koodista C muuttaa sen tavallisesti [n, k 1]-koodiksi, jonka minimietäisyys voi kasvaa. 3. Vektorin 1 = 11... 1 lisääminen, kun 1 / C: Binäärisen koodin C ja koodin 1+C unioni on [n, k+1]-koodi, jonka minimietäisyys on min{d, n d }, missä d on pienin ja d suurin koodin C nollasta eroavien koodisanojen painoista. 4. Binäärisen koodin pidentäminen lisäämällä vektori 1 ja laajentamalla. 5. Koodin lyhentäminen: Olkoon i {1,..., n} ja α F. Otetaan vain ne koodisanat c, joissa c i = α, ja poistetaan sitten i:s koordinaatti. 28
4 Sykliset koodit Sykliset koodit muodostavat lineaaristen koodien alalajin, joka keksittiin noin vuonna 1957. Sen jälkeen ne ovat olleet koodausteoriassa varsin keskeisessä asemassa, koska ne ovat matemaattisesti ja teknisesti melko selkeitä, ovat helposti koodattavia ja sisältävät koodiluokkia, joille saadaan kohtuullisia dekoodausalgoritmeja. 4.1 Algebrallisia apuneuvoja 4.1.1 Jäännösluokkarengas R n Olkoon F = F q, q = p l. Syklisten koodien yhteydessä käytetään jäännösluokkarengasta R n = F[x]/ x n 1, jonka alkiot ovat jäännösluokkia f = {f(x) + h(x)(x n 1) h(x) F[x]}. Koska deg(x n 1) = n, kappaleen 2.2 tarkastelujen mukaan jäännösluokkien edustajistoksi voidaan valita joukko {a 0 + a 1 x + + a n 1 x n 1 a i F}. Käytetään seuraavassa polynomia a 0 + a 1 x + + a n 1 x n 1 tarkoittamaan myös sen määräämää jäännösluokkaa. Asiayhteydestä käy ilmi, onko kyseessä polynomi vai jäännöluokka. Summa ja tulo määritellään renkaassa R n tuttuun tapaan edustajien avulla: Jos f(x) = a 0 + a 1 x + + a n 1 x n 1 R n ja g(x) = b 0 + b 1 x + + b n 1 x n 1 R n, niin ja f(x) + g(x) = (a 0 + b 0 ) + (a 1 + b 1 )x + + (a n 1 + b n 1 )x n 1 R n f(x)g(x) = r(x) R n, missä f(x)g(x) = h(x)(x n 1) + r(x) ja deg r n 1. Jakojäännös r(x) saadaan tulosta f(x)g(x) nopeasti huomaamalla, että renkaassa R n pätee x n = 1, x n+1 = x,... Jäännösluokkarengas R n varustettuna yhteenlaskulla ja skalaarilla, eli kunnan F alkiolla, kertomisella on vektoriavaruus kunnan F suhteen. Tämä vektoriavaruus on isomorfinen vektoriavaruuden F n kanssa ja isomorfismin välittää kuvaus a 0 + a 1 x + + a n 1 x n 1 (a 0, a 1,..., a n 1 ) = a 0 a 1... a n 1. 29