Pregunta

Estoy confundido sobre el punto de la codificación aritmética adaptativa.

Entiendo que la codificación aritmética estática implica usar las probabilidades predeterminadas de símbolos que siguen siendo estática durante todo el proceso.También entiendo que la codificación aritmética adaptable implica cambiar todas las probabilidades después de que se haya encontrado cada símbolo.

Sin embargo, ¿cuál es el punto de cambiar la probabilidad después de cada símbolo?¿Por qué no acaba de pasar por un archivo completo primero y determinar las probabilidades y luego hacer la codificación aritmética como una segunda pasada?

Además, ¡no entiendo qué tan cambiante la probabilidad de símbolos afecta la compresión?Si conocemos las verdaderas probabilidades de los símbolos en el archivo que estamos comprimiendo, ¡entonces hará que el archivo sea más pequeño?

¿Fue útil?

Solución

primero, considere "pasar por un archivo completo". Hay algunas suposiciones que vale la pena pensar aquí.

Los archivos pueden ser muy grandes, y atravesarlos dos veces pueden ser costosos. Esta es una de las razones por las que la mayoría de los estándares de compresión del mundo real se basan en bloques o ventanas.

Hay situaciones en las que no tiene "el archivo completo" para comenzar, como un canal de comunicación. tls (antes de 1.3, al menos) compatible con compresión, por ejemplo.

Los archivos no siempre son homogéneos. Archivos (por ejemplo, tar ) es un caso en punto. Un modelo estadístico que es apropiado para una parte de un archivo puede no ser apropiado para otra parte. La codificación adaptativa también se adapta a esto.

En cuanto a su pregunta final, si tanto el codificador como el decodificador conocían las probabilidades verdaderas de los símbolos en el archivo que estamos comprimiendo, entonces eso no tendría que ser transmitido. Y, de hecho, a veces hacemos esto en el mundo real. El estándar JPEG, por ejemplo, especifica las tablas de codificación predeterminadas para aquellas veces cuando son apropiadas, y permite que un codificador suministre su propio contenido cuando no lo son.

Transmitir una tabla de codificación estática de manera eficiente (es decir, comprimirla) es un problema no trivial, especialmente para un alfabeto de código grande. Para un esquema bien diseñado, el costo de transmitir la tabla debería ser igual al "costo de aprendizaje" de usar un código adaptativo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a cs.stackexchange
scroll top