Skip to content

Eduu64/HuffmanScript

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 

Repository files navigation

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.

About

Implementación en Python del algoritmo de codificación Huffman para la compresión de datos sin pérdida

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages