Una biblioteca desarrollada en Java para el estudio, experimentación e implementación de conceptos fundamentales de Teoría de Códigos, Códigos Lineales, Códigos Algebraicos y Códigos de uso cotidiano.
El objetivo principal del proyecto es ofrecer una implementación didáctica, donde cada algoritmo siga lo más fielmente posible la teoría vista en cursos universitarios, manteniendo al mismo tiempo una arquitectura modular y reutilizable.
Este proyecto busca servir como:
- Biblioteca para cursos universitarios de Teoría de Códigos.
- Herramienta para validar ejemplos y ejercicios.
- Material de apoyo para comprender los algoritmos clásicos.
- Base para futuros desarrollos e investigaciones.
src/
│
├── AlgebraicModels/
├── BlockCodesModels/
├── BlockEncoding/
├── Bounds/
├── DayToDayCodes/
├── Decoding/
├── LinearCodeModels/
├── LinearEncoding/
├── Main/
├── Permutations/
└── Utils/
Contiene las estructuras algebraicas utilizadas por toda la biblioteca.
Entre ellas:
-
Codeword
-
Polynomial
-
Zn
-
Tuple
-
Coset
-
Ball
-
NullSpace
-
GaussianResult
-
PolynomialOperation
-
PolynomialDivisionResult
-
ModuleOperation
-
VectorField Aquí se implementan operaciones sobre:
-
vectores
-
matrices
-
polinomios
-
aritmética modular
-
espacios vectoriales
-
eliminación gaussiana
-
núcleos de matrices
-
bolas de Hamming
-
clases laterales (cosets)
Implementa códigos en bloques generales.
Incluye:
- representación de un código arbitrario
- cálculo de parámetros
- distancia mínima
- detección y corrección de errores
- propiedades MDS
- perfección del código
No supone linealidad.
Implementa códigos lineales.
Incluye:
- matrices generadoras
- matrices de control
- forma estándar
- código dual
- ortogonalidad
- generación automática
- decodificación por síndrome
También contiene implementaciones específicas como:
- Hamming
- Simplex
- Reed-Solomon
- Códigos Cíclicos
Algoritmos de codificación para códigos en bloques.
Permite transformar mensajes en palabras código mediante diferentes estrategias de codificación.
Implementa la codificación mediante matrices generadoras.
Incluye los algoritmos clásicos de:
para producir palabras código.
Implementación de cotas clásicas de Teoría de Códigos.
Actualmente incluye:
- Cota de Hamming
- Cota de Singleton
- Cota de Gilbert–Varshamov
Permite verificar propiedades como:
- perfección
- optimalidad
- condición MDS
Implementa distintos algoritmos de decodificación.
Actualmente contiene:
Busca la palabra código más cercana utilizando distancia de Hamming.
Implementado mediante dos enfoques distintos.
Utiliza una tabla previamente calculada de síndromes y líderes.
Es el algoritmo más eficiente de la biblioteca.
Implementación completamente basada en el algoritmo clásico enseñado en cursos de Teoría de Códigos.
Aunque resulta menos eficiente, permite visualizar el procedimiento teórico paso a paso.
Implementa herramientas relacionadas con equivalencia de códigos.
Incluye:
- ciclos
- permutaciones
- generación automática
- permutaciones del alfabeto
- permutaciones de posiciones
Estas herramientas permiten estudiar equivalencia entre códigos y transformaciones isométricas.
Implementa códigos utilizados diariamente en la industria.
Actualmente incluye:
- EAN-8
- EAN-13
- ISBN-10
- ISBN-13
- ISIN
Cada implementación verifica automáticamente:
- longitud
- alfabeto
- ecuación de control
- dígito verificador
Además permite calcular automáticamente el dígito de control para códigos incompletos.
Contiene funciones auxiliares utilizadas por distintos módulos de la biblioteca.
Ejemplos de uso, pruebas y demostraciones de la biblioteca.
La biblioteca permite trabajar con:
- suma
- resta
- multiplicación
- división
- inversos
- potencias
- eliminación de Gauss
- rango
- base del núcleo
- multiplicación matricial
- transposición
- construcción
- distancia mínima
- bolas de Hamming
- detección
- corrección
- matrices generadoras
- matrices de control
- forma estándar
- dual
- código ortogonal
- código autodual
- Hamming
- Simplex
- Reed–Solomon
- Códigos Cíclicos
- Maximum Likelihood
- Syndrome Decoding
- Coset Decoding
- permutaciones
- ciclos
- equivalencia
- automorfismos
- EAN-8
- EAN-13
- ISBN-10
- ISBN-13
- ISIN
A diferencia de otras bibliotecas enfocadas únicamente en eficiencia computacional, esta implementación prioriza la claridad matemática.
Muchos algoritmos poseen implementaciones explícitas de los procedimientos clásicos utilizados en cursos universitarios, incluso cuando existen alternativas computacionalmente más rápidas.
Por ejemplo, la decodificación por síndrome se encuentra implementada tanto mediante:
- tablas de síndromes (enfoque eficiente),
- como mediante clases laterales (cosets), reproduciendo exactamente el algoritmo tradicional enseñado en teoría.
Esta decisión convierte a la biblioteca en una herramienta útil tanto para programación como para aprendizaje.
Actualmente la biblioteca implementa la mayor parte de los contenidos fundamentales de un curso universitario de Teoría de Códigos, incluyendo:
- ✔ Códigos en bloques
- ✔ Códigos lineales
- ✔ Códigos de Hamming
- ✔ Códigos Simplex
- ✔ Reed–Solomon
- ✔ Códigos cíclicos
- ✔ Decodificación por síndrome
- ✔ Decodificación por máxima verosimilitud
- ✔ Cotas clásicas
- ✔ Permutaciones y equivalencia de códigos
- ✔ Códigos comerciales (EAN, ISBN, ISIN)
El proyecto continúa en desarrollo con el objetivo de incorporar nuevos códigos algebraicos, algoritmos de decodificación y herramientas orientadas a la investigación y la enseñanza.
Rashid Jamid Rodelo Salem
Proyecto desarrollado como biblioteca educativa para el estudio e implementación de Teoría de Códigos en Java.