KOODAUSTEORIA S

Samankaltaiset tiedostot
Koodausteoria, Kesä 2014

Koodausteoria, Kesä 2014

Koodausteoria, Kesä 2014

Koodausteoria, Kesä 2014

Koodausteoria, Kesä 2014

Koodausteoria, Kesä 2014

1 Lineaariavaruus eli Vektoriavaruus

802320A LINEAARIALGEBRA OSA I

Koodausteoria, Kesä 2014

ja jäännösluokkien joukkoa

Avaruuden R n aliavaruus

7. Olemassaolo ja yksikäsitteisyys Galois n kunta GF(q) = F q, jossa on q alkiota, määriteltiin jäännösluokkarenkaaksi

Lineaarikombinaatio, lineaarinen riippuvuus/riippumattomuus

koska 2 toteuttaa rationaalikertoimisen yhtälön x 2 2 = 0. Laajennuskunnan

Lineaarialgebra ja matriisilaskenta II. LM2, Kesä /141

on Abelin ryhmä kertolaskun suhteen. Tämän joukon alkioiden lukumäärää merkitään

Esko Turunen Luku 3. Ryhmät

Äärellisesti generoitujen Abelin ryhmien peruslause

k=1 b kx k K-kertoimisia polynomeja, P (X)+Q(X) = (a k + b k )X k n+m a i b j X k. i+j=k k=0

Kannan vektorit siis virittävät aliavaruuden, ja lisäksi kanta on vapaa. Lauseesta 7.6 saadaan seuraava hyvin käyttökelpoinen tulos:

2 Renkaat ja kunnat. toteutuvat: 1. pari (K, +) on Abelin ryhmä, jonka neutraalialkio on 0 K,

R : renkaan R kääntyvien alkioiden joukko; R kertolaskulla varustettuna on

kaikille a R. 1 (R, +) on kommutatiivinen ryhmä, 2 a(b + c) = ab + ac ja (b + c)a = ba + ca kaikilla a, b, c R, ja

Kuvauksista ja relaatioista. Jonna Makkonen Ilari Vallivaara

Liite 2. Ryhmien ja kuntien perusteet

Polynomien suurin yhteinen tekijä ja kongruenssi

Mitään muita operaatioita symbolille ei ole määritelty! < a kaikilla kokonaisluvuilla a, + a = kaikilla kokonaisluvuilla a.

Kanta ja dimensio 1 / 23

802355A Algebralliset rakenteet Luentorunko Syksy Markku Niemenmaa Kari Myllylä Topi Törmä Marko Leinonen

MS-C1340 Lineaarialgebra ja

6 Vektoriavaruus R n. 6.1 Lineaarikombinaatio

802320A LINEAARIALGEBRA OSA III

g : R R, g(a) = g i a i. Alkio g(a) R on polynomin arvo pisteessä a. Jos g(a) = 0, niin a on polynomin g(x) nollakohta.

Määritelmä 1. Olkoot V ja W lineaariavaruuksia kunnan K yli. Kuvaus L : V. Termejä: Lineaarikuvaus, Lineaarinen kuvaus.

MS-A0402 Diskreetin matematiikan perusteet

Diofantoksen yhtälön ratkaisut

a b 1 c b n c n

MS-C1340 Lineaarialgebra ja differentiaaliyhtälöt

Lineaarialgebra ja matriisilaskenta I

TOOLS. Tapani Matala-aho MATEMATIIKKA/LUTK/OULUN YLIOPISTO TOOLS 1 / 28

Reedin ja Solomonin koodit Katariina Huttunen

Teema 4. Homomorfismeista Ihanne ja tekijärengas. Teema 4 1 / 32

802328A LUKUTEORIAN PERUSTEET Merkintöjä ja Algebrallisia rakenteita

H = : a, b C M. joten jokainen A H {0} on kääntyvä matriisi. Itse asiassa kaikki nollasta poikkeavat alkiot ovat yksiköitä, koska. a b.

Algebran ja lukuteorian harjoitustehtäviä. 1. Tutki, ovatko seuraavat relaatiot ekvivalenssirelaatioita joukon N kaikkien osajoukkojen

Vapaus. Määritelmä. jos c 1 v 1 + c 2 v c k v k = 0 joillakin c 1,..., c k R, niin c 1 = 0, c 2 = 0,..., c k = 0.

802355A Renkaat, kunnat ja polynomit Luentorunko Syksy 2013

d Z + 17 Viimeksi muutettu

Insinöörimatematiikka D

a ord 13 (a)

renkaissa. 0 R x + x =(0 R +1 R )x =1 R x = x

Bijektio. Voidaan päätellä, että kuvaus on bijektio, jos ja vain jos maalin jokaiselle alkiolle kuvautuu tasan yksi lähdön alkio.

x j x k Tällöin L j (x k ) = 0, kun k j, ja L j (x j ) = 1. Alkuperäiselle interpolaatio-ongelmalle saadaan nyt ratkaisu

Lineaariset ryhmät Pro gradu -tutkielma Miia Lillstrang Matematiikan yksikkö Oulun yliopisto 2016

R 1 = Q 2 R 2 + R 3,. (2.1) R l 2 = Q l 1 R l 1 + R l,

JAKSO 2 KANTA JA KOORDINAATIT

isomeerejä yhteensä yhdeksän kappaletta.

Matriisien tulo. Matriisit ja lineaarinen yhtälöryhmä

Tekijä Pitkä Matematiikka 11 ratkaisut luku 2

Liittomatriisi. Liittomatriisi. Määritelmä 16 Olkoon A 2 M(n, n). Matriisin A liittomatriisi on cof A 2 M(n, n), missä. 1) i+j det A ij.

14. Juurikunnat Määritelmä ja olemassaolo.

Lineaarialgebra ja matriisilaskenta I

1 Algebralliset perusteet

Insinöörimatematiikka D

Johdatus lineaarialgebraan

7 Vapaus. 7.1 Vapauden määritelmä

Ennakkotehtävän ratkaisu

Määritelmä Olkoon T i L (V i, W i ), 1 i m. Yksikäsitteisen lineaarikuvauksen h L (V 1 V 2 V m, W 1 W 2 W m )

Lineaarialgebra ja matriisilaskenta II Syksy 2009 Laskuharjoitus 1 ( ) Ratkaisuehdotuksia Vesa Ala-Mattila

Mikäli huomaat virheen tai on kysyttävää liittyen malleihin, lähetä viesti osoitteeseen

Algebra I, harjoitus 5,

MS-C1340 Lineaarialgebra ja differentiaaliyhtälöt

800333A Algebra I Luentorunko Kevät Työryhmä: Markku Niemenmaa, Kari Myllylä, Juha-Matti Tirilä

MS-C1340 Lineaarialgebra ja

Matriisilaskenta, LH4, 2004, ratkaisut 1. Hae seuraavien R 4 :n aliavaruuksien dimensiot, jotka sisältävät vain

1 Määrittelyjä ja aputuloksia

Lineaarialgebra ja differentiaaliyhtälöt Laskuharjoitus 1 / vko 44

Tensorialgebroista. Jyrki Lahtonen A = A n. n=0. I n, I = n=0

Algebra II. Syksy 2004 Pentti Haukkanen

MAT Algebra I (s) periodilla IV 2012 Esko Turunen

Matematiikan ja tilastotieteen laitos Algebra I - Kesä 2009 Ratkaisuehdoituksia harjoituksiin 8 -Tehtävät sivua Heikki Koivupalo ja Rami Luisto

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

9 Matriisit. 9.1 Matriisien laskutoimituksia

802320A LINEAARIALGEBRA OSA II

Yleiset lineaarimuunnokset

1 Sisätulo- ja normiavaruudet

jonka laskutoimitus on matriisien kertolasku. Vastaavasti saadaan K-kertoiminen erityinen lineaarinen ryhmä

Insinöörimatematiikka D

1 Ominaisarvot ja ominaisvektorit

Insinöörimatematiikka D

Osoita, että täsmälleen yksi vektoriavaruuden ehto ei ole voimassa.

Algebra I Matematiikan ja tilastotieteen laitos Ratkaisuehdoituksia harjoituksiin 8 (7 sivua)

{I n } < { I n,i n } < GL n (Q) < GL n (R) < GL n (C) kaikilla n 2 ja

Esimerkki A1. Jaetaan ryhmä G = Z 17 H = 4 = {1, 4, 4 2 = 16 = 1, 4 3 = 4 = 13, 4 4 = 16 = 1}.

MAT Algebra I (s) periodeilla IV ja V/2009. Esko Turunen

Transkriptio:

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

Seuraavassa samaistetaan nämä kolme merkintää ja puhutaan samaa tarkoittaen polynomeista, vektoreista ja sanoista. Jäännösluokkarenkaan R n rengasrakennetta ja edellä mainittua isomorfiaa käyttäen saadaan määriteltyä vektoriavaruudessa F n kertolasku asettamalla ab = c, kun R n a(x) = a F n, R n b(x) = b F n, R n a(x)b(x) = c F n. Syklisten koodien kannalta renkaan R n keskeinen ominaisuus on se, että alkiolla x kertominen merkitsee yhden askelen syklistä siirtoa: x(a 0, a 1,..., a n 1 ) = x(a 0 + a 1 x + + a n 1 x n 1 ) = a 0 x + a 1 x 2 + + a n 2 x n 1 + a n 1 = (a n 1, a 0, a 1,..., a n 2 ). Määritelmä 4.1.1. Renkaan R osajoukkoa I sanotaan ideaaliksi, jos a) a b I kaikilla a, b I b) ra I kaikilla a I ja kaikilla r R. Ideaalia a := {ra r R} sanotaan alkion a generoimaksi pääideaaliksi (principal ideal). Rengasta, jonka jokainen ideaali on pääideaali, sanotaan pääideaalirenkaaksi. Tunnetusti F[x] on pääideaalirengas eli jos I on renkaan F[x] ideaali, niin on olemassa sellainen g F[x], että I = g(x) = {f(x)g(x) f F[x]}. Määritelmä 4.1.2. Polynomia, jonka korkeimman potenssin kerroin on 1, sanotaan ykköspolynomiksi (pääpolynomi, monic polynomial). Lause 4.1.3. Rengas R n on pääideaalirengas. Todistus. Olkoon I 0 jäännösluokkarenkaan R n ideaali ja g(x) mahdollisimman alhaista astetta oleva ideaalin I ykköspolynomi. Jos c(x) I, niin jakoyhtälön mukaan renkaassa F[x] missä deg r < deg g. Nyt c(x) = h(x)g(x) + r(x), r(x) = c(x) h(x)g(x) I, joten r(x) = 0, sillä muutoin päädytään ristiriitaan polynomin g valinnan kanssa (kertomalla r sopivalla vakiolla saataisiin ykköspolynomi). Siis c(x) = h(x)g(x) g(x), ja I = g(x). 30

Huomautus 4.1.4. Koska deg c < n, niin Lauseen 4.1.3 todistuksesta käy ilmi, että jokainen ideaalin I alkio on muotoa h(x)g(x), missä deg h < n k, jos deg g = k. Edelleen todistuksen mukainen g on yksikäsitteinen ja sitä sanotaan ideaalin I generoijapolynomiksi. 4.1.2 Minimipolynomi Tarkastellaan kunnan F q äärellistä laajennuskuntaa F q r. Jokainen α F q r toteuttaa yhtälön x qr x = 0, joten jokainen α F q r on renkaan F q [x] jonkin ykköspolynomin nollakohta. Määritelmä 4.1.5. Alkion α F q r minimipolynomiksi kunnan F q suhteen, merkitään m α (x), sanotaan sitä mahdollisimman alhaista astetta olevaa renkaan F q [x] ykköspolynomia, jonka nollakohtana α on, ts. jolle m α (α) = 0. Huomautus 4.1.6. Minimipolynomi m α on yksikäsitteinen. Jos α F q, niin m α (x) = x α. Lause 4.1.7. Olkoon α F q r. a) m α on jaoton renkaassa F q [x] ja deg m α r. b) Jos f F q [x] toteuttaa ehdon f(α) = 0, niin m α f; erityisesti m α (x qr 1 1), kun α 0. c) m α (x) = (x α)(x α q ) (x α qu 1 ), missä u on pienin ehdon α qu = α toteuttava positiivinen kokonaisluku (selvästi u r). Jos α on kunnan F q r primitiivialkio, niin u = r. Todistus. a) Jos m α ei ole jaoton, niin m α (x) = f(x)g(x) joillakin f, g F q [x] ja deg f, deg g < deg m α. Koska 0 = m α (α) = f(α)g(α), niin f(α) = 0 tai g(α) = 0. Tämä on ristiriidassa minimipolynomin määritelmän kanssa, joten m α on jaoton. Koska m α on jaoton, niin F q [x]/ m α (x) on kunta, jossa on q t, t = deg m α, alkiota eli F q t. Koska α F q r ja kunnan F q t alkiot ovat alkion α polynomeja, niin F q t F q r. Lisäksi F q t on ryhmä kertolaskun suhteen ja siinä on q t 1 alkiota. Siten F q t on ryhmän F q r aliryhmä ja (qt 1) (q r 1). Sijoittamalla harjoitustehtävässä 28 x = q nähdään, että t r. b) Olkoon f(x) F q [x] ja f(α) = 0. Jakoyhtälön mukaan renkaassa F q [x] saadaan f(x) = g(x)m α (x) + r(x), missä deg r < deg m α. Tällöin 0 = f(α) = g(α)m α (α) + r(α) = r(α) 31

ja edellä olevaan tapaan saadaan ristiriita, jos r(x) 0. Jokainen α F q r toteuttaa yhtälön αqr 1 1 = 0, joten m α (x qr 1 1). c) Olkoon m α (x) = a 0 + a 1 x + + a t 1 x t 1 + x t F q [x]. Seurauksen 2.2.11 nojalla m α (α q ) = m α (α) q = 0, joten α q on polynomin m α juuri. Vastaavasti α q2, α q3,... ovat nollakohtia. Jos α qi = α qj joillakin 0 i < j u 1, niin α qj i = α. Tämä on ristiriita luvun u valinnan kanssa, sillä tässä 0 < j i < u. Näin ollen t u. Tarkastellaan polynomia g(x) = (x α)(x α q ) (x α qu 1 ). Osoitetaan, että g F q [x], jolloin b-kohdan nojalla m α g ja t u. Tällöin t = u ja m α ja g ovat samaa astetta olevia ykköspolynomeja, joilla on täsmälleen samat nollakohdat, joten m α = g. Riittää siis osoittaa, että g F q [x]. Nyt g(x) = g 0 + g 1 x + + g u 1 x u 1 + x u, g j F q r. Olkoon ĝ(x) = g q 0 + g q 1x + + g q u 1x u 1 + x u, jolloin ĝ(α qk ) = ( g(α qk 1 ) ) q kaikilla k = 1,..., u. Täten g ja ĝ ovat samaa astetta olevat ykköspolynomit, joilla on täsmälleen samat nollakohdat, joten ne ovat sama polynomi. Siten g q j = g j kaikilla j = 0, 1,..., u 1, ja g j F q. 4.1.3 Ykkösen juurista Oletetaan tässä kappaleessa, että n Z + toteuttaa ehdon syt(n, q) = 1. Tällöin on olemassa sellainen m Z +, että n (q m 1). Tästä johtuen jossakin kunnan F q laajennuksessa F q m on olemassa (ks. harjoitustehtävä 29) primitiivinen n:s ykkösen juuri α, jolle α n = 1, α i α j kaikilla 0 i < j n 1. Syklisiä koodeja tarkasteltaessa tarvitaan polynomin x n 1 tekijöihinjako renkaassa F[x], ts. on kyettävä määräämään sellaiset jaottomat polynomit f i F[x], että x n 1 = f 1 (x)f 2 (x) f t (x), 32

missä ehdon syt(n, q) = 1 nojalla f i (x) f j (x) kaikilla i j. Lauseen 4.1.7 nojalla polynomit f i ovat alkion α potenssien α s minimipolynomeja. Edelleen Lauseen 4.1.7 c-kohdan nojalla alkion α s minimipolynomi on m α s = (x α s )(x α sq ) (x α squs 1 ), missä u s on pienin sellainen positiivinen kokonaisluku, että α squs α on primitiivinen n:s ykkösen juuri, niin = α s. Koska α squs = α s jos ja vain jos sq us s (mod n). Edellä olevan perusteella polynomin x n 1 jaottomien tekijöiden löytämiseksi on tarkoituksenmukaista jakaa Z n syklotomisiin sivuluokkiin luvun q suhteen niin, että alkion s sisältävä sivuluokka on C s = {s, sq, sq 2,..., sq us 1 }, missä u s on pienin sellainen positiivinen kokonaisluku, että sq us s (mod n). Erityisesti C 0 = {0}, joka vastaa polynomin x n 1 tekijää x 1. Vastaavasti muitakin syklotomisia sivuluokkia C s vastaa polynomin x n 1 jaoton tekijä m α s(x) = i C s (x α i ), joka on alkioiden α i, i C s, minimipolynomi. Koska sivuluokat ovat erilliset, niin x n 1 = m α s(x), s missä s käy läpi sivuluokkien edustajat (yksi s kustakin sivuluokasta). Huomaa, että täten myös x n 1 = n 1 i=0 (x αi ). 4.2 Syklisen koodin määritelmä ja perusominaisuuksia Seuraavassa F = F q, n Z +, syt(n, q) = 1 ja R n = F[x]/ x n 1. Määritelmä 4.2.1. Lineaarista koodia C F n sanotaan sykliseksi koodiksi, jos (c n 1, c 0, c 1,..., c n 2 ) C aina, kun (c 0, c 1,..., c n 1 ) C, eli jokaisen koodisanan syklinen siirto on koodisana. Lause 4.2.2. Jäännösluokkarenkaan R n osajoukko C on syklinen koodi täsmälleen silloin, kun se on renkaan R n ideaali. 33

Todistus. Olkoon ensin C renkaan R n ideaali. Tällöin C on avaruuden F n aliavaruus, sillä ideaalin määritelmän nojalla C, x y C ja ax C aina, kun x, y C ja a F. Siten C on lineaarinen koodi. Jos lisäksi c = c(x) = c 0 + c 1 x + + c n 1 x n 1 C, niin xc(x) C. Koska x n = 1 renkaassa R n, niin xc(x) = c 0 x + c 1 x 2 + + c n 2 x n 1 + c n 1 x n = (c n 1, c 0, c 1,..., c n 2 ). Siten (c n 1, c 0, c 1,..., c n 2 ) C, ja C on syklinen. Olkoon sitten C syklinen (n-pituinen) koodi kunnan F suhteen, jolloin C. Koska syklinen koodi on lineaarinen, niin x y C aina, kun x, y C. Jos c(x) = c 0 + c 1 x + + c n 1 x n 1 = (c 0, c 1,..., c n 1 ) C, niin syklisyyden nojalla myös (c n 1, c 0, c 1,..., c n 2 ) C eli xc(x) C. Edelleen x 2 c(x) C,..., x n 1 c(x) C. Lineaarisena avaruutena C sisältää täten myös alkiot (a 0 + a 1 x + + a n 1 x n 1 )c(x) kaikilla a i F. Näin ollen f(x)c(x) C aina, kun f(x) R n, ja C on renkaan R n ideaali. Lause 4.2.3. Jos g(x) (x n 1) renkaassa F[x] ja deg g(x) = n k, niin polynomin g generoima jäännösluokkarenkaan R n ideaali g(x) on syklinen [n, k]-koodi. Jos C on syklinen [n, k]-koodi, niin on olemassa sellainen astetta n k oleva ykköspolynomi g(x), että g(x) (x n 1) renkaassa F[x] ja C on polynomin g(x) generoima renkaan R n ideaali. Todistus. Olkoon ensin g(x) (x n 1) ja deg g(x) = n k. Lauseen 4.2.2 nojalla ideaali g(x) = {f(x)g(x) f(x) R n } on n-pituinen syklinen koodi. Osoitetaan vielä, että koodin C dimensio on k. Nyt on olemassa sellainen h(x) F[x], että deg h = k ja x n 1 = g(x)h(x). Täten polynomin g(x) generoima jäännösluokkarenkaan R n ideaali on {m(x)g(x) m(x) F[x]/ h(x) }, jossa on q deg h = q k alkiota. Siis dim C = k. Olkoon sitten C syklinen [n, k]-koodi. Lauseen 4.2.2 nojalla C on renkaan R n ideaali. Lauseen 4.1.3 todistuksen mukaan C = g(x), missä g(x) on koodin C mahdollisimman alhaista astetta oleva ykköspolynomi. Olkoon renkaassa F[x] x n 1 = h(x)g(x) + r(x), missä deg r < deg g. Tällöin renkaassa R n pätee r(x) = x n 1 h(x)g(x) = h(x)g(x) g(x). Jos r(x) 0, saadaan ristiriita polynomin g valinnan kanssa. Täten r(x) = 0 ja g(x) (x n 1). Koska dim C = k, niin todistuksen alkuosan nojalla deg g = n dim C = n k. 34

Määritelmä 4.2.4. Lauseessa 4.2.3 esiintyvää koodin C mahdollisimman alhaista astetta oleva ykköspolynomia g(x) sanotaan koodin C generoijapolynomiksi ja polynomia h(x) = (x n 1)/g(x) koodin C tarkistuspolynomiksi. Seuraavaa lausetta voi käyttää generoijapolynomin selvittämiseen. Lause 4.2.5. Syklisen koodin C = f(x) generoijapolynomi on g(x) = syt(f(x), x n 1). Todistus. Koska g f, niin f(x) g(x). Toisaalta Eukleideen algoritmin mukaan on olemassa sellaiset a, b F[x], että renkaassa F[x] g(x) = a(x)f(x) + b(x)(x n 1). Renkaassa R n pätee tällöin g(x) = a(x)f(x) C. Siten g(x) f(x) ja g(x) = f(x) = C. Olkoon c(x) C, c(x) 0, jolloin c(x) = a(x)f(x) jollakin a(x) R n. Siten renkaassa F[x] c(x) = a(x)f(x) + b(x)(x n 1) jollakin b F[x]. Koska g(x) = syt(f(x), x n 1), niin g c renkaassa F[x] ja deg g deg c. Näin ollen g on koodin C alhaisinta astetta oleva ykköspolynomi ja siis generoijapolynomi. Olkoon x n 1 = f 1 (x)f 2 (x) f t (x) polynomin x n 1 alkutekijöihin jako renkaassa F[x]. Koska syt(n, q) = 1, kukin f i (x) esiintyy vain kerran. Kaikki n-pituiset sykliset koodit kunnan F yli saadaan ottamalla generoijaksi kukin polynomin x n 1 tekijä, joita on t j=0 ( ) t = 2 t j kappaletta. Erityisesti jaottoman tekijän f i (x) generoimaa koodia sanotaan maksimaaliseksi sykliseksi koodiksi ja polynomin xn 1 f i generoimaa koodia minimaaliseksi eli jaottomaksi sykliseksi (x) koodiksi. 4.3 Generoija- ja tarkistusmatriisi Olkoon g(x) = g 0 +g 1 x+ +g n k x n k koodin C generoijapolynomi. Tällöin joukko {g(x), xg(x),..., x k 1 g(x)} on koodin C kanta, ja generoijamatriisiksi 35

voidaan ottaa matriisi g 0 g 1...... g n k 0... 0 g 1 0 g 0 g 1...... g n k... 0 G =........... =: g 2.. 0 0... g 0 g 1...... g n k Koodauskuvaukseksi voidaan valita generoijapolynomilla g(x) kertominen: m(x)g(x) = (m 0 g 0, m 0 g 1 + m 1 g 0, m 0 g 2 + m 1 g 1 + m 2 g 0,..., m k 1 g n k ) = mg. Generoijamatriisia ei siis välttämättä tarvita koodauksessa. Merkitään h(x) = h 0 + h 1 x + + h k x k sekä g i = 0 kaikilla i / [0, n k] ja h j = 0 kaikilla j / [0, k]. Koska g(x)h(x) = x n 1, niin g k g(x)h(x) = n s l x l, l=0 missä s 0 = 1, s n = 1, s l = l i=0 g ih l i = 0, kun l = 1, 2,..., n 1. Jos valitaan h k h k 1...... h 0 0... 0 0 h k h k 1...... h 0... 0 H =........... =: 0 0... h k h k 1...... h 0 niin kaikilla i = 1,..., k ja kaikilla j = 1,..., n k pätee g i h j = s k i+j. h 1 h 2. h n k Tässä 1 k i + j n 1, joten g i h j = 0 kaikilla i ja j. Siis GH T = 0. Lisäksi rank H = n k, joten H on koodin C tarkistusmatriisi. 4.4 Systemaattinen koodaus Edellä olevalla tavalla koodaus on helppo tehdä, mutta se ei yleensä ole systemaattinen. Koodi voidaan kuitenkin saada systemaattiseen muotoon seuraavasti. Oletetaan, että viestit vastaavat polynomeja totutusti: m = (m 0, m 1,..., m k 1 ) m(x) = m 0 + m 1 x + + m k 1 x k 1., 36

Tällöin x n k m(x) = m 0 x n k + + m k 1 x n 1 = f(x)g(x) u(x), (6) missä f(x) F[x] ja deg u < n k, joten u(x) = u 0 +u 1 x+ +u n k 1 x n k 1. Polynomia u(x) + x n k m(x) = u 0 + u 1 x + + u n k 1 x n k 1 + m 0 x n k + m 1 x n k+1 + + m k 1 x n 1 vastaava sana (u 0, u 1,..., u n k 1, m 0, m 1,..., m k 1 ) on koodisana, koska yhtälön (6) nojalla u(x) + x n k m(x) = f(x)g(x) g(x) = C. Lisäksi kuvaus γ : m(x) u(x) + x n k m(x) on bijektio F k C. Näin kuvausta γ käyttäen koodaus tapahtuu systemaattisesti, kuitenkin niin, että informaatiosymbolit ovat lopussa. Syklisen koodin generoijamatriisi saadaan systemaattiseen muotoon seuraavasti. Jakamalla x n k+i, i = 0, 1,..., k 1, polynomilla g(x) saadaan joten x n k+i = f i (x)g(x) u i (x), f i (x) F[x], deg u i < n k, u i (x) + x n k+i = f i (x)g(x) C kaikilla i = 0, 1,..., k 1. Koska nämä koodisanat ovat lineaarisesti vapaita, ne voidaan valita generoijamatriisin G vaakariveiksi: u 00... u 0,n k 1 1 0... 0 u 10... u 1,n k 1 0 1 0 G =......., u k 1,0... u k 1,n k 1 0 0... 1 missä on merkitty u i (x) = u i0 + u i1 x + + u i,n k 1 x n k 1. Luonnollisesti koodin C tarkistusmatriisiksi voidaan valita 1 0... 0 u 00 u 10... u k 1,0 0 1 0 u 01 u 11... u k 1,1 H =......... 0 0... 1 u 0,n k 1 u 1,n k 1... u k 1,n k 1 Esimerkki 4.4.1. Jos saadussa sanassa r(x) = c(x)+e(x) on yksi virhe, niin yksi tapa hoitaa dekoodaus on Meggitt-dekoodaus. Lasketaan ensin syndromipolynomi s(x) = r(x)h(x) = c(x)h(x) + e(x)h(x) = e(x)h(x). 37

Lisäksi x i s(x) = (x i e(x))h(x) kaikilla i = 0, 1,..., n 1. Jos saadussa sanassa on vain 1 virhe, niin kokeilemalla löydetään sellainen i, että virhe on viimeisessä koordinaatissa (jos e(x) = x j, niin tämä toteutuu, kun i = n 1 j). Laaditaan ensin syndromiluettelo s 1 (x), s 2 (x),..., s q 1 (x), missä s j (x) on virhettä a j x n 1 vastaava syndromipolynomi ja {a 1,..., a q 1 } = F q. Varsinaisessa dekoodauksessa lasketaan x i s(x), i = 0,..., n 1, ja etsitään syndromiluettelosta sellainen s j (x), että x i s(x) = s j (x). Tällöin x i e(x) = a j x n 1 ja virhe on e(x) = a j x n 1 i. 4.5 Syklisen koodin nollakohdat Jos α 1, α 2,..., α n k ovat syklisen koodin C = g(x) generoijapolynomin g(x) nollakohdat (sopivassa kunnan F laajennuksessa), niin v(x) C täsmälleen silloin, kun c(α 1 ) = = c(α n k ) = 0. Näin ollen voidaan määritellä C = {c(x) R n c(α 1 ) = = c(α n k ) = 0}. Seurauksen 2.2.11 (ks. myös Lauseen 4.1.7 c-kohdan todistus) mukaan α q on nollakohta aina, kun α on nollakohta, joten ylläolevassa koodin C määrittelyssä riittää ottaa yksi edustaja kustakin eksponenttien syklotomisesta sivuluokasta. Siis C = {c(x) R n c(α i ) = 0 kaikilla i = 1,..., n k} { n 1 n 1 = c j x j } c j α j i = 0 kaikilla i = 1,..., n k j=0 j=0 = {(c 0, c 1,..., c n 1 ) F n (c 0, c 1,..., c n 1 ) (1, α i, α 2 i,..., α n 1 i ) = 0} = {c F n cĥt = 0}, missä 1 α 1... α1 n 1 1 α 2... α n 1 2 Ĥ =... 1 α n k... α n 1 n k (n k) n. (7) Matriisi Ĥ on siis eräänlainen tarkistusmatriisi, jonka alkiot kuuluvat johonkin kunnan F laajennuskuntaan. Lause 4.5.1. Binäärinen syklinen koodi, jonka pituus n = 2 m 1 ja jonka generoija on jaoton polynomi, jolla on nollakohtana kunnan F 2 m primitiivialkio α, on ekvivalenttinen Hammingin [n, n m]-koodin kanssa. 38

Todistus. Olkoon α kunnan F 2 m primitiivialkio, eli α on primitiivinen n:s ykkösen juuri, kun n = 2 m 1. Tällöin m α (x) on luvun 1 määräämää syklotomista sivuluokkaa modulo n vastaava polynomin x n 1 jaoton tekijä. Tämä sivuluokka on {1, 2, 2 2,..., 2 m 1 }, joten minimipolynomin m α (x) nollakohdat ovat α, α 2,..., α 2m 1. Olkoon v(x) = v 0 + v 1 x + + v n 1 x n 1, jolloin v(x) m α (x), jos ja vain jos 0 = v(α) = n 1 j=0 v jα j (tällöin myös v(α 2 ) = = v(α 2m 1 ) = 0). Kun j = 0,..., n 1, niin α j = m 1 i=0 e ijα i joillakin e ij F 2. Siten n 1 n 1 m 1 m 1 0 = v j α j = v j e ij α i = j=0 j=0 i=0 i=0 (n 1 j=0 v j e ij ) α i n 1 v j e ij = 0 kaikilla i = 0,..., m 1 j=0 vh T = 0, missä matriisin H sarake j on (e 0j, e 1j,..., e m 1,j ) T. Matriisi H on siis koodin m α (x) tarkistusmatriisi. Koska α on kunnan F 2 m primitiivialkio, niin matriisin H sarakkeet ovat lukujen 1, 2,..., 2 m 1 binääriesitykset jossakin järjestyksessä. Väite seuraa tästä. 4.6 Idempotentit Yleisessä renkaassa alkiota e sanotaan idempotentiksi, jos e 2 = e. Syklisen koodin idempotentilta vaaditaan kuitenkin vähän enemmän. Oletetaan tässäkin kappaleessa, että syt(n, q) = 1. Lause 4.6.1. Olkoon C n-pituinen syklinen koodi. Koodissa C on yksikäsitteinen seuraavat ehdot toteuttava alkio e(x) C: a) e(x) 2 = e(x) renkaassa R n. b) C on polynomin e(x) generoima ideaali, ts. C = e(x). c) e(x)c(x) = c(x) kaikilla c(x) C, ts. e(x) on koodin C ykkösalkio. Todistus. Koodilla C on generoijapolynomi g(x), jolle C = g(x) ja x n 1 = g(x)h(x), missä syt(g(x), h(x)) = 1. Täten Eukleideen algoritmin nojalla on olemassa sellaiset a, b F q [x], että 1 = a(x)g(x) + b(x)h(x). (8) Osoitetaan, että e(x) = a(x)g(x) toteuttaa väitteen ehdot. 39

a) Kertomalla yhtälö (8) puolittain polynomilla e(x) saadaan renkaassa R n e(x) = e(x) 2 + b(x)h(x)a(x)g(x) = e(x) 2 + a(x)b(x)(x n 1) = e(x) 2. b) Lauseen 4.2.5 nojalla koodin e(x) generoijapolynomi on syt(x n 1, e(x)) = syt(g(x)h(x), a(x)g(x)) = g(x) syt(h(x), a(x)) = g(x). Näin ollen e(x) = g(x) = C. c) Olkoon c(x) C = e(x), jolloin c(x) = c 1 (x)e(x) = e(x)c 1 (x) jollakin c 1 (x) R n. Täten e(x)c(x) = e(x) 2 c 1 (x) = e(x)c 1 (x) = c(x), ja e(x) on koodin C ykkösalkio. Jos e 1 (x) ja e 2 (x) molemmat toteuttavat lauseen ehdot, niin c-kohdan mukaan e 1 (x) = e 1 (x)e 2 (x) = e 2 (x). Lauseen 4.6.1 ehdot toteuttavaa polynomia e(x) C kutsutaan koodin C idempotentiksi. Huomautus 4.6.2. (1) Matriisi, jonka ensimmäinen rivi on e(x) ja muut sen k 1 syklisiä siirtoa xe(x),..., x k 1 e(x), on koodin C generoijamatriisi. (2) Olkoon α primitiivinen n:s ykkösen juuri. Tällöin e(α i ) {0, 1} kaikilla i = 0, 1,..., n 1 ja g(α i ) = 0 jos ja vain jos e(α i ) = 0. Edelleen binäärisen polynomin h(x) = xn 1 generoiman koodin idempotentti on 1 + e(x) (vrt. harjoitustehtävään 41), kun e(x) on koodin g(x) g(x) idempotentti. Tarkastellaan binäärisiä syklisiä koodeja, ts. q = 2. Aikaisemman nojalla x n 1 = f 1 (x)f 2 (x) f t (x), missä f i F[x] ovat jaottomia ja kukin niistä vastaa yhtä syklotomista sivuluokkaa modulo n. Nämä ovat nyt muotoa {a, 2a,..., 2 u 1 a}, 40

missä u on pienin ehdon 2 u a a (mod n) toteuttava positiiviluku. Koska e(x) 2 = e(x), täytyy idempotentin sisältää myös termi x 2i, jos se sisältää termin x i (x n = 1 renkaassa R n ). Tästä johtuen syklisen binäärisen koodin idempotentin termien eksponentit muodostavat eräiden syklotomisten sivuluokkien unionin. Täten kaikki mahdolliset idempotentit saadaan muodostettua suorittamatta polynomin x n 1 tekijöihin jakoa. Minimaalisen koodin xn 1 f i idempotenttia sanotaan primitiiviseksi idempotentiksi. (x) Lause 4.6.3. Olkoon M i polynomin (x n 1)/f i (x) generoima binäärinen minimaalinen koodi ja θ i (x) sen primitiivinen idempotentti. a) θ i (x)θ j (x) = 0 renkaassa R n kaikilla i j. b) t θ i (x) = 1. i=1 c) Polynomin f i1 (x)f i2 (x) f ir (x) generoiman syklisen koodin idempotentti on 1 + θ i1 (x) + θ i2 (x) + + θ ir (x). Todistus. a) Olkoon i j, jolloin θ i (x)θ j (x) M i M j. Harjoitustehtävän 37b mukaan koodin M i M j generoijapolynomi on pyj ( x n 1, ) xn 1 f i (x) f j (x) = x n 1. Täten M i M j = x n 1 = {0}, ja θ i (x)θ j (x) = 0 renkaassa R n. b) Jos C ai on polynomia f i (x) vastaava syklotominen sivuluokka (f i (α j ) = 0, jos ja vain jos j C ai ), niin { θ i (α j ) = 0, kun j / C ai, θ i (α j ) = 1, kun j C ai. Tämän ja harjoitustehtävän 44 nojalla t θ l (x) = l=1 t n 1 l=1 i=0 i=0 n 1 ( t n 1 ) θ l (α j )α )x ij i = θ l (α j )α ij x i (n 1 j=0 n 1 ( t = α ij l=1 j C al ) x i = i=0 n 1(n 1 i=0 j=0 l=1 j=0 α ij ) x i Tässä jokaisella 1 i n 1 pätee n 1 t l=1 θ i(x) = 1. j=0 α ij = 1 α in 1 α i = 0, joten c) Viimeinen kohta on harjoitustehtävänä 43. 41

4.7 Syklisen koodin jälkiesitys Olkoon F = F q ja K = F q m kunnan F laajennuskunta. Määritelmä 4.7.1. Kuntalaajennuksen K/F jälkifunktioksi (trace function) sanotaan kuvausta Tr K F : K F, Tr K F (x) = m 1 i=0 x qi = x + x q + x q2 + + x qm 1. Kuvaa Tr K F (x) sanotaan alkion x K jäljeksi kunnan F suhteen. Jos kunnat ovat selvät, niin jälkifunktiota merkitään Tr. Jos q = p on alkuluku, niin kuvausta Tr K F p sanotaan absoluuttiseksi jälkifunktioksi ja jälkeä Tr K F p (x) alkion x K absoluuttiseksi jäljeksi. Lause 4.7.2. Olkoon Tr laajennuksen K/F jälkifunktio. Tällöin a) Tr on F-lineaarinen kuvaus eli kaikilla x, y K ja a F pätee Tr(x + y) = Tr(x) + Tr(y) ja Tr(ax) = a Tr(x). b) Tr on surjektio K F ja saa jokaisen arvonsa yhtä monesti. c) Tr(a) = ma kaikilla a F. d) Tr(x q ) = Tr(x) kaikilla x K. Todistus. a) Oletetaan, että x, y K ja a F. Tällöin m 1 m 1 Tr(x + y) = (x + y) qi = (x qi + y qi ) = i=0 = Tr(x) + Tr(y). i=0 m 1 i=0 x qi + Kaikilla a F q pätee a q = a, joten a qi = a kaikilla i 0. Siten m 1 Tr(ax) = (ax) qi = i=0 m 1 i=0 a qi x qi = m 1 i=0 m 1 ax qi = a i=0 m 1 i=0 y qi x qi = a Tr(x). b) Polynomilla x+x q + +x qm 1 on korkeintaan q m 1 nollakohtaa kunnassa K. Tästä johtuen on olemassa sellainen β K, että Tr(β) 0. Siis b = Tr(β) F q = F q \{0}. Jos nyt a F, niin myös ab 1 F ja a-kohdan mukaan Tr(ab 1 β) = ab 1 Tr(β) = ab 1 b = a. 42

Näin ollen Tr on surjektio. Jos ξ Ker Tr, niin Tr(a + ξ) = Tr(a) + Tr(ξ) = Tr(a) + 0 = Tr(a) kaikilla a K. Koska a + ξ 1 a + ξ 2, kun ξ 1 ξ 2, niin jokaisella b F on vähintään Ker Tr eri alkukuvaa ja K Ker Tr F. Toisaalta homomorfismien peruslauseen (Alg. I) nojalla K/ Ker Tr = Im Tr = F. Kaikki tässä esiintyvät ryhmät ovat äärellisiä, joten K = Ker Tr F ja jokaisella b F on oltava täsmälleen Ker Tr alkukuvaa. c) Kuten edellä todettiin, on a qi = a kaikilla i 0, kun a F. Siten Tr(a) = m 1 i=0 a qi = d) Kun x K, niin x qm = x ja saadaan m 1 Tr(x q ) = (x q ) qi = i=0 m 1 i=0 m 1 i=0 a = ma. x qi+1 = Tr(x). Huomautus 4.7.3. Jos K = F q m ja alkion α K minimipolynomin (kunnan F q suhteen) m α (x) aste on m, niin (ks. Lauseen 4.1.7 c-kohta) m α (x) = (x α)(x α q ) (x α qm 1 ) = x m (α + α q + + α qm 1 )x m 1 + = x m Tr K F (α)x m 1 +..., joten Tr K F (α) = (termin x m 1 kerroin). Määritelmä 4.7.4. Olkoon F = F q, K = F q m, γ kunnan K primitiivialkio ja P renkaan K[x] additiivinen aliryhmä, joka on suljettu kunnan F alkioilla kertomisen suhteen. Olkoon edelleen n Z + ja Tr jälkikuvaus Tr K F. Muotoa C(P ) = { c(f) = ( Tr(f(1)), Tr(f(γ)),..., Tr(f(γ n 1 )) ) f P } olevaa lineaarista koodia kutsutaan pituutta n olevaksi jälkikoodiksi kunnan F suhteen. Koska syklisen koodin duaalikoodi on syklinen, niin seuraavan lauseen perusteella jokainen syklinen koodi voidaan esittää jälkikoodina. 43

Lause 4.7.5. Olkoot F, K ja γ kuten Määritelmässä 4.7.4. Oletetaan, että n (q m 1) ja q m 1 = nn, N Z +. Olkoon B syklinen n-pituinen koodi kunnan F suhteen, jonka nollakohdat ovat γ Ns 1,..., γ Nsu. Tällöin koodin B duaalikoodi B on jälkikoodi C(P ), missä { u } P = a i x Ns i a i K. i=1 Todistus. Huomaa, että γ N on primitiivinen n:s ykkösen juuri. Olkoon b = (b 0,..., b n 1 ) F n ja c = c(f) C(P ), missä f(x) = u i=1 a ix Ns i. Merkitään b(x) = n 1 j=0 b jx j ja lasketaan vektoreiden b ja c pistetulo: n 1 n 1 b c = b j Tr(f(γ j )) = = = j=0 n 1 j=0 j=0 u Tr(b j a i γ Nsij ) = i=1 u Tr(a i b(γ Ns i )). i=1 b j u Tr(a i γ Nsij ) i=1 u Tr i=1 (a i n 1 j=0 ) b j γ Ns ij Jos nyt b B, niin b(γ Ns i ) = 0 kaikilla i = 1,..., u, joten b c = 0 kaikilla c C(P ). Näin ollen B C(P ). Olkoon nyt b C(P ), jolloin b c = 0 kaikilla c C(P ). Valitaan c = c(f), missä f(x) = ax Ns j, j {1,..., u} ja a K. Tällöin Tr(ab(γ Ns j )) = b c = 0. Tästä seuraa jäljen surjektiivisuuden nojalla, että b(γ Ns j ) = 0. Tämä pätee kaikilla j = 1,..., u, joten b B eli C(P ) B. Huomautus 4.7.6. Jos α = γ N (primitiivinen n:s ykkösen juuri), niin edellä riittää ottaa mukaan sellainen nollakohtien α s i = γ Ns i joukko, missä on yksi edustaja s i jokaisesta joukkoon {s 1,..., s u } kuuluvasta syklotomisesta sivuluokasta modulo n. 4.8 Mattsonin Solomonin polynomit Oletetaan, kuten edellä, että F = F q ja syt(n, q) = 1. Olkoon α primitiivinen n:s ykkösen juuri eräässä kunnan F laajennuskunnassa F q m. Määritelmä 4.8.1. Vektorin a = (a 0, a 1,..., a n 1 ) Fq n (eli polynomin m a(x) = a 0 + a 1 x + + a n 1 x n 1 ) Mattsonin Solomonin polynomiksi, tai MS-polynomiksi, kutsutaan polynomia n A(z) = A a (z) = A j z n j F q m[z], j=1 44

missä A j = a(α j ) = n 1 a i α ij kaikilla j = 1,..., n. i=0 Lause 4.8.2. Kun a ja A(z) ovat kuten edellä, niin a i = 1 n A(αi ) kaikilla i = 0, 1,..., n 1. Todistus. Koska α n = 1, saadaan n n A(α i ) = A j α (n j)i = A j α ji = j=1 j=1 n 1 = n α (k i)j. a k k=0 j=1 n α ij (n 1 j=1 k=0 ) a k α kj Kun k = i, niin tässä n j=1 α(k i)j = n j=1 1 = n. Kun k i, niin n < k i < n ja k i 0. Merkitsemällä l = k i saadaan α l 1 ja n j=1 α lj = α l (1 + α l + + α (n 1)l ) = α l 1 αnl 1 α l = 0. Koska syt(n, q) = 1, niin n 0 kunnan F alkioksi tulkittuna ja yhtälö A(α i ) = na i voidaan jakaa puolittain alkiolla n F. Seuraus 4.8.3. wt(a) = n r, missä r on niiden n:nsien ykkösen juurten lukumäärä, jotka ovat polynomin A a (z) nollakohtia; erityisesti wt(a) n deg A a (z). Lause 4.8.4 (BCH-raja). Olkoon α F q m primitiivinen n:s ykkösen juuri, b N ja d Z +. Olkoon g(x) F[x] polynomi, jonka nollakohtia ovat (ainakin) α b, α b+1,..., α b+d 2, ja olkoon C polynomin g generoima n-pituinen syklinen koodi. Tällöin d min C d. Todistus. Olkoon c(x) C, c(x) 0. Koska g(x) c(x) renkaassa R n, niin c(x) = f(x)g(x) renkaassa R n ja c(x) = f(x)g(x) + a(x)(x n 1) renkaassa F[x]. Täten c(α j ) = 0 kaikilla b j b + d 2, ja A(z) = A c (z) = n c(α j )z n j j=1 = c(α)z n 1 + + c(α b 1 )z n b+1 + c(α b+d 1 )z n b d+1 + + c(α n ). 45

Olkoon A (z) = z b 1 A(z) (z n 1) ( c(α)z b 2 + + c(α b 1 ) ) = c(α b+d 1 )z n d + + c(α n )z b 1 + c(α)z b 2 + + c(α b 1 ). Jokainen n:s ykkösen juuri, joka on polynomin A(z) nollakohta, on myös polynomin A (z) nollakohta. Tällaisten ykkösen juurten määrä on korkeintaan deg A n d. Seurauksen 4.8.3 nojalla wt c n (n d) = d, joten d min C d. 46

5 BCH-, RS- ja Goppa-koodit 5.1 BCH-koodien määrittely BCH-koodit keksi vuonna 1959 Alexis Hocquenghem sekä hänestä riippumatta vuonna 1960 Raj C. Bose ja Dijen K. Ray-Chaudhuri. Näitä koodeja voidaan pitää Hammingin koodien yleistyksenä (vertaa Lauseseen 4.5.1). Luonnollisinta on kuitenkin tarkastella niitä syklisten koodien alalajina. BCHkoodien merkitys perustuu erityisesti siihen, että niille löytyy kohtuullisia dekoodausalgoritmeja. Olkoon jälleen F = F q, syt(n, q) = 1 ja m alkion q multiplikatiivinen kertaluku modulo n, jolloin n (q m 1). Olkoon α kunnan F q m primitiivinen n:s ykkösen juuri. Kuten aiemmin, käytetään alkion α i minimipolynomille merkintää m α i(x). Määritelmä 5.1.1. Polynomin pyj(m α (x), m α 2(x),..., m α d 1(x)) generoimaa n-pituista syklistä koodia sanotaan (kapea-alaiseksi) BCH-koodiksi (narrow-sense BCH code), jonka suunniteltu etäisyys on d des C = d. Polynomin pyj(m α b(x), m α b+1(x),..., m α b+d 2(x)), missä b N, generoimaa n-pituista syklistä koodia sanotaan yleistetyksi BCH-koodiksi, jonka suunniteltu etäisyys on d. Jos α on kunnan F q m primitiivialkio eli jos n = q m 1, niin vastaavaa (yleistettyä) BCH-koodia sanotaan primitiiviseksi koodiksi. Jos BCH-koodin suunniteltu etäisyys on 2t + 1, sitä sanotaan tavallisesti t virhettä korjaavaksi BCH-koodiksi. Lause 5.1.2. a) Olkoon C = g(x) n-pituinen (yleistetty) BCH-koodi kunnan F q suhteen ja olkoon sen suunniteltu etäisyys d. Tällöin dim C n (d 1)m ja d min C d. b) Olkoon C binäärinen n-pituinen BCH-koodi, jonka suunniteltu etäisyys on d = 2t + 1. Silloin dim C n mt ja d min C 2t + 1. Todistus. a) Lauseen 4.1.7 mukaan deg m β (x) m kaikilla β F q m, joten deg g (d 1)m. Toisaalta deg g = n dim C, joten n dim C (d 1)m eli dim C n (d 1)m. 47

Minimietäisyyden raja saadaan suoraan BCH-rajasta (Lause 4.8.4). Sen saa todistettua myös ilman Mattsonin Solomonin polynomeja hyödyntämällä kappaleen 4.5 tarkasteluja. Olkoot polynomilla g nollakohtina α b, α b+1,..., α b+d 2. Jos c C, niin cĥt = 0, missä 1 α b α 2b... α (n 1)b 1 α b+1 α 2(b+1)... α (n 1)(b+1) Ĥ =.... 1 α b+d 2 α 2(b+d 2)... α (n 1)(b+d 2) on yhtälön (7) mukainen matriisi. Olkoon c 0 ja wt(c) = w, 1 w d 1. Olkoot c i1, c i2,..., c iw vektorin c nollasta eroavat koordinaatit, missä i j {0,..., n 1} kaikilla j. Yhtälöstä cĥt = 0 saadaan yhtälöryhmä c i1 α i 1b + c i2 α i 2b + + c iw α iwb = 0 c i1 α i 1(b+1) + c i2 α i 2(b+1) + + c iw α iw(b+1) = 0. c i1 α i1(b+w 1) + c i2 α i2(b+w 1) + + c iw α iw(b+w 1) = 0 Tällä yhtälöryhmällä on epätriviaali ratkaisu (c i1,..., c iw ), joten α i 1b α i 2b α iwb α i 1(b+1) α i 2(b+1) α iw(b+1) 0 =... α i 1(b+w 1) α i 2(b+w 1) α iw(b+w 1) 1 1 1 α i 1 α i 2 α iw = α i1b α i 2b α iwb α 2i 1 α 2i 2 α 2iw... α (w 1)i 1 α (w 1)i 2 α (w 1)iw = α i 1b α i 2b α iwb j<k(α i k α i j ). Täten on olemassa sellaiset 1 j < k w, että α i j = α i k eli α i k i j = 1. Tämä on ristiriidassa sen kanssa, että α on primitiivinen n:s ykkösen juuri. Näin ollen w d ja saadaan väite. b) Binääritapauksessa polynomin m β (x) nollakohtia ovat β, β 2, β 4,... Siten m β (x) = m β 2(x) = m β 4(x) =... ja g(x) = pyj(m α, m α 2,..., m α 2t) = pyj(m α, m α 3,..., m α 2t 1). 48

Näin ollen deg g mt ja väite saadaan a-kohdan tapaan. Huomaa, että edellisen lauseen todistuksessa ei tarvita tietoa, että d on juuri suunniteltu etäisyys vaan lause todistaa BCH-rajan (ks. Lause 4.8.4): jos syklisellä koodilla C on d peräkkäistä nollakohtaa, niin d min C d + 1. Esimerkki 5.1.3. Marcel J. E. Golaylta tunnettaan kaksi koodia, binäärinen ja ternääninen Golayn koodi. Molemmat on julkaistu vuonna 1949 ja kumpikin on täydellinen. Muut täydelliset koodit äärellisten kuntien suhteen ovat Hammingin koodit (Lause 3.4.3) ja ns. triviaalit täydelliset koodit: binääriset paritonpituiset toistokoodit, yhden sanan koodit ja koko avaruus F n q. Tarkastellaan seuraavassa binääristä Golayn koodia; ternäärinen esiintyy harjoitustehtävässä 52. Olkoon q = 2 ja n = 23. Pienin m, jolle 23 (2 m 1), on m = 11, ja 2 11 1 = 2047 = 89 23. Nyt saadaan syklotomiset sivuluokat C 0 = {0}, C 1 = {1, 2, 4, 8, 16, 9, 18, 13, 3, 6, 12} C 5 = {5, 10, 20, 17, 11, 22, 21, 19, 15, 7, 14}. Vastaava polynomin x 23 1 tekijöihinjako renkaassa F 2 [x] on x 23 1 = (x 1)(x 11 + x 10 + x 6 + x 5 + x 4 + x 2 + 1) ja (x 11 + x 9 + x 7 + x 6 + x 5 + x + 1). Olkoon α primitiivinen 23:s ykkösen juuri, jolle m α (x) = x 11 + x 10 + x 6 + x 5 + x 4 + x 2 + 1. Polynomin g(x) = m α (x) nollakohtina ovat α, α 2, α 3 ja α 4, joten binäärisen Golayn koodin G 23 = g(x) minimietäisyys on BCH-rajan mukaan d min G 23 5. Itse asiassa d min G 23 = 7, mitä ei todisteta tässä. Siten G 23 on 3 virhettä korjaava. Koodin G 23 dimensio on dim G 23 = n deg g = 23 11 = 12. Jokaisessa koodisanakeskisessä 3-säteisessä pallossa on B(c, 3) = 3 i=0 ( ) 23 23 22 23 22 21 = 1 + 23 + + i 2 2 3 vektoria. Yhteensä näissä palloissa on siten alkiota, ja G 23 on täydellinen koodi. 2 11 G 11 = 2 11 2 12 = 2 23 = F 23 2 49 = 2048 = 2 11

Minimietäisyyden ylärajan löytäminen on hankalampaa. Seuraava tulos kuitenkin tiedetään. Lause 5.1.4. Olkoon n = ab ja C = g(x) n-pituinen BCH-koodi, jonka suunniteltu etäisyys d des C = a. Tällöin d min C = a. Todistus. BCH-rajan mukaan d min C a, joten riittää osoittaa, että koodista C löytyy a-painoinen sana. Nyt x n 1 = x ab 1 = (x b 1)(1+x b + +x (a 1)b ). Olkoon α primitiivinen n:s ykkösen juuri, jolloin α ib 1 kaikilla i = 1,..., a 1. Täten jokainen α i on polynomin 1 + x b + + x (a 1)b nollakohta. Lauseen 4.1.7 nojalla m α i(x) (1 + x b + + x (a 1)b ) kaikilla i = 1,..., a 1. Koska g(x) = pyj(m α (x),..., m α a 1(x)), niin g(x) (1 + x b + + x (a 1)b ). Siten 1 + x b + + x (a 1)b g(x) = C ja tämän sanan paino on a. 5.2 BCH-koodin dekoodaus Tarkastellaan t virhettä korjaavaa n-pituista BCH-koodia. Olkoon α primitiivinen n:s ykkösen juuri, c = c(x) = c 0 + c 1 x + + c n 1 x n 1 = (c 0, c 1,..., c n 1 ) lähetetty sana ja r = r(x) saatu sana. Tällöin missä e(x) on virhe. Merkitään jolloin r(x) = c(x) + e(x), S i = r(α i ), i = 1, 2,..., 2t, (9) S i = c(α i ) + e(α i ) = 0 + e(α i ) = e(α i ), i = 1, 2,..., 2t. Jos wt(e) = w t ja e(x) = w e jl x j l, niin l=1 S i = w e jl α ij l, i = 1, 2,..., 2t. (10) l=1 Jos potenssit α j 1,..., α j l saadaan selville, niin eksponentit j1, j 2,..., j l ilmaisevat virhekohdat. Merkitään x l = α j l ja yl = e jl, l = 1,..., w. Tällöin yhtälön (10) mukaan S i = w y l x i l, i = 1,..., 2t. l=1 50

Määritellään virhekohtapolynomi σ(z): σ(z) = w (1 x i z) = i=1 w σ j z j, σ 0 = 1, j=0 jonka nollakohtien käänteisalkiot ilmaisevat virhekohdat. Suureista S i saadaan muodostettua polynomi 2t 2t S(z) = S i z i = = i=1 w l=1 i=1 z i w l=1 y l x l z 1 (x lz) 2t 1 x l z. y l x i l = Merkitään A l (z) = y l x l z w (1 x j z), jolloin saadaan j=1 j l w l=1 2t y l i=1 (x l z) i S(z)σ(z) = = w w y l x l z(1 (x l z) 2t ) (1 x j z) l=1 w A l (z) l=1 j=1 j l w A l (z)(x l z) 2t. l=1 Koska deg A l (z) w, niin yllä termien z w+1, z w+2,..., z 2t kertoimet ovat 0. Nämä saadaan kertomalla tulo S(z)σ(z) = ( 2t i=1 S iz i)( w j=0 σ jz j), σ 0 = 1, tavalliseen tapaan auki. Suorittamalla kertominen päädytään yhtälöryhmään σ w S 1 + σ w 1 S 2 + + σ 1 S w + S w+1 = 0 σ w S 2 + σ w 1 S 3 + + σ 1 S w+1 + S w+2 = 0 (11). σ w S w + σ w 1 S w+1 + + σ 1 S 2w 1 + S 2w = 0. 51

Tässä 1 1... 1 x 1 x 2... x w y 1 x 1 0... 0 1 x 1 x 2 1... x w 1 1 x 2 1 x 2 2... x 2 0 y 2 x 2 0 1 x 2 x 2 2... x w 1 2 w............ x w 1 1 x2 w 1... x w 1 0 0... y w x w 1 x w x 2 w... x w 1 w w S 1 S 2... S w S 2 S 3... S w+1 =.... (12) S w S w+1... S 2w 1 Koska x 1,..., x l ovat nollasta eroavia ja erisuuria, niin yhtälöryhmän (11) determinantti, eli det[s i ] yhtälössä (12), on nollasta eroava. Siten kertoimet σ j saadaan ratkaistua yksikäsitteisesti yhtälöryhmästä (11). Jos f > w, niin suorittamalla yhtälön (12) kaltainen tekijöihinjako nähdään, että yhtälöryhmän σ f S 1 + + σ 1 S f + S f+1 = 0 σ f S 2 + + σ 1 S f+1 + S f+2 = 0. σ f S f + + σ 1 S 2f 1 + S 2f = 0 determinantti on nolla. Mikäli w t, niin oikea w (jota ei tiedetä ennakolta) saadaan seuraavasti: Valitaan w = t. Jos yhtälöryhmän (11) determinantti on 0, valitaan w = t 1 ja jatketaan samaan tapaan. Varsinainen dekoodausmenettely on seuraava: 1. Lasketaan suureet S i yhtälöiden (9) avulla. 2. Määrätään oikea w yllä kuvatulla tavalla. 3. Ratkaistaan alkiot σ j yhtälöryhmän (11) avulla. 4. Virhekohdat saadaan virhekohtapolynomin σ(z) nollakohtien käänteisalkioiden eksponentteina. 5. Ratkaistaan kertoimet y l eli virhearvot yhtälöryhmästä S i = w x i ly l, i = 1,..., w. l=1 52

5.3 Reedin Solomonin koodit Reedin Solomonin koodit ovat BCH-koodeja, joissa n = q 1. Irving S. Reed ja Gustave Solomon löysivät ne vuonna 1960. Näillä on huomattava merkitys muun muassa sen vuoksi, että ne ovat maksimietäisyyskoodeja ja niitä voidaan käyttää muiden koodien konstruoinnissa. Muun muassa ensimmäinen virheenkorjausta laajasti hyödyntänyt kuluttajatuote, CD-levy, käyttää RSkoodeja. RS-koodeja käytetään myös DVD- ja Blu-ray-levyillä sekä Euroopan (DVB) ja Pohjois-Amerikan (ATSC) digitelevisiolähetyksissä. Määritelmä 5.3.1. Reedin Solomonin koodiksi eli RS-koodiksi sanotaan BCH-koodia, jonka aakkosto on F q, lohkopituus n = q 1 ja generoija d 1 g(x) = (x α i ), missä d on suunniteltu etäisyys ja α on kunnan F q primitiivialkio. i=1 Esimerkki 5.3.2. Olkoon q = 4 ja α kunnan F 4 primitiivialkio, jolle α 2 + α + 1 = 0. Tarkastellaan RS-koodia, jonka suunniteltu etäisyys on 2. Sen generoijapolynomi on g(x) = x α ja koodisanat ovat c(x) = (a+bx)(x α), missä a, b F 4. Sanat on esitetty allaolevassa taulukossa. a b 0 1 α α 2 0 000 0α1 0α 2 α 01α 2 1 α10 αα 2 1 ααα α0α 2 α α 2 α0 α 2 01 α 2 1α α 2 α 2 α 2 α 2 1α 2 0 111 10α 1αα 2 Lauseessa 3.2.8 osoitettiin, että lineaarisen [n, k]-koodin minimietäisyys on korkeintaan n k + 1. Määritelmän 3.2.10 mukaan maksimietäisyyskoodeilla on juuri tämä minimietäisyys. Lause 5.3.3. RS-koodit ovat maksimietäisyyskoodeja. Todistus. RS-koodin, jonka generoijapolynomi on g, minimetäisyys on BCHrajan (Lause 4.8.4 tai Lause 5.1.2 a) nojalla vähintään deg g + 1 = n k + 1, kun kyseessä on [n, k]-koodi. Lauseen 3.2.9 mukaan d min = n k + 1. Edellisen lauseen todistuksesta käy ilmi, että RS-koodin minimietäisyys on d min = deg g+1 = d des. RS-koodi voidaan dekoodata kappaleen 5.2 teoriaa käyttäen. 53

Lause 5.3.4. Olkoon C [n, k, d]-rs-koodi, jonka generoijapolynomi on g(x) = (x α)(x α 2 ) (x α d 1 ). Laajennetaan koodin C jokainen sana c = c 0 c 1 c n 1 sanaksi c 0 c 1 c n 1 c n, missä n 1 c n = c i. i=0 Näin saatu koodi on [n + 1, k, d + 1]-koodi. Todistus. Osoitetaan, että laajennettaessa koodia C jokaisesta d-painoisesta koodisanasta tulee (d + 1)-painoinen. Olkoon c(x) = c 0 c 1... c n 1 = c C jokin d-painoinen sana. Tällöin n 1 c n = c i = c(1) i=0 ja riittää osoittaa, että c(1) 0. Nyt c(x) = a(x)g(c) jollakin a(x) F q [x], joten c(1) = a(1)g(1), missä g(1) 0. Jos c(1) = 0, niin a(1) = 0 ja (x 1) a(x). Tällöin (x 1)g(x) c(x) ja polynomilla c(x) on peräkkäiset nollakohdat 1 = α 0, α, α 2,..., α d 1. BCHrajan nojalla wt(c) d + 1, mikä on ristiriita, sillä c oletettiin d-painoiseksi. Näin ollen c(1) 0 ja c n 0. Lause 5.3.5. Olkoon P k renkaan F q [x] korkeintaan astetta k 1 olevien polynomien muodostama joukko, α kunnan F q primitiivialkio, n = q 1 ja k sellainen positiiviluku, että k n. Tällöin C = {(f(1), f(α),..., f(α n 1 )) f P k } on RS-koodi, jonka generoijapolynomi on g(x) = n k (x α i ). Todistus. Harjoitustehtävän 46 mukaan C on syklinen koodi kunnan F q suhteen ja dim C = k. Koska g(x) on n-pituinen syklinen koodi, jonka dimensio on n deg g = n (n k) = k = dim C, niin riittää osoittaa, että C g(x). i=1 54

Olkoon c(x) = n 1 j=0 c jx j C. Silloin c j = f(α j ), j = 0, 1,..., n 1, eräällä f(x) = k 1 l=0 f lx l P k, missä f l F q. Jokaisella i = 1,..., n k pätee n 1 n 1 n 1 k 1 k 1 c(α i ) = c j α ij = f(α j )α ij = f l α lj α ij = j=0 j=0 j=0 l=0 l=0 α (l+i)j, f l n 1 missä 1 l + i n 1. Koska α on primitiivinen n:s ykkösen juuri, niin α i+l 1 ja n 1 α (l+i)j = 1 α(l+i)n = 0. 1 α l+i j=0 Siis c(α i ) = 0 kaikilla i = 1,..., n k, joten c(x) g(x) ja saatiin väite. Olkoon C [n, k, d]-rs-koodi kunnan F q, q = p m, suhteen. Kunnan F q alkio voidaan korvata m-pituisella F p -kertoimisella vektorilla seuraavasti. Olkoon {β 1,..., β m } laajennuksen F q /F p kanta, jolloin saadaan yksikäsitteinen vastaavuus m γ = b i β i F q (b 1, b 2,..., b m ). i=1 Korvaamalla sanassa γ = (γ 0, γ 1,..., γ n 1 ) C kukin kirjain vastaavalla m-pituisella vektorilla γ i = (b i1, b i2,..., b im ) saadaan avaruuden Fp mn vektori (b 01,..., b (n 1)m ). Näin saadaan kunnan F p suhteen oleva koodi {(b 01,..., b (n 1)m ) γ = (γ 0, γ 1,..., γ n 1 ) C, γ i = (b i1, b i2,..., b im )}. Tämä on [mn, mk, d]-koodi (minimietäisyys on vähintään d). 5.4 Goppa-koodit Goppa-koodit keksi vuonna 1970 Valerii Goppa. Muun muassa BCH-koodit saadaan Goppa-koodien erikoistapauksena. Ennen Goppa-koodien esittelyä tarvitaan käänteisalkion a 1 (x) (mod G(x)) käsite, missä a ja G ovat polynomeja. Jos syt(a(x), G(x)) = 1 renkaassa F[x], niin on olemassa sellaiset u, v F[x], että 1 = a(x)u(x) + G(x)v(x). Näin ollen a(x)u(x) 1 (mod G(x)). Merkitään tällöin u(x) 1 a(x) u(x) a 1 (x) (mod G(x)) (mod G(x)). tai j=0 55

