# Compactación de datos

En telecomunicaciones, la compactación de datos es la reducción de la cantidad de elementos de datos, ancho de banda, costo y tiempo para la generación, transmisión y almacenamiento de datos sin pérdida de información mediante la eliminación de redundancia innecesaria, la eliminación de la irrelevancia o el uso de codificación.
Ejemplos de métodos de compactación de datos son el uso de bandas de tolerancia fija, bandas de tolerancia variable, puntos clave de pendiente, cambios de muestra, patrones de curvas, ajuste de curvas, codificación de precisión variable, análisis de frecuencia y análisis de probabilidad.
Simplemente, comprimir datos no compactados en un espacio más pequeño, por ejemplo, aumentando la densidad de empaque mediante la transferencia de imágenes de papel periódico mediante la transferencia de datos a cinta magnética, no es compactación de datos.

## Compactación vs. Compresión

El término compresión de datos se usa comúnmente para significar lo mismo, la compresión permite la pérdida de información mientras la compactación es sin pérdidas. Los efectos de la compactación son reversibles.
Generalmente, en el contexto de sistemas discretos y continuos, la salida de los sistemas discretos, si se abrevia, se compacta sin pérdidas. La compactación de datos es apropiada, a modo de ejemplo, para archivos que contienen texto (incluidos los programas fuente) y código de máquina.

## Algoritmos de compactación

La compactación de datos puede realizarse de manera probabilística o estadística. Un algoritmo de compactación de datos puede ser más o menos efectivo (alta relación de compactación) y más o menos eficiente (economía del tiempo para codificar y decodificar). La codificación de Huffman es efectiva cuando no está restringida, pero puede requerir una gran extensión de la fuente y necesita que el flujo de salida tenga un alfabeto pequeño (como el binario), pudiendo ser muy ineficiente. Por otro lado, la compactación Lempel-Ziv es muy eficiente y, dentro de las limitaciones de tiempo dadas, puede ser más efectiva que un código de Huffman con restricciones similares.
Para llevar a cabo la compactación es necesario mover procesos ya ubicados de unas zonas de memoria a otras, lo cual exige que los procesos sean reubicables en tiempo de ejecución. Existen dos algoritmos de compactación:
* Compactar fragmentos hasta conseguir un hueco de memoria lo suficientemente grande para el nuevo proceso.
* Compactar fragmentos hasta conseguir que toda la memoria libre se quede de forma consecutiva en un único hueco.
Los algoritmos de compactación suelen tener un alto coste computacional.

## Ejemplos

El uso de siglas en los mensajes de texto es un ejemplo cotidiano. El número de bits necesarios para transmitir y almacenar "WYSIWYG" (Lo que ves es lo que obtienes) se reduce con respecto a su equivalente ampliado (7 caracteres frente a 28). La representación de los números primos de Mersenne es otro ejemplo. El más grande conocido a 2013 de 2 tiene más de 17 millones de dígitos, pero se representa como M $_{57885161}$ en una forma mucho más compacta. En la transmisión de fax, la posición de los píxeles negros se codifica discretamente, por lo que nuevamente se emplea la compactación de datos.