• Aucun résultat trouvé

Codis no lineals en Magma: construcci´o de codis perfectes

N/A
N/A
Protected

Academic year: 2022

Partager "Codis no lineals en Magma: construcci´o de codis perfectes"

Copied!
82
0
0

Texte intégral

(1)

codis perfectes

Mem`oria del projecte de final de carrera corres- ponent als estudis d’Enginyeria Superior en In- form`atica presentat per Laura Vidal Mar´ın i diri- git per Merc`e Villanueva Gay.

Bellaterra, juny de 2009

(2)

La firmant, Merc`e Villanueva Gay, professora del Departament d’Enginyeria de la Informaci´o i de les Comunicacions de la Universitat Aut`oma de Barcelona CERTIFICA:

Que la present mem`oria ha sigut realitzada sota la seva direcci´o per Laura Vidal Mar´ın

Bellaterra, juny de 2009

Firmat: Merc`e Villanueva Gay

(3)
(4)
(5)

Agra¨ıments

Gr`acies a la meva directora de projecte, Merc`e Villanueva, aquest projecte ha tirat endavant. En tot moment m’ha guiat i ajudat, m’ha ensenyat el que calia saber per a poder treballar. I tot aix`o ho ha fet amb la millor actitud i ganes; veritablement ha estat una directora de projecte immillorable.

Tamb´e voldria agrair la participaci´o d’en Jaume Pujol en aquest projecte, que em va proporcionar la seva ajuda amb la funci´o de Vasilev’ i va aportar idees per a millorar el rendiment d’algunes funcions.

Aprofitant que aquest projecte significa la conclusi´o de la carrera, agrair a totes les persones, companys, professors, amics i familiars que m’han acompa- nyat en aquest cam´ı llarg i dur, que han fet l’experi`encia millor i inoblidable.

A tots vosaltres, moltes gr`acies.

v

(6)
(7)

´ Index

1 Introducci´o 1

1.1 Objectius . . . 2

1.2 Contingut de la mem`oria . . . 3

2 Bases te`oriques 5 2.1 Codis correctors d’errors . . . 5

2.1.1 Dist`ancia m´ınima i pes m´ınim . . . 7

2.1.2 Capacitat correctora i radi de recobriment . . . 8

2.1.3 Codis lineals i codis no lineals . . . 9

2.1.4 Codis isomorfs i codis equivalents . . . 11

2.2 Rang i nucli d’un codi . . . 11

2.3 Classificaci´o i representaci´o de codis no lineals . . . 14

2.4 Codis perfectes . . . 16

2.4.1 Construccions de codis perfectes . . . 18

2.5 Teoria de dissenys . . . 20

2.5.1 Sistemes triples d’Steiner . . . 20

2.5.2 Sistemes qu`adruples d’Steiner . . . 21

2.5.3 Dissenys combinatoris . . . 21

2.5.4 Fragments . . . 22

2.5.5 Grup d’automorfismes . . . 23

3 Planificaci´o del projecte 25

vii

(8)

3.1 Objectius del projecte . . . 25

3.2 Estat de l’art . . . 27

3.3 Estudi de viabilitat . . . 28

3.3.1 Viabilitat t`ecnica . . . 28

3.3.2 Viabilitat operativa . . . 28

3.3.3 Viabilitat econ`omica . . . 29

3.3.4 Viabilitat legal . . . 29

3.3.5 Alternatives . . . 30

3.4 Planificaci´o temporal del treball . . . 30

4 Desenvolupament del projecte 35 4.1 Entorn de desenvolupament . . . 35

4.2 Implementaci´o del paquet BinaryPerfectCodes . . . 37

4.2.1 Construcci´o de codis binaris perfectes no lineals . . . . 38

4.2.2 C`alcul d’invariants de codis perfectes . . . 41

4.2.3 C`alculs amb paraules-codi . . . 41

4.3 Proves del paquet BinaryPerfectCodes . . . 44

5 Handbook of Magma functions 47 5.1 Introduction . . . 47

5.2 Construction of binary perfect codes . . . 48

5.3 Invariants of binary perfect codes . . . 52

5.4 Operations on codewords . . . 54

6 Resultats 57 6.1 Construcci´o de Vasil’ev . . . 57

6.2 Construcci´o doubling . . . 59

7 Conclusions 63 7.1 Assoliment d’objectius . . . 63

7.2 Conclusions . . . 64

7.3 L´ınies futures . . . 65 viii

(9)

A Paquet BinaryPerfectCodes 69

ix

(10)
(11)

´ Index de figures

2.1 Relaci´o entre el codi, elkernel i l’expansi´o lineal . . . 12

2.2 Representaci´o gr`afica d’un STS . . . 21

3.1 Planificaci´o temporal del projecte . . . 33

3.2 Planificaci´o real del projecte . . . 34 4.1 Graf de m´ınima dist`ancia d’un codi de Hamming de longitud 7. 43

xi

(12)

Cap´ıtol 1 Introducci´ o

Els codis correctors d’errors es poden classificar, segons les propietats alge- braiques de les seves paraules-codi, com a lineals o no lineals. Els codis lineals es poden expressar mitjan¸cant un subespai vectorial, una representaci´o molt adient per a treballar amb ells en un ordinador, ja que permet representar un codi amb una cardinalitat considerable (´es a dir, que est`a format per mol- tes paraules-codi) mitjan¸cant una base de vectors que pot generar qualsevol paraula del codi. Els codis no lineals, en canvi, no es poden representar mit- jan¸cant subespais vectorials, sin´o que cal emmagatzemar tot el conjunt de paraules-codi en mem`oria; per a codis grans, aquesta opci´o ´es inviable.

En aquest projecte treballarem amb codis correctors d’errors constru¨ıts sobre l’alfabet binari, ´es a dir, que les seves paraules-codi estan formades per zeros i uns.

Els codis tamb´e es poden caracteritzar segons la relaci´o entre la seva capacitat correctora i el seu radi de recobriment: els codis perfectes s´on aquells tals que la seva capacitat correctora coincideix amb el seu radi de recobriment, ´es a dir, un codi que pot corregire errors i tal que qualsevol vector de la mateixa longitud que el codi estigui a una dist`ancia m`axima d’e d’exactament una paraula-codi, ´es perfecte.

1

(13)

De codis perfectes n’hi ha de lineals i de no lineals. En aquest projecte ens centrarem en els codis binaris perfectes no lineals que poden corregir un error, anomenats 1-perfectes. Treballarem nom´es amb codis 1-perfectes perqu`e no existeixen codis binaris perfectes no lineals i no equivalents amb capacitat correctora major que 1.

Per tal de treballar amb codis no lineals amb un ordinador, existeix una re- presentaci´o similar a la dels codis lineals per a minimitzar l’espai ocupat en mem`oria. Tots els codis, lineals o no, tenen un nucli (kernel) que sempre ´es lineal. Si coneixem el kernel d’un codi podem dividir-lo en dues parts: els vectors que formen part del kernel i els que no. Aquests darrers es poden partir en classes, i de cada classe s’escull un representant. Aix´ı, a partir dels representants escollits i delkernel es pot reconstruir el codi, tot i que no sigui lineal. Aix`o ens permet, generalment, reduir les necessitats de mem`oria per a representar el codi. En el pitjor dels casos, si el kernel nom´es cont´e una paraula-codi, haurem de guardar totes les paraules del codi. Aquesta repre- sentaci´o dels codis no lineals s’anomena s´uper dual, i ´es una generalitzaci´o del dual per a codis lineals.

En aquest projecte es desenvolupar`a un paquet per a Magma que permeti construir codis binaris perfectes no lineals. La representaci´o del s´uper dual amb Magma es va implementar en el paquet BinaryCodes, en el projecte [Ova08] el curs passat. Per tant, aprofitarem aquesta estructura a l’hora de representar els codis perfectes no lineals que es construiran amb el paquet BinaryPerfectCodes desenvolupat en aquest projecte.

1.1 Objectius

Els objectius que es van fixar a principi del projecte, i que s’han anat perfilant i ajustant al llarg del seu desenvolupament, han estat els seg¨uents:

1. Estudiar les bases te`oriques per a la realitzaci´o del projecte. La forma-

(14)

1.2. CONTINGUT DE LA MEM `ORIA 3 ci´o espec´ıfica que s’ha fet ha estat general sobre codis no lineals, i m´es espec´ıficament sobre codis perfectes i algunes de les seves construccions.

2. Aprofitar propietats matem`atiques dels codis perfectes i dels codis no lineals per tal de poder construir codis perfectes de manera eficient.

3. Desenvolupar funcions que construeixin codis perfectes, funcions per a calcular invariants d’un codi i altres funcions de caire m´es general aplicables tant als codis no lineals qualssevol com als codis perfectes en particular.

4. Provar totes les funcions desenvolupades per tal de validar que funcio- nen correctament.

5. Escriure la documentaci´o, tant del propi paquet de funcions desenvo- lupat, com el cap´ıtol d’ajuda de Magma, incloent exemples.

6. Escriure la mem`oria del projecte.

1.2 Contingut de la mem` oria

Aquesta mem`oria es divideix en diversos cap´ıtols. A continuaci´o es descriu breument el contingut de cada cap´ıtol:

Cap´ıtol 2: Bases te`oriques. Introducci´o al rerefons te`oric del projecte.

S’estudia la teoria general de codis lineals i no lineals, propietats i construccions dels codis perfectes.

Cap´ıtol 3: Planificaci´o del projecte. Explicaci´o en detall dels objectius del projecte i de com han anat evolucionant al llarg del temps. Tamb´e s’inclou la planificaci´o temporal del projecte, contraposant la planifica- ci´o inicial amb la real, i la divisi´o del projecte en tasques i fites.

Cap´ıtol 4: Desenvolupament. Detalls sobre el proc´es de desenvolupa- ment del package de Magma. Es descriuen quines eines i sistemes

(15)

s’han utilitzat i es discuteixen les decisions de disseny i implementaci´o que s’han pres al llarg del projecte.

Cap´ıtol 5: Handbook of Magma functions. Manual d’ajuda deMag- ma. Cont´e una llista de totes les funcions desenvolupades, amb una explicaci´o per a cada funci´o i exemples. El cap´ıtol est`a escrit en angl`es, ja que s’ha d’integrar amb el llibre d’ajuda deMagma.

Cap´ıtol 6: Conclusions i resultats. Resum dels resultats del projecte.

Estudi del comportament del paquetBinaryPerfectCodes.

Cap´ıtol 7: Conclusions. Revisi´o dels objectius del projecte, conclusions extretes a partir de la seva realitzaci´o i proposta de possibles millores a desenvolupar en futurs projectes.

Bibliografia.

Ap`endix. CD amb el codi font, proves, exemples i manual del package desenvolupat.

(16)

Cap´ıtol 2

Bases te` oriques

En aquest cap´ıtol es veur`a sobre quins fonaments te`orics es basa aquest projecte.

Els conceptes generals sobre codis s’han extret de [RH91], la representaci´o de codis no lineals de [Hed08] i la introducci´o als codis perfectes est`a basada en les teories exposades a [Vil01]. Els conceptes b`asics de teoria de dissenys estan extrets de [Vil09].

Els exemples que il.lustren les definicions al llarg del cap´ıtol s’han realitzat ambMagma.

2.1 Codis correctors d’errors

Sigui F un cos finit. Siguin Fk i Fn els espais vectorials definits sobre F de dimensi´o k i n, respectivament (i.e. el conjunt de tots els vectors de k (i n) coordenades sobre F, respectivament). Codificar significa transformar la informaci´o (a1, a2,· · · , ak) ∈ Fk en un vector (b1, b2,· · · , bn) ∈ Fn que anomenarem paraula-codi. Per tant, definim un codi C com la imatge d’una aplicaci´o f : Fk → Fn, ´es a dir, que transforma vectors de longitud k en vectors de longitud n: C =f(Fk)⊆Fn.

5

(17)

Exemple 2.1 Codificaci´o d’un vector d’informaci´o

Suposem que tenim un codi C que transforma vectors de 4 coordenades en vectors de 8 coordenades. Aquest codi C el farem servir al llarg dels exemples dins d’aquest cap´ıtol.

Per exemple, el nostre codi C transforma el vector d’informaci´o (1 1 0 1) en la paraula-codi (1 1 0 1 1 0 0 0).

En aquest projecte es treballar`a amb codis binaris. SiguiZn2 l’espai vectorial de dimensi´o n sobre el cos finit Z2 =GF(2). Definim un codi binari com un subconjunt de Zn2, els elements del qual s’anomenen paraules-codi.

Exemple 2.2 Conjunt de paraules-codi d’un codi

SiC ´es un codi, la comanda “Set(C)” deMagma ens retorna totes les paraules- codi d’un codi. Aquestes s´on les paraules-codi que formen el codi C.

> Set(C);

(1 0 1 1 1 1 1 1), (1 1 0 1 0 0 1 1), (0 0 0 0 0 0 0 0), (1 1 1 0 1 1 1 0), (0 0 1 1 1 1 0 1), (0 1 0 1 0 0 0 1), (0 1 1 0 1 1 0 0), (0 0 0 0 1 0 1 1),

(0 1 0 1 1 0 1 0), (0 0 1 1 0 1 1 0), (0 1 1 0 0 1 1 1), (1 0 0 0 1 0 0 1), (1 1 0 1 1 0 0 0), (1 0 1 1 0 1 0 0), (1 0 0 0 0 0 1 0), (1 1 1 0 0 1 0 1)

Suposem que volem enviar una paraula-codi a trav´es d’un canal de comu- nicaci´o digital. Seria d’esperar que a la sortida del canal hi trob´essim la mateixa paraula-codi, per`o en les comunicacions digitals es poden produir errors, que es traduiran en alteracions en les coordenades del vector rebut respecte a la paraula-codi enviada. Els codis correctors d’errors intro- dueixen redund`ancia a les dades per tal que, en cas de produir-se errors, el receptor pugui corregir-los i obtenir la informaci´o que s’havia enviat.

(18)

2.1. CODIS CORRECTORS D’ERRORS 7

2.1.1 Dist` ancia m´ınima i pes m´ınim

Definim ladist`ancia de Hammingentre dos vectors binarisx= (x1,· · · , xn), y= (y1, y2,· · · , yn)∈Zn2 com la quantitat de components diferents entre tots dos:

dH(x, y) = #{i|1≤i≤n, xi 6=yi}.

La dist`ancia m´ınima de Hamming d d’un codi binari C ´es la menor de totes les dist`ancies entre cada parella de paraules-codi de C, ´es a dir: d = min{dH(u, v)| u6=v, u, v ∈C}. Aix´ı, definim un codi binari (n, M, d) com un subconjunt deZn2 amb cardinalitatM i dist`ancia m´ınima de Hammingd.

Exemple 2.3 Dist`ancia m´ınima de Hamming d’un codi La dist`ancia m´ınima del codi C ´es 2:

> MinimumDistance(C);

2

Ho podem provar mostrant les dist`ancies que hi ha entre totes les parelles de paraules codi diferents i buscant-ne el m´ınim:

> d := [Distance(u,v) : u,v in C | u ne v];

> d;

[ 2, 5, 3, 5, 5, 4, 4, 5, 7, 6, ..., 4, 3, 3, 2, 5, 3, 5, 2 ]

> Minimum(d);

2

Definim tamb´e el pes de Hamming d’un vector binari x ∈ Zn2 com el nombre de components del vector diferents de 0, ´es a dir, wH(x) =dH(x,0).

Elpes m´ınim de Hammingd’un codi binari C ´es el pes de la paraula-codi de menor pes del codi: w= min{wH(v)|v ∈C, v 6=0}.

Exemple 2.4 Pes m´ınim de Hamming d’un codi El pes m´ınim del codi C ´es 2:

(19)

> MinimumWeight(C);

2

Ho podem veure mitjan¸cant la distribuci´o de pesos del codi, que ens mostra per cada pes possible quantes paraules-codi hi ha. Excloent la paraula-codi zero, el menor pes possible ´es 2:

> WeightDistribution(C);

[ <0, 1>, <2, 1>, <3, 3>, <4, 5>, <5, 4>, <6, 1>, <7, 1> ]

2.1.2 Capacitat correctora i radi de recobriment

La capacitat correctora e d’un codi (n, M, d) dep`en de la seva dist`ancia m´ınima:

e=bd−1 2 c.

Podem pensar en un codi com un esquema on cada paraula-codi ´es el centre d’una esfera, i al seu voltant hi haur`a tots els vectors que descodificarem com la paraula-codi donada. Aquestes esferes, de radi e, s´on disjuntes, per`o en general no recobreixen tot Fn.

Anomenemradi de recobrimentd’un codi (n, M, d) al valorρ, definit com el m´ınim radi que han de tenir les esmentades esferes per tal de recobrir tot Fn:

ρ= max

x∈Fn

{minv∈C{dH(x, v)}}, x∈Fn, v ∈C.

La capacitat correctora del codi sempre ´es menor o igual que el radi de recobriment.

Exemple 2.5 Capacitat correctora i radi de recobriment d’un codi Calculem la capacitat correctora del codi C segons la seva dist`ancia m´ınima, calculada en l’exemple 2.3.

> e := Floor((MinimumDistance(C)-1)/2);

> e;

(20)

2.1. CODIS CORRECTORS D’ERRORS 9 0

Aix`o vol dir que el codi C no pot corregir cap error.

Calculem el radi de recobriment del nostre codi C (8,16,2):

> CoveringRadius(C);

2

Com veiem, la capacitat correctora e del codi ´es menor que el seu radi de reco- briment.

2.1.3 Codis lineals i codis no lineals

Els codis binaris lineals s´on aquells que, a m´es de ser un subconjunt deZn2

s´on un subespai vectorial. Tot codi binari lineal t´e una dimensi´o k com a subespai de Zn2 i tindrem que la cardinalitat del codi ´es M = 2k. Un codi binari lineal es denota per [n,2k, d], per tant M = 2k. Qualsevol codi lineal, per tant, contindr`a la paraula 0. Els codis no lineals, en canvi, no s´on un subespai vectorial.

Definim la matriu generadora G d’un codi binari lineal com una matriu les files de la qual formen una base del codi com a subespai vectorial, i per tant ens permet generar qualsevol paraula-codi. La matriu generadora d’un codi binari lineal C [n,2k, d] t´e n columnes i k files.

Donat un codi binari linealC[n,2k, d] definim elcodi ortogonal(o eldual) a C com C = {x ∈ Zn2 | x·v = 0, ∀v ∈ C} (on “·” denota el producte escalar). Donat un codi binari lineal C [n,2k, d] el seu codi ortogonal C ´es tamb´e un codi binari lineal C [n,2n−k, d0]. Una propietat del codi dual ´es la seg¨uent: (C) =C.

La matriu generadora H del dual C´es lamatriu de controldel codi C, i ens permet saber si un vector pertany al codi C, ja que els elements del codi s’anul.len en ser operats amb la matriu H. De la mateixa manera, la matriu

(21)

generadora G del codi C ´es la matriu de control del codi ortogonal o dual C. La matriu de control d’un codi binari lineal C [n,2k, d] t´e n columnes i n−k files.

Els codis binaris lineals, doncs, pel fet de ser un subespai vectorial, es poden representar mitjan¸cant una base d’aquest subespai, ´es a dir, a partir de la matriu generadora. A l’hora de treballar amb codis en un ordinador, aquesta propietat resulta molt interessant, ja que ´es una representaci´o molt compacta.

Suposem, per exemple, un codi de longitudn i cardinalitat M = 2k:

• Si el codi ´es lineal, podem representar-lo mitjan¸cant una base de vectors (la matriu generadora), de manera que necessitarem emmagatzemar k vectors de n coordenades, ´es a dir,n×k valors.

• Si el codi ´es no lineal, haurem de guardar totes les seves paraules- codi, de manera que necessitarem emmagatzemarM = 2k vectors den coordenades, ´es a dir,n×2k valors.

Per an i M prou grans, els codis no lineals no els podrem emmagatzemar a mem`oria i per tant no hi podrem treballar. Tanmateix, m´es endavant veurem que si estudiem les propietats dels codis no lineals podrem, en alguns casos, trobar una representaci´o m´es compacta per al codi.

Exemple 2.6 Matriu generadora i matriu de control d’un codi li- neal

Comprovem que el codi C ´es lineal:

> IsLinear(C);

true

Podem con`eixer m´es informaci´o sobre el codi:

> C;

[8, 4, 2] Linear Code over GF(2) Generator matrix:

[1 0 0 0 0 0 1 0]

(22)

2.2. RANG I NUCLI D’UN CODI 11 [0 1 0 1 0 0 0 1]

[0 0 1 1 0 1 1 0]

[0 0 0 0 1 0 1 1]

Com ja hem calculat abans, veiem queC´es un codi binari de longitud 8, dimensi´o 4 i dist`ancia m´ınima 2. Tot i que aquesta comanda ja ens mostra la matriu generadora, la podem calcular amb la comanda ”GeneratorMatrix(C)”. Calculem tamb´e la matriu de control amb la comanda ”ParityCheckMatrix(C)”:

> GeneratorMatrix(C);

[1 0 0 0 0 0 1 0]

[0 1 0 1 0 0 0 1]

[0 0 1 1 0 1 1 0]

[0 0 0 0 1 0 1 1]

> ParityCheckMatrix(C);

[1 0 0 0 1 1 1 0]

[0 1 0 0 1 0 0 1]

[0 0 1 0 0 1 0 0]

[0 0 0 1 1 1 0 1]

La matriu generadora t´e mida n×k = 8×4, i la matriu de control t´e mida n×(n−k) = 8×4.

2.1.4 Codis isomorfs i codis equivalents

Dos codis binarisC1 iC2 de longitud n s´on isomorfssi existeix una permu- taci´o de coordenades π ∈Sn tal que C2 =π(C1) = {π(v)|v ∈C1}.

Dos codis binarisC1 iC2 de longitudn s´on equivalentssi existeix x∈Zn2 i una permutaci´o de coordenades π ∈Sn tal que C2 ={x+π(c)|c∈C1}.

2.2 Rang i nucli d’un codi

El rang i el nucli d’un codi ens permeten decidir si un codi ´es lineal o no, com veurem a continuaci´o.

L’expansi´o lineal o span d’un codi C, denotada per hCi, ´es el conjunt de

(23)

totes les combinacions lineals que es poden fer amb les paraules-codi de C.

L’expansi´o lineal d’un codi sempre ´es lineal.

Elrang r d’un codi C ´es la dimensi´o de l’expansi´o lineal de C.

El nucli o kernel d’un codi C de longitud n es defineix com K(C) = {x ∈ Fn2|C = C +x}, en altres paraules, el kernel est`a format per tots aquells vectors de Fn2 que deixen el codi C invariant per translaci´o.

Elkernel d’un codi, que cont´e el zero, sempre ´es lineal, i la seva dimensi´o es denota per k.

El rang i la dimensi´o delkernel s´oninvariantsd’un codi, ´es a dir, par`ametres del codi que no canvien encara que sotmetem el codi a transformacions iso- morfes.

En el cas dels codis lineals, elkernel coincideix amb el codi i amb l’expansi´o lineal, ´es a dir,K(C) = C =hCi. Per als codis no lineals, en canvi, K(C)⊂ C ⊂ hCi.

C

C

K(C)

(a) Codis no lineals

K(C) = C =〈C〉

(b) Codis lineals

Figura 2.1: Relaci´o entre el codi, elkernel i l’expansi´o lineal

El fet que qualsevol codi (incl´us els no lineals) tingui el kernel lineal ens ajudar`a a l’hora de trobar una representaci´o m´es compacta per als codis no lineals.

(24)

2.2. RANG I NUCLI D’UN CODI 13 Exemple 2.7 Kernel d’un codi lineal

Calculem el nucli o kernel del codi C:

> K := {c: c,d in C | c+d in C};

> K;

{ (1 0 1 1 1 1 1 1), (1 1 0 1 0 0 1 1), (0 0 0 0 0 0 0 0), (1 1 1 0 1 1 1 0), (0 0 1 1 1 1 0 1), (0 1 0 1 0 0 0 1), (0 1 1 0 1 1 0 0), (0 0 0 0 1 0 1 1), (0 1 0 1 1 0 1 0), (0 0 1 1 0 1 1 0), (0 1 1 0 0 1 1 1), (1 0 0 0 1 0 0 1), (1 1 0 1 1 0 0 0), (1 0 1 1 0 1 0 0), (1 0 0 0 0 0 1 0), (1 1 1 0 0 1 0 1) }

Com veiem, la paraula-codi zero pertany alkernel. Com queC ´es un codi lineal, el seu kernel hauria de coincidir amb el propi codi:

> K eq Set(C);

true

A m´es, tant el kernel, com el codi, com l’expansi´o lineal de C han de coincidir:

> span := sub<VectorSpace(GF(2),8) | C>;

> Set(span) eq Set(C);

true

> Set(span) eq K;

true

> Set(C) eq K;

true

En canvi, en un codi no lineal, trobem que K(C) ⊆ C ⊆ hCi. Per a veure el seg¨uent exemple, utilitzarem el paquet deMagma BinaryCodes i generarem un codi aleatori no lineal de longitud 8 i 31 paraules-codi:

> Attach("BinaryCodes.m");

> D := BinaryRandomCode(8,31);

> IsBinaryLinearCode(D);

false

(25)

> D‘Kernel;

[8, 0, 8] Cyclic Linear Code over GF(2)

> kernelD := Set(D‘Kernel);

> kernelD;

{

(0 0 0 0 0 0 0 0) }

> setD := BinarySet(D); // Conjunt de paraules-codi de D

> spanD := sub<VectorSpace(GF(2),8) | setD>;

Comprovem que el kernel, l’expansi´o lineal (span) i el codi no coincideixen:

> Set(spanD) eq setD;

false

> kernelD eq Set(spanD);

false

> kernelD eq setD;

false

I que elkernel ´es un subconjunt del codi, i aquest ´es un subconjunt de l’expansi´o lineal:

> kernelD subset setD;

true

> setD subset Set(spanD);

true

2.3 Classificaci´ o i representaci´ o de codis no lineals

Per a poder utilitzar els codis no lineals quan treballem en un ordinador hem de trobar una representaci´o que ens permeti emmagatzemar el codi a

(26)

2.3. CLASSIFICACI ´O I REPRESENTACI ´O DE CODIS NO LINEALS 15 mem`oria.

Una primera opci´o ´es guardar la llista de totes les paraules-codi, per`o aix`o

´es inviable per a codis grans. A continuaci´o veurem una segona opci´o.

Sigui x∈Fn i A⊆Fn. Direm que el subconjunt x+A ={x+y|y∈A} ´es un traslladat del conjunt A. A m´es, el vector x ´es un representant o l´ıder de la classe x+A.

Podem expressar un codi no lineal com la uni´o del kernel i els traslladats del kernel (o classes): C =

t

[

i=0

(K(C) +ci), on ci s´on els representants de les classes.

Definim elsistema de paritatdeCcom la matriu (H|S) de mida (n−k)× (n+t) tal que:

• H ´es la matriu generadora del dual del kernel de C,K(C).

• S´es el producte escalar d’Hpels representants de les classes delkernel: (H·ct1, H ·ct2,· · · , H ·ctt).

Diem que la matriu (H|S) ´es una generalitzaci´o de la matriu de control per a codis no lineals, ja que ens permetr`a saber si un vector x pertany al codi no lineal C: x∈C siH·xt = 0 o b´eH·xt ´es una columna de S. A m´es, si C ´es lineal, la matriu (H|S) coincideix amb la matriu de control H deC.

La matriu (H|S) ´es la matriu generadora del super dualdel codiC, que ´es una generalitzaci´o del codi dual per a codis no lineals. Notem, per`o, que

SuperDual(SuperDual(C))6=C,

a difer`encia dels codis lineals, on (C) = C. La dimensi´o del kernel d’un codiC (n, M, d) amb matriu de control generalitzada (H|S) ´esk =dim(H)−

n, i el rang del codi ´es r=k+dim(S).

Aquesta representaci´o dels codis no lineals, aix´ı com el c`alcul del kernel, est`a implementada en el paquet de Magma BinaryCodes, desenvolupat en

(27)

el projecte [Ova08].

2.4 Codis perfectes

Els codis perfectes s´on aquells codis tals que la seva capacitat correctora coincideix amb el radi de recobriment. En altres paraules, un codi C de longitud n ´es perfecte si per algun e ≥ 0 cada vector de l’espai vectorial sobre el qual est`a definit el codi (en el nostre cas, pels codis binaris, sobre Zn2) est`a a dist`ancia menor o igual ae d’exactament una paraula-codi de C.

Els codis perfectes poden corregir e errors, i s’anomenen e−correctors o e−perfectes.

Els codis binaris perfectes de longitudn que existeixen s´on els seg¨uents:

• Codis trivials:

– Per e= 0, el codi format per tots els vectors de longitud n.

– Per e=n, el codi format per una sola paraula de longitud n.

• Codi de repetici´o: e= n−1

2 , amb n senar.

• Codi de Golay: amb capacitat correctora e= 3 i longitud n = 23.

• Codis 1-perfectes: e = 1 i longitud n = 2m − 1, on m s’anomena par`ametre del codi. Els codis 1-perfectes lineals s’anomenen codis de Hamming.

Els ´unics par`ametres pels quals existeixen codis binaris perfectes no lineals i no equivalents s´on e= 1 i n= 2m−1 perm≥4.

Els codis binaris 1-perfectes de longitudn= 2m−1 tenen 2n−mparaules-codi i dist`ancia m´ınima de Hamming 3. Per un codi binari 1-perfecte C tenim que C ⊆ K(C) i que k+r ≥ n+ 1, on k ´es la dimensi´o del kernel i r el rang del codi, o dimensi´o de l’expansi´o lineal del codi.

(28)

2.4. CODIS PERFECTES 17 Exemple 2.8 Codi perfecte

Sigui Ch un codi de Hamming de par`ametre m= 3 definit sobre GF(2):

> Ch := HammingCode(GF(2),3);

> Ch;

[7, 4, 3] "Hamming code (r = 3)" Linear Code over GF(2) Generator matrix:

[1 0 0 0 1 1 0]

[0 1 0 0 0 1 1]

[0 0 1 0 1 1 1]

[0 0 0 1 1 0 1]

Comprovem que el codi ´es perfecte:

> IsPerfect(Ch);

true

Comprovem les propietats dels codis perfectes, com ara que la capacitat correc- tora coincideix amb el radi de recobriment:

> e := Floor((MinimumDistance(Ch)-1)/2);

> e eq CoveringRadius(Ch);

true

Tamb´e podem veure que t´e dist`ancia m´ınima 3, i2n−m = 24 paraules-codi:

> MinimumDistance(Ch);

3

> #Ch;

16

(29)

2.4.1 Construccions de codis perfectes

A continuaci´o presentem una s`erie de construccions de codis binaris 1-perfectes.

Les construccions de codis perfectes, permeten, a base de fer operacions i transformacions a les paraules-codi d’un o m´es codis perfectes, obtenir un nou codi perfecte.

Construcci´o de Vasil’ev

Donatx∈Fn2 siguip(x) =wH(x) mod 2. SiguiCn un codi binari 1-perfecte de longitud n = 2m−1. Sigui f : Cn → {0,1} una aplicaci´o arbitr`aria tal quef(0) = 0 i f(c1) +f(c2)6=f(c1+c2) (´es a dir, que no sigui lineal) per a c1, c2, c1+c2 ∈Cn.

El codi C2n+1 ={(x|x+u|p(x) +f(u)) : x ∈ Fn2, u∈ Cn}, on (·|·) denota la concatenaci´o, ´es binari 1-perfecte de longitud 2n+ 1 = 2m+1−1, i aquesta manera de construir-lo s’anomenaconstrucci´o de Vasil’ev.

Existeixen exactament 19 codis de Vasil’ev de longitud 15 no equivalents, tal i com es demostra a [Her82].

Construcci´o de Mollard

La construcci´o de Mollard ´es una generalitzaci´o de la de Vasil’ev.

Siguix= (x11, x12, . . . , x1n2, x21, x22, . . . , xn1n2)∈Fn21n2. Definim les funcions de paritat generalitzades, p1(x) = (σ1,· · · , σn1) ∈ Fn21, on σi =

n2

X

j=1

xij, i p2(x) = (σ01,· · · , σn01)∈Fn22, on σ0j =

n1

X

i=1

xij.

Siguin C1 i C2 dos codis binaris 1-perfectes de longitud n1 i n2, respectiva- ment. Sigui f :C1 →Fn22 una aplicaci´o arbitr`aria.

(30)

2.4. CODIS PERFECTES 19 El codiF ={(x|c1+p1(x)|c2+p2(x) +f(c1)) :x∈Fn21n2, c1 ∈C1, c2 ∈C2}´es un codi binari 1-perfecte de longitudn1n2+n1+n2. El codi F s’ha obtingut mitjan¸cant la construcci´o de Mollard.

Construcci´o doubling

Igual que amb les dues construccions anteriors, amb la construcci´o doubling obtenim codis de longitud 2n+ 1 a partir de codis de longitud n.

Siguieiun vector tal que totes les seves coordenades s´on 0 excepte lai-`esima, que val 1.

Definim la suma directa X⊕Y ={(x, y) :x∈X, y ∈Y} per X, Y ⊂Fn2. S’anomena codi ext`es d’un codiC al codi C constru¨ıt de tal manera que a cada paraula-codi se li afegeix una coordenada al final que val 0 si la paraula- codi tenia pes parell i 1 si tenia pes senar. SiguiC1 un codi binari 1-perfecte de longitud n i C2 un codi 1-perfecte est`es de longitud n+ 1. Sigui π una permutaci´o en el conjunt {1,2, . . . , n}.

El codiC = (C1⊕C2)

n

[

i=1

((C1+ei)⊕(C2+eπ(i))) ´es un codi binari 1-perfecte de longitud 2n+ 1, i la manera com s’ha obtingut s’anomena construcci´o doubling.

Construcci´o switching

Donat un codi binari 1-perfecteC, de longitudn, podem obtenir un nou codi C0 mitjan¸cant la construcci´o switching intercanviant un conjunt seleccionat de paraules-codi, S ⊂C per un altre conjunt de vectorsS0,

C0 = (C\S)∪S0.

(31)

Els conjunts S i S0 han de complir que

{x∈F2n:dH(x, S)≤1}={x0 ∈F2n:dH(x0, S0)≤1},

entenent que la dist`ancia d’un vector x a un conjunt S ´es el m´ınim entre totes les dist`ancies d’x a tots els elements d’S. En altres paraules, l’espai que recobreix el conjunt d’esferes de radi 1 al voltant dels elements d’S ha de ser igual a l’espai recobert pel conjunt d’esferes de radi 1 al voltant dels elements d’S0.

El codi C0 ´es un nou codi 1-perfecte de longitud n.

2.5 Teoria de dissenys

2.5.1 Sistemes triples d’Steiner

Un sistema triple d’Steiner (STS)´es una parella ordenada (V,B), on V

´es un conjunt finit de punts iB´es un conjunt de subconjunts de 3 elements de V, anomenats triples, tal que cada parella d’elements diferents de V apareix junta en exactament un triple deB.

L’ordre d’un STS (V,B) ´es la mida del conjuntV, denotada per|V|. Escrivim ST S(v) per a denotar un STS d’ordre v.

Un STS (V,B) es pot representar gr`aficament. Hi ha una equival`encia entre unST S(v) i una descomposici´o del graf d’ordre v, Kv, en triangles, tal que cada s´ımbol deV correspon a un v`ertex, i cada triple {a, b, c} es representa com a un triangle que uneix els v`ertexs a, b i c. Com que cada parella de s´ımbols apareix en exactament un triple de B, cada aresta pertany a exactament un triangle. Aleshores, un STS ´es equivalent a un graf complet Kv, on |V|=v, en el qual les arestes es particionen en triangles.

Nom´es existeixen STS per v ≡1 o v ≡3 (mod6).

(32)

2.5. TEORIA DE DISSENYS 21 Exemple 2.9 Sistemes triples d’Steiner

El sistema triple d’Steiner definit pels conjunts V ={1,2,3,4,5,6,7} i

B={{1,2,4},{2,3,5},{3,4,6},{4,5,7},{5,6,1},{6,7,2},{7,1,3}}t´e ordre 7 i es pot representar amb el graf de la Figura 2.2.

1

2

3

4 5

6 7

{1,2,4}

{2,3,5}

{3,4,6}

{4,5,7}

{5,6,1}

{6,7,2}

{7,1,3}

Figura 2.2: Representaci´o gr`afica d’un STS

2.5.2 Sistemes qu` adruples d’Steiner

Un sistema qu`adruple d’Steiner (SQS) ´es una parella ordenada (V,B), on V ´es un conjunt finit de punts i B ´es un conjunt de subconjunts de 4 elements deV, anomenats qu`adruples, tal que cada subconjunt de 3 elements diferents de V ´es un subconjunt d’exactament un qu`adruple deB.

L’ordre d’un SQS (V,B) ´es la mida del conjuntV, denotada per|V|. Escrivim SQS(v) per a denotar un SQS d’ordre v.

Nom´es existeixen SQS perv = 1 o v ≡2 o 4 (mod6).

2.5.3 Dissenys combinatoris

Per enters positius t ≤ k ≤ v i λ, un t −(v, k, λ) disseny ´es una parella (V,B), on V ´es un conjunt finit de punts iB´es un conjunt de subconjunts de

(33)

kelements deV anomenats blocs, tal que qualssevoltpunts estan continguts en exactament λ blocs.

Unt−(v, k,1) disseny s’anomena t-disseny d’Steiner. Un 2−(v, k,1) disseny tal que |V|=|B| s’anomena disseny quadrat o sim`etric.

Exemple 2.10 Relaci´o entre dissenys i sistemes d’Steiner

Un ST S(v)´es un 2−(v,3,1)disseny, i un SQS(v)´es un 3−(v,4,1)disseny.

2.5.4 Fragments

Donat unST S(v), ambv ≥7, a [Gib76] es defineix un fragment F com a un conjunt de blocs del sistema triple de la seg¨uent forma:

F ={{x1, x3, x5},{x1, x4, x6},{x2, x3, x6},{x2, x4, x5}}.

Si considerem el conjunt de punts de l’STS,S ={x1,· · · , x6}, aleshoresF ´es un fragment a S, i es representa per les parelles ordenades (x1, x2),(x3, x4), (x5, x6), anomenades parelles representatives. El fragmentF es pot recons- truir totalment a partir de les seves parelles representatives.

Un intercanvi de qualsevol parella representativa constitueix una transfor- maci´o invariant del sistema triple. Independentment de com s’ordenin les parelles ordenades que formen un fragment, sempre es generar`a el mateix fragment. Tot i aix`o, si canviem l’ordre dins les parelles ordenades genera- rem 4 triples diferents.

Existeixen 80 STS d’ordre 15 no isomorfs, que es poden classificar comptant els seus fragments i observant el patr´o de quants fragments contenien un punt particular.

(34)

2.5. TEORIA DE DISSENYS 23

2.5.5 Grup d’automorfismes

Grup d’automorfismes d’un disseny

Si D1 = (V1,B1) i D2 = (V2,B2) s´on dos t-dissenys, aleshores una aplicaci´o bijectiva α : V1 −→ V2 s’anomena isomorfisme de D1 sobre D2 si B ∈ B1 ⇐⇒α(B)∈ B2. Aleshores, els dissenys D1 iD2 s´onisomorfs.

Un isomorfisme d’un disseny D sobre ell mateix s’anomena automorfisme.

El conjunt de tots els automorfismes d’un disseny D forma un grup sota composici´o, el grup d’automorfismesdeD.

Grup d’automorfismes d’un graf

El grup d’automorfismes d’un graf G < v|a >, on v ´es el conjunt de v`ertexs deGiael seu conjunt d’arestes, ´es el conjunt de tots els isomorfismes del graf amb ell mateix, ´es a dir, de les aplicacions v −→ v, tal que el graf resultant

´es isomorf amb G.

Dos grafs G1 < v1|a1 > i G2 < v2|a2 > s´on isomorfs si, i nom´es si, existeix una bijecci´oφ:v1 →v2 que conserva les adjac`encies i les no adjac`encies. En tal cas, es diu que φ ´es un isomorfisme i G1 ∼=G2.

Es una forma de simetria en la qual es preserva la connectivitat entre arestes´ i v`ertexs.

Grup d’automorfismes d’un codi

El grup d’automorfismes d’un codi ´es el conjunt de totes les transformacions que fan que el codi, un cop transformat, sigui el mateix. Aquestes trans- formacions poden ser permutacions de coordenades o translacions del codi (sumar un vector a totes les paraules del codi).

(35)

El grup d’automorfismes d’un codi perfecte C coincideix amb el grup d’au- tomorfismes del graf de dist`ancies m´ınimes de C. De fet, el codi C es pot reconstruir a partir del seu graf de m´ınimes dist`ancies, tal com es demostra a [M ¨OPS08].

(36)

Cap´ıtol 3

Planificaci´ o del projecte

En aquest cap´ıtol aprofundirem en els objectius del projecte que s’han co- mentat en la introducci´o. Tamb´e veurem la planificaci´o temporal establerta al principi del projecte i en qu`e ha derivat finalment.

3.1 Objectius del projecte

L’objectiu principal del projecte ´es desenvolupar un paquet de funcions per Magma per a treballar amb codis binaris perfectes no lineals, anomenat BinaryPerfectCodes. Algunes de les funcions que contindr`a el paquet serviran per a

• Fer construccions de codis perfectes (construcci´o de Vasil’ev, construc- ci´odoubling i construcci´oswitching).

• Fer funcions per a calcular invariants d’un codi binari no lineal, com ara el rang, el nucli, els fragments, el grup d’automorfismes o els STS (Sistemes Triples d’Steiner).

• Construir una base de dades de codis perfectes no equivalents, utilitzant els invariants anteriors.

25

(37)

Per tal d’assolir l’objectiu principal del projecte caldr`a complir tot un conjunt de sub-objectius: entendre qu`e s´on els codis no lineals i com es representen, comprendre qu`e s´on les construccions de codis perfectes, entendre altres con- ceptes te`orics (com ara el grup d’automorfismes d’un codi o els STS, entre d’altres) i familiaritzar-se amb l’entorn de treball.

Una gran part d’aquest projecte consistir`a a estudiar les bases te`oriques que fonamentaran el desenvolupament del paquet. Tanmateix, el projecte tamb´e inclou el desenvolupament (disseny, programaci´o, proves i elaboraci´o del manual d’usuari) delpackage per Magma.

El paquetBinaryPerfectCodes ha de tenir les seg¨uents funcionalitats:

• Construccions de codis perfectes:

– Construcci´o de tots els codis de Vasil’ev no equivalents de longitud 15.

– Construcci´o de Vasil’ev.

– Construcci´o doubling.

– Construcci´o switching.

• Base de dades de codis perfectes no equivalents de longitud 15.

• Comprovaci´o de l’equival`encia o no equival`encia de dos codis perfectes de longitud 15 mitjan¸cant els grups d’automorfismes dels codis.

• Calcular invariants d’un codi:

– STS.

– SQS.

– Grup d’automorfismes.

– Fragments.

Caldr`a desenvolupar tot un seguit de proves per al paquet.

(38)

3.2. ESTAT DE L’ART 27 El paquet es desenvolupar`a d’una banda respectant les convencions impo- sades per Magma pel que fa a l’estructura de directoris, documentaci´o i proves, i de l’altra respectant els criteris d’estil de programaci´o del CCG, documentats al CCG Style Guide [dg09].

La documentaci´o del paquet seguir`a el format deMagma, que consisteix en manuals en PDF editats en LATEX. Les funcions s’organitzaran per temes, i s’inclour`a una breu introducci´o te`orica al principi i exemples al final de cada tema.

3.2 Estat de l’art

Els membres del Grup de Combinat`oria i Codificaci´o (CCG), del Departa- ment d’Enginyeria de la Informaci´o i de les Comunicacions treballen, entre d’altres projectes, per a estudiar les propietats de fam´ılies de codis no lineals, com ara els codis perfectes, Hadamard o Reed-Muller.

El programa Magma no contempla aquest tipus de codis, per la qual cosa va ser necessari desenvolupar un paquet, BinaryCodes, expressament per a emmagatzemar i manipular aquests tipus de codis no lineals. El paquet BinaryCodes va ser creat pel projectista V´ıctor Ovalle Arce en el seu projecte final de carrera “C´odigos binarios no lineales en Magma” [Ova08], el curs 2007-2008.

En aquest projecte s’utilitzar`a el paquet BinaryCodes per a poder treballar amb codis no lineals.

D’altra banda, el projectista Joan Cuadros treballar`a durant aquest curs so- bre el paquet BinaryCodes, ampliant-lo per a afegir-hi caracter´ıstiques que permetran que el paquet BinaryPerfectCodes pugui aprofitar certes propie- tats per codis perfectes no lineals.

(39)

3.3 Estudi de viabilitat

3.3.1 Viabilitat t` ecnica

Els requisits indispensables per a poder realitzar el projecte s´on disposar d’acc´es a un ordinador amb el programaMagma i una llic`encia en vigor.

El Departament d’Enginyeria de la Informaci´o i de les Comunicacions pro- porciona als projectistes la possibilitat de treballar en un laboratori amb ordinadors que disposen de connexi´o a Internet. Des d’aquests ordinadors es pot connectar remotament al servidor macwilliams, que t´e el programa Magma instal.lat i en vigor. Tamb´e es permet accedir als ordinadors del laboratori remotament, sense necessitat d’estar al laboratori de projectistes.

Es disposa de tots aquests recursos, per tant, el projecte ´es viable t`ecnicament.

3.3.2 Viabilitat operativa

Per a poder desenvolupar satisfact`oriament el projecte caldr`a un suport te`oric continuat, doncs les funcions que es programaran dins el paquetBinaryPer- fectCodes requeriran trobar solucions pr`actiques a les propietats te`oriques dels codis perfectes no lineals. Aquest assessorament te`oric ´es proporcionat pel grup CCG i sobretot per la directora d’aquest projecte, Merc`e Villanueva.

D’altra banda, si b´e no ´es un requisit indispensable, es t´e prevista la integraci´o del paquetBinaryPerfectCodes amb el paquetBinaryCodes que modificar`a el projectista Joan Cuadros. Per tant, l’`exit d’aquesta part del projecte va lligat a l’acompliment dels terminis i els objectius plantejats en el seu projecte per part d’en Joan Cuadros. La planificaci´o d’aquest projecte s’ha fet concordar amb la de l’altre projectista per tal que es puguin integrar els dos paquets sense problemes.

Es disposa de l’assist`encia del professorat del CCG, per tant en aquest sentit

(40)

3.3. ESTUDI DE VIABILITAT 29 el projecte ´es viable. Tanmateix, cal considerar el risc que suposaria que les funcionalitats del paquetBinaryCodes necess`aries per a la integraci´o dels dos paquets no estiguin acabades a temps.

3.3.3 Viabilitat econ` omica

Per a determinar si el projecte ´es viable econ`omicament tindrem en compte les necessitats de software ihardware per al projecte.

Pel que fa alsoftware es necessita una llic`encia deMagma, que t´e un cost de 1200e per tres anys, per`o no cal adquirir-la perqu`e el Departament d’Engi- nyeria de la Informaci´o i de les Comunicacions ja en disposa d’una en vigor.

La resta d’eines que s’utilitzaran (el sistema operatiu GNU/Linux i l’editor de text Gedit) tenen llic`encia GPL i no tenen cap cost.

Pel que fa als requeriments dehardware, no es requereix cap altre equipament a banda d’un ordinador convencional del qual ja es disposa.

Per tant, no cal fer cap inversi´o econ`omica espec´ıfica per a aquest projecte, i podem afirmar que aquest ´es viable econ`omicament.

Pressupost

A la Taula 3.1 s’adjunta un pressupost per al projecte, tenint en compte el salari base per als titulats de grau superior, regulat pel conveni col.lectiu d’inform`atica [con09], que ´es d’uns 9.8 e/hora.

3.3.4 Viabilitat legal

Magma ´es un int`erpret orientat al llenguatge matem`atic. ´Es un programa amb llic`encia privada, del qual el Departament d’Enginyeria de la Informaci´o i de les Comunicacions disposa.

(41)

Concepte Hores Preu Estudi dels fonaments te`orics 28 274.4 e Elaboraci´o de l’informe previ 3 29.4 e

Disseny de funcions 42.25 414.05 e

Disseny de tests 14 137.2 e

Implementaci´o de funcions en Magma 85 833 e

Test 40 392 e

Elaboraci´o de la mem`oria 70 686 e

Total 282.25 2766.05e

Taula 3.1: Pressupost per al projecte

El paquet BinaryPerfectCodes tindr`a llic`encia de software lliure GPLv3. No hi ha incompatibilitats entre les llic`encies del paquet i del propi Magma. Per tant, el projecte ´es viable legalment.

3.3.5 Alternatives

Tot i l’exist`encia de programari similar aMagma, com ara GAP o SAGE, el grup CCG est`a treballant ambMagma, i per tant s’utilitzar`a aquest progra- ma per tal que els investigadors del grup puguin utilitzar el paquet. D’altra banda, el paquet BinaryCodes tamb´e es va desenvolupar amb Magma.

3.4 Planificaci´ o temporal del treball

La planificaci´o inicial del treball va comen¸car a finals d’octubre de 2008, quan es van plantejar els objectius i caracter´ıstiques del projecte. La data prevista de finalitzaci´o, fins a la data d’entrega de la mem`oria, era el 17 de juny de 2009. En total, es van planificar 280 hores de feina. A la Figura 3.1 es mostra la planificaci´o inicial del projecte i la Taula 3.2 ´es un resum de les fites m´es importants.

A la pr`actica, per`o, els objectius del projecte van variar lleugerament, de

(42)

3.4. PLANIFICACI ´O TEMPORAL DEL TREBALL 31

Tasca Termini

Presentaci´o del projecte i definici´o dels objectius

24/10/2008 Estudi dels fonaments te`orics del pro-

jecte

Octubre a gener Elaboraci´o de l’informe previ Desembre Entrega de l’informe previ 16/01/2009

Disseny de les funcions del paquet Finals de desembre - finals de gener Disseny dels tests del paquet Finals de gener - Mitjans de mar¸c Codificaci´o de les funcions del paquet Mitjans de febrer - abril

Test del paquet Abril

Elaboraci´o de la mem`oria i la presenta- ci´o

Finals de novembre - finals de juny (per fases)

Entrega de la mem`oria 17/06/2009 Taula 3.2: Tasques principals del projecte manera que:

• Vam decidir desenvolupar nom´es les construccions Vasil’ev i doubling, deixant per a futures amplicacions la switching.

• Es va substituir tot el bloc de funcions referents a la creaci´o d’una base de dades de codis perfectes no equivalents de longitud 15 per un bloc de funcions complement`aries per a treballar amb codis no lineals.

L’eliminaci´o de la construcci´o switching del paquet va ser motivada per la manca de temps, doncs les construccions de Vasil’ev i doubling van ocupar la major part de l’etapa de desenvolupament.

La substituci´o del bloc de base de dades de codis pel grup de funcions de manipulaci´o de codis no lineals es va fer per un major inter`es en disposar d’aquestes funcions que no pas de les de la base de dades.

A m´es, l’execuci´o de la planificaci´o temporal del projecte s’ha vist alterada en alguns casos, ja sigui per dificultats en la implementaci´o d’algunes parts com per l’aparici´o d’imprevistos en la disponibilitat temporal de la projectista.

A la Figura 3.2 es pot veure la planificaci´o real del projecte en contraposi-

(43)

ci´o amb la planificaci´o estimada despr´es del canvi de requisits del paquet.

Els blocs de temps de colors m´es saturats corresponen a l’execuci´o real del projecte, mentre que els blocs de colors m´es pastel s´on la planificaci´o inicial.

Com es pot veure a la figura, tot i la desviaci´o d’algunes tasques, s’han pogut assolir els objectius plantejats a temps.

(44)

3.4. PLANIFICACI ´O TEMPORAL DEL TREBALL 33

PFC Presentació del projecte i definició d'objectius24/10/08 11:00 Estudi dels fonaments teòrics del projecte (28h) Elaboració de l'informe previ (3h) Entrega de l'informe previ16/01/09 11:00 Disseny de les funcions Construccions (10,25h) Codis equivalents (10h) Base de dades (10h) Invariants (12h) Disseny dels tests Construccions (6h) Funcions complementàries (2h) Invariants (6h) Codificació de les funcions Construccions (70h) Funcions complementàries (10h) Invariants (5h) Test (40h) Elaboració de la memòria i presentació Introducció (2h) Bases teòriques (13h) Planificació, viabilitat, entorn de desenvolupament (3h) Desenvolupament (16h) Resultats (13h) Conclusions (2h) Handbook of Magma functions (8h) Revisió: maquetació, agraïments, ... (12h) Elaboració de la presentació (12h) Lliurament de la memòria17/06/09 11:00

Tr. 4/2008Tr. 1/2009Tr. 2/2009Tr. 3/2009 Figura3.1:Planificaci´otemporaldelprojecte

(45)

PFC

Presentació del projecte i definició d'objectius24/10/08 11:00

Estudi dels fonaments teòrics del projecte (28h)

Elaboració de l'informe previ (3h)

Entrega de l'informe previ16/01/09 11:00

Disseny de les funcions

Construccions (10,25h)

Funcions complementàries (5h)

Invariants (7h)Disseny dels tests

Construccions (6h)

Funcions complementàries (2h)

Invariants (6h)

Codificació de les funcions

Construccions (70h)

Funcions complementàries (10h)

Invariants (5h)

Test (40h)Elaboració de la memòria i presentació

Introducció (2h)

Bases teòriques (13h)

Planificació, viabilitat, entorn de desenvolupament (3h)

Desenvolupament (16h)

Resultats (13h)

Conclusions (2h)

Handbook of Magma functions (8h)

Revisió: maquetació, agraïments, ... (12h)Elaboració de la presentació (12h)

Lliurament de la memòria17/06/09 11:00 Tr. 4/2008Tr. 1/2009Tr. 2/2009Tr. 3/2009

Figura3.2:Planificaci´orealdelprojecte

(46)

Cap´ıtol 4

Desenvolupament del projecte

En aquest cap´ıtol es far`a una explicaci´o de l’entorn de treball amb el qual s’ha realitzat el projecte i es veuran els detalls de la implementaci´o del paquet per Magma.

4.1 Entorn de desenvolupament

Per a realitzar aquest projecte, el Departament d’Enginyeria de la Informaci´o i de les Comunicacions va posar a disposici´o de la projectista un ordinador a la sala de projectistes del departament, i un compte en un servidor del Grup de Combinat`oria i Codificaci´o.

L’ordinador de la sala de projectistes ´es un Intel Pentium 4 a 2.00 GHz, amb 2GB de RAM i sistema operatiu Fedora 5. Des de qualsevol ubicaci´o es pot accedir per connexi´o SSH a aquest ordinador. El servidor Macwilliams tamb´e ´es accessible per SSH, per`o nom´es des de l’ordinador de projectistes.

Aquest servidor t´e un processador de doble nucli i 2GB de RAM. ´Es en aquest servidor on est`a instal.lada la c`opia de Magmaque s’ha utilitzat per a fer el projecte.

Magma [CE08] ´es un software privatiu de gran qualitat desenvolupat per 35

(47)

una universitat australiana. T´e moltes funcionalitats en diferents camps, com poden ser la teoria de n´umeros, geometria algebraica, teoria de grafs i teoria de codis. El llenguatge que s’utilitza per a treballar amb Magma

´es molt proper al llenguatge formal matem`atic, cosa que el fa especialment adequat als matem`atics. Algunes de les caracter´ıstiques m´es importants de Magma s´on:

• Magmano t´e interf´ıcie gr`afica, sin´o que ´es per l´ınia de comandes. Aix`o no ha suposat cap problema en aquest projecte, ja que no es necessitava la interf´ıcie gr`afica en cap cas.

• Magmat´e un suport limitat per a la computaci´o num`erica i integraci´o simb`olica. L’usuari final no pot definir els seus propis tipus de dades.

• Magma permet guardar totes les operacions que s’han fet durant una sessi´o de treball, per`o no hi ha cap manera d’emmagatzemar a disc un objecte concret que s’hagi creat.

• La llibreria de Magma ´es gran i molt optimitzada. ´Es molt potent i

´

util per a la investigaci´o en determinats camps, com ara la teoria de codis. Com que la majoria del programa est`a escrit en C, es podri- en utilitzar les funcionalitats d’algunes llibreries de C existents, per`o aquest enlla¸cat nom´es es pot fer recompilantMagma, per la qual cosa es requereix el codi font de l’aplicaci´o. En ser un programa privatiu, els usuaris finals no poden fer aquest proc´es. A m´es, pel mateix motiu, hi podria haver problemes a causa de restriccions de llic`encia d’algunes llibreries lliures.

ActualmentMagmad´ona suport a funcionalitats b`asiques per a codis sobre cossos finits i codis sobre anells d’enters i anells de Galois. Tots aquest tipus de codis s´on lineals. A m´es,Magmadisposa de funcions per al cas particular dels codis binaris lineals.

En el projecte [Ova08] es va desenvolupar un paquet per Magma, Binary- Codes, que permet treballar tamb´e amb codis no lineals, i que es far`a servir

(48)

4.2. IMPLEMENTACI ´O DEL PAQUET BINARYPERFECTCODES 37 en aquest projecte.

A m´es, el projectista Joan Cuadros ha ampliat la funcionalitat del paquet BinaryCodes amb algunes funcions que seran necess`aries en aquest projecte.

4.2 Implementaci´ o del paquet BinaryPerfectCodes

El paquet BinaryPerfectCodes desenvolupat en aquest projecte es divideix en tres grans blocs de funcions:

• Construcci´o de codis binaris perfectes no lineals.

• C`alcul d’invariants de codis perfectes.

• C`alculs amb paraules-codi.

La metodologia de desenvolupament que s’ha portat a terme ha estat la seg¨uent:

1. Divisi´o del paquet en diverses funcions.

2. Disseny de cada funci´o del paquet: decidir el nom, par`ametres d’entra- da i retorn de la funci´o, descripci´o del funcionament de la funci´o.

3. Disseny de proves per a cada funci´o: estudiar com ha de ser el com- portament de la funci´o respecte els par`ametres, i especificar quines condicions i propietats ha de complir el resultat de la funci´o. A m´es, en alguns casos ha resultat interessant estudiar el temps d’execuci´o de les funcions.

4. Implementaci´o en Magma de cada funci´o del paquet i de les seves funcions de prova corresponents.

5. Executar totes les funcions de prova per a cada funci´o, per tal de comprovar-ne el correcte funcionament.

(49)

A continuaci´o aprofundirem en el desenvolupament de cada bloc del paquet BinaryPerfectCodes.

4.2.1 Construcci´ o de codis binaris perfectes no lineals

Construcci´o de Vasil’ev

La construcci´o de Vasil’ev a partir d’un codi Cn de longitud n es defineix com:

C2n+1 ={(v|v +c|σ(v) +f(c)) :v ∈Fn2, c∈Cn},

on (x|y) denota la concatenaci´o d’x i y, σ(v) ´es el pes del vector v m`odul 2, if(c) ´es una aplicaci´o f :Cn−→Z2.

La funci´o BinaryVasilevCode es va desenvolupar inicialment seguint l’ex- pressi´o anterior. Aquesta seria una versi´o exhaustiva de fer la construcci´o de Vasil’ev, doncs es generen totes les paraules del codi.

Per a codis de cardinalitat elevada aquesta ´es una opci´o inviable, ja que tant el temps de c`alcul com la quantitat de mem`oria necess`aria per a emmagatze- mar totes les paraules-codi s´on molt grans. El paquet BinaryCodes disposa d’una funci´o que a partir de totes les paraules del codi genera una estructura BinaryCode que no emmagatzema totes les paraules-codi, sin´o que calcula el s´uper dual del codi. Per tant, el problema no ´es en s´ı emmagatzemar el nou codi Vasil’ev sin´o guardar tota la llista de paraules-codi que es passaran al constructor de l’estructura BinaryCode.

Per tant, cal buscar una manera alternativa de calcular els codis de Vasil’ev.

La soluci´o ´es estudiar el kernel dels codis de Vasil’ev i veure si hi ha alguna particularitat que puguem aprofitar per a construir-los m´es eficientment.

Efectivament, els codis de Vasil’ev compleixen les seg¨uents propietats:

• Si la imatge de la funci´of val zero per a qualsevol paraula del codi Cn,

(50)

4.2. IMPLEMENTACI ´O DEL PAQUET BINARYPERFECTCODES 39 aleshores coneixem tot el kernel del codi C2n+1:

K(C2n+1) ={{(v|v|σ(v)) :v ∈Zn2} ∪ {(0|k|0) : k ∈K(Cn)}}

• Si la imatge de la funci´o f ´es f(c) = bi ∀c ∈ K(Cn) +xi, ´es a dir,

´es la mateixa per a totes les paraules-codi pertanyents a una mateixa classe del kernel del codi Cn, aleshores el kernel del codi C2n+1 cont´e el conjunt anterior

{{(v|v|σ(v)) :v ∈Zn2} ∪ {(0|k|0) :k ∈K(Cn)}} ⊆K(C2n+1).

• Si la funci´of ´es qualsevol, aleshores elkernel del nou codiC2n+1 cont´e el conjunt

{(v|v|σ(v)) :v ∈Zn2} ⊆K(C2n+1).

D’aqu´ı ve la necessitat de disposar d’una funci´o capa¸c de construir una es- tructura BinaryCode a partir d’un subconjunt del kernel i un subconjunt dels l´ıders del nou codi. Aquesta funci´o l’ha fet el projectista Joan Cuadros en la seva ampliaci´o del paquet BinaryCodes.

Aprofitant aquestes propietats dels codis de Vasil’ev es va desenvolupar la versi´o no-exhaustiva de la funci´oBinaryVasilevCode.

A m´es de la construcci´o de Vasil’ev en general, es va fer una funci´o per a construir els 19 codis de Vasil’ev de longitud 15 no equivalents a partir de la classificaci´o de Hergert [Her82]. Aquesta funci´o consisteix en l’adaptaci´o a Magma d’un algorisme desenvolupat per en Jaume Pujol en GAP.

(51)

Construcci´o doubling

La construcci´o doubling a partir de dos codis C1 i C2 de longitud n, i una permutaci´o de coordenades π es defineix com

C = (C1⊕C2)

n

[

i=1

[(C1+ei)⊕(C2+eπ(i))],

onei ´es un vector les coordenades del qual s´on totes zero excepte la i-`esima que val 1.

La funci´o BinaryDoublingCode del paquet BinaryPerfectCodes es va desen- volupar inicialment seguint aquesta expressi´o matem`atica. Aquesta versi´o

´es exhaustiva, donat que es generen totes les paraules del codi. Com es pot intuir, aix`o ´es inviable per a codis de cardinalitat elevada, tant pel que fa al temps de c`alcul com a les necessitats d’emmagatzematge.

Aix´ı doncs, es van estudiar les propietats dels codisdoubling per tal de trobar alguna possible millora. Si observem les caracter´ıstiques delkernel dels codis doubling, en funci´o dels par`ametres amb el qual els constru¨ım, veiem que:

• Si la permutaci´o ´es la identitat,π =Id, aleshores coneixem tot elkernel del nou codi:

K(C) = (K1 ⊕K2)[

i∈I

[(K1+ei)⊕(K2+eπ(i))],

on K1 ´es el kernel de C1, K2 el kernel de C2, Ti denota el subespai lineal generat per les paraules de pes m´ınim de C que tenen un 1 a la coordenada i-`esima, iI ={i:Ti ⊆K1∩K2}.

• Si la permutaci´o no ´es la identitat, aleshores el kernel del nou codi C cont´e

(K1⊕K2)⊆K(C).

Aprofitant que coneixem algunes paraules-codi que formen part del kernel

(52)

4.2. IMPLEMENTACI ´O DEL PAQUET BINARYPERFECTCODES 41 del nou codi, s’ha desenvolupat una versi´o no-exhaustiva de la funci´o Bi- naryDoublingCode.

4.2.2 C` alcul d’invariants de codis perfectes

Dins el bloc de funcions per al c`alcul d’invariants de codis perfectes incloem les seg¨uents funcions:

• C`alcul dels STS i SQS d’un codi perfecte i perfecte est`es, respectiva- ment.

• C`alcul del grup d’automorfismes d’un codi perfecte.

Les funcions de c`alcul dels sistemes d’Steiner (STS i SQS) d’un codi han estat senzilles d’implementar, perqu`e el Magma ja disposa de funcions per a calulart-dissenys a partir d’un conjunt de vectors. Aix´ı doncs, les funcions de c`alcul dels STS i SQS calculen un disseny a partir de les paraules de pes m´ınim del codi.

El grup d’automorfismes d’un codi perfecte es pot calcular a partir del seu graf de m´ınima dist`ancia [M ¨OPS08]. Magma disposa d’una funci´o per a calcular el grup d’automorfismes d’un graf, i com s’ha vist al Cap´ıtol 2, el grup d’automorfismes d’un codi perfecte coincideix amb el del seu graf de dist`ancies m´ınimes. Per tant, la feina per aquesta funci´o ha estat construir el graf de m´ınimes dist`ancies d’un codi, que veurem a la Secci´o 4.2.3.

4.2.3 C` alculs amb paraules-codi

Les funcions per a treballar amb paraules-codi que s’han desenvolupat s´on les seg¨uents:

• Obtenir el conjunt de totes les paraules d’un codi.

(53)

• Obtenir un conjunt de paraules-codi d’un cert pes, i calcular el nombre de paraules amb aquest pes que hi ha al codi.

• Calcular el pes m´ınim d’un codi.

• Obtenir una paraula de pes m´ınim, o totes les paraules de pes m´ınim d’un codi.

• Construir el graf de m´ınimes dist`ancies d’un codi.

El graf de m´ınimes dist`ancies d’un codi ´es un graf tal que els seus v`ertexs es corresponen amb cada una de les paraules del codi, i hi ha una aresta que uneix dues paraules-codi si la dist`ancia entre elles es correspon amb la dist`ancia m´ınima del codi.

Exemple 4.1 Graf de m´ınima dist`ancia d’un codi

Suposem que tenim un codi de HammingCde longitud 7, format per les seg¨uents paraules-codi:

(1 1 1 0 0 1 0) (0 1 1 1 0 0 1) (0 0 1 0 1 1 1) (1 1 1 1 1 1 1) (1 0 1 0 0 0 1) (0 1 1 0 1 0 0) (1 0 1 1 1 0 0) (0 0 1 1 0 1 0) (0 1 0 0 0 1 1) (1 1 0 0 1 0 1) (0 1 0 1 1 1 0) (1 0 0 1 0 1 1) (1 1 0 1 0 0 0) (0 0 0 0 0 0 0) (0 0 0 1 1 0 1) (1 0 0 0 1 1 0)

Podem construir el seu graf de m´ınima dist`ancia, que es pot representar gr`aficament com a la Figura 4.1.

A banda d’aquestes funcions, s’ha ampliat la funci´oBinaryMinimumDistance del paquetBinaryCodes per tal que si el codi ´es invariant per dist`ancia (com

´es el cas dels codis perfectes) es pugui calcular la dist`ancia m´ınima a partir del pes m´ınim, un c`alcul bastant m´es lleuger que el de la dist`ancia m´ınima.

Références

Documents relatifs

Es tracta de la modificació de la intensitat del valor il·locutiu de l’acte en el cas d’actes de parla directius, comissius i expressius; de la foca- lització de l’atenció

2) Je relie avec la bonne couleur pour faire la

[r]

[r]

Bloc temàtic II: El sistema educatiu espanyol i l'educació a Catalunya 3.- Legislació i política de l'educació a Catalunya.. 4.- Legislació i política de l'educació

La influ`encia del tema en la f´ısica de les forces nuclears, que ocupa gran part d’esfor¸cos de l’`epoca, es far` a notar en un doble sentit en la f´ısica de les noves

El Grupo mantiene una posición de deuda neta de € 1.236 millones 0,4x EBITDA anualizado a septiembre de 2019, aumentando en € 1.364 millones frente al saldo de hace 12 meses, debido

Bei gerader Wand kann auf das Kompensationsprofil b verzichtet werden und der senkrechte Wandanschluss absilikoniert werden (Abstand Wand / Glas min.. Set up the fixed part