Koodausteoria, Kesä 2014 Topi Törmä Matemaattisten tieteiden laitos
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, (1) S i = c(α i ) + e(α i ) = 0 + e(α i ) = e(α i ), i = 1, 2,..., 2t. Topi Törmä Matemaattisten tieteiden laitos 2 / 1
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. (2) l=1 Jos potenssit α j 1,..., α j l saadaan selville, niin eksponentit j 1, j 2,..., j l ilmaisevat virhekohdat. Topi Törmä Matemaattisten tieteiden laitos 3 / 1
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. (2) l=1 Jos potenssit α j 1,..., α j l saadaan selville, niin eksponentit j 1, j 2,..., j l ilmaisevat virhekohdat. Merkitään x l = α j l ja y l = e jl, l = 1,..., w. Tällöin yhtälön (2) mukaan w S i = y l xl i, i = 1,..., 2t. l=1 Topi Törmä Matemaattisten tieteiden laitos 3 / 1
Määritellään virhekohtapolynomi σ(z), σ(z) = w (1 x i z) = i=1 w σ j z j, σ 0 = 1, jonka nollakohtien käänteisalkiot ilmaisevat virhekohdat. Suureista S i saadaan muodostettua polynomi j=0 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 = w 2t y l l=1 i=1 (x l z) i Topi Törmä Matemaattisten tieteiden laitos 4 / 1
Merkitään A l (z) = y l x l z w (1 x j z), jolloin saadaan j=1 j l 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 Topi Törmä Matemaattisten tieteiden laitos 5 / 1
Koska 1 deg A l (z) w ja deg(a l (z)(x l z) 2t ) 2t + 1, 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. Tässä tulossa termin z w+j kerroin on S i σ j. Näin ollen tarkastelemalla termien z w+1,..., z 2w i+j=w+j kertoimia (huomaa, että 2w 2t) saadaan yhtälöryhmä σ 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. σ w S w + σ w 1 S w+1 + + σ 1 S 2w 1 + S 2w = 0. (3) Topi Törmä Matemaattisten tieteiden laitos 6 / 1
Tässä 1... 1 x 1... x w y 1 x 1 0... 0 1 x 1... x w 1 1 x1 2... xw 2 0 y 2 x 2 0 1 x 2... x w 1 2.......... x1 w 1... xw w 1 0 0... y w x w 1 x w... xw w 1 S 1 S 2... S w S 2 S 3... S w+1 =.... (4) S w S w+1... S 2w 1 on yhtälöryhmän (3) kerroinmatriisi. Koska x 1,..., x l ovat nollasta eroavia ja erisuuria, niin yhtälöryhmän (3) determinantti, eli det[s i ] yhtälössä (4), on nollasta eroava. Siten kertoimet σ j saadaan ratkaistua yksikäsitteisesti yhtälöryhmästä (3). Topi Törmä Matemaattisten tieteiden laitos 7 / 1
Jos f > w, niin suorittamalla yhtälön (4) 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 (Tällöin jokin y l = e jl = 0). Mikäli w t, niin oikea w (jota ei tiedetä ennakolta) saadaan seuraavasti: Valitaan w = t. Jos yhtälöryhmän (3) determinantti on 0, valitaan w = t 1 ja jatketaan samaan tapaan. Topi Törmä Matemaattisten tieteiden laitos 8 / 1
Varsinainen dekoodausmenettely on seuraava: 1. Lasketaan suureet S i = r(α i ) yhtälöiden (1) avulla. 2. Määrätään oikea w yllä kuvatulla tavalla. 3. Ratkaistaan alkiot σ j yhtälöryhmän (3) avulla. 4. Virhekohdat saadaan virhekohtapolynomin σ(z) nollakohtien käänteisalkioiden eksponentteina. 5. Ratkaistaan kertoimet y l eli virhearvot yhtälöryhmästä S i = w xl i y l, i = 1,..., w. l=1 Topi Törmä Matemaattisten tieteiden laitos 9 / 1
Esimerkki A Olkoon n = 12 ja q = 5. Nyt kunnassa F 25 on primitiivinen 12. ykkösenjuuri α = 3β + 2, missä β 2 = β 1. Tarkastellaan 12-pituista BCH-koodia C, jonka suunniteltu etäisyys on 7. Tällöin C korjaa t = 3 virhettä. Dekoodataan sana r(x) = c(x) + e(x) = 123001034321 = 1 + 2x + 3x 2 + x 5 + 3x 7 + 4x 8 + 3x 9 + 2x 10 + x 11. Topi Törmä Matemaattisten tieteiden laitos 10 / 1
1. Lasketaan suureet S i, i = 1,..., 6. Nyt α = 3β + 2, α 2 = β, α 3 = 2, α 4 = β 1, α 5 = 2β, α 6 = 1, joten S 1 = r(α) = 1 + 2α + 3α 2 + α 5 + 3α 7 + 4α 8 + 3α 9 + 2α 10 + α 11 = 1 + β + 4 + 3β + 2β 3(3β + 2) 4β 1 2(β 1) 2β = 4β = β S 2 = r(α 2 ) = r(β) = 3β 2 S 3 = r(α 3 ) = r(2) = 1 S 4 = r(α 4 ) = 3β + 2 S 5 = r(α 5 ) = r(2β) = β 1 S 6 = r(α 6 ) = r( 1) = 0. Topi Törmä Matemaattisten tieteiden laitos 11 / 1
Huom! Edellä voidaan myös laskea alkiolla α alkion β sijaan, kun käytetään identiteettiä β = 2α + 1. Tällöin ja α 2 = 2α + 1, α 3 = 2, α 4 = 2α, α 5 = α + 2, α 6 = 1 S 1 = 3α 1, S 2 = α + 1, S 3 = 1, S 4 = α, S 5 = 2α, S 6 = 0. Topi Törmä Matemaattisten tieteiden laitos 12 / 1
2. Nyt S 1 S 2 S 3 S 2 S 3 S 4 S 3 S 4 S 5 = 3α 1 α + 1 1 α + 1 1 α 1 α 2α 3α 1 α + 1 1 = 3α 2 + 1 α 2 + α 1 0 α 2 2α 1 2α 2 + 3α 0 = α 1 3α 0 2α + 2 = 2(α 1)(α + 1) = 3(α 2 1) = α 0, joten wt(e) = w = t = 3. Topi Törmä Matemaattisten tieteiden laitos 13 / 1
3. Ratkaistaan virhekohtapolynomin kertoimet σ j yhtälöryhmästä σ 3 S 1 + σ 2 S 2 + σ 1 S 3 + S 4 = 0 σ 3 S 2 + σ 2 S 3 + σ 1 S 4 + S 5 = 0 σ 3 S 3 + σ 2 S 4 + σ 1 S 5 + S 6 = 0 (3α 1)σ 3 + (α + 1)σ 2 σ 1 = α (α + 1)σ 3 σ 2 + ασ 1 = 2α σ 3 + ασ 2 + 2ασ 1 = 0. Ratkaisemalla yhtälöryhmä (esim. Gaussin eliminoimismenetelmällä) saadaan σ 1 = 3 α, σ 2 = 2α + 2 ja σ 3 = 3α, joten virhekohtapolynomi σ(x) on σ(x) = 1 + (3 α)x + (2α + 2)x 2 + 3αx 3. Topi Törmä Matemaattisten tieteiden laitos 14 / 1
4. Ratkaistaan virhekohtapolynomin σ(x) nollakohdat (esim. kokeilemalla). Nyt σ(α 3 ) = σ(2) = 1 + (3 α) 2 + (2α + 2) ( 1) + 3α 3 = 1 + 1 2α 2α 2 α = 0, σ(α 6 ) = σ( 1) = 1 3 + α + 2α + 2 3α = 0, σ(α 11 ) = 1 + (3 α)α 11 + (2α + 2)α 22 + 3α 34 = 1 3α 5 1 2α 5 2α 4 3α 4 = 0, joten virhekohtapolynomin nollakohdat ovat α 3, α 6 ja α 11. Virhekohdat saadaan näiden nollakohtien käänteisalkioiden (α 9, α 6, α) eksponenteista ja ne ovat 1, 6 ja 9. Topi Törmä Matemaattisten tieteiden laitos 15 / 1
5. Ratkaistaan virhearvot e i yhtälöryhmästä e 1 α + e 6 α 6 + e 9 α 9 = 3α 1 e 1 α 2 + e 6 (α 2 ) 6 + e 9 (α 2 ) 9 = α + 1 e 1 α 3 + e 6 (α 3 ) 6 + e 9 (α 3 ) 9 = 1 αe 1 e 6 + 3e 9 = 3α 1 (2α + 1)e 1 + e 6 e 9 = α + 1 2e 1 e 6 + 2e 9 = 1. Yhtälöryhmän ratkaisuna saadaan e 1 = 2, e 6 = 1 ja e 9 = 1. Näin ollen virhe polynomi on e(x) = 2x x 6 + x 9. Siispä lähetetty koodisana on c(x) = r(x) e(x) = 1 + 2x + 3x 2 + x 5 + 3x 7 + 4x 8 + 3x 9 + 2x 10 + x 11 + 2x + x 6 x = 1 + 4x + 3x 2 + x 5 + x 6 + 3x 7 + 4x 8 + 2x 9 + 2x 10 + x 11 = 143001134221. Topi Törmä Matemaattisten tieteiden laitos 16 / 1
5.3 Reedin-Solomonin koodit 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 ), i=1 missä d on suunniteltu etäisyys ja α on kunnan F q primitiivialkio. Topi Törmä Matemaattisten tieteiden laitos 17 / 1
Esimerkki 5.3.2 Olkoon q = 4 ja α kunnan F 4 primitiivialkio, jolle α 2 + α + 1 = 0. Tarkastellaan RS-koodia C, 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. Tässä esim. 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 (1 + αx)(x α) = x α + αx 2 α 2 x = α + αx + αx 2 = ααα. C on [3, 2]-koodi. Topi Törmä Matemaattisten tieteiden laitos 18 / 1
Lauseessa 3.2.9 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. Topi Törmä Matemaattisten tieteiden laitos 19 / 1
Lauseessa 3.2.9 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. Topi Törmä Matemaattisten tieteiden laitos 19 / 1
Lauseessa 3.2.9 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 BCH-rajan (Lause 4.8.4 tai Lause 5.1.2 a) nojalla vähintään d = d 1 + 1 = deg g + 1 = n k + 1, kun kyseessä on [n, k]-koodi. Lauseen 3.2.9 mukaan d min = n k + 1. Topi Törmä Matemaattisten tieteiden laitos 19 / 1
Lauseessa 3.2.9 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 BCH-rajan (Lause 4.8.4 tai Lause 5.1.2 a) nojalla vähintään d = d 1 + 1 = 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. Topi Törmä Matemaattisten tieteiden laitos 19 / 1
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. Topi Törmä Matemaattisten tieteiden laitos 20 / 1
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: Lyhyellä tarkastelulla nähdään, että laajennettu koodi todellakin on lineaarinen [n + 1, k]-koodi. Topi Törmä Matemaattisten tieteiden laitos 20 / 1
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(x) 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. BCH-rajan nojalla wt(c) d + 1, mikä on ristiriita, sillä c oletettiin d-painoiseksi. Näin ollen c(1) 0 ja c n 0. Topi Törmä Matemaattisten tieteiden laitos 21 / 1
Esimerkin 5.3.2 koodin laajennuksen sanat ovat a b 0 1 α α 2 0 0000 0α1α 2 0α 2 α1 01α 2 α 1 α10α 2 αα 2 10 αααα α0α 2 1 α α 2 α01 α 2 01α α 2 1α0 α 2 α 2 α 2 α 2 α 2 1α 2 0α 1111 10αα 2 1αα 2 0 Esim. jos c = ααα, niin laajennetun sanan viimeinen koordinaatti on (α + α + α) = α ja laajennettu sana on αααα. Topi Törmä Matemaattisten tieteiden laitos 22 / 1
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 i=1 (x α i ). Topi Törmä Matemaattisten tieteiden laitos 23 / 1
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 i=1 (x α i ). Todistus: Harjoituksen 10 tehtävän 4 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). Topi Törmä Matemaattisten tieteiden laitos 23 / 1
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 missä 1 l + i n 1. j=0 l=0 l=0 α (l+i)j, f l n 1 j=0 Topi Törmä Matemaattisten tieteiden laitos 24 / 1
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 1 α l+i = 0. j=0 Siis c(α i ) = 0 kaikilla i = 1,..., n k eli kaikki polynomin g(x) nollakohdat ovat myös polynomin c(x) nollakohtia. Näin ollen c(x) g(x) ja saatiin väite. j=0 Topi Törmä Matemaattisten tieteiden laitos 24 / 1
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 Topi Törmä Matemaattisten tieteiden laitos 25 / 1
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 F mn p 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). Topi Törmä Matemaattisten tieteiden laitos 25 / 1
Esimerkin 5.3.2 kunnan F 4 suhteen olevasta [3, 2]-koodista saadaan kunnan F 2 suhteen oleva [6, 4]-koodi käyttämällä vastaavuutta γ = a 0 + a 1 α (a 0, a 1 ). Tämä koodi on C = {(a 00, a 01, a 10, a 11, a 20, a 21 ) (γ 0, γ 1, γ 2 ) C, γ i = a i0 + a i1 α}. Esim. koodin C sanaa ααα vastaa koodin C sana 010101 ja sanaa 1α 2 0 vastaa sana 101100. Topi Törmä Matemaattisten tieteiden laitos 26 / 1