Professional Documents
Culture Documents
TCI
Curso: Gr-1
Ejemplo:
Cadena de bits:"10000101010111111110"
Diccionario = {'a':0, 'b':10, 'c':111, Fin:110}
1. Cargamos el diccionario: dic = {'a':0, 'b':10, 'c':111, Fin:110}
2. Nos saltamos el primer bit. Entrada: "0000101010111111110"
3. Leemos un bit, y checamos en el diccionario. Bits leídos: "0". Entrada: "000101010111111110"
4. ¿Está ‘bits leídos’ disponible en el diccionario? Sí: 'a':0. Salida: a.
5. Los siguientes tres bits son "000", o tres a. Salida: aaaa. Entrada: "101010111111110"
6. Leemos un bit. Bits leídos: "1". Entrada: "01010111111110". No está en el diccionario.
7. Leemos otro bit. Bits leídos "10". Entrada: "1010111111110". Diccionario: 'b':10.
Salida: aaaab.
8. Los siguientes cuatro bits son "1010", o dos b. Salida: aaaabbb. Entrada: "111111110"
Y de continuar así, es posible ver que los bits que quedan en la entrada "111111110"corresponden a cc
Fin.
Descompresión ejercicio 1
Cadena= “11101001100100000011010011000”
1
5. Consultar y explicar la codificación de Huffman no binaria (códigos ternarios) y adaptiva.
a. La codificación Huffman r-aria:
Ordenamiento y reducción
i. Ordenamiento y reducción
Se reduce la fuente sustituyendo el último conjunto de r símbolos por uno solo símbolo, con
probabilidad igual a la suma de las probabilidades de los símbolos sustituidos.
Codificar la última fuente reducida asignando una palabra código de longitud 1 /r símbolos).
EJEMPLO
Para la fuente S={S1,S2,…,S11} codificar con Huffman utilizando un código cuaternario X={0,1,2,3} .
2
b. Huffman Adaptativo
Una de las técnicas para la generación de huffman adaptativo es la de reconstruir el árbol por cada N
caracteres comprimidos. Esta técnica incrementa la velocidad de compresión (y descompresión) a
costa de un detrimento en el nivel de compresión, puesto que el árbol no se ajusta rápidamente a los
cambios en las frecuencias de los símbolos. Por suerte existe un método basado en las propiedades de
un árbol huffman que permite actualizarlo rápidamente sin que para ello debamos construir el árbol
en forma completa. Un árbol huffman, además de ser un árbol binario completo (cada nodo del árbol
tiene cero o dos hijos) cumple dos propiedades. La primera es sencilla y dice que todo nodo no hoja
tiene por frecuencia la suma de las frecuencias de sus dos hijos. La segunda es la propiedad del sibbling.
Para explicar esta última propiedad debemos numerar los nodos del árbol de la siguiente manera:
comenzamos por el nivel 0 (la raíz) y etiquetamos dicho nodo con el número 0, luego pasamos al
siguiente nivel y etiquemos a los dos nodos de izquierda a derecha con 1 y 2. Así continuamos hasta
completar todos los niveles. Sea #(A) el número asignado (etiquetado) al nodo A, esta segunda
propiedad nos dice que si A y B son dos nodos del árbol y se cumple qué #(A) < #(B) entonces la
frecuencia de A es mayor o igual a la de B.
Ejemplo "abracadabra"
Inicialmente, se supondrá que un árbol de códigos solo está formado por el carácter de control NYA
(No disponible aún). En paralelo, se establecerá una tabla con todos los símbolos que aún no forman
parte del árbol. En este ejemplo, estos son todos los 256 caracteres que pertenecen a un código ASCII
o ANSI.
1. Símbolo: 'a'
El número máximo de nodos (2n-1) es 11 para los 5 símbolos más el carácter de control NYA. Por lo
tanto, el índice comienza con el identificador de nodo 11 utilizado para el nodo raíz inicial. A
continuación, todas las modificaciones dentro de la tabla de códigos están marcadas en rojo, el nodo
actual está subrayado. Para proporcionar una mejor encuesta, el diagrama de flujo que contiene el
procedimiento de actualización está disponible en una ventana separada en el siguiente enlace: [ ].
Sucesor
3
No. Pred. Cont. "0" "1" Peso
No hay ningún nodo de hoja disponible para el símbolo 'a'. Por lo tanto, se deben formar nuevos nodos
para 'a' y el nuevo NYA. Ambos están subordinados al nodo actual:
Sucesor
9. 11 NYA - - 0
10. 11 "a" - - 1
11. Raíz 9 10 0
Sucesor
9. 11 NYA - - 0
10. 11 "a" - - 1
11. Root 9 10 1
2. Símbolo: 'b'
Sucesor
9. 11 NYA - - 0
10. 11 "a" - - 1
11. Root 9 10 1
4
No hay ningún nodo hoja disponible para el símbolo 'b'; se requieren nuevos nodos para 'b' y NYA:
Sucesor
7. 9 NYA - - 0
8. 9 "b" - - 1
9. 11 -78 0
10. 11 "a" - - 1
11. Root 9 10 1
Sucesor
7. 9 NYA - - 0
8. 9 "b" - - 1
9. 11 - 7 8 1
10. 11 "a" - - 1
11. Root 9 10 1
Sucesor
7. 9 NYA - - 0
8. 9 "b" - - 1
9. 11 - 7 8 1
10. 11 "a" - - 1
11. Root 9 10 1
5
El nodo actual ya es el nodo más significativo del bloque. Por lo tanto, su peso puede incrementarse
sin intercambio:
Sucesor
7. 9 NYA - - 0
8. 9 "b" - - 1
9. 11 - 7 8 1
10. 11 "a" - - 1
11. Root 9 10 2
3. Símbolo: 'r'
Sucesor
7. 9 NYA - - 0
8. 9 "b" - - 1
9. 11 - 7 8 1
10. 11 "a" - - 1
11. Root 9 10 2
No hay ningún nodo hoja disponible para el símbolo 'r'; se requieren nuevos nodos para 'r' y NYA:
Sucesor
5. 7 NYA - - 0
6. 7 "r" - - 1
7. 9 -56 0
6
8. 9 "b" - - 1
9. 11 - 7 8 1
10. 11 "a" - - 1
11. Root 9 10 2
Sucesor
5. 7 NYA - - 0
6. 7 "r" - - 1
7. 9 - 5 6 1
8. 9 "b" - - 1
9. 11 - 7 8 1
10. 11 "a" - - 1
11. Root 9 10 2
Sucesor
5. 7 NYA - - 0
6. 7 "r" - - 1
7. 9 - 5 6 1
8. 9 "b" - - 1
9. 11 - 7 8 1
10. 11 "a" - - 1
11. Root 9 10 2
Hay un nodo de orden superior (10) en el bloque actual y no es predecesor del nodo actual. El nodo
actual (9) y el nodo más significativo (10) deben intercambiarse entre sí:
7
Sucesor
5. 7 NYA - - 0
6. 7 "r" - - 1
7. 10 -561
8. 10 "b" - - 1
9. 11 "a" - - 1
10. 11 -78 1
11. Root 9 10 2
Sucesor
5. 7 NYA - - 0
6. 7 "r" - - 1
7. 10 - 5 6 1
8. 10 "b" - - 1
9. 11 "a" - - 1
10. 11 - 7 8 2
11. Root 9 10 2
Sucesor
5. 7 NYA - - 0
6. 7 "r" - - 1
7. 10 - 5 6 1
8. 10 "b" - - 1
8
9. 11 "a" - - 1
10. 11 - 7 8 2
11. Root 9 10 2
El nodo actual ya es el nodo más significativo del bloque. Por lo tanto, su peso puede incrementarse
sin intercambio:
Sucesor
5. 7 NYA - - 0
6. 7 "r" - - 1
7. 10 - 5 6 1
8. 10 "b" - - 1
9. 11 "a" - - 1
10. 11 - 7 8 2
11. Root 9 10 3
4. Símbolo: 'a'
Sucesor
5. 7 NYA - - 0
6. 7 "r" - - 1
7. 10 - 5 6 1
8. 10 "b" - - 1
9. 11 "a" - - 1
10. 11 - 7 8 2
11. Root 9 10 3
9
El nodo actual ya es el nodo más significativo del bloque. Por lo tanto, su peso puede incrementarse
sin intercambio:
Sucesor
5. 7 NYA - - 0
6. 7 "r" - - 1
7. 10 - 5 6 1
8. 10 "b" - - 1
9. 11 "a" - - 2
10. 11 - 7 8 2
11. Root 9 10 3
Sucesor
5. 7 NYA - - 0
6. 7 "r" - - 1
7. 10 - 5 6 1
8. 10 "b" - - 1
9. 11 "a" - - 2
10. 11 - 7 8 2
11. Root 9 10 3
El nodo actual ya es el nodo más significativo del bloque. Por lo tanto, su peso puede incrementarse
sin intercambio:
Sucesor
5. 7 NYA - - 0
10
6. 7 "r" - - 1
7. 10 - 5 6 1
8. 10 "b" - - 1
9. 11 "a" - - 2
10. 11 - 7 8 2
11. Root 9 10 4
0-342
8. 10 - 5 6 4
9. 11 "a" - - 5
10. 11 - 7 8 6
11. Root 9 10 10
Sucesor
1. 3 NYA - - 0
2. 3 "d" - - 1
3. 7 - 1 2 1
4. 7 "c" - - 1
5. 8 "r" - - 2
6. 8 "b" - - 2
7. 10 - 3 4 2
8. 10 - 5 6 4
9. 11 "a" - - 5
10. 11 - 7 8 6
11. Root 9 10 10
11
El nodo actual ya es el nodo más significativo del bloque. Por lo tanto, su peso puede incrementarse
sin intercambio:
Sucesor
1. 3 NYA - - 0
2. 3 "d" - - 1
3. 7 - 1 2 1
4. 7 "c" - - 1
5. 8 "r" - - 2
6. 8 "b" - - 2
7. 10 - 3 4 2
8. 10 - 5 6 4
9. 11 "a" - - 5
10. 11 - 7 8 6
11. Root 9 10 11
Bibliografía
12