Hoofdstuk 3 Toepassng: Codes Als toepassng van vectorrumten over endge lchamen kjken we naar foutenverbeterende codes. We benutten slechts elementare kenns van vectorrumten, en van de volgende functe. Defnte 3.1 Als R een commutateve rng met 1 s en R n de verzamelng van rjtjes elementen van R ter lengte n (voor een n 1, dan s de afbeeldng, : R n R n R gedefneerd door aan twee elementen v,w R n het element v,w = n v w R toe te voegen Opmerkng 3.2 In het specale geval dat R het lchaam R van de reële getallen s, s, het standaardnproduct. Inproducten hebben allerhande belangrjke egenschappen (op reële en complexe vectorrumten de we n een volgend hoofdstuk n meer detal bekjken. Het s voor enkele van de voorbeelden n dt hoofdstuk prettg deze algemenere defnte te hebben. Defntes 3.3 Een lneare (foutenverbeterende code over F q s een lneare deelrumte van F n q, voor een endg lchaam F q en een n 1. We zullen meestal smpelweg over een code C over F q spreken. De codewoorden zjn de elementen van F n q de bevat zjn n C. De dmense dm C van de code s de dmense van de deelrumte. De lengte van de code s de dmense n van de rumte waarut de vectoren afkomstg zjn, dus de lengte van de codewoorden. Opmerkngen 3.4 Merk op dat het nulwoord (0,0,...,0 F n q altjd n een code C zt. Het aantal elementen van de code C s geljk aan q k, als k = dm C en q het aantal elementen van het lchaam. De verhoudng tussen k en n wordt wel de rate van de code genoemd: van de n coördnaten van elk codewoord zjn er k bj onafhankeljke nformatedragers, en de overge n k zjn opvulsel, redundante. Het doel van codetheore s om de n k extra coördnaten effcënt te gebruken om ervoor te zorgen dat de nformate ut het codewoord nog te achterhalen s wanneer een deel van het codewoord onderweg vermnkt of verloren s geraakt, bjvoorbeeld door rus op de transmsseljn. Het utgangspunt van het model dat ten grondslag lgt aan codetheore s steeds dat de kans klen s dat nformate vermnkt overkomt. Voorbeelden 3.5 Het eenvoudgste voorbeeld van een foutenverbeterende code s de repettecode ter lengte n over F 2 : om een bt nformate (0 of 1 over te sturen wordt de bt n maal verzonden. De codewoorden zjn her dus slechts de vectoren 11
12 HOOFDSTUK 3. TOEPASSING: CODES (1,1,...,1 en (0,0,... 0 n F n 2, en de dmense k s 1. Wanneer de ontvanger nu het woord (1,1,0,1,1 ontvangt terwjl de bnare repettecode van lengte 5 gebrukt wordt, zal onder de aanname dat fouten vrj zelden op treden, de concluse moeten luden dat hoogstwaarschjnljk het codewoord (1, 1, 1, 1, 1 werd utgezonden, maar dat op de derde poste een fout optrad. Ook wanneer er onderweg de utzonderljke pech optreedt dat twee bts worden omgezet kan de ontvanger her nog tot de juste concluse komen met betrekkng tot de bedoelde waarde van de bt: de ontvanger laat smpelweg de meerderhed van de ontvangen bts de doorslag geven. De repettecode ter lengte n s dus (n 1/2 foutenverbeterend als n oneven s: we komen tot de juste concluse over het bt dat overgezonden moest worden mts de kans op fouten maar (veel klener s dan de kans op n fouten. Deze aanname, dat elk cjfer van de code met klene waarschjnljkhed onderweg wordt veranderd, en dat het utgezonden codewoord de vector zal zjn geweest de n de code zt en op het klenst mogeljke aantal plaatsen van de ontvangen vector afwjkt, ledt tot de methode om de nformate te achterhalen de maxmale waarschjnljkhedsdecoderng wordt genoemd. Defntes 3.6 Het gewcht van een vector v ut F n q s het aantal postes waarvoor de coördnaat v F q net nul s. De Hammngafstand h(v,w tussen twee vectoren v,w ut F n q s het aantal postes j waarop de coördnaten v en w verschllen: h(v,w = #{j : 1 j n v j w j }, dus 0 h(v,w n. De mnmumafstand van een code C s het klenste posteve getal d waarvoor codewoorden v,w C bestaan met h(v,w = d. Defnte 3.7 Een code C van lengte n over F q heet e-foutenverbeterend als geldt dat voor elke vector v F n q er hoogstens één codewoord c C s met h(c,v e. Dat betekent dat ut een ontvangen vector v, de s ontstaan doordat n een codewoord op hoogstens e postes een vermnkng heeft plaatsgevonden, dt codewoord herled kan worden. De code heet dan bovenden e + 1-foutendetecterend als geldt dat elke op e + 1 plaatsen vermnkte vector afstand mnstens e + 1 tot alle codewoorden heeft. Het s mogeljk dat er dan meerdere codewoorden op afstand e+1 lggen, zodat uneke decoderng onmogeljk s, maar er lggen n eder geval geen codewoorden op afstand e. Voorbeeld 3.8 (party check Een smpel voorbeeld van een code de 1-foutdetecterend s, maar net foutenverbeterend, s een code van lengte (zeg 3 over F 2 de bestaat ut alle woorden van even gewcht. Wanneer er dan een woord van oneven gewcht wordt ontvangen s het dudeljk dat er mnstens 1 fout s opgetreden, maar wáár s net altjd dudeljk. Heronder geven we nog dre voorbeelden van het gebruk van party check s, n de zn dat er preces 1 controle-cjfer aan de nformate wordt toegevoegd de er voor zorgt dat er aan een enkele lneare condte s voldaan. Let wel op: n de voorbeelden gaat het net meer over codes over F 2, en n fete net eens steeds over foutenverbeterende codes volgens onze defnte, want de onderlggende rng s n twee van de dre gevallen geen lchaam. Voorbeeld 3.9 (UPC Een eenvoudg voorbeeld van foutendetecte wordt gebrukt n de streepjescode de hoort bj de Unversal Product Code, UPC. Deze coderng, snds 1973 n gebruk, s terug te vnden op heel veel consumptegoederen, en bestaat ut 12 decmale cjfers, her te representeren als een element
13 v Z/10Z 12. Het eerste cjfer geeft een ndcate van het type product, de volgende 5 cjfers geven de fabrkant aan, en daarna volgen 5 cjfers voor het product. Het laatste cjfer v 12 s het zogenaamde check-cjfer en wordt geheel bepaald door de regel (3,1,3,1,3,1,3,1, 3, 1, 3,1, v = 0 Z/10Z, dat wl zeggen, 3 v 2 1 + v 2 = 0 Z/10Z. Voorbeeld 3.10 Het nternatonal standard book number (ISBN s een ander voorbeeld van een coderng de van een check-cjfer gebruk maakt. Het ISBN s (op te vatten als een vector w ut (Z/11Z 10 met de restrkte dat de eerste 9 coördnaten ongeljk aan 10 zjn; ze worden elk weergegeven als decmale cjfers, en representeren land (1 tot 3 cjfers, utgever (1 tot 5 cjfers, en boek. Het allerlaatste cjfer s weer een element dat als check-dgt dent, en dat wél elk element ut Z/11Z kan zjn, weergegeven door een decmaal (de klenste net-negateve representant van de restklasse of de letter X (de de restklasse 10 representeert. De waarde ervan wordt volledg bepaald door de regel (10,9,8,7,6,5, 4, 3,2,1, w = 10 (11 w = 0 Z/11Z. Voorbeeld 3.11 Op de meeste producten wordt snds 1 januar 2005 het European Artcle Number vermeld n plaats van de UPC. Dt EAN bestaat ut een vector x ter lengte 13 over Z/10Z, waar het laatste cjfer x 13 een check-dgt s, bepaald door (1,3,1,3,1,3,1,3,1,3, 1, 3, 1, x = 3 v 2 + 7 v 2 1 = 0 Z/10Z. Oude UPC aandudngen kunnen smpel vervangen worden door een EAN door de oude vector vooraf te laten gaan door een 0. De neuwe EAN aandudngen geven land, fabrkant, en product met een wsselend aantal cjfers weer. Per 1 januar 2007 werden ook de oude ISBNumbers vervangen door een 13-cjferge ISBN-13, de net zo s opgebouwd als de EAN; de eerste 3 cjfers van de neuwe aandudng voor boeken zullen voorlopg altjd 978 zjn, en staan voor het unversele Bookland. Stellng 3.12 Een code met mnmumafstand d s e-foutenverbeterend dan en slechts dan wanneer d 2e + 1. Bewjs. Veronderstel dat er een vector v bestaat op afstand klener of geljk e van twee codewoorden w 1 en w 2 n een code met mnmuafstand d 2e + 1. Dan s terwjl voor de codewoorden w 1 w 2 h(w 1,w 2 h(w 1,v + h(v,w 2 2e, h(w 1,w 2 d 2e + 1. Dat s een tegenspraak, tenzj w 1 = w 2, en dus s er hoogstens één vector op afstand ten hoogste e als de mnmumafstand ten mnste 2e + 1 s, en de code s dus e-foutenverbeterend.
14 HOOFDSTUK 3. TOEPASSING: CODES Veronderstel, voor de omkerng, dat de mnmumafstand d hoogstens 2e s, dan zjn er twee codewoorden u,w op afstand d 2e van elkaar. Vorm nu een rj x met u = x 1,x 2,...,x d,x d+1 = w van d + 1 vectoren, waarbj x +1 steeds op preces 1 coördnaat van x verschlt. Dan s er een vector v, nameljk v == x d/2, de op hoogstens e coördnaten van u en op net meer dan e coördnaten van w verschlt. Maar dan zjn zowel u als w decoderngen van v op afstand hoogstens e: e fouten kunnen net altjd unek verbeterd worden, en de code s net e-foutenverbeterend. Opmerkng 3.13 Een andere formulerng van dezelfde stellng s: een code s e foutenverbeterend dan en slechts dan als alle bollen met straal e om verschllende codewoorden dsjunct zjn. Her moet je bol wel met een korreltje zout nemen: een bol met straal r om een woord w n F n q bestaat ut alle vectoren met Hammngafstand ten hoogste r tot w. Dat zjn er natuurljk maar endg veel, en dat zo n verzamelng een soort bolletje vormt komt door de egenschap dat de Hammngafstand net als de gewone afstand n de R n een metrek vormt (ze de opgaven, nclusef een drehoeksongeljkhed (de ook n het bewjs gebrukt werd. De centrale vraag voor de coderngstheore s gelegen n de spannng tussen de twee esen de we graag aan codes zouden opleggen. In de eerste plaats wllen we zoveel mogeljk nformate oversturen, dat wl zeggen de rate k/n zo groot mogeljk maken (en de redundante klen. Anderzjds wllen we graag zoveel mogeljk fouten kunnen herstellen, dus e (en daarmee volgens Stellng 3.12 ook d zo groot mogeljk kezen; maar een grote mnmumafstand betekent veel vectoren buten de codewoorden, dus just een lage rate. Er bestaan heel veel grenzen op de omvang van goede codes. We geven her een bekende bovengrens op het aantal codewoorden als de dmense en het aantal fouten e dat verbeterd moet kunnen worden gegeven s. Stellng 3.14 (Hammng grens Voor een code C over F q van lengte n en mnmumafstand groter of geljk 2e + 1 geldt: codewoorden. #C e ( n =0 q n (q 1 Bewjs. Laat c een woord ut de code C n F n q zjn. De bollen met straal e rond c bevat n totaal e ( n (q 1 =0 verschllende vectoren, want een woord op afstand van codewoord c kan op ( n plaatsen op (q 1 maneren van c verschllen. Aan de ene kant moeten al deze bollen dsjunct zjn (ze de voorgaande Opmerkng, dus er zjn n totaal #C e =0 ( n (q 1 verschllende vectoren n al de bollen. Dt aantal vectoren s begrens door het totaal aan vectoren n de hele rumte, q n : de ongeljkhed volgt.
15 Voorbeeld 3.15 Veronderstel dat we een bnare code wllen maken van lengte n = 5, waarmee we 2 fouten kunnen verbeteren. De Hammng grens geeft dan aan dat de code net meer dan 2 5 /(1 + 5 + 10 = 2 vectoren kan bevatten: alleen de repettecode voldoet! Inderdaad, volgens Stellng 3.12 s d mnstens 5. Opmerkngen 3.16 Veronderstel nu dat we een k-dmensonale code wllen construeren n een n-dmensonale vectorrumte over F q (met k < n. Het volstaat dan om k onafhankeljke vectoren te kezen, en C te laten bestaan ut de F q -lneare combnates van deze k bassvectoren, de we soms schrjven als een k n matrx G, de zogenaamde generatormatrx. Elk codewoord s dus een F q -lneare combnate van deze k rjvectoren. Een andere maner om een k-dmensonale deelrumte van F n q te bepalen, s door n k onafhankeljke lneare vergeljkngen op te schrjven en daarvan de oplossngsrumte te bepalen: de k-dmensonale rumte s dan de kern van een n (n k matrx H, de de party-check matrx wordt genoemd, omdat deze preces alle lneare condtes op de codewoorden vastlegt. Her schrjf je een woord w als een rjvector ter lengte n, en om na te gaan of het n de code zt vermengvuldg je deze vector van rechts met de matrx H. Het woord zt n de code dan en slechts dan als w H = 0. Het verband tussen de generatormatrx G en de party-checkmatrx H wordt gegeven door de relate G H = 0: mmers, elke rj van G s een codewoord, en het product daarvan met H geeft de nulvector. Voorbeeld 3.17 ( Bnare Hammng code Er bestaat een bnare Hammng code van lengte 2 r 1 en dmense 2 r 1 r voor elke r 2. We geven de constructe voor r = 3. Constureer de code ter lengte n = 2 3 1 = 7 over F 2 van dmense k = 4 door de party-check matrx H 3 op te schrjven: de rjen van H 3 bestaan ut alle mogeljke dretallen bts, met utzonderng van 3 nullen; een systematsche maner om dat te doen s door de bnare schrjfwjze van alle getallen van 1 tot en met 7 te gebruken: 1 0 0 0 1 0 1 1 0 H 3 = 0 0 1. 1 0 1 0 1 1 1 1 1 (Merk op dat we her, ongebrukeljk, het mnst sgnfcante bt van een getal voorop schrjven; dat zorgt ervoor dat we makkeljker H 4 ut H 3 maken. Laat deze 7 3 matrx de party-checkmatrx van de code C 3 over F 2 zjn; de codewoorden zjn dus de rjvectoren w ter lengte 7 over F 2 de w,k = 0 hebben met elk van de dre kolommen van H. Daarvan zjn er 2 4, bjvoorbeeld alle lneare combnates van de rjen van G 3 = 1 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 1 0 0 0 0 over F 2, de de kern van H 3 opspannen. De Hammngcode s 1-foutenverbeterend voor alle r 2.