¿Cuál es la codificación de longitud fija de 3 bits del árbol de Huffman?
Puedes echar un vistazo al problema de codificación del árbol binario óptimo.
1. Codificación Huffman
En la comunicación de datos, el texto transmitido debe convertirse en una cadena binaria y se utilizan diferentes disposiciones de códigos 0 y 1 para representar los caracteres. Por ejemplo, el mensaje que se transmitirá es "AFTER DATA EAR ARE ART AREA", el conjunto de caracteres utilizado aquí es "A, E, R, T, F, D" y el número de apariciones de cada letra es {8, 4, 5, 3,1,1}. Ahora es necesario diseñar un código para estas letras. Para distinguir 6 letras, el método de codificación binaria más simple es la codificación de igual longitud, que se fija con binario de 3 dígitos. Puede utilizar 000, 001, 010, 011, 100 y 101 respectivamente para "A, E, R, T. , F, D ”se codifica y envía, y cuando la otra parte recibe el mensaje, se decodifica según tres bits y uno. Obviamente, la longitud de la codificación depende de la cantidad de caracteres diferentes en el mensaje. Si pueden aparecer 26 caracteres diferentes en el mensaje, la longitud de codificación fija es 5. Sin embargo, al transmitir un mensaje siempre es deseable mantener la longitud total lo más corta posible. En aplicaciones prácticas, la frecuencia de aparición o el número de usos de cada carácter es diferente. Por ejemplo, la frecuencia de uso de A, B y C es mucho mayor que la de Utilice códigos cortos y códigos largos para optimizar el uso de baja frecuencia. la codificación de todo el mensaje.
Para utilizar codificación de longitud desigual como codificación de prefijo, cada carácter del conjunto de caracteres se puede utilizar como un nodo hoja para generar un árbol binario de codificación para obtener la longitud más corta del mensaje transmitido. , la aparición de cada carácter puede ser La frecuencia se asigna al nodo de carácter como el peso del nodo. Encontrar la longitud de ruta ponderada mínima de este árbol es equivalente a encontrar la longitud más corta del mensaje transmitido. Por lo tanto, el problema de encontrar la longitud más corta de un mensaje transmitido se transforma en el problema de encontrar un árbol de Huffman generado utilizando todos los caracteres del conjunto de caracteres como nodos hoja y la frecuencia de aparición de caracteres como su peso. Los árboles de Huffman se utilizan para diseñar codificación de prefijo binario, que no solo cumple con las condiciones de la codificación de prefijo, sino que también garantiza que la longitud total de la codificación del mensaje sea la más corta.
Codificación estática de Huffman: escanea los datos a codificar dos veces: la primera vez cuenta la frecuencia de aparición de cada carácter en los datos originales, utiliza el valor de frecuencia obtenido para crear un árbol de Huffman y debe guardar. La información del árbol, es decir, almacena los valores de frecuencia de los caracteres 0-255 (2 ^ 8 = 256) en el orden de la longitud de 2-4BYTES (use la longitud de 4Bytes para almacenar el valor de frecuencia, el valor de frecuencia el rango de representación es 0- -2^32-1, que es suficiente para representar la frecuencia de caracteres en archivos grandes) de modo que se crea el mismo árbol de Huffman para la descompresión y el segundo paso se codifica en función del árbol de Huffman obtenido del primero; scan. y almacene las palabras en clave obtenidas después de la codificación.
Codificación dinámica de Huffman: la codificación dinámica de Huffman utiliza un árbol de Huffman que cambia dinámicamente. La codificación del primer carácter t se obtiene en función de los primeros t caracteres de los datos originales. Después de procesar cada carácter, la codificación y la decodificación utilizan el mismo método para modificar el árbol de Huffman, por lo que no es necesario guardar la información del árbol de Huffman para la decodificación. El tiempo necesario para codificar y decodificar un carácter es proporcional a la longitud de codificación del carácter, por lo que la codificación dinámica de Huffman se puede realizar en tiempo real. [3]
2. Decodificación de Huffman
En la comunicación, si los caracteres se envían en codificación Huffman, después de que la otra parte reciba la codificación, restaurará la codificación a El proceso de carácter se llama decodificación de Huffman. [4]