Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Teoría de Códigos

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.

Objetivos

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.

Estructura del proyecto:

src/
│
├── AlgebraicModels/
├── BlockCodesModels/
├── BlockEncoding/
├── Bounds/
├── DayToDayCodes/
├── Decoding/
├── LinearCodeModels/
├── LinearEncoding/
├── Main/
├── Permutations/
└── Utils/

Paquetes

AlgebraicModels

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)

BlockCodesModels

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.

LinearCodeModels

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

BlockEncoding

Algoritmos de codificación para códigos en bloques.

Permite transformar mensajes en palabras código mediante diferentes estrategias de codificación.

LinearEncoding

Implementa la codificación mediante matrices generadoras.

Incluye los algoritmos clásicos de:

$mG$

para producir palabras código.

Bounds

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

Decoding

Implementa distintos algoritmos de decodificación.

Actualmente contiene:

Maximum Likelihood Decoding

Busca la palabra código más cercana utilizando distancia de Hamming.

Syndrome Decoding

Implementado mediante dos enfoques distintos.

Tabla de Síndromes

Utiliza una tabla previamente calculada de síndromes y líderes.

Es el algoritmo más eficiente de la biblioteca.

Clases Laterales (Cosets)

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.

Permutations

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.

DayToDayCodes

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.

Utils

Contiene funciones auxiliares utilizadas por distintos módulos de la biblioteca.

Main

Ejemplos de uso, pruebas y demostraciones de la biblioteca.

Funcionalidades principales

La biblioteca permite trabajar con:

Álgebra modular

  • suma
  • resta
  • multiplicación
  • división
  • inversos
  • potencias

Espacios vectoriales

  • eliminación de Gauss
  • rango
  • base del núcleo
  • multiplicación matricial
  • transposición

Códigos en bloques

  • construcción
  • distancia mínima
  • bolas de Hamming
  • detección
  • corrección

Códigos lineales

  • matrices generadoras
  • matrices de control
  • forma estándar
  • dual
  • código ortogonal
  • código autodual

Códigos lineales especiales

  • Hamming
  • Simplex
  • Reed–Solomon
  • Códigos Cíclicos

Decodificación

  • Maximum Likelihood
  • Syndrome Decoding
  • Coset Decoding

Permutaciones

  • permutaciones
  • ciclos
  • equivalencia
  • automorfismos

Códigos comerciales

  • EAN-8
  • EAN-13
  • ISBN-10
  • ISBN-13
  • ISIN

Filosofía del proyecto

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.

Estado del proyecto

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.

Autor

Rashid Jamid Rodelo Salem

Proyecto desarrollado como biblioteca educativa para el estudio e implementación de Teoría de Códigos en Java.

About

Este proyecto contiene todo lo escencial para trabajar en la materia de teoría de la información o teoría de códigos. Incluye implementaciones de códigos de bloques, códigos lineales, códigos especiales, códigos cotidianos, y demás herramientas matemáticas que serán de utilidad para el usuario como interfaz matemática.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages