Skip to content

Latest commit

 

History

History
55 lines (43 loc) · 2.2 KB

File metadata and controls

55 lines (43 loc) · 2.2 KB

HuffmanScript

Una implementación en Python del algoritmo de codificación Huffman para la compresión de datos sin pérdida. Este proyecto incluye herramientas para calcular probabilidades de símbolos, construir árboles de Huffman, codificar/decodificar texto y medir la eficiencia de la compresión mediante la entropía y la longitud de bits promedio.

Características

  • Análisis de Frecuencia: Calcula automáticamente la probabilidad de cada carácter en una cadena dada.
  • Construcción de Árboles: Visualiza la formación paso a paso del Árbol de Huffman utilizando una cola de prioridad.
  • Codificación y Decodificación: Comprime texto en una cadena binaria y reconstruye el mensaje original sin pérdida de datos.
  • Análisis de Métricas: Calcula la Entropía teórica y la Longitud Promedio (bits por símbolo) para evaluar la eficiencia.

Stack Tecnológico

  • Lenguaje: Python 3.x
  • Librerías: heapq (Cola de prioridad), math (Cálculos logarítmicos)

Configuración

  1. Clona el repositorio:
git clone https://github.com/Eduu64/HuffmanScript.git
  1. Navega al directorio del proyecto:
cd huffman-compressor
  1. Asegúrate de tener Python instalado. No se requieren dependencias externas.

Uso

Ejecuta el script directamente para ver un ejemplo de compresión y cálculo de métricas:

python huffman_main.py

Ejemplo de Código

texto = "aaaabbcd"
arrayletras, arrayprobs = calcular_probabilidad_letras(texto)

# Construir el árbol y generar códigos
arbol = arbolHuffman(arrayletras, arrayprobs)
huffman_codes = codigoHuffman(arbol)

# Comprimir y descomprimir
comprimido = compresor(huffman_codes, texto)
decomprimido = descompresor(huffman_codes, comprimido)

Estructura del Proyecto

  • Nodo: Clase que representa un nodo en el Árbol de Huffman.
  • calcular_probabilidad_letras: Filtra el texto y computa las frecuencias de los caracteres.
  • arbolHuffman: Implementa el algoritmo "greedy" para construir el árbol binario óptimo.
  • codigoHuffman: Recorre el árbol para asignar códigos binarios libres de prefijo.
  • compresor / descompresor: Funciones para manejar la conversión del flujo de bits.
  • calculo_entropia / longitud_media: Funciones de utilidad para análisis estadístico.