Esimerkki 5.4.1. Olkoon α kunnan F 16 primitiivialkio, jolle α 4 + α + 1 = 0. Laske (x α 2 ) 1 (mod (x 2 + α 7 x + 1)). 1. tapa: Yhtälön ratkaiseminen suoraan: 1 (a + bx)(x α 2 ) aα 2 + (a + bα 2 )x + bx 2 aα 2 + (a + bα 2 )x + b(1 + α 7 x) = aα 2 + b + (a + bα 2 + bα 7 )x (mod (x 2 + α 7 x + 1)) jos ja vain jos a ja b totetuttavat yhtälöryhmän { aα 2 + b = 1 a + bα 12 = 0, jonka ratkaisu on a = α 9, b = α 12. Siten (x α 2 ) 1 (mod (x 2 + α 7 x + 1)) = α 9 + α 12 x. 2. tapa: Eukleideen algoritmi. Olkoon nyt C kunnan F q suhteen oleva n-pituinen (kapea-alainen) BCHkoodi, jonka suunniteltu etäisyys on d. Koodin C generoijapolynomi on siis g(x) = pyj { m α (x),..., m α d 1(x) }, missä m α i(x) on alkion α i minimipolynomi ja α on primitiivinen n:s ykkösen juuri eräässä kunnan F q laajennuksessa F q m. Lause 5.4.2. Yllä oleva koodi C on muotoa n 1 C = { c = (c 0,..., c n 1 ) F n q i=0 c } i x α 0 (mod i xd 1 ). Todistus. Koska C on BCH-koodi, niin c C, jos ja vain jos c(α j ) = 0 kaikilla j = 1, 2,..., d 1. Täten s(x) = d 1 j=1 s jx j 1 on nollapolynomi, missä s j = c(α j ). Toisaalta d 1 d 1 n 1 s(x) = s j x j 1 = c i α ij x j 1 j=1 i=0 j=1 j=1 i=0 n 1 d 1 n 1 = c i α i (α i x) j 1 = c i α i 1 (αi x) d 1 1 α i x n 1 i=0 joten saadaan väite. n 1 c i α i 1 1 α i x = i=0 i=0 n 1 c i α i x = 56 i=0 c i x α i (mod x d 1 ),

Määritelmä 5.4.3. Olkoon G(x) astetta s oleva renkaan F q m[x] ykköspolynomi. Olkoon L = {α 0, α 1,..., α n 1 } F q m sellainen joukko, että L = n ja G(α i ) 0 kaikilla i = 0,..., n 1. Goppa-koodiksi sanotaan koodia Γ (L, G) = { c F n q n 1 i=0 c i x α i 0 } (mod G(x)). (13) Huomautus 5.4.4. (1) Lauseen 5.4.2 mukaan BCH-koodit (kapea-alaiset, nollakohtina α, α 2,..., α d 1 ) ovat Goppa-koodeja. (2) Goppa-koodit ovat lineaarisia koodeja (jos c 1, c 2 Γ (L, G), niin c 1 +c 2 Γ (L, G) ja ac 1 Γ (L, G) kaikilla a F q ). (3) Yleisesti Goppa-koodit eivät ole syklisiä. Tässä vaaditaan vain n Z +, n q m ; ei tarvita ehtoa syt(n, q) = 1. Lause 5.4.5. Edellä määritelty Γ (L, G) on [n, n ms, s + 1]-koodi. Todistus. Pituus on selvä. Osoitetaan ensin, että dimensio k on vähintään 1 n ms. Kirjoitetaan ensin kukin lauseke x α i (mod G(x)) polynomina. Siis 1 x α i s 1 j=0 G ijx j (mod G(x)) joillakin G ij F q m. Yhtälön (13) ehto tulee tällöin muotoon n 1 0 i=0 s 1 G ij x j = c i s 1 j=0 j=0 c i G ij )x j (mod G(x)), (n 1 i=0 n 1 c i G ij = 0 kaikilla j = 0, 1,..., s 1. (14) i=0 Koodisanan koordinaattien c i on siis toteutettava yhtälöryhmä (14), jossa on s yhtälöä ja jossa kertoimet G ij ovat kunnan F q m alkioita. Jos {β 1,..., β m } on kunnan F q m kanta kunnan F q suhteen, niin jokaisella i ja j saadaan G ij = m l=1 g ijlβ l, missä g ijl F q. Tällöin yhtälö n 1 i=0 c ig ij = 0 toteutuu, jos ja vain jos n 1 m m (n 1 g ijl β l = c i g ijl )β l = 0. i=0 c i l=0 l=0 Koska {β 1,..., β m } on kanta, saadaan yhtälöryhmässä (14) indeksiä j vastaavan yhtälön kanssa yhtäpitävä ryhmä i=0 n 1 c i g ijl = 0 kaikilla l = 1,..., m. (15) i=0 57

Kutakin ryhmän (14) yhtälöä vastaa siis m yhtälöä (15), joiden kertoimet g ijl ovat kunnasta F q. Näin ollen kukin koodisana toteuttaa ms kappaletta lineaarisia homogeenisia yhtälöitä, joiden kertoimet ovat kunnasta F q. Koodin Γ (L, G) tarkistusmatriisin aste on siten n k ms, eli k n ms. Osoitetaan vielä, että minietäisyys on vähintään s + 1. Olkoon 0 c Γ (L, G), wt(c) = w ja olkoot vektorin c nollasta eroavat koordinaatit c i1, c i2,..., c iw. Määrittelyehto (13) saadaan muotoon 0 n 1 i=0 c i x α i = w l=1 c il x α il = w l=1 c i l w j=1, l (x α i j ) w j=1 (x α i j ) (mod G(x)), missä tulossa w j=1, l indeksi j käy läpi joukon {1,..., w} \ {l} alkiot. Koska ( w ) syt (x α ij ), G(x) = 1, niin edellinen pätee ainoastaan, kun j=1 w l=1 G(x) c il w j=1, l ( w l=1 (x α ij ) 0 (mod G(x)) c il w j=1, l ) (x α ij ). Harjoitustehtävän 71 mukaan on oltava w 1 deg G(x) = s eli w s + 1. Huomautus 5.4.6. Edellä olevassa todistuksessa saadusta matriisista Ĥ = [G ij ] saadaan koodin Γ (L, G) tarkistusmatriisi korvaamalla kukin G ij m- pituisella sarakkeella, jonka alkiot kuuluvat kuntaan F q, ja poistamalla saadusta matriisista turhat rivit (siis ne, jotka ovat jäljelle jäävien lineaariyhdisteitä). Esimerkki 5.4.7. Olkoon α kunnan F 16 primitiivialkio, jolle α 4 + α + 1 = 0. Muodostetaan binäärinen 12-pituinen Goppa-koodi Γ (L, G), jolle G(x) = (x + α)(x + α 14 ) = x 2 + α 7 x + 1 ja L = {α i i = 2, 3,..., 13}. Määritelmästä seuraa, että Γ (L, G) = { c F 12 2 11 i=0 c } i x α 0 (mod i+2 (x2 + α 7 x + 1)). Lauseen 5.4.5 mukaan Γ (L, G) on [12, 4, 3]-koodi (n = 12, m = 4, s = 2). Määrätään tämän koodin tarkistusmatriisi. Edellä olevan todistuksen mukaisen matriisin Ĥ = [G ij] löytämiseksi tarvitaan polynomit G i (x) = 1 j=0 G ij x j 1 x α i = 1 x α i+2 (mod (x 2 + α 7 x + 1)) 58

jokaisella i = 0, 1,..., 11. Laskemalla nämä vaikkapa jollakin Esimerkissä 5.4.1 esitetyllä tavalla saadaan [ ] α 9 α 9 α 10 α 9 α 10 0 α 10 α 8 α 2 α 7 α 14 α 6 Ĥ = α 12 α 6 α 6 α α 11 1 α α 8 α 4 α α 3 α 14. Korvaamalla matriisissa Ĥ kukin alkio vastaavalla binäärisarakkeella saadaan matriisi 0 0 1 0 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 0 0 1 0 0 0 0 1 0 1 0 1 1 1 0 0 1 H = 1 1 0 1 0 0 0 0 0 1 1 1 1 0 0 0 0 1 0 1 1 0 0 1, 1 0 0 1 1 0 1 0 1 1 0 0 1 1 1 0 1 0 0 1 0 0 0 0 1 1 1 0 1 0 0 0 0 0 1 1 joka on tarkistusmatriisi, koska sen aste on 8 (totea!). Edellisen lauseen mukaan on saatu Goppa-koodi, joka on [12, 4, 3]-koodi. Binääritapauksessa minimietäisyyden alarajaa voidaan usein parantaa. Lause 5.4.8. Olkoon q = 2 ja oletetaan, että polynomilla G(x) ei ole useammankertaisia nollakohtia. Tällöin d min Γ (L, G) 2s + 1. Todistus. Olkoon c = (c 0, c 1,..., c n 1 ) 0 w-painoinen koodisana, missä c i F 2 = {0, 1}. Olkoon f(x) = n 1 i=0 (x α i) c i, missä alkiot c i tulkitaan kokonaisluvuiksi. Tällöin f n 1 (x) f(x) = c i 0 x α i i=0 (mod G(x)). Edelleen syt(f, G) = 1, joten yllä oleva kongruenssi pätee ainoastaan, kun G(x) f (x). Harjoitustehtävän 71 nojalla f (x) 0. Jos f(x) = w i=0 f ix i, niin f (x) = f 1 + f 3 x 2 + f 5 x 4 + + f 2u+1 x 2u, missä 2u + 1 w. Näin ollen f (x) = g(x) 2 = (g 1 + g 3 x + + g 2u+1 x u ) 2, missä g 2 i = f i, i = 1, 3,..., 2u + 1. Siis G(x) g(x) 2, g(x) 0. Polynomin G nollakohdat ovat yksinkertaisia, joten G(x) g(x) ja s = deg G deg g = u. Täten w 2u + 1 2s + 1. Goppa-koodien dekoodauksessa voidaan käyttää esimerkiksi seuraavassa kappaleessa esiteltävää menetelmää. 59

5.5 Alternanttikoodit ja niiden Eukleideen algoritmiin perustuva dekoodaus Olkoon α primitiivinen n:s ykkösen juuri eräässä kunnan F q laajennuksessa F q m ja olkoon syt(n, q) = 1. Suunniteltua etäisyyttä d olevan yleistetyn BCHkoodin, jonka nollakohdat ovat α b, α b+1,..., α b+d 2, koodisanat toteuttavat Lauseen 5.1.2 todistuksen mukaan ehdon missä cĥt = 0, (16) 1 α b α 2b... α (n 1)b 1 α b+1 α 2(b+1)... α (n 1)(b+1) Ĥ = Ĥ1 =..... 1 α b+d 2 α 2(b+d 2)... α (n 1)(b+d 2) Myös Goppa-koodin Γ (L, G), missä L = {α 1,..., α n } F q m ja deg G = s, koodisanat c totetuttavat ehdon (16), kun G(α 1 ) 1... G(α n ) 1 α 1 G(α 1 ) 1... α n G(α n ) 1 Ĥ = Ĥ2 =... α1 s 1 G(α 1 ) 1... α s 1 G(α n ) 1 Matriisit Ĥ yllä ovat tarkistusmatriiseja, joiden alkiot kuuluvat kuntaan F q m. Varsinaiset tarkistusmatriisit saadaan näistä tarvittaessa korvaamalla alkiot m-pituisilla F q -alkioisilla sarakkeilla (esimerkiksi polynomikannan avulla) ja poistamalla turhat eli muista lineaarisesti riippuvat rivit. Tarkastellaan seuraavaksi matriisia h 1 h 2... h n h 1 α 1 h 2 α 2... h n α n Ĥ =,... h 1 α1 r 1 h 2 α2 r 1... h n αn r 1 missä h 1, h 2,..., h n ovat nollasta eroavia ja α 1, α 2,..., α n ovat keskenään erisuuria kunnan F q m alkioita. Määritelmä 5.5.1. Olkoon ylläolevin merkinnöin α = (α 1,... α n ) ja h = (h 1,..., h n ). Olkoon r < n. Alternanttikoodiksi kunnan F q suhteen sanotaan koodia A(α, h) = {c F n q cĥt = 0}. n r n 60

Lause 5.5.2. Alternanttikoodi A(α, h) on [n, k, d]-koodi, missä n mr k n r ja d r + 1. Todistus. Alaraja n mr k osoitetaan samalla tavalla kuin Lauseen 5.4.5 todistuksessa. Yläraja k n r seuraa siitä, että rank Ĥ = r (matriisin Ĥ r r-alimatriisin determinantti saadaan van der Monden determinantin avulla). Minimietäisyyttä koskeva tulos jätetään harjoitukseksi. Esitetään nyt alternanttikoodeille Eukleideen algoritmiin perustuva dekoodausmenettely. Samalla saadaan BCH- ja Goppa-koodeille dekoodausmenettely. Oletetaan, että on lähetetty koodisana c ja vastaanotettu vektori u = c + e. Oletetaan, että r on parillinen, r = 2t, jolloin Lauseen 5.5.2 mukaan d 2t+1. Oletetaan lisäksi, että virheiden määrä on e t = r 2. Olkoot virheet paikoissa 1 i 1 < i 2 < < i e n. Jos vektorin e i:s koordinaatti on e ij, niin asetetaan jokaisella j = 1,..., e Lasketaan aluksi syndromi x j = α ij (virhepaikat) ja y j = e ij (virhearvot). uĥt = (c + e)ĥt = 0 + eĥt = eĥt =: (S 0, S 1,..., S r 1 ), ja vastaava syndromipolynomi S(x) = r 1 S l = e h ik αi l k e ik = k=1 l=0 S l x l, missä e h ik x l ky k kaikilla l = 0, 1,..., r 1. k=1 Määritellään virhekohtapolynomi ja virhearvopolynomi ω(x) = σ(x) = e (1 x i x) = i=1 e h ik y k k=1 e j=1, k e σ i x i, σ 0 = 1, i=0 (1 x j x) = e σ(x) h ik y k 1 x k x, missä merkintä e j=1, k tarkoittaa tuloa joukon {1,..., e} \ {k} yli (vrt. Lauseen 5.4.5 todistus). Tässä ω(x 1 l ) = e h ik y k k=1 e j=1, k k=1 (1 x j x 1 ) = h il y l l e j=1, l (1 x j x 1 l ), (17) 61

joten y l = Koska σ (x) = e x j ja j=1 ω(x 1 l ) h il e j=1, l (1 x jx 1 e i=1, j l ) (1 x i x), niin σ (x 1 l ) = x l y l = x lω(x 1 l ) h il σ (x 1 Täten saatiin seuraava lause. l ) Lause 5.5.3. Ylläolevin merkinnöin y l = ω(x 1 l ) h il e j=1, l (1 x jx 1 l e i=1, l kaikilla l = 1, 2,..., e. (1 x i x 1 l ) kaikilla l = 1, 2,..., e. ) = x 1 lω(x h il σ (x 1 l ) l ) kaikilla l = 1, 2,..., e. Jos polynomit σ(x) ja ω(x) saadaan selville, niin polynomin σ(x) nollakohtien avulla saadaan virhepaikat x j ja edellisen lauseen avulla virhearvot y j. Nämä yhdessä kertovat virhevektorin e. Osoitetaan seuraavaksi avainehdon voimassaolo, jota tarvitaan jatkossa. Lause 5.5.4 (avainehto). Ylläolevin merkinnöin Lisäksi syt(σ, ω) = 1. σ(x)s(x) ω(x) (mod x r ). Todistus. Edellä olevien tulosten mukaan r 1 ω(x) σ(x)s(x) = ω(x) σ(x) S l x l = = = l=0 e r 1 σ(x) h ik y k 1 x k x σ(x) k=1 l=0 e h ik x l ky k x l k=1 r 1 e σ(x) ( ) h ik y k 1 (1 x k x) (x k x) l 1 x k x l=0 e σ(x) h ik y k 1 x k x (x kx) r k=1 k=1 0 (mod x r ). 62

Polynomin σ(x) nollakohdat ovat x 1 l, l = 1,..., e, ja yhtälön (17) nojalla ω(x 1 l ) = h il y l e j=1, l (1 x j x 1 l ) 0. Täten polynomeilla σ(x) ja ω(x) ei ole yhteisiä nollakohtia eikä yhteisiä alkutekijöitä. Näin saadaan alternanttikoodeille seuraava dekodausmenettely: Olkoon A(α, h) alternanttikoodi, missä r = 2t. Jos virheiden lukumäärä on korkeintaan t, niin ne voidaan korjata vastaanotetusta sanasta u seuraavasti: 1. Lasketaan syndromi uĥt = (S 0, S 1,..., S r 1 ); S(x) = S 0 + S 1 x + + S r 1 x r 1. Jos S(x) = 0, niin u = c. 2. Määrätään polynomit σ(x) ja ω(x) alla esiteltävällä tavalla. 3. Polynomin σ(x) nollakohtien käänteisalkioina saadaan x 1 = α i1,..., x e = α ie. 4. Lasketaan virhearvot y 1 = e i1,..., y e = e ie Lauseen 5.5.3 avulla. 5. Lasketaan c = u e. Edellä kohdassa 2 polynomit σ(x) ja ω(x) voidaan määrittää käyttämällä Eukleideen algoritmia renkaassa F[x]. Olkoot f(x), g(x) F[x] nollasta eroavia polynomeja. Merkitään r 1 (x) = f(x) ja r 0 (x) = g(x), jolloin Eukleideen algoritmi polynomeille f(x) ja g(x) tulee muotoon r 1 (x) = q 1 (x)r 0 (x) + r 1 (x), deg r 1 < deg r 0, r 0 (x) = q 2 (x)r 1 (x) + r 2 (x), deg r 2 < deg r 1,. r k 1 (x) = q k+1 (x)r k (x) + r k+1 (x), deg r k+1 < deg r k,. r s 2 (x) = q s (x)r s 1 (x) + r s (x), deg r s < deg r s 1, r s 1 (x) = q s+1 (x)r s (x), r s+1 (x) 0. 63

Tässä jokainen q k, r k F[x]. Tällöin syt(f(x), g(x)) = r s (x). Määritellään polynomijonot (a k ), (b k ) seuraavasti: a 1 (x) = 1, b 1 (x) = 0; a 0 (x) = 0, b 0 (x) = 1; a k (x) = q k (x)a k 1 (x) + a k 2 (x), kun 1 k s + 1, b k (x) = q k (x)b k 1 (x) + b k 2 (x), kun 1 k s + 1. Tällöin on voimassa seuraavat tulokset. Lemma 5.5.5. Edellä olevin merkinnöin jokaisella 0 k s + 1 pätee: a) b k r k 1 b k 1 r k = ( 1) k f b) a k r k 1 a k 1 r k = ( 1) k+1 g c) a k b k 1 a k 1 b k = ( 1) k+1 d) r k = a k f + b k g (pätee myös, kun k = 1) e) deg a k + deg r k 1 = deg g (ei päde, kun k = 0) f) deg b k + deg r k 1 = deg f. Todistus. Harjoitustehtävä 75. Lemman 5.5.5 d-kohdan nojalla b k (x)g(x) r k (x) (mod f(x)) ja f-kohdan nojalla deg b k + deg r k < deg f. Lemma 5.5.6. Oletetaan, että Eukleideen algoritmia sovelletaan polynomeihin f ja g. Jos µ 0 ja ν deg syt(f, g) ovat kokonaislukuja, joille µ + ν = deg f 1, niin on olemassa sellainen yksikäsitteinen k {0,..., s}, että deg b k µ ja deg r k ν. Todistus. Lemman 5.5.5 f-kohdan nojalla deg b k = deg f deg r k 1 ja toisaalta µ = deg f (ν + 1). Siten deg b k µ jos ja vain jos deg r k 1 ν + 1. Jakojäännösten asteiden deg r k muodostama jono on aidosti vähenevä, joten on olemassa yksikäsitteinen k, jolle deg r k ν ja deg r k 1 ν + 1. Lemma 5.5.7. Olkoot f, g, b, r F[x] sellaisia nollasta eroavia polynomeja, että b(x)g(x) r(x) (mod f(x)), (18) deg b µ, deg r ν, µ + ν = deg f 1. 64

Olkoot edelleen (a k ), (b k ) ja (r k ), k = 1, 0,..., edellä olevan mukaisia polynomijonoja, jotka saadaan soveltaen Eukleideen algoritmia polynomeihin f ja g. Tällöin on olemassa sellainen yksikäsitteinen indeksi k {0,..., s} ja polynomi λ(x) F[x], että b(x) = λ(x)b k (x) ja r(x) = λ(x)r k (x). Todistus. Kongruenssin (18) nojalla syt(f, g) r, joten ν deg syt(f, g). Lemman 5.5.6 nojalla on olemassa sellainen yksikäsitteinen 0 k s, että deg b k µ, deg r k ν (ja deg r k 1 > ν). Lemman 5.5.5 d-kohdan mukaan r k = a k f + b k g. Kongruenssin (18) mukaan on olemassa polynomi a(x) F[x], jolle r = af + bg. Täten { r k b = a k bf + b k bg b k r = ab k f + bb k g eli r k b b k r = (a k b ab k )f. Tässä yhtälössä deg(r k b) = deg r k + deg b ν + µ < deg f deg(b k r) = deg b k + deg r µ + ν < deg f, ja joten r k b = b k r ja a k b = ab k. (19) Lemman 5.5.5 c-kohdan mukaan syt(a k, b k ) = 1, joten yhtälön (19) nojalla b k b eli b(x) = λ(x)b k (x) eräällä λ(x) F[x]. Sijoittamalla tämä yhtälöön (19) saadaan r(x) = λ(x)r k (x). Lause 5.5.8. Olkoot S(x), σ(x) ja ω(x) sellaisia nollasta eroavia polynomeja, että σ(x)s(x) ω(x) (mod x r ), σ(0) = 1, deg σ µ, deg ω ν, µ + ν = r 1 ja syt(σ, ω) = 1. Tällöin on olemassa sellainen yksikäsitteinen indeksi k, että sovellettaessa Eukleideen algoritmia polynomeihin x r ja S(x) saadaan deg r k ν, deg r k 1 > ν, σ(x) = b k (0) 1 b k (x), ω(x) = b k (0) 1 r k (x). 65

Todistus. Valitaan Lemmssa 5.5.7 f(x) = x r, g(x) = S(x), b(x) = σ(x) ja r(x) = ω(x). Lisäksi oletusten nojalla µ + ν = r 1 = deg x r 1. Lemman 5.5.7 nojalla on olemassa sellainen yksikäsitteinen k ja polynomi λ(x) F[x], että σ(x) = λ(x)b k (x), ω(x) = λ(x)r k (x). Koska syt(σ, ω) = 1, niin λ(x) = λ F. Lisäksi σ(0) = 1, joten 1 = λb k (0) ja λ = b k (0) 1. Lauseen 5.5.4 mukaisen avainehdon ratkaisut σ(x) ja ω(x), joille deg σ t ja deg ω t 1, saadaan suoraan Lauseesta 5.5.8 valitsemalla siinä r = 2t, µ = t ja ν = t 1. Esimerkki 5.5.9. Olkoon C 15-pituinen BCH-koodi, jonka suunniteltu etäisyys on d = 5 (jolloin t = 2). Käytetään kunnan F 16 primitiivialkiota α, jolle α 4 + α + 1 = 0. Koodin C nollakohdat ovat α, α 2, α 3 ja α 4, jotka vastaavat syklotomisia sivuluokkia C 1 = {1, 2, 4, 8} ja C 3 = {3, 6, 9, 12}. Generoijapolynomi on siis g(x) = pyj(m α (x), m α 3(x)) = m α (x) m α 3(x) = (x 4 + x + 1)(x 4 + x 3 + x 2 + x + 1) = x 8 + x 7 + x 6 + x 4 + 1. Matriisiksi Ĥ tulee nyt 1 α... α 14 Ĥ = 1 α 2... α 2 14 1 α 3... α 3 14 1 α 4... α 4 14 (yleisen alternanttikoodin merkinnöin nyt h i = α i = α i 1 ). Dekoodataan saatu sana u = 100010110011100. Sanaa u vastaava polynomi on u(x) = 1 + x 4 + x 6 + x 7 + x 10 + x 11 + x 12 ja syndromi uĥt = (u(α), u(α 2 ), u(α 3 ), u(α 4 )) = (α 4, α 8, α 12, α) = (S 0, S 1, S 2, S 3 ), joten syndromipolynomiksi tulee S(x) = α 4 + α 8 x + α 12 x 2 + αx 3. Avainehto on nyt σ(x)s(x) ω(x) (mod x 4 ), deg σ 2, deg ω 1 (2 + 1 = 3 = 4 1). Eukleideen algoritmi antaa x 4 = (α 14 x + α 10 )S(x) + α 14, 66

joten r 1 (x) = α 14 ja b 1 (x) = α 14 x + α 10. Koska deg r 1 1, Lauseessa 5.5.8 k = 1. Tällöin b 1 (0) 1 = (α 10 ) 1 = α 5 sekä σ(x) = α 5 b 1 (x) = α 4 x + 1 ja ω(x) = α 5 r 1 (x) = α 4. Polynomin σ nollakohtana on α 4, joten x 1 = α 4 = α 5 ja virhe on viidennessä komponentissa. Virhevektori on siten e = (000010... 0) eli virhepolynomi on x 4 (koodi on kunnan F 2 suhteen, joten virhearvo on 1). Lause 5.5.3 antaa virhearvoksi y 1 = x 1ω(x 1 1 ) h 5 σ (x 1 1 ) = α4 α4 α 4 α = 1, 4 kuten pitääkin. Dekoodattu sana on siis c = u e = 100000110011100. 5.6 Alternanttikoodin dekoodaus, kun esiintyy pyyhkyitymiä ja virheitä Joissakin tilanteissa vastaanotetun sanan kirjainta ei saa tulkittua millään tavalla. Tällöin kyseessä on pyyhkiytymä (erasure). Jos pyyhkiytymää merkitään symbolilla, niin tulostusaakkostona on F q { }. Intuitiivisesti ajateltuna pyyhkiytymiä voidaan korjata enemmän kuin virheitä, sillä kyseiset kohdat tiedetään varmasti vääriksi. Seuraava lause, jonka todistus sivuutetaan, antaa rajan virheenkorjauskyvylle pyyhkiytymien esiintyessä. Huomaa, että lauseessa voi olla e 0 + e 1 > d 1 2. Lause 5.6.1. Jos koodin C minimietäisyys on d, niin se korjaa e 0 pyyhkiytymää ja e 1 virhettä, kun e 0 + 2e 1 d 1. Esitetään seuraavaksi menettely, jolla saavutetaan tämän lauseen mukainen dekoodaus alternanttikoodeille missä Ĥ = A(α, h) = {c F n q cĥt = 0}, h 1 h 2... h n h 1 α 1 h 2 α 2... h n α n... h 1 α1 r 1 h 2 α2 r 1... h n αn r 1 h 1, h 2,..., h n Fq ja alkiot α 1, α m 2,..., α n Fq m ovat erisuuria. Oletetaan, että vastaanotetussa sanassa u = (u 1,..., u n ), u i F q { }, on e 0 pyyhkiytymää ja e 1 virhettä ja että e 0 + 2e 1 r. Määritellään lisäksi joukot r n I 0 = {i u i = }, Î 0 = {i I 0 c i 0}, I 1 = {i u i, u i c i }, I = I 0 I 1 ja Î = Î0 I 1., 67

Muodostetaan ensin pyyhkiytymänpaikantaja σ 0 (x) = i I 0 (1 α i x), Jos I 0 =, niin asetetaan σ 0 (x) = 1. Korvataan sanassa u pyyhkiytymät alkiolla 0, jolloin saadaan sana û = (û 1,..., û n ), missä { u i, kun u i, û i = 0, kun u i =. Sanassa û on mahdollisesti e 0 + e 1 virhettä (voi olla e 0 + e 1 > r ). Merkitään 2 û = c + ê ja lasketaan syndromit: S = ûĥt = cĥt + êĥt = êĥt = (S 0, S 1,..., S r 1 ). Olkoon lisäksi S(x) = r 1 l=0 S lx l. Jos ê = (ê 1,..., ê n ), niin ê i 0 kaikilla i Î ja ê i = 0 muulloin. Määritellään seuraavaksi vektoria û vastaava virhekohtapolynomi ˆσ(x) = i Î (1 α i x) ja virhearvopolynomi ˆω(x) = i Î ˆσ(x) h i ê i (1 α j x) = h i ê i 1 α i x. j Î\{i} i Î Kuten Lauseessa 5.5.4, nytkin saadaan syt(ˆσ, ˆω) = 1. Polynomi σ 1 (x) = i I 1 (1 α i x) on virheenpaikantaja ja σ 1 (x) ˆσ(x). Kuten Lauseessa 5.5.4, saadaan avainehto ˆσ(x)S(x) ˆω(x) (mod x r ). Kertomalla tämä puolittain tulolla (1 α i x) saadaan i I 0 \Î0 σ(x)s(x) ω(x) (mod x r ), (20) missä σ(x) = σ 0 (x)σ 1 (x) ja ω(x) = ˆω(x) i I 0 \Î0(1 α i x) = i Î σ(x) h i ê i 1 α i x = i I σ(x) h i ê i 1 α i x. Määritellään nyt muunnettu syndromipolynomi S 0 (x) asettamalla S 0 (x) σ 0 (x)s(x) (mod x r ), 68

jolloin yhtälöstä (20) saadaan σ 1 (x)s 0 (x) ω(x) (mod x r ). (21) Merkitään µ = r e 0 ja ν = r 1 µ, jolloin µ + ν = r 1 sekä 2 deg σ 1 = e 1 ja deg ω e 0 + e 1 1. Koska oletuksen mukaan e 0 + 2e 1 r, niin e 1 r e 0, joten e 2 1 µ. Lisäksi 2e 0 + 2e 1 r + e 0, joten e 0 + e 1 r + e 0 2 = r r e 0 2 r e0 r = r µ. 2 Täten deg ω r 1 µ = ν. Soveltamalla Eukleideen algoritmia Lauseen 5.5.8 mukaisesti polynomeihin x r ja S 0 (x) kunnes saadaan deg r k (x) ν ja deg r k 1 (x) > ν σ 1 (x) = b k (0) 1 b k (x) ja ω(x) = b k (0) 1 r k (x) (koska syt(ˆσ, ˆω) = 1, niin syt(σ 1, ω) = 1). Polynomin σ 1 (x) nollakohdista saadaan nyt joukko I 1 eli virheiden paikat. Tästä saadaan σ(x) = σ 0 (x)σ 1 (x) ja virheiden arvot saadaan Lauseen 5.5.3 tapaan jokaisella k I laskemalla ê k = α kω(α 1 k ) h k σ (α 1 k ). Huomaa, että ê k = 0, kun k I 0 \ Î0. Nämäkin on kuitenkin laskettava, sillä etukäteen ei tiedetä, minkä pyyhkiytymien paikalla pitäisi olla 0. Dekoodausalgoritmi on siis seuraavanlainen: 1. Määrätään I 0 ja σ 0 (x) = (1 α i x). i I 0 2. Määrätään û ja lasketaan ûĥt = (S 0,..., S r 1 ) ja S(x) = r 1 l=0 S l x l. 3. Lsketaan muunnettu syndromipolynomi S 0 (x) σ 0 (x)s(x) (mod x r ). 4. Ratkaistaan kongruenssista (21), eli σ 1 (x)s 0 (x) ω(x) (mod x r ), polynomit σ 1 (x) ja ω(x) Eukleideen algoritmin avulla (µ = r e 0, ν = r 1 µ). 2 5. Määrätään virhekohtien joukko I 1 polynomin σ 1 (x) nollakohdista ja lasketaan σ(x) = σ 0 (x)σ 1 (x). 69

6. Lasketaan jokaisella i I = I 1 I 0 virhearvot ê i = α iω(α 1 i ) h i σ (α 1 i ). 7. Lasketaan c = û ê. Esimerkki 5.6.2. Tarkastellaan [7, 2]-RS-koodia, jonka suunniteltu etäisyys on d = 6. Olkoon α kunnan F 8 primitiivialkio, jolle α 3 + α + 1 = 0. Tarkasteltavan koodin generoijapolynomi on tällöin g(x) = (x α)(x α 2 )(x α 3 )(x α 4 )(x α 5 ). Edellä olevan mukaan e 0 pyyhkiytymää ja e 1 virhettä saadaan korjattua, kun e 0 + 2e 1 5. Dekoodataan sana u = (α 4, α 3, α 6,, α 2, α 4, α 2 ). Yleisen alternanttikoodin merkinnöin nyt h i = α i = α i 1, joten 1 α... α 6 1 α 2... α 12 Ĥ =... 1 α 5... α 30 Edetään dekoodauksessa yllä kuvatulla tavalla. 70

6 Ryöppyvirheitä korjaavat koodit 6.1 Peruskäsitteitä Edellä on implisiittisesti oletettu, että virheet esiintyvät toisistaan riippumatta. Useissa tapauksissa virheet esiintyvät kuitenkin ryöppyinä (error burst) eivätkä toisistaan riippumattomina yksittäisinä virheinä. Tällöin on tarpeen tarkastella koodeja, jotka kykenevät korjaamaan tällaisia virheitä. Määritelmä 6.1.1. Vektoria (0,..., 0, e i,..., e i+b 1, 0,..., 0), missä e i 0, e i+b 1 0, sanotaan b-ryöpyksi tai b-pituiseksi ryöpyksi. Koodia, joka korjaa kaikki enintään b-pituiset ryöpyt, mutta ei kaikkia b + 1-pituisia, sanotaan b-ryöpyt korjaavaksi koodiksi. Lineaaristen koodien ryöppyvirheenkorjauskyvylle saadaan helposti seuraavat rajat. Lause 6.1.2 (Reiger-raja). a) Jos [n, k]-koodi paljastaa kaikki enintään b- pituiset ryöppyvirheet, niin n k b. b) Jos [n, k]-koodi korjaa kaikki enintään b-pituiset ryöppyvirheet, niin n k 2b. Todistus. a) Olkoon C [n, k]-koodi kunnan F q suhteen. Sellaisia joukon F n q vektoreita, joiden viimeiset n b komponenttia ovat 0, on q b kappaletta. Jos C paljastaa kaikki enintään b-pituiset ryöpyt, niin näiden vektorien on oltava eri sivuluokissa. Jos nimittäin a ja b ovat tällaisia vektoreita ja ovat samassa sivuluokassa, niin a b C, joten a b olisi enintään b-pituinen ryöppy eikä paljastuisi (koska se olisi koodisana). Siis sivuluokkien lukumäärä on q n k q b, joten n k b. b) Oletetaan koodin C korjaavan kaikki enintään b-pituiset ryöpyt. Jokainen enintään 2b-pituinen (ja vähintään 2-pituinen) ryöppy e voidaan esittää muodossa e = e 1 e 2, missä e 1 ja e 2 ovat enintään b-pituisia ryöppyjä. Jos e C, niin C ei pysty korjaamaan kaikkia enintään b-pituisia ryöppyjä, sillä 0+e 1 = e+e 2. Siis koodi havaitsee kaikki enintään 2b-pituiset ryöpyt, ja a-kohdan nojalla n k 2b. Sellaisia [n, k]-koodeja, joilla on voimassa yhtäsuuruus Reiger-rajassa, sanotaan Reiger-optimaalisiksi. Jos [n, k]-koodi korjaa kaikki enintään b-pituiset ryöppyvirheet, mutta ei korjaa kaikkia (b + 1)-pituisia, niin lukua 2b/(n k) sanotaan koodin ryöppykorjaussuhteeksi. 71

Seuraavassa taulukossa on eräitä Reiger-optimaalisia binäärisiä syklisiä koodeja, jotka on etsitty tietokoneella. Generoijapolynomin kertoimet on annettu oktaalimuodossa. b n k g(x) 2 7 3 35 3 15 9 171 4 15 7 721 19 11 1151 5 15 5 2467 27 17 2671 Määritelmä 6.1.3. Sykliseksi b-ryöpyksi sanotaan Määritelmän 6.1.1 mukaisia b-ryöppyjä ja muotoa (e 0,..., e b (n i) 1, 0,..., 0, e i,..., e n 1 ), missä e i e b (n i) 1 0, olevia ryöppyjä (tavallisen b-ryöpyn sykliset siirrot). Määritelmä 6.1.4. Sykliseksi b-ryöppyvirheet korjaavaksi koodiksi sanotaan syklistä koodia, joka korjaa kaikki enintään b-pituiset sykliset ryöpyt. Lause 6.1.5. Jos C on syklinen b-ryöppyvirheet korjaava [n, k]-koodi kunnan F q suhteen ja 1 k n 1, niin n(q 1) q n k b+1 1. Todistus. Lasketaan kuinka monta syklistä enintään b-pituista ryöppyvirhettä on: mahdollisia aloituskohtia on n kappaletta, alkupaikalle e i 0 on q 1 vaihtoehtoa ja muille b 1 paikalle on yhteensä q b 1 vaihtoehtoa. Yhteensä tällaisia ryöppyjä on siis n(q 1)q b 1 kappaletta (huomaa, että b < n ). Näillä 2 kaikilla ja nollavektorilla 0 tulee olla eri syndromi, joten q n k n(q 1)q b 1 + 1. Tämän perusteella q n k b+1 n(q 1) + 1. 6.2 RS-koodeista johdetut koodit Olkoon α kunnan F p m primitiivialkio. Tarkastellaan pituutta n = p m 1 olevaa RS-koodia, jonka generoijapolynomi on d 1 g(x) = (x α i ). i=1 72

Tämän koodin minimietäisyys on d ja n k = d 1, sillä RS-koodit ovat maksimietäisyyskoodeja. Jos {β 1,..., β m } on kunnan F p m kanta kunnan Z p suhteen, niin jokaisella β F p m on yksikäsitteinen esitys β = b 1 β 1 + + b m β m, b i Z p, ja saadaan vastaavuus β (b 1,..., b m ). Korvaamalla tämän vastaavuuden mukaisesti edellä olevan RS-koodin koodisanoissa jokainen komponentti m-pituisella Z p -kertoimisella vektorilla saadaan mn-pituinen lineaarinen koodi C kunnan Z p suhteen. Jos b (r 1)m + 1, niin b-pituinen ryöppyvirhe voi vaikuttaa enintään r:ään alkuperäisen koodin komponenttiin. Jos d = 2t+1 (alkuperäinen koodi on t virhettä korjaava) ja b (t 1)m + 1, niin kaikki enintään b-pituiset ryöppyvirheet voidaan korjata. 6.3 Tulokoodit Määritelmä 6.3.1. Matriisien A n1 m 1 ja B n2 m 2 Kronecker-tuloksi A B sanotaan matriisia, joka on lohkomuodossa a 11 B a 12 B... a 1m1 B a 21 B a 22 B... a 2m1 B.... a n1 1B a n1 2B... a n1 m 1 B (n 1 n 2 ) (m 1 m 2 ) Kronecker-tulolle pätevät seuraavat perusominaisuudet. Näiden todistaminen on harjoitustehtävänä 85. 1. Jos tulot AC ja BD ovat määriteltyjä, niin myös (A B)(C D) on määritelty ja (A B)(C D) = (AC) (BD). 2. (A B) T = A T B T. 3. Jos A + B on määritelty, niin (A + B) C = A C + B C ja C (A + B) = C A + C B. 4. c(a B) = (ca) B = A (cb) kaikilla c F. 73

A 1 5.. A n B = A 1 B.. A n B 6. Jos matriisin A rivit ovat lineaarisesti vapaat, samoin matriisin B rivit, niin myös matriisin A B rivit ovat lineaarisesti vapaat. Jokainen n 1 n 2 -pituinen vektori c voidaan kirjoittaa n 1 n 2 -matriisiksi C jakamalla c n 2 -pituisiin osiin ja kirjoittamalla ne allekkain. Määritelmä 6.3.2. Saman kunnan suhteen olevien [n i, k i ]-koodien C i, i = 1, 2, muodostamaksi tulokoodiksi sanotaan kaikkien niiden n 1 n 2 -pituisten vektorien c muodostamaa koodia, joita vastaavien n 1 n 2 -matriisien vaakarivit ovat koodin C 2 ja pystyrivit koodin C 1 koodisanoja. Tällaiselle tulokoodille käytetään merkintää C 1 C 2. Lause 6.3.3. Jos d min C 1 = d 1 ja d min C 2 = d 2, niin C 1 C 2 on lineaarinen koodi ja d min (C 1 C 2 ) = d 1 d 2. Todistus. Koodin C 1 C 2 lineaarisuus on selvä. Jos c 0 on koodin C 1 C 2 sana, niin vastaavan matriisin C jokaisen nollasta eroavan rivin paino on vähintään d min C 2 = d 2 ja näitä rivejä on ainakin d min C 1 = d 1 kappaletta. Siten wt(c) d 1 d 2 ja d min (C 1 C 2 ) d 1 d 2. Jos c 1 C 1, c 2 C 2 ja wt(c i ) = d i, niin c T 1 c 2 C 1 C 2 ja lisäksi wt(c T 1 c 2 ) = wt(c 1 ) wt(c 2 ) = d 1 d 2, joten d min (C 1 C 2 ) d 1 d 2. Lause 6.3.4. Jos G i on [n i, k i ]-koodin C i, i = 1, 2, generoijamatriisi, niin G 1 G 2 on tulokoodin C 1 C 2 generoijamatriisi. Todistus. Matriisin G 1 G 2 rivit ovat koodin C 1 C 2 koodisanoja, niitä on k 1 k 2 kappaletta ja ominaisuuden 6 nojalla ne ovat lineaarisesti vapaita. Jos c 1 = m 1 G 1 ja c 2 = m 2 G 2, niin ominaisuuden 1 nojalla (m 1 m 2 )(G 1 G 2 ) = (m 1 G 1 ) (m 2 G 2 ) = c 1 c 2, joten vektorit c 1 c 2 ovat matriisin G 1 G 2 rivien lineaariyhdisteitä. Lisäksi tulokoodin C 1 C 2 jokainen koodivektori c on lausuttavissa muotoa c 1 c 2 olevien vektoreiden lineaariyhdisteenä. Tässä ideana on tehdä sanaa c vastaavalle matriisille C hajotelma 0 c 11 0 c 21 C =. = c 22 0. + dt 1 c 11 = c 33 + d T 1 c 11 + d T 2 c 22. c n1,1 c n1,2 74 c n1,3

n 1 = = d T i c ii, i=1 missä d i C 1 ja c ii C 2 kaikilla i = 1,..., n 1. Olkoon H i [n i, k i ]-koodin C i, i = 1, 2, tarkistusmatriisi. Matriisi H 1 H 2 ei yleensä ole koodin C 1 C 2 tarkistusmatriisi, sillä sen rivien lukumäärä on (n 1 k 1 )(n 2 k 2 ) = n 1 n 2 k 1 n 2 k 2 n 1 + k 1 k 2 < n 1 n 2 k 1 k 2 ellei k 1 = k 2 = 0 tai k i = n i. Koodille C 1 C 2 saadaan tarkistusmatriisi seuraavasti (ks. harjoitustehtävä 86). Olkoot koodin C i, i = 1, 2, generoijaja tarkistusmatriisi sekä G 1 = [ I k1 P 1 ], G2 = [ I k2 P 2 ], H 1 = [ P T 1 I n1 k 1 ], H2 = [ P T 2 I n2 k 2 ] A 1 = [ I k1 0 k1 (n 1 k 1 )], A2 = [ I k2 0 k2 (n 2 k 2 )]. Tällöin koodin C 1 C 2 tarkistusmatriisi on H 1 H 2 H = H 1 A 2. A 1 H 2 Lause 6.3.5. Jos C 1 korjaa kaikki enintään b-pituiset ryöppyvirheet ja C 2 on n 2 -pituinen, niin tulokoodi C 1 C 2 korjaa kaikki enintään bn 2 -pituiset ryöppyvirheet. Todistus. Kun koodisana c kirjoitetaan n 1 n 2 -matriisiksi C, niin sen sarakkeet ovat koodin C 1 koodisanoja. Tällöin enintään bn 2 -pituinen ryöppyvirhe voi aiheuttaa enintään b-pituisen ryöppyvirheen kuhunkin sarakkeeseen, joten C 1 korjaa nämä ryöpyt. Edellisestä todistuksessa käy ilmi myös dekoodausmenettely. 6.4 Kiedotut koodit Määritelmä 6.4.1. Annetusta n-pituisesta koodista C muodostettu l-kertaisesti kiedottu koodi (interleaved to depth l) C (l) koostuu kaikista ln-pituisista koodisanoista, jotka saadaan seuraavasti: Otetaan l kappaletta koodin 75

