<< Campos de Galois Campos de Galois Campos >>

Campos de Galois >> Campos de Galois > galois_fields

galois_fields

Presentación del toolbox Galois Fields: campos finitos GF(p) y GF(p^n)

Descripción

El toolbox galois_fields trabaja con campos finitos (de Galois) GF(p) y GF(p^n), y con polinomios sobre GF(p). Ofrece:

Los campos de orden p^n se construyen a partir de un polinomio primitivo f de grado n sobre GF(p). Si α es una raíz de f, todo elemento no nulo del campo es una potencia α^k, 0 ≤ k ≤ p^n - 2, y también un polinomio en α de grado < n con coeficientes en GF(p).

Convenciones de datos

Los polinomios sobre GF(p) son vectores fila de coeficientes enteros en 0 .. p-1, empezando por el término constante: [1 1 0 0 1] es 1 + x + x⁴. Las funciones que devuelven polinomios los recortan a su grado y devuelven el polinomio cero como 0.

Un campo es la lista que devuelve gf_create_field: list(p, n, f, elements), donde f es el polinomio primitivo (n + 1 coeficientes) y elements la tabla de todos los elementos del campo.

Los elementos de GF(p) son enteros 0 .. p-1. Los elementos de GF(p^n), n > 1, son filas de n coeficientes (polinomios en α, empezando por el término constante). Las funciones sobre elementos aceptan varios elementos a la vez: una matriz para n = 1, un elemento por fila para n > 1.

En la tabla de elementos de GF(p^n), n > 1, la fila 1 es el elemento cero y la fila k + 2 es α^k (orden exponencial). Para n = 1 la tabla es 0:p-1.

Límites

El orden del campo p^n puede ser como máximo 2^20 (1 048 576) y el grado n como máximo 20. Las tablas de elementos tienen p^n filas, por lo que los campos grandes usan memoria en proporción.

Compilación y carga

Ejecute exec builder.sce una vez en la carpeta del toolbox (se necesita un compilador de C) y luego exec loader.sce en cada sesión en que se necesite el toolbox. Las páginas de ayuda solo se compilan cuando Scilab se ejecuta con su interfaz Java (no con scilab-cli).

Ejemplos

// GF(16) construido con el polinomio primitivo por defecto 1 + x + x^4
F = gf_create_field(2, 4);
gf_primitive_polynomial(F)        // 1 + x + x^4

a = [0 1 0 0];                    // alpha
b = [1 1 0 0];                    // 1 + alpha = alpha^4
c = gf_multiply(F, a, b)          // [0 1 1 0] = alpha + alpha^2
gf_to_exponential(F, c)           // 5: c es alpha^5

// Polinomios sobre GF(2)
[r, q] = gf_poly_divide([1 0 1 1], [1 1], 2)   // r = 1, q = [0 0 1]

Ver también

Historial

VersionDescription
2.0.0

Refactorización de la función/toolbox.


Report an issue
<< Campos de Galois Campos de Galois Campos >>