Implementación desde cero de estructuras algebraicas avanzadas y algoritmos de factorización en Python. Este proyecto destaca por no depender de librerías externas, implementando incluso los algoritmos de optimización matricial y polinómica de forma nativa.
-
Cuerpos Finitos (
$F_p$ ): Aritmética modular completa, inversos y potencias rápidas. -
Anillos de Polinomios (
$F_p[x]$ ): División con resto, GCD extendido y test de irreducibilidad de Rabin. -
Cuerpos de Extensión (
$F_q$ ): Implementación mediante cocientes de polinomios irreducibles. -
Anillos de Polinomios sobre extensiones (
$F_q[x]$ ): Soporte para aritmética y algoritmos avanzados sobre cuerpos de extensión.
Implementación del pipeline completo de Cantor-Zassenhaus:
- Square-free Factorization: Eliminación de factores con multiplicidad.
- Distinct-degree Factorization: Separación de factores por grados.
- Equal-degree Factorization: Algoritmo probabilístico para obtener factores irreducibles.
-
Multiplicación de Karatsuba: Optimización del producto de polinomios con complejidad
$O(n^{\log_2 3})$ . - Transformada Rápida de Fourier (FFT): Algoritmo de Cooley-Tukey para multiplicación en tiempo casi lineal.
- Matrices de Toeplitz: Operaciones de producto e inversión mediante División y Conquista recursiva.
- División Rápida: Basada en la inversión de matrices de Toeplitz.
Al ser una librería "pure Python", no requiere dependencias externas.
import cuerpos_finitos as cf
fp = cf.cuerpo_fp(7)
fpx = cf.anillo_fp_x(fp, 'x')
f = (5, 1, 0, 2, 3) # 3x^4 + 2x^3 + x + 5
print(fpx.factorizar(f))Proyecto desarrollado para la asignatura de Álgebra Computacional (2025).
- Desarrolladores: Alberto Peña Peñalver y Fabio Torres Martínez.
- Contribución: Implementación de la arquitectura de clases y optimización de algoritmos de factorización y matrices.