C sanoja c i = c i1 c i2... c in, i = 1,..., l, ja muodostetaan niistä matriisi c 1 c 11 c 12... c 1n c 2. = c 21 c 22... c 2n.... c l c l1 c l2... c ln Tällöin koodin C (l) koodisana on sana, joka saadaan lukemalla ylläoleva matriisi pystyriveittäin eli sana c 11 c 21... c l1 c 12 c 22... c l2... c 1n c 2n... c ln. Jos C on [n, k]-koodi, niin C (l) on [ln, lk]-koodi. Polynomimuodossa yllä oleva koodisana on c 11 + c 21 x + + c l1 x l 1 + c 12 x l + c 22 x l+1 + + c l2 x 2l 1 + + c 1n x (n 1)l + c 2n x (n 1)l+1 + + c ln x nl 1 = (c 11 + c 12 x l + + c 1n x (n 1)l ) + x(c 21 + c 22 x l + + c 2n x (n 1)l ) + + x l 1 (c l1 + c l2 x l + + c ln x (n 1)l ) = c 1 (x l ) + xc 2 (x l ) + + x l 1 c l (x l ). Lause 6.4.2. Jos C korjaa kaikki enintään b-pituiset ryöppyvirheet, niin C (l) korjaa kaikki enintään lb-pituiset ryöppyvirheet. Todistus. Korkeintaan lb-pituinen ryöppyvirhe aiheuttaa enintään b-pituisen ryöppyvirheen sanaa vastaavan matriisin riveihin. Tämä on mahdollista korjata, koska C korjaa b-ryöpyt. Lause 6.4.3. Jos C on syklinen [n, k]-koodi, jonka generoijapolynomi on g(x) ja tarkistuspolynomi h(x) = (x n 1)/g(x), niin C (l) on syklinen [ln, lk]- koodi, jonka generoijapolynomi on g(x l ) ja tarkistuspolynomi h(x l ). Todistus. Pituus, dimensio ja lineaarisuus olivat edellä. Jos koodin C (l) sanaan c 1 c 11... c 1n. =.. c l c l1... c ln tehdään yhden askelen syklinen siirto, niin saadaan sana c c ln c l1 c l2... c l l,n 1 c 11 c 12 c 13... c 1n c 1.... = c 2,. c l 1,1 c l 1,2 c l 1,3... c l 1,n 76 c l 1

missä c tarkoittaa vektorin c yhden askelen syklistä siirtoa. Koska C on syklinen, niin edellä mainittu sana on koodin C (l) sana. Siten C (l) on syklinen. Koska g(x) (x n 1), niin g(x l ) (x ln 1). Olkoon m(x) viestisanana koodille C (l), jolloin m(x) = m 1 (x l ) + xm 2 (x l ) + + x l 1 m l (x l ) joillakin polynomeilla m i (x). Nämä voidaan tulkita viesteiksi koodille C, jolloin niitä vastaavat koodisanat c i (x) = m i (x)g(x), i = 1,..., l. Tällöin m(x)g(x l ) = m 1 (x l )g(x l ) + xm 2 (x l )g(x l ) + + x l 1 m l (x l )g(x l ) = c 1 (x l ) + xc 2 (x l ) + + x l 1 c l (x l ) C (l). Toisaalta koodin C (l) sanat ovat muotoa c 1 (x l ) + xc 2 (x l ) + + x l 1 c l (x l ), missä c i (x) C. Siten c i (x) = m i (x)g(x) joillakin viestipolynomeilla m i (x). Koodin C (l) jokainen sana on siis muotoa m 1 (x l )g(x l ) + xm 2 (x l )g(x l ) + + x l 1 m l (x l )g(x l ) = (m 1 (x l ) + xm 2 (x l ) + + x l 1 m l (x l ))g(x l ) g(x l ). Täten koodin C (l) sanat ovat täsmälleen sanat m(x)g(x l ), ja g(x l ) on generoijapolynomi. Tarkistuspolynomi on siten (x ln 1)/g(x l ) = h(x l ). Koodin C (l) dimensiota koskeva väite saataisiin myös tästä. Kietomista voidaan tehostaa ristiinkietomisella (cross-interleaving), jossa yhdistetään kaksi koodia C 1 ja C 2. Olkoon C i [n i, k i ]-koodi, i = 1, 2. Otetaan k 2 kappaletta koodin C 1 sanoja: c 11 c 12... c 1n1. c k2 1c k2 2... c k2 n 1. Sen sijaan, että lähetettäisiin näitä sanoja vastaavan matriisin sarakkeet [c 1j,..., c k1 j] T sellaisenaan kuten (tavallisessa) kietomisessa, tulkitaan nämä viestisanoiksi koodille C 2. Näin saadaan koodin C 2 sanat d 11 d 12... d 1n2,..., d n1 1d n1 2... d n1 n 2. Nämä voidaan nyt kietoa niin moninkertaisesti kuin halutaan. Tässä koodia C 1 kutsutaan sisäkoodiksi ja koodia C 2 ulkokoodiksi. 77

7 Koodijonot hajaspektritekniikassa 7.1 Monen käyttäjän kanavat Olkoot n ja N luonnollisia lukuja ja K kanava, joka hyväksyy syötteeksi kokonaisluvut väliltä [ N, N]. Olkoon edelleen E binääriaakkosto {1, 1} Z. Oletetaan, että kanavalla K on N käyttäjää U 1, U 2,..., U N. Kullakin hetkellä käyttäjä U i lähettää viestin m i { 1, 0, 1}, missä m i = 0 tarkoittaa, että U i ei lähetä mitään. Kanavan läpi lähetetään summa s = m 1 +m 2 + +m N ja vastaanottajan epäkiitollisena tehtävänä on löytää luvut m 1, m 2,..., m N. Tämän mahdollistamiseksi kullekin käyttäjälle U i valitaan n-pituinen vektori u i E n. Käyttäjä U i koodaa viestinsä m i vektoriksi u i, jos m i = 1, m i u i = 0, jos m i = 0, u i, jos m i = 1. Kanavaan lähetetään avaruudessa R n laskettu summa s = m 1 u 1 + m 2 u 2 + +m N u N. Vastaanottaja laskee luvut m i = (s u i )/n, missä u v tarkoittaa avaruuden R n normaalia (euklidista) sisätuloa. Koska u k u k = n kaikilla k, niin nm i = s u i = m 1 u 1 u i + m 2 u 2 u i + + m N u N u i N = nm i + m k u k u i. k=1 k i Vastaanottaja pystyy tunnistamaan viestin m i, jos N k=1 k i m k u k u i < n 2. Tämä ehto toteutuu, jos tulot m k u k u i, k i, ovat pieniä eli, jos m k = 0 (ts. U k ei ole kanavalla) tai itseisarvot u k u i ovat pieniä. On siis tarpeellista löytää riittävän laajoja joukkoja C = {u 1, u 2,..., u N } E n, joille u i u k θ, kun i k, missä θ n on annettu vakio. Parametrin θ pienillä arvoilla kanavalla voi olla samanaikaisesti useita eri käyttäjiä. Vektoreina u i voidaan käyttää riittävän suuren Hadamardin matriisin rivejä (ks. luku 8). 78

Käytännössä tilanne ei kuitenkaan ole yllä kuvatun yksinkertainen, koska vektorit m i u i eivät useinkaan ole samassa vaiheessa, vaan tilanne on seuraavan kaltainen: U 1... 1 1 1 1...... u 1 u 1 u 1 u 1... U 2... 1 1 1 1...... u 2 u 2 u 2 u 2... Tällöin kanavassa kulkeekin summan s tilalla summa u = m 1 T t1 (u 1 ) + m 2 T t2 (u 2 ) + + m N T tn (u N ), missä vektori T t (x) on joko vektorin x = x 1 x 2... x n t askelen syklinen siirto tai t askelen negasyklinen siirto S t (x) = x n t+1,..., x n, x 1,..., x n t N t (x) = x n t+1,..., x n, x 1,..., x n t. Tällöin onkin etsittävä riittävän laajoja joukkoja C = {u 1,..., u N }, joille luvut S t (u i ) u j ja N t (u i ) u j, missä t = 0, 1,..., n 1, i, j = 1,..., N ja t 0, jos i = j, ovat pieniä. Useille joukoille lausekkeita S t (u i ) u j varten on olemassa hyviä teoreettisia tarkastelumenetelmiä, sen sijaan lausekkeiden N t (u i ) u j teoreettinen arviointi on ongelmallista. Käytännössä tarvittavat joukot konstruoidaan kahdessa vaiheessa: 1. Konstruoidaan analyyttisin menetelmin joukkoja {u 1,..., u N }, joille lausekkeet S t (u i ) u j ovat pieniä. 2. Testataan lausekkeiden N t (u i ) u j suuruutta numeerisin menetelmin. 7.2 Korrelaatioista Määritelmä 7.2.1. Avaruuden E n vektoreiden x = (x 0, x 1,..., x n 1 ) ja y = (y 0, y 1,..., y n 1 ) ristikorrelaatioksi kutsutaan lukua C x,y (t) := x S t (y) = i Zn x i y i+t, missä t Z + ja indeksit lasketaan modulo n. Ristikorrelaatiota C x (t) := C x,x (t) = x S t (x) = i Zn x i x i+t sanotaan vektorin x autokorrelaatioksi. 79

Määritelmä 7.2.2. Kun n N ja θ R, 0 θ < n, niin merkinnällä M(n, θ) tarkoitetaan suurinta sellaisen joukon A E n kertalukua, jolle a) C x,y (t) θ kaikilla t = 0, 1,..., n 1, x, y A ja x y b) C x (t) θ kaikilla t = 1, 2,..., n 1 ja x A. Lukua M(n, θ) voidaan arvioida käyttämällä hyväksi tunnettuja arvioita luvulle m(n, θ), joka määritellään seuraavasti: m(n, θ) on suurin sellaisten joukkojen A E n kertaluvuista, joille a b θ kaikilla a, b A ja a b. Lause 7.2.3. M(n, θ) m(n, θ)/n. Todistus. Oletetaan, että A toteuttaa ehdot a) ja b) ja A = M(n, θ). Tällöin A = {S t (x) x A, t = 0, 1,..., n 1} on kertalukua n A ja ehtojen a) ja b) nojalla a b θ kaikilla a, b A ja a b. Tästä seuraa, että nm(n, θ) = n A m(n, θ). 7.3 Additiivinen karakteeri Olkoon F = F q, q = p k, ja K = F q m. Määritelmän 4.7.1 mukaan alkion x K jälki kunnan F suhteen on Tr(x) = Tr K F (x) = m 1 i=0 x qi = x + x q + x q2 + + x qm 1. Lauseessa 4.7.2 osoitettiin eräitä jäljen perusominaisuuksia. Seuraavassa käytetään absoluuttista jälkeä eli jälkeä Tr F Z p (x) = x + x p + + x pk 1. Olkoon lisäksi ζ = ζ p = e 2πi/p C kompleksinen primitiivinen p:s ykkösen juuri. Määritelmä 7.3.1. Kuvausta χ: F q C, χ(a) = ζ Tr(a), missä ζ = e 2πi/p, sanotaan kunnan F q (kanoniseksi) additiiviseksi karakteeriksi. Additiivisen karakteerin nimitys johtuu siitä, että χ(a + b) = ζ Tr(a+b) = ζ Tr(a)+Tr(b) = χ(a)χ(b) kaikilla a, b F q. (22) Täten χ on ryhmähomomorfismi kunnan F q additiiviselta ryhmältä kompleksitason yksikköympyrälle (jossa operaationa on kertolasku). Jos p = 2, niin ζ = 1. Tällöin kaikilla a F 2 m { χ(a) = ( 1) Tr(a) 1, jos Tr(a) = 0, = 1, jos Tr(a) = 1. 80

Lause 7.3.2. Jos χ on kunnan F q kanoninen additiivinen karakteeri ja a F q, niin { q, jos a = 0, χ(ax) = x F q 0, jos a 0. Todistus. Koska Tr(0) = 0, niin väite pätee tapauksessa a = 0. Kun a 0 niin kuvaus F q F q, x ax on bijektio. Koska jälki on surjektio (ks. Lause 4.7.2 b), niin on olemassa sellainen b F q, että Tr(ab) = 1. Tällöin χ(ab) = ζ 1 = ζ 1. Kun x käy läpi kunnan F q alkiot, samoin käy b + x, joten käyttämällä yhtälöä (22) saadaan S := x Fq χ(ax) = x Fq χ(a(x + b)) = x Fq χ(ax)χ(ab) = ζ x Fq χ(ax) = ζs. Koska ζ 1, niin S = 0. 7.4 Goldin jonoista Konstruoidaan nyt edellä esitettyjen tulosten avulla jonoja, joilla on hajaspektritekniikassa tarvittavat ominaisuudet. Lause 7.4.1. Olkoon m 3 pariton kokonaisluku ja q = 2 m. Olkoon χ kunnan F q additiivinen karakteeri ja d = 2 e + 1, missä e Z +, e < m ja syt(e, m) = 1. Olkoon S(β, γ) = x Fq χ(βx d + γx) kaikilla β, γ F q. Jos β 0 tai γ 0, niin S(β, γ) 2q. Todistus. Jos β = 0, niin Lauseen 7.3.2 mukaan S(0, γ) = 0. Oletetaan nyt, että β 0. Tällöin S(β, γ) 2 = χ(βx d + γx) χ(βy d + γy) x Fq y Fq = χ(βx d + γx)χ(βy d + γy) x Fq y F q = χ(β(x d + y d ) + γ(x + y)). x Fq y F q 81

Merkitään z = x + y, jolloin y d = (z x) d = (x + z) 2e +1 = (x + z)(x 2e + z 2e ) = x d + x d 1 z + z d 1 x + z d ja S(β, γ) 2 = χ(βx d 1 z + βxz d 1 + βz d + γz). x Fq y F q Lauseen 4.7.2 d-kohdan mukaan χ(a 2 ) = χ(a) kaikilla a F q. Täten χ(a d 1 ) = χ(a 2e ) = χ(a), χ(βxz d 1 ) = χ(β d 1 x d 1 z (d 1)2 ), χ(βx d 1 z + βxz d 1 + βz d + γz) = χ(βz d + γz)χ(βx d 1 z)χ(βxz d 1 ) = χ(βz d + γz)χ(βz(β d 2 z d(d 2) + 1)x d 1 ). Siis S(β, γ) 2 = z Fq χ(βz d + γz) x Fq χ(βz(β d 2 z d(d 2) + 1)x d 1 ). Kun x käy läpi kunnan F q alkiot, samoin käy myös x d 1 = x 2e. Siten Lauseen 7.3.2 nojalla yllä sisäsumma on q = 2 m, kun βz(β d 2 z d(d 2) + 1) = 0, ja 0 muulloin. Nyt χ(βz d + γz) = 1, joten edellä olevan ja kolmioepäyhtälön mukaan S(β, γ) 2 (N + 1)q, missä N on polynomin β d 2 z d(d 2) + 1 nollakohtien lukumäärä kunnassa F q. Riittää enää osoittaa, että N 1. Olkoon α kunnan F q primitiivialkio ja olkoot α k ja α h, 0 h < k q 2, polynomin β d 2 z d(d 2) + 1 kaksi eri nollakohtaa. Tällöin joten β d 2 α kd(d 2) + 1 = 0 ja β d 2 α hd(d 2) + 1 = 0, Tämä on mahdollista vain, jos α kd(d 2) = α hd(d 2) α (k h)d(d 2) = 1. (q 1) (k h)d(d 2) (2 m 1) (k h)(2 2e 1). Koska syt(e, m) = 1 ja m on pariton, niin syt(2e, m) = 1. Harjoitustehtävän 28 (ks. myös tehtävä 96) nojalla syt(2 m 1, 2 2e 1) = 1, joten on oltava (2 m 1) (k h), eli (q 1) (k h). Tämä on ristiriita, joten N 1 ja S(β, γ) 2 2q. 82

Määritelmä 7.4.2. Olkoon n = 2 m 1 ja d = 2 e +1, missä m, e Z +, m on pariton, e < m ja syt(e, m) = 1. Olkoon χ kunnan F 2 m = F n+1 additiivinen karakteeri ja α kunnan F 2 m primitiivialkio. Alkion β F q määräämäksi Goldin (m, e)-jonoksi sanotaan joukon { 1, 1} n vektoria (x 0, x 1,..., x n 1 ), missä x i = χ(βα di + α i ). Lause 7.4.3. Olkoot x = (x 0, x 1,..., x n 1 ) ja y = (y 0, y 1,..., y n 1 ) alkioiden β ja γ määräämät (n-pituiset) Goldin (m, e)-jonot, missä n = 2 m 1. Tällöin kaikilla t = 1, 2,..., n 1 ja tapauksessa β γ myös arvolla t = 0 pätee C x,y (t) 1 + 2(n + 1) = 1 + 2 m+1. Todistus. Ristikorrelaation C x,y (t) määritelmän mukaan (merkinnät kuten edellä) C x,y (t) = i Zn x i y i+t = i Zn χ(βα di + α i )χ(γα d(i+t) + α i+t ) = i Zn χ((β + γα dt )α di + (1 + α t )α i ) = 1 + x F 2 m χ((β + γα dt )x d + (1 + α t )x) = 1 + S(β + γα dt, α t + 1). Jos 1 t n 1, niin α t +1 0. Jos β γ ja t = 0, niin β+γα 0 = β+γ 0. Lauseen 7.4.1 nojalla C x,y (t) 1 + 2 2 m = 1 + 2(n + 1). 83

8 Hadamardin matriisit ja koodit Tähän mennessä käsitellyt koodit ovat olleet lineaarisia. Kappaleessa 8.2 esiteltävät Hadamardin koodit ovat esimerkkejä epälineaarisista koodeista. Ne toteuttavat lisäksi eräitä koodirajoja ja ovat siten tietyssä mielessä parhaita mahdollisia. 8.1 Hadamardin matriisit Tarkastellaan aluksi lyhyesti Hadamardin matriiseja, joiden avulla Hadamardin koodeja konstruoidaan. Määritelmä 8.1.1. n-riviseksi Hadamardin matriisiksi sanotaan sellaista pelkästään kokonaisluvuista 1 ja 1 koostuvaa n n-matriisia H, jolle HH T = ni. (23) Hadamardin matriisin H kahden eri rivin sisätulo on 0 ja jokaisen rivin sisätulo itsensä kanssa on n. Täten kertoimella 1 n skaalatut rivit ovat ortonormaalit. Yhtälön (23) mukaan H 1 = 1 n HT, joten Hadamardin matriisit ovat kääntyviä. Kertomalla yhtälö (23) vasemmalta matriisin H käänteismatriisilla ja oikealta matriisilla H saadaan H T H = ni. Matriisin H sarakkeilla on täten samat ominaisuudet kuin sen riveillä. Jos matriisin H jokin rivi tai sarake kerrotaan luvulla 1, on kahden eri rivin tai sarakkeen sisätulo edelleen nolla ja samoin jokaisen rivin tai sarakkeen sisätulo itsensä kanssa on n, joten myös näin saadaan Hadamardin matriisi. Näin H voidaan muuntaa sellaiseksi, että sen ensimmäisen rivin ja ensimmäisen sarakkeen jokainen alkio on 1. Tällaista Hadamardin matriisia sanotaan normalisoiduksi. Samoin nähdään, että rivien tai sarakkeiden permutoinnin jälkeenkin Hadamardin matriisi säilyy Hadamardin matriisina. Se, mitä rivilukua n olevia H-matriiseja on olemassa, on osittain avoin. Seuraavassa osoitetaan, että jokaisen H-matriisin riviluku on 1, 2 tai luvun 4 monikerta, mutta edelleen on avoimena kysymys siitä, löytyykö n-rivistä Hadamardin matriisia kaikilla n = 4k, k = 1, 2,... Pienin 4k, jota vastaavaa Hadamardin matriisia ei ole löydetty, on 4 167 = 668. Huomaa, että 1- ja 2-rivinen Hadamardin matriisi löytyy: H 1 = [1], H 2 = [ 1 1 1 1 ]. 84

Lause 8.1.2. Jos on olemassa n-rivinen Hadamardin matriisi, niin n = 1, 2 tai luvun 4 monikerta. Todistus. Voidaan olettaa, että n 3. Olkoon H normalisoidussa muodossa oleva n-rivinen Hadamardin matriisi. Permutoimalla sarakkeita sopivasti kolmeksi ensimmäiseksi riviksi saadaan 1... 1 1... 1 1 }... {{ 1 } i kpl 1... 1 1... 1 1 }... {{ 1 } j kpl 1... 1 1... 1 1 }... {{ 1 } k kpl 1... 1 1... 1 1 }... {{ 1 } l kpl Laskemalla näiden rivien välisiä pistetuloja saadaan seuraavat yhtälöt: (rivi 1) (rivi 2) = 0 = i + j k l = 0, (24) (rivi 1) (rivi 3) = 0 = i j + k l = 0, (25) (rivi 2) (rivi 3) = 0 = i j k + l = 0. (26) Laskemalla yhtälöt (24) ja (25) yhteen saadaan i = l. Vastaavasti yhtälöistä (25) ja (26) saadaan i = j sekä yhtälöistä (24) ja (26) i = k. Lisäksi i + j + k + l = n, joten n = 4i. Tarkastellaan nyt kahta menetelmää Hadamardin matriisien konstruoimiseksi. Ensimmäinen menetelmä nojaa siihen huomioon, että jos H n on n-rivinen Hadamardin matriisi, niin [ ] Hn H H = n H n H n on 2n-rivinen Hadamardin matriisi: [ ] [ HH T Hn H = n H T n Hn T H n H n Hn T [ ] 2nIn 0 = n n = 2nI 0 n n 2nI 2n. n H T n ] [ ] 2Hn Hn = T 0 n n 0 n n 2H n Hn T Lähtemällä liikkeelle matriisista H 1 = [1] saadaan aikaan n-rivinen Hadamardin matriisi aina, kun n = 2 i, i = 0, 1,...: [ ] 1 1 1 1 1 1 H 2 =, H 1 1 4 = 1 1 1 1 1 1 1 1, jne. 1 1 1 1 85

Toinen tapa konstruoida Hadamardin matriiseja on hyödyntää äärellisen kunnan neliöiden jakautumista. Olkoon q parittoman alkuluvun potenssi. Jos α on kunnan F q primitiivialkio, niin alkion β Fq esitysmuodossa β = α i olevaa eksponenttia i {0,..., q 2} sanotaan alkion β α-kantaiseksi indeksiksi ja merkitään i = ind α β = ind β. Määritellään kunnan F q Legendren symboli ψ seuraavasti: { 0, jos a = 0, ψ(a) = ( 1) ind a, jos a 0. Täten ψ(a) = 1, jos a 0 on neliö, ja ψ(a) = 1, jos a 0 on epäneliö. Legendren symboli ψ on myös multiplikatiivinen karakteeri, sillä ψ(x)ψ(y) = ( 1) ind x+ind y = ( 1) ind xy = ψ(xy) kaikilla x, y F q. Koska ( 1) 2 = 1, niin 1 = α q 1 2 ja ψ( 1) = ( 1) q 1 2 eli ψ( 1) = { 1, jos q = 4k + 1, 1, jos q = 4k 1. (27) Lause 8.1.3. Jos c 0, niin Todistus. Koska ψ(0) = 0, niin b F q ψ(b)ψ(b + c) = b F q ψ(b)ψ(b + c) = 1. ( b + c ) ψ(b 2 )ψ b b F q = b F q ( b + c ψ b Koska c 0, niin b+c 1. Jos b+c = d+c, niin db + dc = bd + bc, joten dc = bc b b d eli d = b. Siten b+c käy läpi joukon F b q \ {1} alkiot, kun b käy läpi joukon Fq alkiot. Täten ψ(b)ψ(b + c) = ψ(z) = 1, b F q ). z F q\{1} sillä joukossa Fq on neliöitä ja epäneliöitä yhtä monta ja ylläolevassa summassa on mukana jokainen epäneliö ja alkiota 1 lukuunottamatta jokainen neliö. Näiden tulosten avulla voidaan esittää Paleyn konstruktio Hadamardin matriisien konstruoimiseksi. Tämä menetelmä on käyttökelpoinen, kun n (= 4i) on muotoa n = q + 1, missä q on parittoman alkuluvun potenssi. 86

Olkoon F q = {a 0, a 1,..., a q 1 }, missä a 0 = 0 ja a 1 = 1. Muodostetaan Jacobstahlin matriisi P = [p ij ] q q määrittelemällä p ij = ψ(a j a i ). Nyt q on muotoa 4k 1, joten yhtälön (27) nojalla ψ( 1) = 1. Täten p ij = ψ(a j a i ) = ψ( 1)ψ(a i a j ) = ψ(a i a j ) = p ji, ja P on vinosymmetrinen eli P T = P. Lause 8.1.4. Olkoon J sellainen q q-matriisi, jonka jokainen alkio on 1. Tällöin P J = JP = 0 ja P P T = qi q J. Todistus. Matriisin P kullakin rivillä ja sarakkeella esiintyy jokainen ψ(a), a F q. Täten jokaisella rivillä ja sarakkeella on yksi 0 ja q 1 kappaletta sekä 2 alkiota 1 että alkiota 1. Täten P J = JP = 0. Olkoon P P T = [r ij ] q q, jolloin q 1 q 1 r ij = p ik p jk = ψ(a k a i )ψ(a k a j ). k=0 k=0 Kun i = j, niin r ij = q 1 k=0 ψ(a k a i ) 2 = q 1. Kun i j, merkitään b = a k a i, jolloin a k a j = a k a i + a i a j = b + c, missä c = a i a j 0 ei riipu indeksistä k. Lauseen 8.1.3 mukaan r ij = b F q ψ(b)ψ(b + c) = 1. Olkoon [ ] 1 1 H = 1 T, P I q missä 1 on q-pituinen vektori, jonka jokainen koordinaatti on 1. Tällöin [ ] [ ] 1 1 1 1 HH T = 1 T P I q 1 T P T I q [ ] q + 1 1 + 1(P = T I q ) 1 T + (P I q )1 T 1 T 1 + (P I q )(P T I q ) [ ] q + 1 0 = 0 T J + P P T P P T + I q [ ] q + 1 0 = 0 T qi q + I q = (q + 1)I q+1. Täten H on Hadamardin matriisi. Näin konstruoitua normalisoitua Hadamardin matriisia H sanotaan Paley-tyyppiseksi Hadamardin matriisiksi. 87

Esimerkki 8.1.5. Olkoon q = 3, jolloin F 3 = {0, 1, 2} = {a 0, a 1, a 2 }. Tällöin ψ(0) = 0, ψ(1) = 1, ψ(2) = 1 ja ψ(a 0 a 0 ) ψ(a 1 a 0 ) ψ(a 2 a 0 ) ψ(0) ψ(1) ψ(2) P = ψ(a 0 a 1 ) ψ(a 1 a 1 ) ψ(a 2 a 1 ) = ψ(2) ψ(0) ψ(1) ψ(a 0 a 2 ) ψ(a 1 a 2 ) ψ(a 2 a 2 ) ψ(1) ψ(2) ψ(0) 0 1 1 = 1 0 1. 1 1 0 Kun q = 7, niin kunnan F q = F 7 neliöt ovat 1, 2 ja 4 sekä epäneliöt 3, 5 ja 6. Siten ψ(0) ψ(1) ψ(2) ψ(3) ψ(4) ψ(5) ψ(6) ψ(6) ψ(0) ψ(1) ψ(2) ψ(3) ψ(4) ψ(5) P =....... ψ(1) ψ(2) ψ(3) ψ(4) ψ(5) ψ(6) ψ(0) 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 = 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 Olkoon q = 9 ja α kunnan F 9 primitiivialkio, jolle α 2 + α 1 = 0. Tällöin F 9 = {a 0, a 1,..., a 8 } = { 0, 1, 2, α, 1 + α, 2 + α, 2α, 1 + 2α, 2 + 2α } = { 0, α 0, α 4, α 1, α 7, α 6, α 5, α 2, α 3 }. Kunnan F 9 neliöt ovat {1, α 2, α 4, α 6 } ja epäneliöt {α, α 3, α 5, α 7 }, joten 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 P = 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 88

Vastaavat Hadamardin matriisit ovat 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 H 4 = 1 1 1 1 1 1 1 1, H 8 = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1. 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Viimeinen tapaus ei anna Hadamardin matriisia, sillä q + 1 = 9 + 1 = 10 ei ole jaollinen luvulla 4. 8.2 Hadamardin koodit Seuraavassa (n, M, d)-koodilla tarkoitetaan, kuten luvussa 1, n-pituista koodia, jonka koodisanojen lukumäärä on M ja minimietäisyys d. Esimerkiksi (lineaarinen) [n, k, d]-koodi kunnan F q suhteen on edellä mainittua merkintää käyttäen (n, q k, d)-koodi. Koodausteorian keskeisimpiä ongelmia on kolmannen parametrin optimaalinen löytäminen, kun kaksi muuta on annettu. Hadamardin koodeista saadaan tässä mielessä hyviä koodeja. Olkoon H n n-rivinen normalisoitu Hadamardin matriisi. Jos luvun 1 tilalle kirjoitetaan 0 ja luvun 1 tilalle 1, saadaan binäärinen Hadamardin matriisi A n. Koska matriisin H n rivit ovat ortogonaaleja, niin matriisin A n jokaisen kahden eri rivin Hamming-etäisyys on n 2. Matriisista A n saadaan kolme Hadamardin koodia seuraavasti: 1. Poistetaan matriisin A n ensimmäinen sarake, jolloin saadaan riveistä muodostuva (n 1, n, n/2)-koodi A n. 2. Lisätään koodiin A n sanoiksi matriisin A n edellä olevaan tapaan lyhennettyjen rivien komplementit. Näin saadaan (n 1, 2n, n/2 1)-koodi B n. 3. Otetaan koodisanoiksi matriisin A n rivit ja niiden komplementit, jolloin muodostuu (n, 2n, n/2)-koodi C n. Esimerkki 8.2.1. Käyttämällä Esimerkissä 8.1.5 saatua Paley-tyyppistä 4-89

ja 8-rivistä Hadamardin matriisia saadaan matriiseista 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 1 1 0 0 1 0 1 A 4 = 0 1 0 1 0 1 1 0 ja A 8 = 0 1 1 1 0 0 1 0 0 0 1 1 1 0 0 1 0 0 1 1 0 1 0 1 1 1 0 0 0 0 1 0 1 1 1 0 0 0 0 1 0 1 1 1 koodit 0 0 0 1 0 1 0 0 0 1 1 0 A 4 = 1 0 1 1 1 0, B 4 = 0 1 1 1 1 1, 0 1 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 1 1 0 0 1 0 1 A 8 = 1 1 1 0 0 1 0 0 1 1 1 0 0 1, 1 0 1 1 1 0 0 0 1 0 1 1 1 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 1 0 0 1 0 1 1 1 1 0 0 1 0 1 1 1 1 0 0 1 0 0 1 1 1 0 0 1 1 0 1 1 1 0 0 0 1 0 1 1 1 0 B 8 = 0 0 1 0 1 1 1 1 1 1 1 1 1 1. 0 1 1 0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 1 1 0 0 0 1 1 0 0 1 0 0 0 1 1 1 0 1 0 0 0 1 1 1 0 1 0 0 0 Hadamardin koodit eivät yleensä ole lineaarisia. Ne ovat kombinatorisesti parhaita siinä mielessä, että niiden avulla voidaan muodostaa koodeja, joille pätee yhtäsuuruus Plotkin-rajassa (ks. harjoitustehtävä 92). Tämän ns. Levenšteinin lauseen (ks. harjoitustehtävä 93) todistuksessa voidaan käyttää hyväksi seuraavia konstruktioita: 1. Koodin A n nollalla alkavat koodisanat muodostavat (n 2, n/2, n/2)- koodin A n, jos niiden ensimmäinen kirjain poistetaan. 2. Olkoon C i (n i, M i, d i )-koodi, i = 1, 2. Esitetään koodi C i edellä olevaan tapaan matriisina laittamalla sen sanat matriisin vaakariveiksi. Asetetaan a kappaletta koodeja C 1 vierekkäin ja sen jälkeen b kappaletta koodeja C 2. 90

Poistetaan M 2 M 1 koodin C 2 viimeistä riviä, jos M 1 < M 2, ja M 1 M 2 koodin C 1 viimeistä riviä, jos M 1 > M 2. Näin saadaan (n, M, d)-koodi, missä n = an 1 + bn 2, M = min{m 1, M 2 } ja d ad 1 + bd 2. Tälle koodille käytetään merkintää ac 1 bc 2. Esimerkiksi Koodeista 0 0 0 C 1 = 1 1 0 1 1 1 1 1 0 1 ja C 2 = 0 1 1 0 1 0 0 1 0 1 1 saadaan koodi 0 0 0 0 0 0 1 1 1 1 2C 1 1C 2 = 1 1 0 1 1 0 0 1 1 0. 1 0 1 1 0 1 1 0 0 1 91

9 Koodirajoista 9.1 Peruskäsitteitä Olkoon F aakkosto, jonka kertaluku on q. Kuten johdannossakin, (n, K, d)- koodilla tarkoitetaan n-pituista koodia, jonka kertaluku on K ja minimietäisyys d. Seuraavassa tarkastellaan kertaluvun K ylärajoja, kun n ja d on kiinnitetty, sekä minietäisyyden d ylärajoja, kun n ja K on kiinnitetty. Määritellään tätä varten suureet m(n, d) = m q (n, d) = max{k on olemassa (n, K, d)-koodi} d(n, K) = d q (n, K) = max{d on olemassa (n, K, d)-koodi}. ja Jos a F n, olkoot B(a, r) = {x F n d(x, a) r} S(a, r) = {x F n d(x, a) = r} ja a-keskinen r-säteinen pallo ja sen pinta. Olkoon lisäksi B r (n) pallon B(a, e) alkioiden lukumäärä ja S r (n) sen pinnan alkioiden lukumäärä, jolloin ( ) n r ( ) n S r (n) = (q 1) r ja B r (n) = (q 1) k. r k Jos (n, K, d)-koodin jokaisesta koodisanasta poistetaan ennalta valitut d 1 komponenttia saadaan (n d + 1, K, 1)-koodi. Siten K q n d+1 ja saadaan Singleton-raja m(n, d) q n d+1. Olkoon C (n, K, d)-koodi ja r = d 1. Tällöin koodisanakeskiset r-säteiset 2 pallot ovat erilliset, joten q n = F n c C k=0 B(c, r) = c C B(c, r) = C B r (n) = K B r (n). Siten K qn B r (n) ja saadaan Hamming-raja eli pallopakkausraja m(n, d) qn B r (n). Koodin C informaatiosuhde R on R = 1 n log q K, joten K = q Rn. Näin saadaan Hamming-rajalle yhtäpitävä muoto B r (n) q (1 R)n. 92

9.2 Plotkin-raja Seuraavassa esitettävä Plotkin-raja perustuu koodisanojen keskimääräisen etäisyyden arvioimiseen. Avaruuden F n osajoukon X kokonaisetäisyys d tot x määritellään yhtälöllä d tot X = d(a, b) a X ja keskietäisyys yhtälöllä d av X = b X d tot X X ( X 1). (28) Koska tällöin keskietäisyys on joukon X eri sanojen etäisyyksien keskiarvo, niin d min X d av X. Lemma 9.2.1. Jos x 1, x 2,..., x n ovat reaalilukuja, niin n x 2 i 1 ( n ) 2. x i n i=1 Yhtäsuuruus pätee täsmälleen silloin, kun kuvut x i ovat yhtäsuuria. Todistus. Harjoitustehtävä 97. Kiinnitetään aakkoston F alkioiden numerointi: α 1, α 2,..., α q. Kun X F n, määritellään x ij joukon X niiden alkioiden lukumääräksi, joiden i:s komponentti on α j. Tällöin i=1 q x ij = X kaikilla i = 1,..., n. j=1 Lemma 9.2.2. Jos X F n, niin d tot X = n X 2 n q i=1 j=1 x 2 ij. 93

Todistus. d tot X = = = n {(a, b) X 2 a i b i } i=1 n i=1 n q {(a, b) X 2 a i = α j b i } j=1 i=1 j=1 = n X 2 q x ij ( X x ij ) = X n q i=1 j=1 x 2 ij. n q x ij i=1 j=1 n q i=1 j=1 x 2 ij Tämän lemman seurauksena saadaan Plotkin-raja. Lause 9.2.3 (Plotkin-raja). Jos K > 1, niin d(n, K) (q 1)nK q(k 1). Todistus. Olkoon C (n, K, d)-koodi. Tällöin K = C ja valitsemalla yhtälössä (28) ja Lemmoissa 9.2.1 ja 9.2.2 X = C saadaan d tot C C ( C 1) = 1 d min C d av C = K(K 1) 1 (nk 2 n ) K(K 1) q K2 = nk K 1 = (q 1)nK q(k 1). ( nk 2 ( 1 1 q Tämä pätee kaikille pituutta n ja kertalukua K oleville koodeille, joten saatiin väite. 9.3 Elias-raja Plotkin-rajan yhteydessä arvioitiin koodin minimietäisyyttä keskietäisyyden avulla. Jos koodisanojen etäisyydet ovat hyvin erisuuria, tämä arvio on ilmeisen epätarkka. Tämä epätarkkuus voidaan välttää tarkastelemalla vain lähekkäin sijaitsevia koodisanoja. Lemmassa 9.3.1 todetaan, että avaruuden F n erääseen pallon pintaan kuuluu paljon koodisanoja, minkä jälkeen Lemmasta 9.3.2 seuraa, että näiden sanojen keskietäisyys on pieni. 94 ) n i=1 q j=1 x 2 ij )

Lemma 9.3.1. Jos n-pituisen koodin C informaatiosuhde on vähintään R (eli koodisanojen lukumäärä on vähintään q Rn ), niin avaruuden F n jonkin r-säteisen pallon pintaan kuuluu vähintään S r (n)/q n(1 R) koodin C alkiota. Täsmällisemmin ilmaistuna: on olemassa sellainen x F n, että S(x, r) C KS r(n) q n. Todistus. Ehdon d(c, x) = r toteuttavien parien (c, x) C F n lukumäärä on S r (x) C = S r (c) = KS r (n). x F n c C Koska ylläolevassa summassa on F n = q n alkiota, niin löytyy sellainen x F n, että S r (x) C KSr(n). q n Lemma 9.3.2. Jos n-pituinen kertalukua K oleva koodi C sisältyy avaruuden F n johonkin pallonpintaan S(x, r), niin ( ) d av C 2. Kr K 1 qr (q 1)n Todistus. Olkoon F = {α 1, α 2,..., α q } ja olkoon väitteessä esiintyvän vektorin x i:s koordinaatti α ji. Olkoon x ij niiden koodisanojen lukumäärä, joiden i:s koordinaatti on α j. Valitsemalla X = C Lemmassa 9.2.2 saadaan n q Koska C S(x, r), niin d tot C = nk 2 Kr = c C d(c, x) = Tämän avulla saadaan n n q x iji = x ij i=1 i=1 j=1 n i=1 n x 2 ij i i=1 i=1 x j=1 j j i n d(c i, α ji ) = i=1 c C q x ij = j=1 j j i 2 ij. n i=1 q x ij. j=1 j j i n K Kr = K(n r). i=1 Lemman 9.2.1 ja näiden nojalla d tot C nk 2 1 ( n ) 2 1 ( n x i n n(q 1) i=1 = nk 2 1 n K2 (n r) 2 i=1 q x ij j=1 j j i ) 2 1 n(q 1) K2 r 2 = K 2 r 95 ( 2 qr ). (q 1)n

Jakamalla kumpikin puoli luvulla K(K 1) saadaan väite. Jos C on (n, K, d)-koodi, niin Lemman 9.3.1 nojalla on olemassa sellainen x F n, että S(x, r) C KS r(n) q n. Lemmaa 9.3.2 voidaan nyt soveltaa joukkoon S(x, r) C. 9.4 Gilbert Varšamov-raja Edellä on tarkasteltu koodin minimietäisyyden tai kertaluvun ylärajoja. Gilbert Varšamov-raja puolestaan osoittaa, että tietyillä parametrien n, d min ja R arvoilla on olemassa koodeja. Seuraava Gilbertin lause osoittaa, että jokaista koodia voidaan suurentaa minimietäisyys säilyttäen tiettyyn rajaan saakka. Lause 9.4.1. Jos C on n-pituinen koodi, jonka minimietäisyys on d, niin C sisältyy n-pituiseen koodiin, jonka minimietäisyys on d ja kertaluku vähintään q n B d 1 (n). Tarkastellaan seuraavaksi lineaarista [n, k]-koodia, jonka aakkosto F on q äärellinen kunta F q, minimietäisyys d ja kertaluku pienempi kuin n. B d 1 (n) Lauseen 9.4.1 nojalla on olemassa sellainen x Fq n, että d(x, c) d jokaisella c C. Joukko F q x + C = {ax + c a F q, c C} on [n, k + 1]-koodi, jonka minimietäisyys on d. Näin ollen pätee: Lause 9.4.2. Jos n-pituisen lineaarisen koodin C minimietäisyys on d, niin C sisältyy n-pituiseen lineaariseen koodiin, jonka minimietäisyys on d ja kertaluku vähintään q n B d 1 (n). 96

Koodausteorian harjoitustehtäviä, syksy 2009 1. Binääristä koodia C = {(x 1, x 2,..., x n ) Z n 2 x 1 + x 2 + + x n = 0} sanotaan pituutta n olevaksi parillispainoiseksi koodiksi. Määrää C ja koodin informaatiosuhde. 2. Osoita, että Hamming-etäisyys d(x, y) toteuttaa kolmioepäyhtälön d(x, y) d(x, z) + d(z, y) kaikilla x, y, z F n. 3. Määritellään x y = (x 1 y 1, x 2 y 2,..., x n y n ), kun x = (x 1,..., x n ) ja y = (y 1,..., y n ). Osoita, että jokaisella x, y F2 n pätee a) wt(x + y) = wt(x) + wt(y) 2 wt(x y), b) wt(x) wt(y) wt(x + y) wt(x) + wt(y). 4. Kertaa algebran kurssista Eukleideen algoritmi suurimman yhteisen tekijän määräämiseksi kokonaisluvuille ja polynomirenkaan F[x] polynomeille, kun F on kunta. Määrää syt(242, 186) ja renkaan Z 2 [x] polynomien f(x) = x 2 + 1 ja g(x) = x 4 + x 3 + x + 1 suurin yhteinen tekijä. 5. Osoita, että äärellinen kokonaisalue on kunta. 6. Kertaa algebran kurssista mitä tarkoitetaan kuntien välisellä isomorfialla. Osoita, että kunnan suppein alikunta on isomorfinen joko kunnan Q tai kunnan Z p (eräällä alkuluvulla p) kanssa. 7. Olkoon p alkuluku ja g Z p [x] astetta m 1 oleva jaoton polynomi. Osoita, että jäännösluokkarengas Z p [x]/ g(x) on kunta, jossa on p m alkiota. 8. Muodosta kunnat F 8, F 9 ja F 25. Määrää kussakin tapauksessa primitiivialkio. 9. Tutki polynomien x 2 + 1 ja x 2 2 jaollisuutta renkaissa Q[x], R[x], C[x], Z 2 [x] ja Z 3 [x]. 10. Laske kunnassa F 16 (1001) (1011) + 0101 + 1100 ja (1111) 1/2 + 1101, missä alkiot on esitetty primitiivialkion α, α 4 + α + 1 = 0, avulla. Määrää jokin renkaan F 16 [x] jaoton toisen asteen polynomi. 1

11. Määrää kunnan F 16 primitiivialkiot. Osoita, että polynomi x 4 +x 3 +x 2 + x + 1 on jaoton renkaassa Z 2 [x], mutta ei ole primitiivinen polynomi. 12. Konstruoi kaksi kuntaa F 8 käyttämällä kahta eri polynomia ja osoita, että nämä kunnat ovat isomorfiset. 13. Oletetaan, että G on Abelin ryhmä. Olkoot g, h G vastaavasti kertalukua r ja s olevat alkiot. Osoita, että a) jos g n = 1, niin r n; b) jos syt(r, s) = 1, niin alkion gh kertaluku on rs. 14. Olkoon C [6, 3]-koodi kunnan F 4 suhteen ja olkoon sen generoijamatriisi 1 0 0 1 α α G = 0 1 0 α 1 α, 0 0 1 α α 1 missä α 2 + α + 1 = 0. Onko C = C? 15. Olkoot C 1 ja C 2 binäärisiä lineaarisia koodeja, joiden generoijamatriisit ovat [ ] 1 0 0 1 1 0 1 1 1 1 1 0 G 1 =, G 0 0 1 1 1 2 = 0 1 0 1 0 1 1. 0 0 1 0 1 1 1 Määrää kummankin koodin minimietäisyys ja etsi molemmille tarkistusmatriisi. 16. Olkoon C sellainen lineaarinen koodi kunnan F 3 suhteen, jonka generoijamatriisi on [ ] 1 1 1 0. 2 0 1 1 a) Lausu generoijamatriisi systemaattisessa muodossa. b) Määrää koodille C tarkistusmatriisi. c) Dekoodaa sanat 2121, 1201 ja 2222. 2

17. Olkoon koodilla C i kunnan F i suhteen generoijamatriisi G i, i = 1, 2. Etsi koodille C i tarkistusmatriisi ja määrää minimietäisyys, kun 1 2 4 0 3 F 1 = F 5, ja G 1 = 0 2 1 4 1, 2 0 3 1 4 1 2 0 2 1 0 F 2 = F 3, ja G 2 = 2 0 1 2 0 1. 1 1 1 2 1 2 18. Olkoon α kunnan F 4 primitiivialkio, jolle α 2 + α + 1 = 0. Olkoon C lineaarinen koodi kunnan F 4 suhteen, jonka generoijamatriisi on 1 0 0 1 α 2 α 0 1 0 1 α α 2. 0 0 1 1 1 1 Määrää koodin C minimietäisyys ja laadi kaavio sivuluokkien johtajista ja syndromeista. Dekoodaa sana (0110α 2 0). 19. Määrää 5-pituinen Hammingin koodi kunnan F 4 suhteen. Mikä on tämän koodin generoijamatriisi? 20. Määrää Hammingin [7, 4]-koodin ja sen laajennuksen duaalikoodi. 21. Muodosta Hammingin koodin H 3 (3) generoija- ja tarkistusmatriisi. 22. Binäärisen Hammingin koodin H r duaalikoodi on simpleksikoodi S r. Osoita, että S r on [2 r 1, r, 2 r 1 ]-koodi. Osoita edelleen, että kahden eri koodisanan välinen etäisyys on 2 r 1. 23. Olkoot koodit C i (n, M i, d i )-koodeja, i = 1, 2. Määritellään uusi koodi C asettamalla C = {(u, u + v) u C 1, v C 2 }. Osoita, että C on (2n, M 1 M 2, d)-koodi, missä d min{2d 1, d 2 }. Totea, että jos erityisesti yllä C i on (lineaarinen) [n, k i, d i ]-koodi, niin C on [2n, k 1 + k 2, min{2d 1, d 2 }]-koodi. 24. Osoita, että R(r + 1, m + 1) = {(u, u + v) u R(r + 1, m), v R(r, m)}. 3

25. Tarkastellaan 16-pituisia Reedin Mullerin koodeja R(1, 4) ja R(2, 4) (vrt. luentoesimerkki). a) Käytetään koodia R(1, 4). Dekoodaa sana 1011 1100 1101 0010. b) Käytetään koodia R(2, 4). Dekoodaa sana 0110 0110 0011 0010. 26. Olkoon C binäärinen [n, k]-koodi ja y F2 n. Osoita, että { ( 1) x y 2 k, jos y C, = 0, jos y / C. x C Tässä 1 Z ja tulon x y F 2 = {0, 1} arvo tulkitaan vastaavaksi kokonaisluvuksi. 27. Määrää Hammingin [7, 4]-koodin painopolynomi duaalikoodin painopolynomin avulla. 28. Olkoot d, m N. Osoita, että Osoita tämän avulla, että d m jos ja vain jos (x d 1) (x m 1). syt(x m 1, x n 1) = x syt(m,n) 1. Huomaa, että tämä pätee erityisesti silloin, kun x 2 on kokonaisluku. 29. Olkoon q alkuluvun potenssi ja syt(n, q) = 1, n Z +. Osoita, että on olemassa sellainen m Z +, että n (q m 1). Osoita edelleen, että jostakin kunnan F q laajennuksesta löytyy primitiivinen n:s ykkösen juuri. 30. Määrää syklotomiset sivuluokat ja polynomin x n 1 tekijöihinjako renkaassa F q [x], kun a) n = 11, q = 2; b) n = 15, q = 2; c) n = 8, q = 3; d) n = 11, q = 3. 31. Jaa polynomit x p 1 ja x p 1 1 jaottomiin tekijöihin renkaassa F p [x], missä p on alkuluku. 32. Määrää kaikki 5-pituiset binääriset sykliset koodit. 4

33. Olkoon α yhtälön α 4 +α+1 = 0 toteuttava kunnan F 16 primitiivialkio. Määrää minimipolynomit m α (x), m α 3(x), m α 4(x) ja m α 5(x) kunnan F 2 suhteen. Määrää myös polynomin m α (x) m α 3(x) virittämän syklisen koodin generoija- ja tarkistusmatriisi. 34. Määrää kaikkien 7-pituisten binääristen syklisten koodien C i generoijamatriisi ja duaalikoodi. Tutki, milloin C i C j, kun i j. 35. Olkoot a(x) = a 0 + a 1 x + + a 6 x 6, b(x) = b 0 + b 1 x + + b 6 x 6 R 7. Osoita, että a(x)b(x) = 0 renkaassa R 7 jos ja vain jos vektori a = (a 0, a 1,..., a 6 ) on ortogonaalinen vektorin b = (b 6, b 5,..., b 0 ) ja sen jokaisen syklisen siirron kanssa. 36. Mikä on 4-pituisen ternäärisen syklisen koodin generoijapolynomi? C = x 3 + 2x 2 + 2x + 1 37. Olkoot g 1 (x) ja g 2 (x) renkaan R n syklisten koodien C 1 ja C 2 generoijapolynomit. a) Osoita, että koodin C 1 + C 2 = {c 1 + c 2 c i C i } generoijapolynomi on syt(g 1 (x), g 2 (x)). b) Osoita, että koodin C 1 C 2 generoijapolynomi on pyj(g 1 (x), g 2 (x)). 38. Määrää kaikkien 4-pituisten ternääristen syklisten koodien generoijamatriisit systemaattisessa muodossa. 39. Määrää 9-pituisen polynomin g(x) = x 6 + x 3 + 1 F 2 [x] generoiman maksimaalisen syklisen koodin generoijamatriisi systemaattisessa muodossa. 40. Määrää polynomin x 4 +x+1 generoiman 15-pituisen binäärisen syklisen koodin idempotentti. 41. Olkoon e(x) binäärisen koodin C idempotentti. Määrää duaalikoodin C idempotentti. 42. Olkoot C 1 ja C 2 renkaan R n syklisiä koodeja, joiden idempotentit ovat vastaavasti e 1 (x) ja e 2 (x). Osoita, että a) C 1 C 2 jos ja vain jos e 1 (x)e 2 (x) = e 1 (x), b) koodin C 1 C 2 idempotentti on e 1 (x)e 2 (x), 5

c) koodin C 1 + C 2 idempotentti on e 1 (x) + e 2 (x) e 1 (x)e 2 (x). 43. Todista luentojen Lauseen 4.6.3 c-kohta: Jos polynomin (x n 1)/f i (x) generoiman minimaalisen koodin primitiivinen idempotentti on θ i (x), niin polynomin f i1 (x)f i2 (x) f ir (x) generoiman syklisen koodin idempotentti on 1 + θ i1 (x) + θ i2 (x) + + θ ir (x). 44. Olkoon q alkuluvun potenssi ja syt(n, q) = 1, n Z +. Olkoon edelleen α primitiivinen n:s ykkösen juuri ja c(x) = c 0 +c 1 x+ +c n 1 x n 1 F[x]. Osoita, että c i = 1 n 1 c(α j )α ij kaikilla i = 0, 1,..., n 1. n j=0 45. Olkoot q, n ja α kuten edellisessä tehtävässä. Olkoon C syklinen koodi, jonka generoijapolynomi on g(x) = i K(x α i ), missä K on eräiden syklotomisten sivuluokkien unioni. Oletetaan, että p(x) R n toteuttaa jokaisella i K ehdon p(α i ) 0. Osoita, että C = p(x)g(x). 46. Olkoon α kunnan F q primitiivialkio, n = q 1 ja k n positiivinen kokonaisluku. Määritellään n-pituinen koodi kunnan F q suhteen asettamalla C = {(f(1), f(α),..., f(α n 1 )) f F q [x], deg f < k}. a) Osoita, että C on lineaarinen koodi ja määrää sen dimensio. b) Määrää koodin C minimietäisyys. c) Osoita, että C on syklinen koodi. 47. Määrää kunnan F 4 alkioiden absoluuttiset jäljet. 48. Määrää kunnan F 16 alkioiden absoluuttiset jäljet ja jäljet kunnan F 4 suhteen. 49. Määrää kunnan F 32 alkion β = b 0 + b 1 α + b 2 α 2 + b 3 α 3 + b 4 α 4, b i Z 2, jälki, kun α toteuttaa yhtälön α 5 + α 2 + 1 = 0. 6

50. Tarkastellaan kunnassa Z 3 Fibonaccin rekursiota s t = s t 1 + s t 2, t 2, alkuehdolla s 0 = 0, s 1 = 1. Osoita, että s t = Tr((α + 1)α t ) toteuttaa tämän rekursion, kun α on yhtälön α 2 = α + 1 toteuttava kunnan F 9 primitiivialkio ja Tr on kunnan F 9 absoluuttinen jälki. 51. Olkoon g(x) = x15 1. Määrää 15-pituisen syklisen koodin C = x 4 + x 3 + 1 g(x) jälkiesitys. 52. Tunnetusti (tehtävä 30d) x 11 1 = (x 1)g 1 (x)g 2 (x) renkaassa Z 3 [x], missä g 1 (x) = x 5 + x 4 x 3 + x 2 1 ja g 2 (x) = x 5 x 3 + x 2 x 1. a) Mikä on kunnan Z 3 suppein laajennuskunta, joka sisältää yhtälön x 11 1 = 0 ratkaisut? Mitkä näistä ratkaisuista ovat polynomin g 1 (x) nollakohtia? b) Muodosta ternäärisen koodin g 1 (x) tarkistusmatriisi. Äärellisellä työmäärällä nähdään, että mitkä tahansa 4 tämän matriisin saraketta ovat lineaarisesti riippumattomia. Määrää tähän tietoon nojautuen koodin g 1 (x) minimietäisyys. c) Edellisen kohdan koodi on ns. ternäärinen Golayn koodi. Osoita tämä koodi täydelliseksi. 53. Olkoon α primitiivinen n:s ykkösen juuri ja C syklinen n-pituinen koodi, jolla on nollakohdat α b, α b+r, α b+2r,..., α b+(d 2)r, missä syt(n, r) = 1. Osoita, että d min C d. 54. Riippuuko BCH-koodi käytettävän primitiivisen n:nnen ykkösen juuren valinnasta? 55. Määrää kaikki 15-pituiset BCH-koodit, joilla b = 1 ja käytettävä ykkösen juuri α toteuttaa yhtälön α 4 + α + 1 = 0. 56. Olkoon β kunnan F 16 primitiivialkio, joka toteuttaa yhtälön x 4 + x 3 + 1 = 0. Määrää 2 virhettä korjaavan BCH-koodin generoijapolynomi, kun konstruktio tehdään käyttämällä alkiota β. 57. Konstruoi binäärinen 7-pituinen yleistetty BCH-koodi, jolle b = 0 ja d des C = 3. 7

58. Konstruoi ternäärinen n-pituinen BCH-koodi C, jolle d des C = d, kun a) n = 8, d = 3; b) n = 26, d = 5. 59. Tarkastellaan 15-pituista 2 virhettä korjaavaa BCH-koodia, jonka generoijapolynomi on m α (x) m α 3(x), missä α F 16 ja α 4 + α + 1 = 0. Dekoodaa vastaanotetut sanat 0100 0001 0000 000 ja 1101 1110 0011 001. 60. Olkoon C binäärinen BCH-koodi, jonka pituus on 93 ja d des C = 13, ja olkoon α primitiivinen 93:s ykkösen juuri. Mikä on suppein kunnan Z 2 laajennus, jossa α voi olla? Määrää generoijapolynomin nollakohdat α i ja koodin dimensio. Mitä BCH-rajan perusteella on pääteltävissä minimietäisyydestä? 61. Käytetään BCH-koodia, jolle luentojen merkinnöin q = 2, n = 15 ja t = 2. Dekoodaa sana r(x) = 1 + x 5 + x 6 + x 7 + x 11 + x 12. 62. Olkoon [15, 5]-BCH-koodin generoija g(x) = 1 + x 2 + x 5 + x 6 + x 8 + x 9 + x 10. Dekoodaa sana 1011 0101 1001 001. 63. Olkoon α kunnan F 32 primitiivialkio, jolle α 5 = α 2 + 1. Määrää alkion α i minimipolynomi m α i(x), kun i {1, 3, 4, 5}. Käytetään 31-pituista BCH-koodia C, jolle d des C = 5. Dekoodaa sana 1001 0110 1111 0000 1101 0101 0111 111. 64. Käytetään samaa alkiota α kuin tehtävässä 63 ja 31-pituista BCHkoodia, jolle d des C = 7. Vastaanotetulle sanalle r(x) pätee r(α) = α 10, r(α 3 ) = α 22 ja r(α 5 ) = α 25. Määrää todennäköisin virhevektori. 65. Olkoon α kunnan F 16 primitiivialkio, jolle α 4 +α+1 = 0. Tarkastellaan 15-pituista RS-koodia, jonka generoi polynomi g(x) = (x 1)(x α)(x α 2 )(x α 3 )(x α 4 )(x α 5 ). Dekoodaa polynomi r(x) = 1 + α 4 x + αx 3 + α 9 x 5 + x 6. 8

66. a) Määrää sellaisen RS-koodin koodisanat, jonka parametrit ovat q = 9, n = 8 ja d des C = 3. b) Muodosta edellisen kohdan koodia käyttäen lineaarinen koodi, jonka aakkosto on F 3. 67. Muodostetaan tehtävän 65 RS-koodista binäärinen koodi korvaamalla kukin koodisanan komponentti 4-pituisella binäärivektorilla. Määrää koodisanasta (α + x 2 + α 4 x 3 )g(x) saatava binäärikoodin sana. Mikä on binäärikoodin ryöppyvirheen korjauskyky? 68. Osoita, että [7, 2, 6]-RS-koodin, missä b = 1, idempotentti on e(x) = α 3 x + α 6 x 2 + αx 3 + α 5 x 4 + α 4 x 5 + α 2 x 6, missä α F 8, α 3 + α + 1 = 0. 69. a) Olkoon n = q 1, α F q kunnan F q primitiivialkio ja b, d Z +. Osoita, että koodin g(x), missä g(x) = b+d 2 i=b (x α i ), duaalikoodi on samaa muotoa oleva koodi (vrt. RS-koodiin ja yleistettyyn BCHkoodiin). b) Osoita, että MDS-koodin (eli maksimietäisyyskoodin) duaalikoodi on MDS-koodi. 70. Olkoon α yhtälön α 4 +α 3 +1 = 0 toteuttava kunnan F 16 primitiivialkio. Laske (x α i ) 1 (mod (x 2 + α 8 x + 1)), kun i = 2, 5, 11. 71. Olkoot α 1,..., α w F q keskenään erisuuria ja olkoot c 1,..., c w F q sellaisia, että ainakin yksi c i on nollasta eroava. Osoita, että w w (x α j ) 0. l=1 c l j=1 j l 72. Tarkastellaan Goppa-koodia Γ (L, G), missä L = {α 1,..., α n } sekä deg G = s. Osoita, että missä c Γ (L, G) jos ja vain jos cĥt = 0, Ĥ = G(α 1 ) 1 G(α n ) 1 α 1 G(α 1 ) 1 α n G(α n ) 1 1 G(α 1 ) 1 α s 1 G(α n ) 1 α s 1 73. Osoita, että on mahdollista muodostaa Goppa-koodi Γ (L, G), missä G(x) = x 2 + x + 1 ja L = F 8. Määrää tämän koodin tarkistusmatriisi ja koodisanat. 9 n.

74. Oletetaan, että L koostuu primitiivisistä 15:nsistä ykkösen juurista ja G(x) = x 2 + 1. Määrää koodin Γ (L, G) tarkistusmatriisi. 75. Todista Lemma 5.5.5. 76. Olkoon F = F 2, f(x) = x 8 ja g(x) = x 6 + x 4 + x 2 + x + 1. Laske Eukleideen algoritmin mukaiset polynomijonot (a k ), (b k ), (r k ) ja (q k ). Esitä näitä laskuja käyttäen kongruenssille (x 6 + x 4 + x 2 + x + 1)σ(x) ω(x) (mod x 8 ) ratkaisu σ(x), ω(x), missä deg σ µ ja deg ω ν, kun a) µ = 4, ν = 3; b) µ = 3, ν = 4. 77. Olkoon F = F 2, f(x) = x 8 1 ja g(x) = x 6 1. Laske Eukleideen algoritmin mukaiset polynomijonot (a k ), (b k ) ja (r k ). Määrää kullakin parilla (µ, ν), µ + ν = 7, Lemman 5.5.7 mukaiset k, b k ja r k. 78. Ratkaise harjoitustehtävät 61 65 Eukleideen algoritmiin nojautuen. 79. Dekoodaa sana 1100 1001 käyttämällä tehtävän 73 koodia ja alternanttikoodien dekoodausalgoritmia. 80. Olkoon q = 2, m = 3 ja α F 8, α 3 + α + 1 = 0. Olkoon edelleen α = (1, α, α 2,..., α 6 ) ja h = (1, 1,..., 1). Mikä on ainoa mielekäs parametrin r arvo? Määrää tätä arvoa r vastaavan alternanttikoodin A(α, h) tarkistusmatriisi ja minimietäisyys. Onko kyseessä syklinen koodi? 81. Kuinka monta sellaista paria (e 0, e 1 ) N 2 on olemassa, joille e 0 +2e 1 d 1? 82. Tarkastellaan [15, 7]-RS-koodia, joka on tehty käyttäen kunnan F 16 primitiivialkiota α, jolle α 4 + α + 1 = 0. Dekoodaa sana u = (α 13, 1,, α 10, α 12, α 6,, α 5, α 13,, α, α 8, α 7, α 2, α 9 ). 83. Tarkastellaan [7, 2]-RS-koodia, joka on tehty käyttäen kunnan F 8 primitiivialkiota α, jolle α 3 + α + 1 = 0. Dekoodaa sana u = (, α, α,, α, α, α 4 ). 10

84. Konstruoi kaikki enintään 9-pituiset ryöppyvirheet korjaava koodi käyttämällä sopivaa RS-koodia kunnan F 16 suhteen. 85. Todista Kronecker-tulon A B ominaisuudet: a) Jos AC ja BD ovat määriteltyjä, niin b) (A B) T = A T B T ; (A B)(C D) = (AC) (BD); c) Jos matriisin A rivit ovat lineaarisesti riippumattomat, samoin matriisin B rivit, niin myös matriisin A B rivit ovat lineaarisesti riippumattomat. 86. Todista seuraava tulos: Jos H i on koodin C i, i = 1, 2, tarkistusmatriisi, niin matriisi H 1 H 2 H = H 1 A 2, A 1 H 2 missä k 1 n 1 -matriisi A 1 ja k 2 n 2 -matriisi A 2 on valittu niin, että matriisien [ ] [ ] H1 H2 ja A 1 rivit ovat lineaarisesti riippumattomia, on tulokoodin C 1 C 2 tarkistusmatriisi. 87. Olkoot C 1 ja C 2 binäärisiä koodeja, joiden generoijamatriisit ovat [ ] 1 0 0 1 1 0 1 1 0 1 1 1 G 1 = ja G 0 1 1 1 0 2 = 0 1 0 1 0 1 1. 0 0 1 0 1 1 1 Muodosta tulokoodin C 1 C 2 generoija- ja tarkistusmatriisi ja määrää sen minimietäisyys ja ryöppyvirheenkorjauskyky. 88. Olkoon C syklinen Reiger-optimaalinen [7, 3]-koodi, jonka generoijapolynomi on g(x) = x 4 +x 3 +x 2 +1. Määrää 3-kertaisesti kiedotun koodin C (3) generoijapolynomi ja ryöppyvirheenkorjauskyky. 89. Muodosta 12-rivinen Hadamardin matriisi H 12. 90. Olkoon A = H 12 I ja G = [ I A ], missä H 12 on 12-rivinen Hadamardin matriisi. Osoita, että G on sellaisen ternäärisen [24, 12]-koodin generoijamatriisi, jonka minimietäisyys on 9. 11 A 2

91. Olkoon m(n, d) = {max M on olemassa (n, M, d)-koodi}. Osoita, että binäärisillä koodeilla m(n, d) 2m(n 1, d). 92. Olkoon C binäärinen (n, M, d)-koodi. Osoita Plotkin-raja: a) Jos d on parillinen ja 2d n, niin d m(n, d) 2 2d n ja m(2d, d) 4d; b) Jos d on pariton ja 2d + 1 n, niin d + 1 m(n, d) 2 ja m(2d + 1, d) 4d + 4. 2d + 1 n 93. Todista Levenšteinin lause: Jos jokaista n Z + kohti on olemassa 4n-rivinen Hadamardin matriisi, niin on olemassa koodi, jolla Plotkinrajassa pätee yhtäsuuruus. 94. Laske jonojen ( 1, 1, 1, 1, 1, 1, 1) ja ( 1, 1, 1, 1, 1, 1, 1) ristikorrelaatiot. 95. Konstruoi 8 sellaista joukon E 8, E = { 1, 1}, vektoria, jotka ovat keskenään ortogonaalisia. 96. Todista, että jos luonnolliset luvut m ja n ovat keskenään jaottomia (ts. syt(m, n) = 1), niin syt(2 m 1, 2 n 1) = 1. 97. Todista, että jos x 1, x 2,..., x m ovat reaalilukuja, niin m x 2 i 1 ( m ) 2 x i m i=1 ja yhtäsuuruus pätee täsmälleen silloin, kun luvut x i ovat yhtäsuuria. 98. Olkoon α F q m ja Tr jälki F q m F q. Osoita, että Tr(α) = 0 jos ja vain jos on olemassa sellainen β F q m, että α = β q β. Olkoon nyt q = 2 ja α F 2 m. Osoita, että toisen asteen yhtälöllä i=1 x 2 + x = α on ratkaisu kunnassa F 2 m jos ja vain jos Tr(α) = 0. Osoita edelleen, että jos x 1 = β on ratkaisu, niin toinen ratkaisu on x 2 = β + 1. 12

99. Olkoot α, θ F 2 m. Määritellään β F 2 m asettamalla Osoita, että β = αθ 2 + (α + α 2 )θ 4 + + (α + α 2 + + α 2m 2 )θ 2m 1. β 2 + β = α(tr(θ) θ) + θ(tr(α) α). 100. Olkoon α F 16, α 4 + α + 1 = 0. Millä γ F 16 yhtälö x 2 + x = γ on ratkeava? Määrää yhtälön ratkaisut, kun γ = α 10. 101. Konstruoi tapauksessa m = 4 ja e = 3 alkioita β = 1 ja β = α 5 vastaavat Goldin jonot, missä α F 16, α 4 + α + 1 = 0. 13