43
Usando GAP para trabalhar com códigos Fábio Meneghetti 1 de outubro de 2019 Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 1 / 16

Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

  • Upload
    others

  • View
    17

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

Usando GAP para trabalhar com códigos

Fábio Meneghetti

1 de outubro de 2019

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 1 / 16

Page 2: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

GAP – Groups, Algorithms, Programming

Um software livre e gratuito para álgebra discreta computacional

https://www.gap-system.org

Pacote Debian/Ubuntu: sudo apt install gap-core

Iniciar a shell: gap

?comando para instruções sobre um comando.

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 2 / 16

Page 3: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

GAP – Groups, Algorithms, Programming

Um software livre e gratuito para álgebra discreta computacional

https://www.gap-system.org

Pacote Debian/Ubuntu: sudo apt install gap-core

Iniciar a shell: gap

?comando para instruções sobre um comando.

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 2 / 16

Page 4: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

GAP – Groups, Algorithms, Programming

Um software livre e gratuito para álgebra discreta computacional

https://www.gap-system.org

Pacote Debian/Ubuntu: sudo apt install gap-core

Iniciar a shell: gap

?comando para instruções sobre um comando.

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 2 / 16

Page 5: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

GAP – Groups, Algorithms, Programming

Um software livre e gratuito para álgebra discreta computacional

https://www.gap-system.org

Pacote Debian/Ubuntu: sudo apt install gap-core

Iniciar a shell: gap

?comando para instruções sobre um comando.

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 2 / 16

Page 6: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

GUAVA

Uma biblioteca do GAP para trabalhar com códigos corretores deerros

https://gap-packages.github.io/guava

Pacote Debian/Ubuntu: sudo apt install gap-guava

Importar a biblioteca: LoadPackage("guava");

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 3 / 16

Page 7: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

GUAVA

Uma biblioteca do GAP para trabalhar com códigos corretores deerros

https://gap-packages.github.io/guava

Pacote Debian/Ubuntu: sudo apt install gap-guava

Importar a biblioteca: LoadPackage("guava");

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 3 / 16

Page 8: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

GUAVA

Uma biblioteca do GAP para trabalhar com códigos corretores deerros

https://gap-packages.github.io/guava

Pacote Debian/Ubuntu: sudo apt install gap-guava

Importar a biblioteca: LoadPackage("guava");

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 3 / 16

Page 9: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

GUAVA

Uma biblioteca do GAP para trabalhar com códigos corretores deerros

https://gap-packages.github.io/guava

Pacote Debian/Ubuntu: sudo apt install gap-guava

Importar a biblioteca: LoadPackage("guava");

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 3 / 16

Page 10: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

Corpos Finitos

O corpo finito com q elementos é denotado GF(q).

Z(q) é um gerador multiplicativo do corpo finito com q elementos.0*Z(q) é o elemento neutro aditivo, e Z(q)^0 é o neutromultiplicativo.

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 4 / 16

Page 11: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

Corpos Finitos

O corpo finito com q elementos é denotado GF(q).

Z(q) é um gerador multiplicativo do corpo finito com q elementos.0*Z(q) é o elemento neutro aditivo, e Z(q)^0 é o neutromultiplicativo.

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 4 / 16

Page 12: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

Códigos e palavras

Palavra v = (1, 0, 2) em F35:

v := Codeword("102", GF(5));

Código composto pelas palavras (1, 0, 0) e (1, 1, 1) em F32:

C := ElementsCode(["100", "111"], GF(2));

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 5 / 16

Page 13: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

Códigos e palavras

Palavra v = (1, 0, 2) em F35:

v := Codeword("102", GF(5));

Código composto pelas palavras (1, 0, 0) e (1, 1, 1) em F32:

C := ElementsCode(["100", "111"], GF(2));

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 5 / 16

Page 14: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

Códigos lineares

A matriz inteira

M =

1 0 00 2 1

,

por exemplo, é denotada porM := [[1,0,0],[0,2,1]];

Código linear C gerado pela matriz M em Fnq:

C := GeneratorMatCode(M, GF(q));

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 6 / 16

Page 15: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

Códigos lineares

A matriz inteira

M =

1 0 00 2 1

,

por exemplo, é denotada porM := [[1,0,0],[0,2,1]];

Código linear C gerado pela matriz M em Fnq:

C := GeneratorMatCode(M, GF(q));

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 6 / 16

Page 16: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

Exemplos

Testar funções:

IsCode(C);

IsLinearCode(C);

List(C);

MinimumDistance(C);

RandomLinearCode(n,k,GF(q));

DualCode(C);

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 7 / 16

Page 17: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

Código de Hadamard

Uma matriz de Hadamard é uma matriz quadrada Hn×n com entradasem {−1, 1} e tal que H · Ht = −nI;

Uma matriz de pode ser transformada numa matriz binária An×n

trocando 1 por 0 e −1 por 1;

Um código de Hadamard de tipo 1 é gerado pelas linhas de A apósse excluir a primeira coluna;

Um código de Hadamard de tipo 2 é criado adicionando oscomplementos das palavras já existentes;

Um código de Hadamard de tipo 3 é gerado pelas linhas de A e seuscomplementos.

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 8 / 16

Page 18: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

Código de Hadamard

Uma matriz de Hadamard é uma matriz quadrada Hn×n com entradasem {−1, 1} e tal que H · Ht = −nI;

Uma matriz de pode ser transformada numa matriz binária An×n

trocando 1 por 0 e −1 por 1;

Um código de Hadamard de tipo 1 é gerado pelas linhas de A apósse excluir a primeira coluna;

Um código de Hadamard de tipo 2 é criado adicionando oscomplementos das palavras já existentes;

Um código de Hadamard de tipo 3 é gerado pelas linhas de A e seuscomplementos.

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 8 / 16

Page 19: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

Código de Hadamard

Uma matriz de Hadamard é uma matriz quadrada Hn×n com entradasem {−1, 1} e tal que H · Ht = −nI;

Uma matriz de pode ser transformada numa matriz binária An×n

trocando 1 por 0 e −1 por 1;

Um código de Hadamard de tipo 1 é gerado pelas linhas de A apósse excluir a primeira coluna;

Um código de Hadamard de tipo 2 é criado adicionando oscomplementos das palavras já existentes;

Um código de Hadamard de tipo 3 é gerado pelas linhas de A e seuscomplementos.

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 8 / 16

Page 20: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

Código de Hadamard

Uma matriz de Hadamard é uma matriz quadrada Hn×n com entradasem {−1, 1} e tal que H · Ht = −nI;

Uma matriz de pode ser transformada numa matriz binária An×n

trocando 1 por 0 e −1 por 1;

Um código de Hadamard de tipo 1 é gerado pelas linhas de A apósse excluir a primeira coluna;

Um código de Hadamard de tipo 2 é criado adicionando oscomplementos das palavras já existentes;

Um código de Hadamard de tipo 3 é gerado pelas linhas de A e seuscomplementos.

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 8 / 16

Page 21: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

Código de Hadamard

Uma matriz de Hadamard é uma matriz quadrada Hn×n com entradasem {−1, 1} e tal que H · Ht = −nI;

Uma matriz de pode ser transformada numa matriz binária An×n

trocando 1 por 0 e −1 por 1;

Um código de Hadamard de tipo 1 é gerado pelas linhas de A apósse excluir a primeira coluna;

Um código de Hadamard de tipo 2 é criado adicionando oscomplementos das palavras já existentes;

Um código de Hadamard de tipo 3 é gerado pelas linhas de A e seuscomplementos.

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 8 / 16

Page 22: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

Código de Hadamard

O código de Hadamard gerado pela matriz de Hadamard H, de tipot, é dado por HadamardCode(H,t);

Também pode se usar HadamardCode(n, t) que retorna um código deHadamard com parâmetro n e tipo t.

Exemplo: Testar comH := [[1,1,1,1],[1,-1,1,-1],[1,1,-1,-1],[1,-1,-1,1]];

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 9 / 16

Page 23: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

Código de Hadamard

O código de Hadamard gerado pela matriz de Hadamard H, de tipot, é dado por HadamardCode(H,t);

Também pode se usar HadamardCode(n, t) que retorna um código deHadamard com parâmetro n e tipo t.

Exemplo: Testar comH := [[1,1,1,1],[1,-1,1,-1],[1,1,-1,-1],[1,-1,-1,1]];

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 9 / 16

Page 24: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

Código de Hadamard

