Naar inhoud springen

Lineaire code

Uit Wikipedia, de vrije encyclopedie
Dit is een oude versie van deze pagina, bewerkt door Oskardebot (overleg | bijdragen) op 14 mei 2016 om 21:49.
Deze versie kan sterk verschillen van de huidige versie van deze pagina.

Binnen de coderingstheorie is een lineaire code C een lineaire deelruimte van de vectorruimte V bestaande uit alle mogelijke woorden ter lengte n. Hierbij is V een vectorruimte over een eindig lichaam K, waarbij K de verzameling symbolen is die kunnen optreden als symbool binnen een codewoord. Algemeen: K = GF(pr).

Voorbeeld

n=7, p=2, r=1
V is een vectorruimte bestaande uit alle mogelijke symboolrijen ter lengte 7, met de symbolen 0 en 1. Dus V bestaat uit 27 = 128 symboolrijen.

Een code C is een lineaire deelruimte van V; alle woorden die voorkomen in C noemen we codewoorden.

Omdat C een lineaire deelruimte is, kunnen we C beschrijven als een ruimte die wordt voortgebracht door een aantal basisvectoren b1, b2, .... Voor ieder codewoord c uit C geldt dat c een lineaire combinatie (met factoren 0 en 1) is van de basisvectoren. Een lineaire code bevat dus het codewoord dat uit allemaal nullen bestaat.

Een voorbeeld van een lineaire code C is de code voortgebracht door de basisvectoren die de rijen vormen van de volgende matrix:

De lineaire code C in dit voorbeeld heeft dimensie 3, en bestaat dus uit 8 codewoorden: de lineaire combinaties van de drie basisvectoren (inclusief het nulwoord). De acht codewoorden zijn dus de volgende:

Generatormatrix en parity check matrix

De matrix die een lineaire code voortbrengt wordt de generator-matrix G genoemd. Een k-dimensionale lineaire code met woordlengte n over GF(2), heeft een generatormatrix met hoogte k (iedere rij is een van de overige rijen lineair onafhankelijk codewoord) en breedte n; een dergelijke code bestaat uit 2k codewoorden. De zogenaamde parity check matrix H heeft breedte n en hoogte n-k. De rijen van H zijn woorden die loodrecht staan op alle rijen van G, en dus op alle codewoorden. Voor ieder codewoord c geldt dus dat de vermenigvuldiging Hc de nulvector oplevert.

Omgekeerd geldt ook dat als een ontvangen woord vermenigvuldigd met H niet de nulvector oplevert, het ontvangen woord noodzakelijkerwijs geen codewoord kan zijn, en er dus 1 of meer bitfouten moeten zijn opgetreden.

Praktijkvoorbeelden

Enkele voorbeelden van daadwerkelijk gebruikte lineaire codes zijn: