* Simplicidad: El algoritmo central es fácil de entender e implementar en código. Esto a menudo significa usar operaciones básicas y estructuras de datos.
* velocidad: La compresión y la descompresión son relativamente rápidas, minimizando el tiempo requerido para procesar datos. Esto es crucial para aplicaciones en tiempo real o en tiempo casi real.
* huella de baja memoria: El algoritmo no requiere grandes cantidades de memoria para operar. Esto es importante para sistemas integrados o entornos limitados por recursos.
* Overhead mínimo: La cantidad de metadatos o información de encabezado agregada a los datos comprimidos es pequeña. Los encabezados grandes pueden compensar los beneficios de la compresión, especialmente para pequeños archivos de entrada.
* Complejidad fija o limitada: La complejidad del algoritmo (tanto tiempo como espacio) debe ser predecible y preferiblemente lineal o cercano a lineal con el tamaño de entrada. Esto evita cuellos de botella de rendimiento inesperados.
* sin pérdida (a menudo): Los algoritmos más simples a menudo se centran en la compresión sin pérdidas, asegurando que los datos originales puedan reconstruirse perfectamente. Las técnicas de compresión con pérdida tienden a ser más complejas.
Los ejemplos comunes de algoritmos y técnicas de compresión simples que demuestran estas características incluyen:
* codificación de longitud de ejecución (RLE): Reemplaza las secuencias de caracteres idénticos con un recuento y el personaje. Muy simple de implementar y rápido, pero solo efectivo cuando hay largas ejecuciones de caracteres idénticos.
* Codificación del diccionario (simple): Crea un pequeño diccionario estático de palabras o frases que ocurren con frecuencia y las reemplaza con códigos cortos. Un diccionario estático mantiene mínimo.
* Codificación de Huffman (estática): Asigna códigos más cortos a caracteres más frecuentes basados en una tabla de frecuencia precalculada. El uso de una tabla estática reduce la complejidad en comparación con la codificación adaptativa de Huffman.
* codificación delta: Registra datos como diferencias (deltas) entre datos secuenciales en lugar de registros completos. Efectivo cuando los datos cambian gradualmente.
* Embalaje básico de bits: Empaca múltiples valores en un solo byte cuando los valores requieren menos bits que un byte completo.
Por el contrario, los algoritmos de compresión más complejos como LZ77, LZ78, Deflate (utilizado en archivos ZIP) y JPEG (Lossy) priorizan las relaciones de compresión más altas, pero a expensas de una mayor complejidad computacional, uso de la memoria y dificultades de implementación. Los algoritmos simples hacen compensaciones en el rendimiento de la compresión en aras de la practicidad en ciertos escenarios.