Estaba leyendo sobre algoritmos de compresión de datos y el límite teórico para la compresión de datos. Recientemente encontré un método de compresión llamado "Codificación de entropía combinatoria", la idea principal de este método es codificar el archivo como los caracteres presentados en el archivo, sus frecuencias y el índice de permutación de estos caracteres representado por el archivo.
Estos documentos pueden ayudar a explicar este método:
https://arxiv.org/pdf/1703.08127
http://www-video.eecs.berkeley.edu/papers/vdai/dcc2003.pdf
https://www.thinkmind.org/download.php?articleid=ctrq_2014_2_10_70019
Sin embargo, en el primer documento que leí que al usar este método podrían comprimir algo de texto por debajo del límite de Shannon (no consideraron el espacio necesario para guardar la frecuencia de los caracteres y el espacio necesario para guardar el meta datos del archivo). Lo pensé y descubrí que este método no será muy eficiente para archivos muy pequeños, pero por otro lado puede funcionar bien con archivos grandes. En realidad no entiendo muy bien este algoritmo o el límite de Shannon, solo sé que es la suma de la probabilidad de cada personaje multiplicada por del recíproco de la probabilidad.
Entonces tengo algunas preguntas:
¿Este método de compresión realmente comprime archivos más pequeños que el límite de Shannon?
¿Hay algún algoritmo de compresión que comprima archivos a menos del límite de Shannon (la respuesta a esta pregunta hasta donde sé es que no)?
¿Puede existir un método de compresión que comprima archivos más pequeños que el límite de Shannon?
Si la codificación combinatoria realmente comprime archivos más allá del límite de Shannon, ¿no es posible comprimir el archivo una y otra vez hasta que alcancemos el tamaño de archivo que queremos?
Respuestas:
Aquí yace el quid. El límite de Shannon no es una propiedad universal de una cadena de texto. Es la propiedad de una cadena de texto más un modelo que proporciona probabilidades (posiblemente dependientes del contexto) de símbolos. Nos dice qué tan bien ese modelo podría comprimir el texto, suponiendo que el modelo sea exacto .
Si usa un modelo para calcular el límite de Shannon y luego un modelo diferente para comprimir, si el segundo modelo es más preciso, puede superar el límite original de Shannon que había calculado, pero eso no es realmente relevante.
fuente
Es trivialmente simple demostrar que puede comprimir por debajo del límite de Shannon: tome un compresor de trampa que tenga un montón de archivos comunes asignados a tokens. Dichos archivos se almacenan como esos tokens. (Obviamente, el compresor debe estar muy grande o estar dibujando en una biblioteca muy grande).
Sin embargo, el compresor será inherentemente menos eficiente en el manejo de cualquier archivo que no esté en su biblioteca, ya que de alguna manera debe distinguir un token de una compresión normal.
Lo que no puede hacer es tener un compresor que supere el límite de Shannon en todos los archivos .
fuente
Primero aplica el modelo a los datos, calculando la secuencia de probabilidades, fe1 / 2 , 1 / 3 , 1 / 6 . Luego, para codificar cada símbolo con probabilidadpag , necesitas l o g2( 1 / p ) bits Y dado un modelo particular, no puede comprimir datos mejor que la entropía de probabilidades de Shannon producida por este modelo particular.
Pero si aplica otro modelo, obtendrá otra secuencia de probabilidades. Por ejemplo, la letra "u" es bastante rara, por lo que su probabilidad sobre el texto completo puede ser del 3%, y es la probabilidad que tiene que asignar a esta letra utilizando un modelo de Markov de orden 0 .
Pero en los textos en inglés, después de "q" usualmente viene una "u", por lo tanto, utilizando un modelo de orden 1, puede asignar una probabilidad mucho mayor a "u" que va después de "q", mejorando así la relación de compresión.
Además, algunos modelos generan menos símbolos que los de entrada, por ejemplo, LZ77 reemplaza las repeticiones de texto con referencias inversas, por lo que "abababab" se convierte en "ab [2,8]".
Cuando alguien habla de la entropía de Shannon de algunos datos en lugar de datos comprimidos por un modelo en particular, generalmente se refiere a la entropía de Shannon producida por un modelo de orden 0, es decir, asignar a cada símbolo su probabilidad sobre todo el texto. Obviamente, puede superar este margen aplicando un modelo más sofisticado a los datos.
fuente
Otra posible interpretación del texto: el algoritmo de compresión dado le dará una mejor compresión de algunos textos, y una peor compresión en otros. Sin embargo, los usuarios generalmente se preocupan por algunos tipos de archivos (páginas HTML en inglés, código de máquina 80386) más que otros (tablas de números verdaderamente aleatorios, ruido sin sentido seleccionado para minimizar la repetición). Cualquier esquema de compresión va a compensar ser mejor para comprimir datos del mundo real con ser peor que inútil para comprimir ciertos otros tipos de cadenas.
fuente