7 KODEERIMISTEOORIA 7.1 Sissejuhatus Me vaatleme teadete edastamist läbi kanali, mis sisaldab müra ja võib seetõttu moonutada lähteteadet. Lähteteade

Seotud dokumendid
Polünoomi juured Juure definitsioon ja Bézout teoreem Vaadelgem polünoomi kus K on mingi korpus. f = a 0 x n + a 1 x n a n 1 x

Ruutvormid Denitsioon 1. P n Ütleme, et avaldis i;j=1 a ijx i x j ; kus a ij = a ji ; a ij 2 K ja K on korpus, on ruutvorm üle korpuse K muutujate x 1

lvk04lah.dvi

IMO 2000 Eesti võistkonna valikvõistlus Tartus, aprillil a. Ülesannete lahendused Esimene päev 1. Olgu vaadeldavad arvud a 1, a 2, a 3,

vv05lah.dvi

Matemaatiline analüüs IV 1 3. Mitme muutuja funktsioonide diferentseerimine 1. Mitme muutuja funktsiooni osatuletised Üleminekul ühe muutuja funktsioo

Microsoft PowerPoint - IRZ0020_praktikum4.pptx

prakt8.dvi

Treeningvõistlus Balti tee 2014 võistkonnale Tartus, 4. novembril 2014 Vastused ja lahendused 1. Vastus: 15, 18, 45 ja kõik 0-ga lõppevad arvud. Olgu

Matemaatiline analüüs III 1 4. Diferentseeruvad funktsioonid 1. Diferentseeruvus antud punktis. Olgu funktsiooni f : D R määramispiirkond D R selles p

Relatsiooniline andmebaaside teooria II. 6. Loeng

Matemaatilised meetodid loodusteadustes. I Kontrolltöö I järeltöö I variant 1. On antud neli vektorit: a = (2; 1; 0), b = ( 2; 1; 2), c = (1; 0; 2), d

raamat5_2013.pdf

Microsoft Word - Errata_Andmebaaside_projekteerimine_2013_06

PALMIKRÜHMAD Peeter Puusempa ettekanded algebra ja geomeetria õppetooli seminaril 11., 18. ja 25. jaanuaril a. 1. Palmikud ja palmikrühmad Ajalo

Tartu Ülikool Matemaatika-informaatikateaduskond Puhta Matemaatika Instituut Algebra õppetool Riivo Must Mõned katsed üldistada inversseid poolrühmi M

Andmed arvuti mälus Bitid ja baidid

ITI Loogika arvutiteaduses

Word Pro - digiTUNDkaug.lwp

Microsoft Word - 56ylesanded1415_lõppvoor

KM 1 Ülesannete kogu, 2018, s

19. Marek Kolk, Kõrgem matemaatika, Tartu Ülikool, Arvridade koonduvustunnused Sisukord 19 Arvridade koonduvustunnused Vahelduvat

Word Pro - diskmatTUND.lwp

Microsoft PowerPoint - Loeng2www.ppt [Compatibility Mode]

Excel Valemite koostamine (HARJUTUS 3) Selles peatükis vaatame millistest osadest koosnevad valemid ning kuidas panna need Excelis kirja nii, et

Microsoft Word - essee_CVE ___KASVANDIK_MARKKO.docx

12. Marek Kolk, Kõrgem matemaatika, Tartu Ülikool, Algfunktsioon ja määramata integraal Sisukord 12 Algfunktsioon ja määramata integraal 1

Komisjoni delegeeritud määrus (EL) nr 862/2012, 4. juuni 2012, millega muudetakse määrust (EÜ) nr 809/2004 seoses teabega nõusoleku kohta prospekti ka

G aiasoft Programmi VERP ja Omniva Arvekeskuse liidese häälestamine ja arvete saatmine-lugemine VERP 6.3 ja VERP 6.3E Versioon ja hilisemad K

E-arvete juhend

Eesti koolinoorte LIII matemaatikaolümpiaad 28. jaanuar 2006 Piirkonnavoor Hindamisjuhised Lp hindaja! 1. Juhime Teie tähelepanu sellele, et alljärgne

Sügis 2018 Kõrgema matemaatika 2. kontrolltöö tagasiside Üle 20 punkti kogus tervelt viis üliõpilast: Robert Johannes Sarap, Enely Ernits, August Luur

Antennide vastastikune takistus

Sissejuhatus mehhatroonikasse MHK0120

DIGITAALTEHNIKA DIGITAALTEHNIKA Arvusüsteemid Kümnendsüsteem Kahendsüsteem Kaheksandsüsteem Kuueteistkü

Matemaatika ainekava 8.klass 4 tundi nädalas, kokku 140 tundi Kuu Õpitulemus Õppesisu Algebra (65 t.) Geomeetria (60 t.) Ajavaru kordamiseks (15 õppet

8.klass 4 tundi nädalas, kokku 140 tundi Hulkliikmed ( 45 tundi) Õppesisu Hulkliige. Hulkliikmete liitmine ja lahutamine ning korrutamine ja jagamine

Word Pro - digiTUNDkaug.lwp

Diskreetne matemaatika I Kevad 2019 Loengukonspekt Lektor: Valdis Laan 20. juuni a.

Tehniline andmeleht Sadulventiilid (PN 16) VRG 2 2-tee ventiil, väliskeermega VRG 3 3-tee ventiil, väliskeermega Kirjeldus Ventiilid on kasutatavad ko

elastsus_opetus_2013_ptk2.dvi

Neurovõrgud. Praktikum aprill a. 1 Stohhastilised võrgud Selles praktikumis vaatleme põhilisi stohhastilisi võrke ning nende rakendust k

loogikaYL_netis_2018_NAIDISED.indd

Tala dimensioonimine vildakpaindel

Microsoft Word - Sobitusahelate_projekteerimine.doc

Mining Meaningful Patterns

VL1_praks6_2010k

DVD_8_Klasteranalüüs

VRG 2, VRG 3

6. KLASSI MATEMAATIKA E-TASEMETÖÖ ERISTUSKIRI Alus: haridus- ja teadusministri määrus nr 54, vastu võetud 15. detsembril E-TASEMETÖÖ EESMÄRK Tas

efo03v2pkl.dvi

Osakogumite kitsendustega hinnang Kaja Sõstra 1 Eesti Statistikaamet Sissejuhatus Valikuuringute üheks oluliseks ülesandeks on osakogumite hindamine.

Tartu Ülikool Matemaatika-informaatikateaduskond Matemaatilise statistika instituut Ann-Mari Koppel Determinatsioonikordaja ja prognoosikordaja Bakala

1 / loeng Tekstitöötlus Sisend/väljund Teksti lugemine Sõnad

GRUPI-SMS Veebirakenduse kasutamise juhend Rakendus Elisa grupi-smsi rakendus Väljaandja Elisa Eesti AS Juhendi koostamise kuupäev Versioon

lcs05-l3.dvi

Praks 1

VL1_praks2_2009s

I Generaatori mõiste (Java) 1. Variantide läbivaatamine Generaator (ehk generaator-klass) on klass, milles leidub (vähemalt) isendimeetod next(). Kons

HWU_AccountingAdvanced_October2006_EST

Programmi Pattern kasutusjuhend

Infix Operaatorid I Infix operaatorid (näiteks +) ja tüübid (näiteks ->) kirjutatakse argumentide vahele, mitte argumentide ette. Näiteks: 5 + 2, 2*pi

Maksu- ja Tolliamet MAKSUKOHUSTUSLANE Vorm KMD INF Nimi Registri- või isikukood A-osa ANDMED VÄLJASTATUD ARVETE KOHTA. Esitatakse koos käibedeklaratsi

Microsoft Word - RM_ _17lisa2.rtf

QUANTUM SPIN-OFF - Experiment UNIVERSITEIT ANTWERPEN

6

Praks 1

pkm_2010_ptk6_ko_ja_kontravariantsus.dvi

loeng2

Euroopa Liidu Nõukogu Brüssel, 24. september 2015 (OR. en) 12353/15 ADD 2 ENV 586 ENT 199 MI 583 SAATEMÄRKUSED Saatja: Kättesaamise kuupäev: Saaja: Eu

KASUTUSJUHEND

VKE definitsioon

Praks 1

Microsoft Word - Praks1.doc

Pythoni Turtle moodul ja Scratchi värvilisem pool Plaan Isikukoodi kontrollnumbri leidmine vaatame üle lahenduse kontrollnumbri leimiseks. Pythoni joo

Image segmentation

MATEMAATILINE ANALÜÜS I. ESIMESE KONTROLLTÖÖ NÄITEÜLESANDED (1) Leida funktsiooni y = sin x + ln(16 x 2 ) määramispiirkond. (2) Leida funktsiooni y =

VRB 2, VRB 3

elastsus_opetus_2005_14.dvi

Funktsionaalne Programmeerimine

Saksa keele riigieksamit asendavate eksamite tulemuste lühianalüüs Ülevaade saksa keele riigieksamit asendavatest eksamitest Saksa keele riigi

PÄRNU TÄISKASVANUTE GÜMNAASIUM ESITLUSE KOOSTAMISE JUHEND Pärnu 2019

efo09v2pke.dvi

Microsoft PowerPoint - loeng2.pptx

Kontrollijate kommentaarid a. piirkondliku matemaatikaolümpiaadi tööde kohta 7. klass (Elts Abel, Mart Abel) Test Ül. 6: Mitmes töös oli π aseme

M16 Final Decision_Recalculation of MTR for EMT

6

Matemaatiline maailmapilt MTMM Terje Hõim Johann Langemets Kaido Lätt 2018/19 sügis

Microsoft Word - Vorm_TSD_Lisa_1_juhend_2015

Microsoft Word - Iseseisev töö nr 1 õppeaines.doc

Eesti koolinoorte 66. füüsikaolümpiaad 06. aprill a. Vabariiklik voor. Gümnaasiumi ülesannete lahendused 1. (AUTOD) (6 p.) Kuna autod jäävad sei

Lisa I_Müra modelleerimine

Majandus- ja kommunikatsiooniministri 10. aprill a määrus nr 26 Avaliku konkursi läbiviimise kord, nõuded ja tingimused sageduslubade andmiseks

Võistlusülesanne Vastutuulelaev Finaal

Fyysika 8(kodune).indd

ma1p1.dvi

Itella Estonia OÜ Uuendatud EXPRESS BUSINESS DAY BALTICS PAKKIDE JA ALUSTE TRANSPORT Express Business Day Baltics paki lubatud maksimaalsed

(10. kl. I kursus, Teisendamine, kiirusega, kesk.kiirusega \374lesanded)

Väljavõte:

7 KODEERIMISTEOORIA 7.1 Sissejuhatus Me vaatleme teadete edastamist läbi kanali, mis sisaldab müra ja võib seetõttu moonutada lähteteadet. Lähteteade kodeeritakse, st esitatakse sümbolite kujul, edastatakse läbi kanali ja seejärel vastu võetud sümbolite jada dekodeeritakse. Skemaatiliselt võib seda protsessi kujutada järgmise joonisega: Saatja Kodeerimine Kanal Müra Vastuvõtja Dekodeerimine Müra tõttu võib vastuvõetav teade erineda saadetavast teatest. Kodeerimisteooria eesmärk ongi konstrueerida kodeerimisviise, mis võimaldavad dekodeerimisel avastada kodeeritud teadete edastamisel tekkivaid vigu ja võimaluse korral neid ka parandada. Kirjeldame järgnevalt kodeerimise üldisi põhimõtteid. Tähistagu Σ sümbolite hulka, milles esitatakse lähteinformatsioon. Kodeerimisel iga hulka Σ kuuluv sümbol esitatakse sõnana nn kooditähestikus Γ. Tähistagem kõigi sõnade hulka tähestikus Γ kujul Γ (vaadeldakse ka nn tühja sõna). Siis kodeerimine seisneb kujutuse K : Σ Γ defineerimises: sümbol a Σ kodeeritakse sõnaga K(a) Γ, mida nimetatakse sümboli a koodsõnaks. Kui aga vaadeldakse sõna w = x 1 x 2... x n Σ, siis kodeerimine K laiendatakse sellele sõnale reegliga K(w) = K(x 1 x 2... x n ) = K(x 1 ) K(x 2 )... K(x n ). Näide 7.1 Olgu Σ = Γ = {0, 1}. Kõige lihtsam viis kodeerimiseks on defineerida kujutus K järgmiselt: K(0) = 000, K(1) = 111, st esitada ühte ja sama sümbolit kolm korda. Siis sõna 101 kodeeritakse kujul K(101) = K(1) K(0) K(1) = 111000111. Kui nüüd saadud sõna 111000111 edastamisel võetakse vastu sõna 111000111, siis on tõenäone, et sõnumi edastamisel vigu ei tekkinud ja see sõna dekodeeritakse sõnaks 101. Kui aga edastamisel võetakse vastu sõna 101010111, siis on selge, et esimese kolme sümboli ja järgneva kolme sümboli seas on tekkinud edastamisel kanalis viga. On tõenäone, et esimesed kolm sümbolit oleks pidanud olema siiski 111, 1

järgnevad kolm sümbolit 000 ja viimased kolm sümbolit 111. Seega dekodeeritakse sõna 101010111 sõnaks 101. Näide 7.2 (2/5-kood) Kasutust on leidnud ka järgnev kood: Σ = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, Γ = {0, 1}, K(1) = 11000, K(2) = 10100, K(3) = 01100, K(4) = 10010, K(5) = 01010, K(6) = 00110, K(7) = 10001, K(8) = 01001, K(9) = 00101, K(0) = 00011. Sõna K(x) = a 1 a 2 a 3 a 4 a 5 Γ dekodeeritakse siin järgmiselt: K(x) = 00011 = x = 0; K(x) 00011 = x = a 2 + 2a 3 + 4a 4 + 7a 5. Näide 7.3 (Morse-kood) Morse-koodi korral lähtetähestikuks on ladina tähestik Σ = {A, B, C,...} ja kooditähestikuks on Γ = {,, }, kus tähendab tühikut ja seda kasutatakse erinevate tähtede koodide vahel (eelmistes näidetes polnud tühik vajalik, sest esialgseid sümboleid kodeeriti ühepikkuste sõnadena). Esitame näitena mõnede ladina tähtede morse-koodid: K(A) =, K(B) =, K(C) =, K(D) =, K(E) =,.... Sõna ABC kodeeritakse siin kujul K(ABC) = K(A) K(B) K(C) =. Näide 7.4 (ASCII-kood 1 ) Siin kodeeritakse iga sümbol 128 sümbolist 8-bitiste blokkidena x 1 x 2... x 7 x 8 (x i Γ = {0, 1}). Esimesed 7 sümbolit x 1, x 2,..., x 7 kannavad informatsiooni ja viimane sümbol x 8 valitakse nn kontrollsümbolina nii, et x 1 + x 2 +... + x 7 = x 8 jäägiklassiringis Z 2. Näide 7.5 (ISBN-kood) Igale raamatule omistatakse ISBN-kood a 1 a 2... a 9 a 10, mis koosneb 10 numbrist a 1, a 2,..., a 9, a 10. Esimesed 9 numbrit omavad väärtusi hulgast {1, 2,..., 9}. Kümnes number a 10 omab väärtusi hulgast {1, 2,..., 9, 10}, kusjuures arvu 10 esitatakse sümbolina X. Number a 10 on kontrollnumber ja see valitakse nii, et 10 i=1 i a 11 i 0 (mod 11) (st tehteid vaadeldakse jäägiklassiringis Z 11 ). Näiteks ISBN 0-13-283796-X on korrektne, sest 1 10 + 2 6 + 3 9 + 4 7 + 5 3 + 6 8 + 7 2 + 8 3 + 9 1 + 10 0 10 + 1 + 5 + 6 + 4 + 4 + 3 + 2 + 9 0 (mod 11). 1 International Standard Book Number. 2

ISBN-koodidel on nende edastamisel tekkida võivate vigade avastamise seisukohalt terve rida häid omadusi, kuid siinkohal me neid ei vaatle. Näide 7.6 (Paarsuse kontroll) Olgu Σ = Γ = Z 2 = {0, 1} ja kodeeritavaks sõnaks sümbolite jada x 1... x n, kus x 1,..., x n Z 2. Siis sageli kodeeritakse see sõna kujul x 1... x n x n+1, kus x n+1 = x 1 +... + x n. Siin sümbol x n+1 on kontrollsümbol. Kui vastuvõetavas sõnas y 1... y n y n+1 võrdus y n+1 = y 1 +... + y n ei kehti, siis on selge, et edastamisel on tekkinud viga. Näide 7.7 Olgu kodeeritav sõna x 1 x 2 x 3, kus jällegi x 1, x 2, x 3 Z 2. Siis võib sõna x 1 x 2 x 3 kontrollsümboleid x 4, x 5, x 6 lisades kodeerida sõnana x 1 x 2 x 3 x 4 x 5 x 6, kus ehk sobivamalt esitatuna x 4 = x 1 + x 2, x 5 = x 1 + x 3, x 6 = x 2 + x 3 x 1 x 1 +x 2 + x 2 + x 3 x 3 +x 4 = 0 +x 5 = 0 +x 6 = 0 Nagu näeme, on siin koodsõnad teatava lineaarse homogeense võrrandisüsteemi lahenditeks. Vaatleme viimast näidet tõenäosusteooria seisukohalt. Oletagem, et meil on vaja edastada m sümbolist koosnev sõna (iga sümbol on kas 0 või 1). Olgu üksiku sümboli korrektse edastamise tõenäosus p. Vastavalt binoomjaotuse reeglitele on tõenäosus, et vastu võetavas sõnas on t viga, võrdne arvuga C t mp m t (1 p) t (eeldusel, et sümbolite vastuvõtmised on üksteisest sõltumatud) 2. Tõenäoseim vigaselt vastu võetud sümbolite arv on aga m(1 p). Märgime, et tavaliselt kehtib nõue p > 0, 5, sest vastasel juhul pole mõtet sõnumeid üldse edastada. Samuti edastatakse sümboleid tavaliselt väikeste portsjonite kaupa, st m ei ole väga suur. Valides m = 50 ja p = 0, 99, saadakse t 0 1 2 3 4 t vea esinemise tõenäosus 0,605 0,3056 0,0756 0,0122 0,00145 Kui kõik vead, millede arv t, on võimalik avastada koodsõna vastuvõtmisel, siis vastavat kodeerimismeetodit nimetatakse t viga avastavaks meetodiks 3. Kui kõik vead kuni vigade arvuni s on võimalik avastada ja ka automaatselt parandada, siis seda kodeerimismeetodit nimetatakse s viga korrigeerivaks meetodiks 4. 2 Cm t m! = t!(m t)!. 3 Inglise keeles: t-error detecting method. 4 Inglise keeles: s-error correcting method. 3

Koode võib liigitada mitmeti. Koode, milles kõik koodsõnad on ühe ja sama pikkusega, nimetatakse ühtlasteks koodideks 5. Näidetes 7.4 7.7 esitatud koodid on ühtlased koodid. See-eest morse-kood pole ühtlane kood. Teiseks levinud kooditüübiks on lineaarne kood. Lineaarseid koode kirjeldame järgnevates alajaotustes. 7.2 Lineaarsed koodid Järgnevalt eeldatakse, et sümboltähestikuks Γ, milles kodeeritakse edastatavaid teateid, on alati lõplik korpus GL(q) = F q elementide arvuga q = p n, kus p on algarv. Erijuhul, kui n = 1, on selliseks korpuseks jäägiklassikorpus Z p. Tähistagu F n q otsekorrutist F n q = { (x 1,..., x n ) x 1,..., x n F q }. Hulk F n q on n-mõõtmeline vektorruum üle korpuse F q ning seetõttu saab tema elementidega teostada lineaarseid tehteid. Vektori x = (x 1,..., x n ) samastame sõnaga x 1 x 2... x n tähestikus F q, st x = (x 1,..., x n ) = x 1 x 2... x n. Seetõttu F n q on alamhulk sõnade hulgas F q. Definitsioon 7.1 Koodiks pikkusega n üle F q nimetatakse alamhulka C F n q. Kui koodsõna x C on edastatud ja vastu võetud sõnana y F n q, siis sõna e = y x = e 1... e n nimetatakse veasõnaks (ka: veavektor, viga). Näide 7.8 Näites 7.7 on koodiks C = { x 1 x 2 x 3 x 4 x 5 x 6 F 6 2 x 4 = x 1 + x 2, x 5 = x 1 + x 3, x 6 = x 2 + x 3 }. Definitsioon 7.2 Koodi C F n q nimetatakse lineaarseks, kui C on vektorruumi alamruum, st C rahuldab nõudeid F n q x, z C = x + z C, x C, c F q = cx C. Kui seejuures alamruumi C mõõde on k, siis koodi C nimetatakse (n, k)-koodiks. Kui q = 2, siis koodi C nimetatakse binaarseks. Olgu C lineaarne (n, k)-kood. Siis C kui k-mõõtmeline vektorruum üle korpuse F q on isomorfne aritmeetilise ruumiga F k q. Seetõttu leidub injektiivne lineaarne kujutus γ : F k q F n q, nii et γ(f k q) = C 6. Sageli defineeritaksegi lineaarne (n, k)- kood kui mainitud injektiivne lineaarne kujutus γ. Sõna u F k q mõistetakse kui lähtesõna ja sõna γ(u) F n q on lähtesõna u kodeerituna. Lineaaralgebra kursusest on teada, et iga k-mõõtmeline alamruum n-mõõtmelisest vektorruumist koosneb teatava n k võrrandist koosneva lineaarse homogeense võrrandisüsteemi kõigist 5 Inglise keeles: block code. 6 Kujutuse γ injektiivsus tähendab, et erinevad elemendid kujutuvad erinevateks elementideks ehk u, v F k q, γ(u) = γ(v) = u = v. 4

lahenditest. Seega leidub lineaarne homogeenne võrrandisüsteem üle korpuse F q, mille lahenditeks on parajasti koodi C vektorid x = x 1 x 2... x n. Olgu see süsteem järgmine: h 11 x 1 + h 12 x 2 + + h 1n x n = 0 h 21 x 1 + h 22 x 2 + + h 2n x n = 0 (7.1)...... h n k,1 x 1 + h n k,2 x 2 + + h n k,n x n = 0 Süsteem (7.1) on esitatav maatrikskujul kus Hx T = θ, x 1 0 h 11 h 12... h 1n x T = x 2..., θ = 0..., H = h 21 h 22... h 2n.... x n 0 h n k,1 h n k,2... h n k,n Märgime, et maatriksi H reavektorid on lineaarselt sõltumatud. Kood C on täielikult määratud maatriksiga H. Maatriksit H võib vaadelda ka kui teatava lineaarse kujutuse η : F n q F n k q maatriksit kanoonilistes baasides. Kood C on siis selle lineaarse kujutuse tuum: C = Ker η = { z F n q η(z) = θ } = { z F n q Hz T = θ }. Hakkame järgnevalt nimetama maatriksit H kontrollmaatriksiks 7. Maatriks H pole alamruumiga C üheselt määratud. Näites 7.7 on antud lineaarne (6, 3)-kood üle F 2 = Z 2 kontrollmaat- Näide 7.9 riksiga 1 1 0 1 0 0 H = 1 0 1 0 1 0 0 1 1 0 0 1. Lineaarse (n, k)-koodiga C saab seostada veel teise maatriksi. Selleks vaatleme seda koodi kui injektiivset lineaarset kujutust γ : F k q F n q, kus γ(f k q) = C. Kood C on täielikult määratud ka lineaarteisenduse γ maatriksiga ruumide F k q ja F n q mingitel baasidel. Valime nendeks baasideks loomulikud baasid: ruumis F k q baasi e 1 = (1, 0,..., 0) = 10... 0, e 2 = (0, 1,..., 0) = 01... 0,..., e k = (0, 0,..., 1) = 00... 1 ja analoogilise baasi ε 1,... ε n ruumis F n q. Vaadeldav kood on siis täielikult määratud lineaarteisenduse γ maatriksiga G nendel baasidel. Maatriksi G veergudeks on ruumi 7 Inglise keeles: parity check matrix. 5

F k q baasivektorite kujutiste γ(e 1 ),..., γ(e k ) koordinaadid, st kui siis γ(e 1 ) = (a 11, a 21,..., a n1 ) = a 11 a 21... a n1, γ(e 2 ) = (a 12, a 22,..., a n2 ) = a 12 a 22... a n2,...... γ(e k ) = (a 1k, a 2k,..., a nk ) = a 1k a 2k... a nk, a 11 a 12... a 1k G = a 21 a 22... a 2k............. a n1 a n2... a nk Maatriksit G nimetatakse koodi C tekitavaks maatriksiks 8. Maatriksite H ja G konstruktsioonist järeldub vahetult, et HG = θ. (7.2) Kui maatriks G on teada, siis võrdust (7.2) saab kasutada vajaduse korral maatriksi H leidmiseks. Kui h = h 1... h n on maatriksi H mingi rida, siis on võrduse (7.2) kohaselt vektori h skalaarkorrutis maatriksi G iga veeruvektoriga võrdne nulliga, st Viimane võrrand maatrikskujul on a 11 h 1 + a 21 h 2 +... + a n1 h n = 0 a 12 h 1 + a 22 h 2 +... + a n2 h n = 0... a 1k h 1 + a 2k h 2 +... + a nk h n = 0 G T h T = θ. (7.3) Seega tuleb maatriksi H ridadeks valida lineaarse homogeense võrrandisüsteemi (7.3) (see on võrrandisüsteem h suhtes) lahendite ruumi baasivektorid. Näide 7.10 Näites 7.7 esitatud lineaarne (6, 3)-kood on antud injektiivse lineaarse kujutusega γ : F 3 2 F 6 2, kus γ(x 1 x 2 x 3 ) = x 1 x 2 x 3 x 4 x 5 x 6 ja Seetõttu x 4 = x 1 + x 2, x 5 = x 1 + x 3, x 6 = x 2 + x 3. γ(e 1 ) = γ(100) = 100110, γ(e 2 ) = γ(010) = 010101, γ(e 3 ) = γ(001) = 001011 8 Inglise keeles: generator matrix. 6

ja 1 0 0 0 1 0 G = 0 0 1 1 1 0. 1 0 1 0 1 1 Paneme tähele, et näidetes 7.9 ja 7.10 saadud maatriksid H ning G näites 7.7 antud (6,3)-koodi jaoks on esitatavad kujudel H = P E 3 E, G = 3 P, kus E 3 on kolmandat järku ühikmaatriks ja 1 1 0 P = 1 0 1 0 1 1. Definitsioon 7.3 Kui lineaarse (n, k)-koodi C maatriksid H ja G on kujuga H = P E n k E, G = k P, kus E r on r-ndat järku ühikmaatriks, siis öeldakse, et kood C on standartses kujus. Kasutades võrrandisüsteemi Hx T = θ lahendamiseks üldtuntud Gaussi meetodit, võib hõlpsalt veenduda, et iga lineaarne kood on ekvivalentne standartsel kujul esitatud lineaarse koodiga, kui koodide ekvivalentsust mõista järgnevalt. Definitsioon 7.4 Koode C ja C nimetatakse ekvivalentseteks, kui leidub selline substitutsioon ( ) 1 2... n π =, π(1) π(2)... π(n) et (x 1, x 2,..., x n ) C (x π(1), x π(2),..., x π(n) ) C. Näide 7.11 Olgu lõplikuks korpuseks valitud korpus F 3 = Z 3. Vaatleme (6, 3)-koodi C maatriksiga 1 2 0 1 2 0 H = 2 0 2 1 1 1 1 1 0 0 1 2. Lahendame võrrandisüsteemi Hx T = θ Gaussi meetodiga: 1 2 0 1 2 0 2 III 2 0 0 1 0 2 H = 2 0 2 1 1 1 2 0 2 1 1 1 1 1 0 0 1 2 1 1 0 0 1 2 2 7

2 0 0 1 0 2 1 0 1 2 2 2 0 1 0 0 1 2 2 I 2 0 0 1 0 2 0 0 1 0 2 1 0 1 0 0 1 2 = H. Kuna võrrandisüsteemidel Hx T = θ ja H x T = θ on ühed ja samad lahendid, siis on kood C antav ka maatriksiga H : C = { x F 6 3 Hx T = θ } = { x F 6 3 H x T = θ }. Muutes maatriksi H veergude järjekorda substitutsiooni ( ) 1 2 3 4 5 6 π = 1 6 5 4 2 3 kohaselt, st i-nda veeru paigutame π(i)-ndaks veeruks, saadakse maatriks 2 0 2 1 0 0 H = 0 2 1 0 1 0 0 1 2 0 0 1. Maatriksile H vastav lineaarne kood C on ekvivalentne esialgse koodiga C. 7.3 Hammingi kaugus Lineaarse koodi γ : F k q F n q korral on koodsõnadeks vektorruumi F n q alamruumi C = γ(f k q) elemendid. Koodsõnade x = x 1 x 2... x n ja y = y 1 y 2... y n erinevuse mõõtmiseks on kasutusele võetud nendevaheline Hammingi kaugus d(x, y) 9. Definitsioon 7.5 Vektorite x = x 1... x n ja y = y 1... y n (x, y F n q ) vaheliseks Hammingi kauguseks d(x, y) nimetatakse nende vektorite mittekokkulangevate koordinaatide arvu: d(x, y) = { i x i y i ; i = 1,..., n }. Vektori x F n q Hammingi kaaluks nimetatakse selle vektori nullist erinevate koordinaatide arvu w(x), st w(x) = d(x, θ) (θ - nullvektor). Lihtne on veenduda, et Hammingi kaugus rahuldab kõiki kauguse ültuntud omadusi, st 1 0 d(x, y) 0, 2 0 d(x, y) = 0 x = y, 3 0 d(x, y) = d(y, x), 4 0 d(x, y) d(x, z) + d(z, y), kus x, y, z F n q. Näide 7.12 Kui x = 110011 Z 6 2 ja y = 101010 Z 6 2, siis d(x, y) = 3. 9 Richard Wesley Hamming (1915-1998) - ameerika matemaatik. 8

Definitsioon 7.6 Koodi C minimaalseks kauguseks nimetatakse arvu d min = min u, v C, u v d(u, v). Niisiis, kui võetakse vastu koodsõna y, siis on loomulik seda dekodeerida sellele sõnale Hammingi kauguse mõttes lähimaks koodsõnaks. Näide 7.13 Näites 7.7 saadakse kood C = γ(f k q) = {111000, 110011, 101101, 100110, 011110, 010101, 001011, 000000}. Tähistades koodsõnade hulga C elemendid ülaltoodud järjekorras vastavalt numbritega 1, 2,..., 8, on elementide i ja j vaheline kaugus d(i, j) esitatud järgneva tabeli i-ndas reas ja j-ndas veerus: 1 2 3 4 5 6 7 8 1 0 3 3 4 3 4 4 3 2 3 0 4 3 4 3 3 4 3 3 4 0 3 4 3 3 4 4 4 3 3 0 3 4 4 3 5 3 4 4 3 0 3 3 4 6 4 3 3 4 3 0 4 3 7 4 3 3 4 3 4 0 3 8 3 4 4 3 4 3 3 0 Saadud tabelist on näha, et vaadeldava koodi minimaalne kaugus on 3. Tähistagu edaspidi sfääri keskpunktiga x ja raadiusega r. Näide 7.14 S r (x) = { y F n q d(x, y) r } Näites 7.13 esitatud koodi korral S 1 (000000) = { 000000, 100000, 010000, 001000, 000100, 000010, 000001 }, S 2 (000000) = { 110000, 101000, 100100, 100010, 100001, 011000, 010100, 010010, 010001, 001100, 001010, 001001, 000110, 000101, 000011 }. Kui vastu võetud sõna y = y 1 y 2... y n esineb ainult ühes sfääridest S r (x), mis on võetud koodsõnade x C ümber, siis sõna y dekodeeritakse selle sfääri keskpunktiks x. Teatud põhjustel valitakse sfäärid ümber koodsõnade ühe ja sama raadiusega r. See arv r püütakse valida võimalikult suurena nii, et sfäärid raadiusega r ümber koodsõnade ei lõiku omavahel. Seega peab valima r nii, et r d 1 2, kus d = d min. 9

Kui valida r mainitud viisil ja y S r (x), x C, siis d(x, y) (d 1)/2, st on võimalik parandada (d 1)/2 vigaselt vastu võetud sümbolit 10. Nagu märgitud, kui koodsõna x C edastamisel läbi kanali võeti vastu sõna y, siis selle dekodeerimisel leitakse sõnale y lähim koodsõna x C: d(x, y) = min x C d(x, y). Kui seejuures d(x, y) d 1, siis on koodsõna x vastuvõtmisel tekkinud vähemalt viga d(x, y) sümboli osas. Seetõttu on vaadeldav kood võimeline avastama d 1 viga. Oleme saanud teoreemi: Teoreem 7.1 Lineaarne kood minimaalse kaugusega d võib korrigeerida d 1 2 viga ja avastada d 1 viga. Näide 7.15 Vaatleme näites 7.14 esitatud koodi. Kuna siin d = 3, siis see kood on võimeline avastama kuni 2 viga ja parandama ühe vea. Oletame, et koodsõna x = x 1... x 6 võeti vastu sõnana y = 111010. Sõna y ei kuulu koodsõnade hulka, st koodsõna x on vastu võetud vigaselt. Arvutades sõna y kaugused kõigist kaheksast koodsõnast 1, 2,..., 8 (nummerdatud vastavalt näitele 7.14), saadakse vastavalt 1, 2, 4, 3, 2, 5, 3, 4. Lähim koodsõna sõnale y on 111000 ja seetõttu dekodeeritaksegi ta sõnaks 111000. Siin avastati ja parandati tekkinud viga koodsõna eelviimase sümboli edastamisel. 7.4 Lineaarse koodi dekodeerimine Vaatleme lineaarset (n, k) koodi C: γ : F k q F n q, γ(f k q) = C = { x F n q Hx T = θ } F n q. Olukord on järgmine. Lähteinformatsioon on esitatud sõnana a F k q, sõna a kodeeritakse kujutusega γ koodsõnaks x = γ(a) C, mis edastatakse mööda kanalit ja võetakse vastu sõnana y F n q. Koodsõna x edastamisel tekkinud viga on e = y x ehk x = e y C. Seega kehtib faktorruumis F n q /C võrdus e + C = y + C ehk e y + C. (7.4) Kuna me soovime, et dekodeerimisel oleks vigaste sümbolite arv võimalikult väike, siis tuleneb seosest (7.4) järgmine dekodeerimisreegel: 1) kõrvalklassist y + C tuleb valida vähima kaaluga element e : w(e ) = min e y+c w(e), 2) vastu võetud sõna y dekodeeritakse koodsõnaks x = y e. 10 Kui c R, siis c tähistab suurimat täisarvu, mis ei ületa arvu c. 10

Definitsioon 7.7 Kõrvalklassi y + C vähima kaaluga elementi e nimetatakse selle kõrvalklassi juhtelemendiks. Kui kõrvalklassis y + C on mitu elementi ühe ja sama minimaalse kaaluga, siis valitakse neist juhtelemendiks välja ainult üks element. Näide 7.16 Vaatleme jälle näites 7.7 esitatud lineaarset (6,3)-koodi C. Koodsõnade hulgas C on 8 elementi ja need loetleti näites 7.13. Leiame faktorruumi Z 6 2/C elemendid ehk kõik kõrvalklassid y+c. Neid on 2 6 3 = 8 tükki. Üheks kõrvalklassiks on K 1 = C. Järgmise kõrvalklassi K 2 saamiseks valime mis tahes elemendi y 2 hulgast Z 6 2 \K 1 ja leiame K 2 = y 2 +C. Kolmanda kõrvalklassi K 3 saamiseks valime mis tahes elemendi y 3 hulgast Z 6 2 \ (K 1 K 2 ) ja leiame K 3 = y 3 + C. Analoogiliselt jätkates saadakse kätte kõik 8 vajalikku kõrvalklassi. Need on: K 1 = {111000, 110011, 101101, 100110, 011110, 010101, 001011, 000000}, K 2 = {111001, 110010, 101100, 100111, 011111, 010100, 001010, 000001}, K 3 = {111010, 110001, 101111, 100100, 011100, 010111, 001001, 000010}, K 4 = {111100, 110111, 101001, 100010, 011010, 010001, 001111, 000100}, K 5 = {110000, 111011, 100101, 101110, 010110, 011101, 000011, 001000}, K 6 = {101000, 100011, 111101, 110110, 001110, 000101, 011011, 010000}, K 7 = {011000, 010011, 001101, 000110, 111110, 110101, 101011, 100000}, K 8 = {011001, 010010, 001100, 000111, 111111, 110100, 101010, 100001}. Kõrvalklassides K 1 K 7 on minimaalse kaaluga ja seega juhtelementideks vastavalt elemendid 000000, 000001, 000010, 000100, 001000, 010000 ja 100000. Kõrvalklassis K 8 on aga minimaalse kaaluga 2 kolm elementi 010010, 001100 ja 100001. Juhtelemendiks võib neist kolmest elemendist valida vabalt ainult ühe. Vähegi suuremate n ja k korral on selliste kõrvalklasside tabelite säilitamine küllaltki ebamugav. Seetõttu toimitakse järgmiselt. Definitsioon 7.8 Vektori y F n q sündroomiks nimetatakse vektorit S(y) = Hy T F n k q, kus H on vaadeldava lineaarse koodi kontrollmaatriks. siis Kuna S(z) = Hz T = θ z C, S(z) = S(y) z + C = y + C. Kui e = y x, x C, siis S(e) = S(y). Seetõttu toimitakse dekodeerimisel järgmiselt. Kui y on vastu võetud sõna, siis leitakse selle sõna sündroom S(y) ja selle sündroomiga kõrvalklassi juhtelement e. Siis eeldatav esialgne koodsõna x on x = y e. Sellise valiku korral d(x, y) = min{ d(c, y) c C }. 11

Otstarbekas on seega säilitada kõrvalklasside juhtelemendid ja nende sündroomid. Näide 7.17 Olgu vaadeldav kood sama nagu näites 7.16. Seal saime kõigi kõrvalklasside juhtelemendid: 000000, 000001, 000010, 000100, 001000, 010000, 100000, 010010. Nende elementide z sündroomid Hz T on vastavalt 000, 001, 010, 100, 011, 101, 110, 111. Olgu vastu võetud sõna y = 101001. Tema sündroom on S(y) = Hy T = 010. Sama sündroomiga on juhtelement e = 000010. Seega kodeerime sõna y sõnaks x = y e = 101001 000010 = 101011. Ehkki äsja kirjeldatud eeskiri dekodeerimiseks on mugavam kui esialgne, on ka see praktiliselt mittekasutatav. Näiteks, kui vaadelda (50, 20)-koodi üle F 2 = Z 2, siis on juba tegemist ligikaudu 10 9 kõrvalklassiga. Seetõttu tuleb konstrueerida paremaid koode. Vaatleme siinkohal ühte neist. Vaatleme binaarset lineaarset koodi C F n 2 = Z n 2 maatriksiga H. Säilitame varasemad tähistused: e = y x, x C, S(y) = S(e) = He T, e = e 1... e n Z n 2, e i Z 2. Tähistame maatriksi H veerge H 1,..., H n. Siis S(e) = He T = e 1 H 1 +... + e n H n. Seega: binaarse koodi korral vea e sündroom võrdub maatriksi H nende veergude summaga, kus viga esines. Maatriksi H veerud peaksid erinema nullvektorist, sest kui näiteks i-nda veeru elemendid on nullid, siis pole võimalik avastada vektori y i-ndas komponendis viga. Samuti peaksid maatriksi H kõik veerud omavahel olema erinevad, sest vastasel juhul pole võimalik eristada vea esinemise kohti. Seetõttu oleks sobiv binaarse koodi korral maatriks H valida järgmiselt. Tähistagu siinkohal m maatriksi H ridade arvu (erinevalt varasematest tähistustest). Maatriksi H veergudeks aga valime kõikvõimalikud nullvektorist erinevad vektorid ruumist Z m 2. Selliseid vektoreid on n = 2 m 1 tükki. Veeruvektorite järjestamiseks maatriksis kasutame leksikograafilist järjestust 11. Näiteks m = 3 korral saame 0 0 0 1 1 1 1 H = 0 1 1 0 0 1 1 1 0 1 0 1 0 1. (7.5) Sellise maatriksiga kood on binaarne (2 m 1, 2 m 1 m)-kood. Saadud koodi nimetatakse binaarseks Hammingi koodiks ja seda tähistatakse C m. Koodi C m minimaalne kaugus on 3, st see kood on võimeline parandama iga üksiku vea. 11 Kui u = u 1... u m ja v = v 1... v m, siis u v parajasti siis, kui u = v või leidub selline indeks i 1, et u 1 = v 1,..., u i 1 = v i 1 ja u i < v i. 12