O código de Hadamard gerado pela matriz de Hadamard H, de tipot, é dado por HadamardCode(H,t);

Também pode se usar HadamardCode(n, t) que retorna um código deHadamard com parâmetro n e tipo t.

Exemplo: Testar comH := [[1,1,1,1],[1,-1,1,-1],[1,1,-1,-1],[1,-1,-1,1]];

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 9 / 16

Page 25: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

Códigos cíclicos

CyclicCodes(n,F) lista todos os códigos cíclicos de tamanho nsobre o corpo F .

IsCyclicCode()

BinaryGoppaCode(), TernaryGolayCode()

Gerando códigos cíclicos: um código cíclico pode ser visto como umideal sobre Fq[X ]/(Xn − 1).

Exemplo: x:= Indeterminate(GF(2));C1 := GeneratorPolCode(x^2+1, 5, GF(2));C2 := GeneratorPolCode(x+1, 5, GF(2));

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 10 / 16

Page 26: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

Códigos cíclicos

CyclicCodes(n,F) lista todos os códigos cíclicos de tamanho nsobre o corpo F .

IsCyclicCode()

BinaryGoppaCode(), TernaryGolayCode()

Gerando códigos cíclicos: um código cíclico pode ser visto como umideal sobre Fq[X ]/(Xn − 1).

Exemplo: x:= Indeterminate(GF(2));C1 := GeneratorPolCode(x^2+1, 5, GF(2));C2 := GeneratorPolCode(x+1, 5, GF(2));

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 10 / 16

Page 27: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

Códigos cíclicos

CyclicCodes(n,F) lista todos os códigos cíclicos de tamanho nsobre o corpo F .

IsCyclicCode()

BinaryGoppaCode(), TernaryGolayCode()

Gerando códigos cíclicos: um código cíclico pode ser visto como umideal sobre Fq[X ]/(Xn − 1).

Exemplo: x:= Indeterminate(GF(2));C1 := GeneratorPolCode(x^2+1, 5, GF(2));C2 := GeneratorPolCode(x+1, 5, GF(2));

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 10 / 16

Page 28: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

Códigos cíclicos

CyclicCodes(n,F) lista todos os códigos cíclicos de tamanho nsobre o corpo F .

IsCyclicCode()

BinaryGoppaCode(), TernaryGolayCode()

Gerando códigos cíclicos: um código cíclico pode ser visto como umideal sobre Fq[X ]/(Xn − 1).

Exemplo: x:= Indeterminate(GF(2));C1 := GeneratorPolCode(x^2+1, 5, GF(2));C2 := GeneratorPolCode(x+1, 5, GF(2));

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 10 / 16

Page 29: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

Códigos cíclicos

CyclicCodes(n,F) lista todos os códigos cíclicos de tamanho nsobre o corpo F .

IsCyclicCode()

BinaryGoppaCode(), TernaryGolayCode()

Gerando códigos cíclicos: um código cíclico pode ser visto como umideal sobre Fq[X ]/(Xn − 1).

Exemplo: x:= Indeterminate(GF(2));C1 := GeneratorPolCode(x^2+1, 5, GF(2));C2 := GeneratorPolCode(x+1, 5, GF(2));

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 10 / 16

Page 30: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

Código de Hamming

HammingCode(r,F) retorna um código de Hamming comredundância r sobre o corpo F .

Exemplo: HammingCode( 3, GF(2) );

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 11 / 16

Page 31: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

Decodificação

Decode(C,v) decodifica a palavra v usando o código C .

Decodeword(C,v) diz a palavra do código C mais próxima de v .

Exemplo:C := HammingCode(3, GF(2));v := Codeword("0111111", GF(2));DistanceCodeword(v, Decodeword(C,v));

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 12 / 16

Page 32: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

Decodificação

Decode(C,v) decodifica a palavra v usando o código C .

Decodeword(C,v) diz a palavra do código C mais próxima de v .

Exemplo:C := HammingCode(3, GF(2));v := Codeword("0111111", GF(2));DistanceCodeword(v, Decodeword(C,v));

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 12 / 16

Page 33: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

Matrizes Geradora e Verificadora

Exemplo: C := RandomLinearCode(7,4,GF(3));G := GeneratorMat(C);H := CheckMat(C);

Usar Display() para visualizar as matrizes.

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 13 / 16

Page 34: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

Outras coisinhas

ReedMullerCode()

ReedSolomonCode()

BCHCode()

Códigos algébrico-geométricos

Ver mais no manual do GUAVA: https://www.gap-system.org/Manuals/pkg/guava-3.14/doc/chap0.html

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 14 / 16

Page 35: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

Outras coisinhas

ReedMullerCode()

ReedSolomonCode()

BCHCode()

Códigos algébrico-geométricos

Ver mais no manual do GUAVA: https://www.gap-system.org/Manuals/pkg/guava-3.14/doc/chap0.html

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 14 / 16

Page 36: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

Outras coisinhas

ReedMullerCode()

ReedSolomonCode()

BCHCode()

Códigos algébrico-geométricos

Ver mais no manual do GUAVA: https://www.gap-system.org/Manuals/pkg/guava-3.14/doc/chap0.html

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 14 / 16

Page 37: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

Outras coisinhas

ReedMullerCode()

ReedSolomonCode()

BCHCode()

Códigos algébrico-geométricos

Ver mais no manual do GUAVA: https://www.gap-system.org/Manuals/pkg/guava-3.14/doc/chap0.html

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 14 / 16

Page 38: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

Outras coisinhas

ReedMullerCode()

ReedSolomonCode()

BCHCode()

Códigos algébrico-geométricos

Ver mais no manual do GUAVA: https://www.gap-system.org/Manuals/pkg/guava-3.14/doc/chap0.html

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 14 / 16

Page 39: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

Reticulados

Seja G a matriz regular de uma forma bilinear simétrica (ex: no casodo produto interno é a matriz de Gram G = BtB).

Dado um inteiro m ≥ 0, a função ShortestVectors(G,m) mostra osvetores inteiros x tais que x · G · x t ≤ m, e suas respectivas normasem G .

Se G é a matriz de Gram, isso é equivalente a mostrar as coordenadasdos vetores menor norma do reticulado.

Exemplo: B := [[1,0,0], [1,1,0], [0,0,3]];G := TransposedMat(B)*B;

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 15 / 16

Page 40: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

Reticulados

Seja G a matriz regular de uma forma bilinear simétrica (ex: no casodo produto interno é a matriz de Gram G = BtB).

Dado um inteiro m ≥ 0, a função ShortestVectors(G,m) mostra osvetores inteiros x tais que x · G · x t ≤ m, e suas respectivas normasem G .

Se G é a matriz de Gram, isso é equivalente a mostrar as coordenadasdos vetores menor norma do reticulado.

Exemplo: B := [[1,0,0], [1,1,0], [0,0,3]];G := TransposedMat(B)*B;

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 15 / 16

Page 41: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

Reticulados

Seja G a matriz regular de uma forma bilinear simétrica (ex: no casodo produto interno é a matriz de Gram G = BtB).

Dado um inteiro m ≥ 0, a função ShortestVectors(G,m) mostra osvetores inteiros x tais que x · G · x t ≤ m, e suas respectivas normasem G .

Se G é a matriz de Gram, isso é equivalente a mostrar as coordenadasdos vetores menor norma do reticulado.

Exemplo: B := [[1,0,0], [1,1,0], [0,0,3]];G := TransposedMat(B)*B;

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 15 / 16

Page 42: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

Reticulados

Seja G a matriz regular de uma forma bilinear simétrica (ex: no casodo produto interno é a matriz de Gram G = BtB).

Dado um inteiro m ≥ 0, a função ShortestVectors(G,m) mostra osvetores inteiros x tais que x · G · x t ≤ m, e suas respectivas normasem G .

Se G é a matriz de Gram, isso é equivalente a mostrar as coordenadasdos vetores menor norma do reticulado.

Exemplo: B := [[1,0,0], [1,1,0], [0,0,3]];G := TransposedMat(B)*B;

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 15 / 16

Page 43: Usando GAP para trabalhar com códigosra155276/gap.pdf · GAP–Groups,Algorithms,Programming Umsoftwarelivreegratuitoparaálgebradiscretacomputacional PacoteDebian/Ubuntu: sudo apt

Obrigado!

https://www.ime.unicamp.br/~ra155276/gap.pdf

Fábio Meneghetti Usando GAP para trabalhar com códigos 1 de outubro de 2019 16 / 16