Näide 7.18 Binaarse Hammingi koodi C 3 kontrollmaatriks on antud valemiga (7.5). Selle maatriksi esimene veerg on arvu 1 binaarne esitus, teine veerg on arvu 2 binaarne esitus jne.. Kui S(y) = 101, siis ka S(e) = 101. Et 101 on arvu 5 binaarne esitus, siis järeldame, et edastamisel tekkis viga viienda sümboliga. Teoreem 7.2 Binaarne Hammingi kood C m rahuldab omadust x 1 x 2... x n 1 x n C m = x n x 1 x 2... x n 1 C m. Teoreemi 7.2 õigsus järeldub vahetult maatriksi H konstruktsioonist. 7.5 Tsüklilised koodid Käesolevas alajaotuses on eeldatud, et kooditähestikuks on Γ = F q. Eesmärgiks on kirjeldada lineaarse koodi erijuhtu - tsüklilist koodi. Definitsioon 7.9 Alamruumi C F n q rahuldab tingimust nimetatakse tsükliliseks koodiks, kui ta v = (v 0, v 1,..., v n 1 ) C = (v n 1, v 0,..., v n 2 ) C. (7.6) Üheks tsüklilise koodi erijuhuks on eelmises alajaotuses kirjeldatud binaarne Hammingi kood C m. Hakkame sõna v 0 v 1... v n 1 = (v 0, v 1,..., v n 1 ) F n q esitame siin polünoomina v 0 + v 1 x + v 2 x 2 +... + v n 1 x n 1 F q [x]: v 0 v 1... v n 1 = (v 0, v 1,..., v n 1 ) = v 0 + v 1 x + v 2 x 2 +... + v n 1 x n 1. (7.7) Tähistagu V n kõigi ülimalt (n 1)-nda astme polünoomide hulka üle F q : Kuna V n = { v F q [x] deg v < n } F q [x]. u, v V n = u + v V n, v V n, c F q = cv V n, siis V n on alamruum ruumis F q [x]. Samastamine (7.7) on õigustatud, sest kujutus (v 0, v 1,..., v n 1 ) v 0 + v 1 x + v 2 x 2 +... + v n 1 x n 1 määrab isomorfismi vektorruumide F n q ja V n vahel. Samastamise tõttu F n q = V n. Kirjeldame veel ühte vektorruumide F n q ja V n esitust. Valime polünoomi x n 1 F q [x], moodustame selle järgi ringi F q [x] peaideaali (x n 1) = (x n 1) F q [x] ning vaatleme faktorringi W n = F q [x]/(x n 1) = { v + (x n 1) v F q [x] }. 13

See faktorring on ka vektorruum üle F q. Polünoomide teooriast on teada, et faktorringi W n moodustavate kõrvalklasside esindajate süsteemiks on kõik ülimalt (n 1)- nda astme polünoomid, st vektorruumi V n elemendid. Seetõttu samastati kõrvalklass v +(x n 1), v V n teda esindava elemendiga v. Selline samastamine on õigustatud, sest kujutus v v + (x n 1), v V n, määrab vektoruumide isomorfismi V n ja W n vahel. Sooritatud samastamise tõttu W n = V n. Juhime tähelepanu asjaolule, et W n on ka ring, st tema elemente saab korrutada. Korrutamine ringis W n tekitab korrutamise ka vektorruumis V n : kuna kõrvalklasside hulgas (faktorhulgas) W n on kõrvalklasside korrutis antud reegliga (u + (x n 1)) (v + (x n 1)) = uv + (x n 1), u, v V n, siis tuleb nende kõrvalklasside esindajate u V n ja v V n korrutiseks u v hulgas V n lugeda korrutiskõrvalklassi uv + (x n 1) esindaja, st u v võrdub polünoomide u ja v korrutise uv jagamisel polünoomiga x n 1 tekkiva jäägiga ehk korrutada tuleb mooduli x n 1 järgi (nagu tavaliselt jäägiklassiringides). Edaspidi tähistame ka korrutist u v kujul uv. Erijuhul saame, et ringis V n kehtib Võrdusest (7.8) järeldub lihtne, kuid kasulik omadus: Tõepoolest, x n = 1. (7.8) v = (v 0, v 1,..., v n 1 ) V n = xv = x v = (v n 1, v 0,..., v n 2 ). (7.9) xv = x (v 0, v 1,..., v n 1 ) = x(v 0 + v 1 x + v 2 x 2 +... + v n 1 x n 1 ) = = v 0 x + v 1 x 2 + v 2 x 3 +... + v n 2 x n 1 + v n 1 = = v n 1 + v 0 x + v 1 x 2 + v 2 x 3 +... + v n 2 x n 1 = = (v n 1, v 0,..., v n 2 ). Teoreem 7.3 Olgu C V n lineaarne kood. Siis C on tsükliline parajasti siis, kui C on ringi V n ideaal. Tõestus. Olgu C V n lineaarne kood. Eeldame esmalt, et ta on tsükliline. Valime suvalise polünoomi f = m i=0 a ix i F q [x] ja koodsõna v C. Kuna C on tsükliline ja ühtlasi alamruum ruumis V n, siis omaduse (7.9) kohaselt xv C, x i v C, a i x i v C, fv = ( m a i x i )v = i=0 m a i x i v C, st C on alamring ja ka ideaal ringis V n. Eeldame nüüd, et C on ideaal ringis V n. Siis xv C iga v C korral ja omaduse (7.9) ning definitsiooni 7.9 põhjal on kood C tsükliline. Märgime, et kui C on ringi V n ideaal, siis ta on ka alamruum ruumis V n ja seega lineaarne kood. 14 i=0

Teoreem 7.4 Olgu C on ringi V n nullideaalist erinev ideaal. Siis leidub ainult üks normeeritud polünoom g V n nii, et C = (g) ja g (x n 1). Tõestus. Olgu C ringi V n nullideaalist erinev ideaal ja g madalaima astmega nullist erinev polünoom ideaalist C (g F q [x], deg g < n). Kuna C on ideaal, siis (g) C. Valime suvalise elemendi v C. Jagades polünoomi v jäägiga polünoomiga g, saadakse v = qg + r, kus r F q [x], deg r < deg g. Kuna C on ideaal, siis r = v qg C ja g valiku tõttu r = 0, st v = qg (g). Järelikult C (g), kust (g) C tõttu (g) = C. Jagame polünoome x n 1 ja g jäägiga ringis F q [x]: x n 1 = q 0 g + r 0, deg r 0 < deg g < n. Kui q 1 on kõrvalklassi q 0 + (x n 1) F q [x]/(x n 1) esindaja, siis ringis V n saame võrduse 0 = q 1 g + r 0 ehk r 0 = q 1 g (g) = C. Jälle polünoomi g valiku tõttu r 0 = 0, st x n 1 = q 0 g ja g (x n 1). Kui c F q, siis ilmselt (g) = (cg). Kui leidub veel teiene polünoom g 1 V n nii, et C = (g 1 ) ja g 1 (x n 1), siis g 1 g ja g g 1, mistõttu g 1 = cg mingi c F q korral. Siit järeldub, et normeeritud polünoomide seas leidub ainult üks polünoom g teoreemi sõnastuses näidatud omadustega. Definitsioon 7.10 Kui C on ringi V n ideaal ja g on teda tekitav normeeritud polünoom, siis polünoomi g nimetatakse vastava tsüklilise koodi C tekitajaks, koodi C elemente aga nimetatakse koodsõnadeks, koodpolünoomideks või koodvektoriteks. Kui g on tsüklilise koodi C tekitaja, siis kodeerimine on väga lihtne: sõna a 0 a 1... a k 1 kodeeritakse koodsõnaks (a 0 + a 1 x +... + a k 1 x k 1 ) g (korrutamine ringis V n ). Näide 7.19 Vaatleme polünoomi g = 1 + x 2 + x 3 + x 4 Z 2 [x] = F 2 [x]. Kuna x 7 1 = (1 + x 2 + x 3 ) g, siis saab vaadelda tsüklilist (7, 3)-koodi, mis tekitatakse polünoomi g poolt. Kodeeritavad sõnad on siin pikkusega 3 ja koodsõnad on pikkusega 7. Kodeeritavad sõnad on 000, 001, 010, 011, 100, 101, 110, 111 ja nende esitused polünoomidena on 0, x 2, x, x + x 2, 1, 1 + x 2, 1 + x, 1 + x + x 2. Korrutades need polünoomid polünoomiga g, saadakse 0, x 2 + x 4 + x 5 + x 6, x + x 3 + x 4 + x 5, x + x 2 + x 3 + x 6, 1 + x 2 + x 3 + x 4, 1 + x 3 + x 5 + x 6, 1 + x + x 2 + x 5, 1 + x + x 4 + x 6. 15

Kirjutades saadud polünoomid ümber vektoritena, saadaksegi koodsõnade hulk ehk kood C = {0000000, 0010111, 0101110, 0111001, 1011100, 1001011, 1110010, 1100101}. Selle koodi tekitavaks maatriksiks G on kodeeriva lineaarse kujutuse γ : Z 3 2 Z 7 2 maatriks loomulikel baasidel 1, x, x 2 ja 1, x, x 2,..., x 6, st maatriksi G veergudeks (ehk transponeeritud maatriksi G T ridadeks) on polünoomide 1, x, x 2 kodeerimisel (polünoomiga g korrutamisel) saadud polünoomide kordajad: 1 0 1 1 1 0 0 G T = 0 1 0 1 1 1 0 0 0 1 0 1 1 1. Leiame ka kontrollmaatriksi H. Maatriksi H reavektor h = (h 1,..., h 7 ) rahuldab lineaarset homogeenset võrrandisüsteemi G T h T = θ. Maatriksi H reavektoriteks võib seetõttu valida võrrandisüsteemi G T h T = θ lahendite fundamentaalsüsteemi (st lahendite ruumi baasivektorid). Kuna maatriks G T sisaldab juba ühikmaatriksi veerge, siis saab kohe leida vaadeldava võrrandisüsteemi lahendid. Süsteemi esimesest, teisest ja kolmandast võrrandist avaldame h 1, h 2 ja h 7 : h 1 = h 3 + h 4 + h 5, h 2 = h 4 + h 5 + h 6, h 7 = h 3 + h 5 + h 6. Valides vabade tundmatute vektori h 3 h 4 h 5 h 6 väärtusteks 1000, 0100, 0010 ja 0001, saadakse süsteemi G T h T = θ lahendite fundamentaalsüsteemiks 1010001, 1101000, 1100101, 0100011. Need vektorid ongi maatriksi H reavektoriteks: 1 0 1 0 0 0 1 H = 1 1 0 1 0 0 0 1 1 0 0 1 0 1. 0 1 0 0 0 1 1 16

7.6 Ülesandeid 7.1 Kas IBSN-kood 0-387-96166-6 on korrektne? Lisada IBSN-koodis 3-540-96035 lõpus puuduv number. Vastus: On korrektne; 3 540 96035 X. 7.2 Olgu antud binaarne (5,2)-kood γ : Z 2 2 Z 5 2 tekitava maatriksiga 0 1 1 0 G = 1 0. 1 1 1 0 Leida vastav kontrollmaatriks H, kõik sündroomid ja kõrvalklasside juhtelemendid. Lahendus. Kuna Z 2 2 = {a 1, a 2, a 3, a 4 }, kus a 1 = 00, a 2 = 01, a 3 = 10, a 4 = 11, siis koodsõnade hulk on Et siis C = {Ga T 1, Ga T 2, Ga T 3, Ga T 4 }. 0 1 0 0 1 1 1 0 Ga T 1 = 1 0 0 1 1 0 = 0 1 0 0,......, Ga T 4 = 1 0 1 0 1 1 1 = 1 1, 0 1 0 0 1 0 1 C = {00000, 10010, 01111, 11101}. Faktorruumi Z 5 2/C mõõde on 3, st ta sisaldab 2 3 = 8 elementi. Leiame näite 7.16 eeskujul kõik kaheksa kõrvalklassi: K 1 = 00000 + C = {00000, 10010, 01111, 11101}, K 2 = 00001 + C = {00001, 10011, 01110, 11100}, K 3 = 00010 + C = {00010, 10000, 01101, 11111}, K 4 = 00100 + C = {00100, 10110, 01011, 11001}, K 5 = 01000 + C = {01000, 11010, 00111, 10101}, K 6 = 10001 + C = {10001, 00011, 11110, 01100}, K 7 = 11000 + C = {11000, 01010, 10111, 00101}, K 8 = 10100 + C = {10100, 00110, 11011, 01001}. Valime igast kõrvalklassist ühe minimaalse kaaluga elemendi, st juhtelemendi: ε 1 = 00000, ε 2 = 00001, ε 3 = 00010, ε 4 = 00100, 17

ε 5 = 01000, ε 6 = 00011, ε 7 = 11000, ε 8 = 10100. Maatriksi H reavektoriteks h tuleb võtta lineaarse homogeense võrrandisüsteemi G T h T = θ lahendite ruumi baasivektorid. Selle süsteemi maatriks on G T = 0 1 1 1 1 1 0 0 1 0. Seega vaadeldava süsteemi korral 12 h 1 = h 4, h 2 = h 3 + h 4 + h 5. Valides üksteise järel h 3 h 4 h 5 = 100, h 3 h 4 h 5 = 010 ja h 3 h 4 h 5 = 001, saadakse võrrandisüsteemi G T h T = θ lahendite ruumi baasivektoriteks 01100, 11010 ja 01001 ning seega 0 1 1 0 0 H = 1 1 0 1 0 0 1 0 0 1. Juhtelementidele ε 1,..., ε 8 vastavad sündroomid tulevad S(ε 1 ) = Hε T 1 = 000, S(ε 2 ) = Hε T 2 = 001, S(ε 3 ) = Hε T 3 = 010, S(ε 4 ) = Hε T 4 = 100, S(ε 5 ) = Hε T 5 = 111, S(ε 6 ) = Hε T 6 = 011, S(ε 7 ) = Hε T 7 = 101, S(ε 8 ) = Hε T 8 = 110. 7.3 On antud binaarne kood C = γ(z k 2) Z 5 2 tekitava maatriksiga 0 0 1 1 0 0 G = 0 1 0. 0 0 1 1 1 1 Leida: a) rank(g) = k, b) koodi minimaalne kaugus, c) maatriks H, d) kõik koodsõnad. Lahendus. Kuna maatriksi G kolmest esimesest reast moodustatud miinor on nullist erinev, siis k = rank(g) = 3. Koodsõnade hulga C = { Gu T u Z 3 2 } leidmiseks tuleb leida korrutised Gu T hulga Z 3 2 = {000, 001, 010, 011, 100, 101, 110, 111} iga elemendi u jaoks. Siit saame koodsõnade hulgaks C = {00000, 10011, 00101, 10110, 01001, 11010, 01100, 11111}. Tähistades koodsõnade hulga C elemendid ülaltoodud järjekorras vastavalt numbritega 1, 2,..., 8, on elementide i ja j vaheline kaugus d(i, j) esitatud järgneva tabeli i-ndas reas ja j-ndas veerus: 12 Siin pole võrrandisüsteemi G T h T = θ lahendamiseks Gaussi meetodit vaja rakendada, sest maatriksis G T juba esinevad ühikmaatriksi veerud. 18

1 2 3 4 5 6 7 8 1 0 3 2 3 2 2 2 5 2 3 0 3 2 3 2 5 2 3 2 3 0 3 2 5 2 3 4 3 2 3 0 5 2 3 2 5 2 3 2 5 0 3 2 3 6 3 2 5 2 3 0 3 2 7 2 5 2 3 2 3 0 3 8 5 2 3 2 3 2 3 0 Saadud tabelist on näha, et vaadeldava koodi minimaalne kaugus on 2. Maatriksi H reavektoriteks h tuleb võtta lineaarse homogeense võrrandisüsteemi G T h T = θ lahendite ruumi baasivektorid. Selle süsteemi maatriks on 0 1 0 0 1 G T = 0 0 1 0 1 1 0 0 1 1. Seega vaadeldava süsteemi korral 13 h 1 = h 4 + h 5, h 2 = h 5, h 3 = h 5. Valides üksteise järel h 4 h 5 = 10 ja h 4 h 5 = 01, saadakse võrrandisüsteemi G T h T = θ lahendite ruumi baasivektoriteks 10010 ja 11101 ning seega H = 1 0 0 1 0 1 1 1 0 1. 7.4 On antud binaarne Hammingi (7, 4)-kood C = {x Z 7 2 Hx T = θ }, kus 1 0 0 1 1 0 1 H = 0 1 0 1 0 1 1 0 0 1 0 1 1 1. Dekodeerida vastu võetud sõna y = 1110011. Lahendus. Leiame sõna y sündroomi S(y) = 011. Saadud sündroom asub maatriksi H kuuendas veerus. Seega viga esineb vastu võetud sõna y kuuendas sümbolis. Järelikult tuleb sõna y dekodeerida sõnaks 110001. Lihtne on veenduda, et viimase sõna sündroom on 000. 7.5 Binaarne tsükliline (3, 1)-kood C tekitatakse polünoomiga g = 1+x+x 2. Leida koodsõnade hulk C, tekitav maatriks G ja kontrollmaatriks H. Vastus: C = { 000, 111 }, G T = 1 1 1 1 1 0, H = 1 0 1. 13 Siin pole võrrandisüsteemi G T h T = θ lahendamiseks Gaussi meetodit vaja rakendada, sest maatriksis G T juba esinevad ühikmaatriksi veerud. 19

7.6 Vaatleme polünoomi g = 1+x poolt tekitatud tsüklilist (n, n 1)-koodi. Leida, milleks kodeeritakse lähtesõna a 0 a 1... a n 2. Lahendus. Lähtesõna a 0 a 1... a n 2 esitus polünoomina on a 0 +a 1 x...+a n 2 x n 2. See sõna kodeeritakse sõnaks (a 0 + a 1 x... + a n 2 x n 2 ) g = (a 0 + a 1 x... + a n 2 x n 2 ) (1 + x) = = a 0 + (a 0 + a 1 )x + (a 1 + a 2 )x 2 +... + (a n 3 + a n 2 x n 2 + a n 2 x n 1, st sõnaks a 0 (a 0 + a 1 )(a 1 + a 2 )... (a n 3 + a n 2 )a n 2. 7.7 Binaarne tsükliline (6, 2)-kood C tekitatakse polünoomiga g = 1 + x 2 + x 4. Leida koodsõnade hulk C, tekitav maatriks G ja kontrollmaatriks H. Lahendus. Kuna x 6 1 = (1+x) 2 g, siis saab vaadelda tsüklilist (6, 2)-koodi, mis tekitatakse polünoomi g poolt. Kodeeritavad sõnad on siin pikkusega 2 ja koodsõnad on pikkusega 6. Kodeeritavad sõnad on ja nende esitused polünoomidena on 00, 01, 10, 11 0, x, 1, 1 + x. Korrutades need polünoomid polünoomiga g, saadakse 0, x + x 3 + x 5, 1 + x 2 + x 4, 1 + x + x 2 + x 3 + x 4 + x 5. Kirjutades saadud polünoomid ümber vektoritena, saadaksegi koodsõnade hulk ehk kood C = {000000, 010101, 101010, 111111}. Selle koodi tekitavaks maatriksiks G on kodeeriva lineaarse kujutuse γ : Z 2 2 Z 6 2 maatriks loomulikel baasidel 1, x ja 1, x, x 2,..., x 5, st maatriksi G veergudeks (ehk transponeeritud maatriksi G T ridadeks) on polünoomide 1, x kodeerimisel (polünoomiga g korrutamisel) saadud polünoomide kordajad: G T = 1 0 1 0 1 0 0 1 0 1 0 1. Leiame ka kontrollmaatriksi H. Maatriksi H reavektor h = (h 1,..., h 6 ) rahuldab lineaarset homogeenset võrrandisüsteemi G T h T = θ. Maatriksi H reavektoriteks võib valida võrrandisüsteemi G T h T = θ lahendite fundamentaalsüsteemi (st lahendite ruumi baasivektorid). Kuna maatriks G T sisaldab juba ühikmaatriksi veerge, siis saab kohe leida vaadeldava võrrandisüsteemi lahendid. Süsteemi esimesest ja teisest võrrandist avaldame h 1 ja h 2 : { h 1 = h 3 + h 5, h 2 = h 4 + h 6. 20

Valides vabade tundmatute vektori h 3 h 4 h 5 h 6 väärtusteks 1000, 0100, 0010 ja 0001, saadakse süsteemi G T h T = θ lahendite fundamentaalsüsteemiks 101000, 010100, 100010, 010001. Need vektorid ongi maatriksi H reavektoriteks: 1 0 1 0 0 0 H = 0 1 0 1 0 0 1 0 0 0 1 0. 0 1 0 0 0 1 21