Está en la página 1de 22

Cap tulo 2 C odigos Instant aneos.

El algoritmo de Human
2.1. Introducci on

Cuando los s mbolos del mensaje aparecen con frecuencias signicativamente diferentes, se suele usar c odigos de longitud variable con el objetivo de reducir la longitud de los mensajes codicados. Uno de los primeros ejemplos es el c odigo Morse, desarrollado por S. Morse a mediados del siglo XIX. En este caso se tiene en cuenta las frecuencias de las letras del alfabeto ingl es. Las letras se codican en el alfabeto binario {, } como se indica:

A B C D E F

G H I J K

L M N O P

Q R S T U

V W X Y Z

En realidad, el c odigo es ternario, pues es necesario indicar d onde termina 18

CAP ITULO 2. CODIGOS INSTANTANEOS. EL ALGORITMO DE HUFFMAN19 cada palabra y empieza la siguiente (en los c odigos de bloque, este problema no se presenta). Con el espacio como un s mbolo adicional, se pueden separar las letras, con dos las palabras y con tres las frases. Puede representarse este c odigo en forma de arbol de la forma siguiente:

E I S U R F L P A W D N K

T M G O Q

B X C Y Z

La raz on fundamental de usar c odigos de longitud variable es la de explotar las diferencias entre las frecuencias de los s mbolos del mensaje. En el c odigo Morse se tiene en cuenta incluso la diferencia de tiempo de transmisi on entre y -. Por eso se codica E como , ya que la E es m as frecuente que la T, que se codica como -. A continuaci on damos una tabla con las frecuencias de aparici on de las letras del alfabeto ingl es en una p agina de Oliver Twist. A B C D E F 112 17 28 74 168 31 G H I J K 38 85 81 3 19 L M N O P 54 23 98 112 25 Q R S T U 1 90 86 142 33 V W X Y Z 14 42 1 27 0

Denici on 2.1.1. Consideramos una fuente que produce mensajes formados

CAP ITULO 2. CODIGOS INSTANTANEOS. EL ALGORITMO DE HUFFMAN20 con las letras del alfabeto S = {a1 , .., an } y, para cada k = 1, .., n, sea pk la probabilidad de transmitir ak . Si C = {c1 , ..., cn } es el c odigo escogido (ck es la palabra-c odigo que codica la letra ak ), denotemos por Lk la longitud de ck . Se dene la longitud media del c odigo como L(C ) = pk Lk . Naturalmente, los s mbolos del c odigo C pertenecen a un alfabeto A que, por lo general, ser a binario. Interesar a encontrar un c odigo que minimice esta longitud media. Otra cuesti on importante es la de que el c odigo sea de decodicaci on u nica, de lo que nos ocupamos en el siguiente apartado.

2.2.

C odigos Instant aneos

En el c odigo Morse se presenta el problema siguiente: una palabra-c odigo puede ser la parte inicial de otra. Por ejemplo: E = es parte inicial de A = . Si se recibe , el receptor no sabe si E es lo correcto o deber a esperar hasta que lleguen m as s mbolos, antes de decodicar. Se suele decir que el c odigo no es instant aneo. En general, se dir a que un c odigo es instant aneo cuando ninguna palabra-c odigo es parte inicial de otra. Si este es el caso, todas las palabrasc odigos est an en hojas. Un buen ejemplo de c odigo instant aneo es el sistema de n umeros telef onicos. 21715 y 2171529 no pueden ser simult aneamente n umeros de tel efono, pues al marcar el segundo sonar a el primero. Existen c odigos de decodicaci on u nica que no son instant aneos. Ejemplo: mensaje palabra-codigo a1 0 a2 01 a3 011 a4 0111

Este c odigo es de decodicaci on u nica, pues el 0 marca el inicio de cada palabra-c odigo, pero no es instant aneo.

Teorema 2.2.1. (Kraft). Sea S = {a1 , .., an } el alfabeto de cierta fuente de informaci on que se quiere codicar mediante un alfabeto A de q s mbolos.

CAP ITULO 2. CODIGOS INSTANTANEOS. EL ALGORITMO DE HUFFMAN21 1) Si C es un c odigo instant aneo cuyas palabras-c odigo tienen longitudes Lk L1 , .., Ln , entonces q 1. 2) Si se verica la desigualdad q Lk 1, existe un c odigo instant aneo cuyas palabras-c odigo tienen por longitudes los n umeros Li . DEMOSTRACION: 1) Supongamos que C = {c1 , ..., cn } es un tal c odigo instant aneo. Cambiando el orden de los s mbolos del alfabeto S , si fuera necesario, podemos suponer que las longitudes de las palabras-c odigo verican L1 .. Ln = L. q L es el n umero de variaciones con repetici on de los q s mbolos del alfabeto del c odigo, tomadas de L en L. Para cada k n, L LLk excluimos de q las q variaciones que empiezan por la palabra-c odigo asignada al mensaje ak . Cada variaci on excluida s olo se excluye una vez. En efecto, si la exclusi on ocurre dos veces, signica que una palabra-c odigo es parte inicial de otra. Por tanto, el n umero total de variaciones que excluimos es k q LLk y este n umero debe ser menor que el n umero total de variaciones L LLk L q . Esto prueba que k q q . Es decir, k q Lk 1. 2) Supongamos ahora que los n umeros L1 , .., Ln y q verican la desigualdad de Kraft y tratemos de probar que existe un c odigo instant aneo con palabras-c odigo de longitud L1 , .., Ln . Denotemos por j el n umero de las longitudes Li que son iguales a j . Es decir, 1 es el n umero de palabrasc odigo que deben tener longitud 1, 2 el n umero de palabras-c odigo que deben tener longitud 2, etc. Para construir el c odigo deseado, seleccionamos 1 palabras de longitud 1 en el alfabeto A. Podemos escoger, por ejemplo, los 1 primeros s mbolos del alfabeto. Esto es posible si se verica 1 q. A continuaci on, seleccionamos 2 palabras-c odigo de longitud 2, pero no 2 podemos escoger libremente entre las q posibles, puesto que queremos que el c odigo sea instant aneo. Por tanto, debemos escoger 2 palabras de longitud 2 de entre las que quedan al eliminar las que comienzan por alguna de las 1 palabras-c odigo de longitud 1 que hab amos seleccionado en el primer paso. 2 Por tanto, escogemos 2 entre las q 1 q posibles. Esto podremos hacerlo

CAP ITULO 2. CODIGOS INSTANTANEOS. EL ALGORITMO DE HUFFMAN22 si se verica 2 q 2 1 q o, equivalentemente, 1 q + 2 q 2 . Continuando de esta manera, se puede construir el c odigo instant aneo si se verican las desigualdades 1 q 1 q + 2 q 2 1 q 2 + 2 q + 3 q 3 1 q L1 + 2 q L2 + + L q L . N otese que cada desigualdad implica la anterior, por tanto, basta que se tenga la u ltima. Pero esta es precisamente la desigualdad de Kraft escrita de esta otra forma (como en el apartado anterior, L denota la longitud m axima): 1 q 1 + 2 q 2 + + L q L 1.

Ejemplos 2.2.2. 1) Es importante se nalar que un c odigo con la propiedad de que las longitudes de sus palabras-c odigo verican la desigualdad de Kraft no tiene por qu e ser instant aneo. En efecto, consideremos el c odigo binario C = {0, 11, 100, 110}. Es obvio que no es instant aneo (la segunda palabra es parte de la cuarta) y, sin embargo, las longitudes de sus palabras verican la desigualdad de Kraft 1 1 1 1 + 2 + 3 + 3 = 1. 2 2 2 2 2) Sea S = {a1 , .., a6 } el alfabeto fuente Es posible construir un c odigo binario instant aneo de longitudes 2, 2, 3, 4, 4, 5? 6 Como k=1 2Lk = 212 + 212 + 213 + 214 + 214 + 215 = 27/32 < 1, se verica la desigualdad de Kraft, lo que asegura la existencia de un c odigo instant aneo

CAP ITULO 2. CODIGOS INSTANTANEOS. EL ALGORITMO DE HUFFMAN23 binario con tales longitudes. Para construir un tal c odigo, procedemos como sigue: a) Se escoge como primera palabra-c odigo (codicaci on del s mbolo a1 ) 00 y se eliminan todas las cadenas de longitud 5 que comienzan por 00 (8 en total): 00000, 00111, 00110, 00110, 00101, 00100, 00001, 00010. b) Se escoge cualquier cadena de longitud 5 que no haya sido eliminada. Por ejemplo, escogemos 01000. 01 ser a la segunda palabra-c odigo (codicaci on del s mbolo a2 ) y se eliminan todas las cadenas de longitud 5 que comienzan por 01: 01000, 01111, 01110, 01011, 01101, 01001, 01100, 01010. c) Escogemos una cadena de longitud 5 no eliminada, por ejemplo, 10000. La tercera palabra-c odigo ser a 100 y se eliminan todas las de longitud 5 que comienzan por 100: 10000, 10001, 10010, 10011. d) Nuevamente, escogemos una cadena de longitud 5 que no haya sido eliminada: 10100. Eliminamos las que empiezan por 1010, que es la nueva palabrac odigo: 10100, 10101. e) Ahora escogemos la cadena 10110. la nueva palabra-c odigo es 1011 y se eliminan las cadenas de longitud 5 que comienzan por 1011: 10110, 10111. f) Finalmente, se escoge como u ltima palabra-c odigo cualquier cadena de longitud 5 que no haya sido descartada. Por ejemplo, 11000. El c odigo resultante es C = {00, 01, 100, 1010, 1011, 11000}.

CAP ITULO 2. CODIGOS INSTANTANEOS. EL ALGORITMO DE HUFFMAN24

2.3.

C odigos instant aneos optimos

Denici on 2.3.1. Sean S = {a1 , .., an } el alfabeto de cierta fuente de informaci on, pk la probabilidad de transmitir ak y C = {c1 , ..., cn } un c odigo para S . Recordemos que, si denotamos por Lk (k = 1, .., n) las longitudes de las palabras-c odigo, se dene la longitud media del c odigo como L(C ) = pk Lk . Un c odigo instant aneo se dir a que es optimo si no existe otro c odigo instant aneo con una longitud media menor. Vamos a desarrollar el m etodo de Human para la construcci on de c odigos instant aneos optimos. En todo lo que sigue, supondremos que los s mbolos {a1 , .., an } est an ordenados por orden decreciente de sus probabilidades: p(a1 ) p(a2 ) p(an ). Necesitamos el Lema siguiente. Lema 2.3.2. En todo c odigo instant aneo optimo se verica: 1) si p(ai ) > p(aj ), entonces Li Lj ; 2) entre todas las palabras-codigo de longitud m axima existen, al menos, dos que se diferencian s olo en el u ltimo s mbolo. DEMOSTRACION: 1) Supongamos que tenemos un c odigo optimo instant aneo tal que p(ai ) > p(aj ) y Li > Lj . En tal caso, podr amos construir otro c odigo en el que las palabras-c odigo que se asignan a ai y aj sean cj y ci , respectivamente. Es obvio que el nuevo c odigo tambi en es instant aneo. Veamos que tiene una longitud media menor. Para ello, calculamos la diferencia entre las longitudes medias Li p(aj ) + Lj p(ai ) Li p(ai ) Lj p(aj ) = (Li Lj )(p(aj ) p(ai )) < 0. La desigualdad anterior prueba que el c odigo inicial no era optimo. 2) Denotemos por L la longitud m axima de las palabras-c odigo de un c odigo optimo e instant aneo C . Probaremos primero que C debe contener dos palabras-c odigo, al menos, con dicha longitud. Por reducci on al absurdo, supongamos que s olo hay una palabra-c odigo de longitud m axima L. Si

CAP ITULO 2. CODIGOS INSTANTANEOS. EL ALGORITMO DE HUFFMAN25 suprimimos el u ltimo s mbolo de esta palabra, obtendr amos un nuevo c odigo de menor longitud media que sigue siendo instant aneo (en el c odigo original ninguna palabra-c odigo puede ser el inicio de otra). Esto prueba que existe m as de una palabra-c odigo con longitud m axima L. Veamos ahora que no puede ocurrir que el u ltimo s mbolo de todas las palabras-c odigo de longitud m axima sea el mismo. Si as fuera, suprimi endolo en todas ellas, se obtendr a otro c odigo instant aneo de menor longitud media. Por tanto, queda probado, hasta el momento, que el c odigo debe contener dos palabras-c odigo de longitud m axima con el u ltimo bit diferente. Finalmente, probaremos que tienen que ser iguales los primeros L 1 s mbolos. En efecto, si C contiene dos palabras-c odigo de longitud m axima que dieren en el u ltimo s mbolo y en alg un otro s mbolo m as, suprimiendo el u ltimo bit de ambas, se obtiene un c odigo instant aneo de menor longitud, lo que est a en contradicci on con el hecho de ser C optimo.

Nota 2.3.3. Como hemos dicho con anterioridad, suponemos los s mbolos fuente {a1 , .., an } ordenados por orden decreciente de sus probabilidades: p1 p2 pn . Entonces podemos conseguir que las longitudes de las palabras-c odigo resulten en orden creciente de sus longitudes: L1 L2 Ln . En efecto, si se tuviera Li > Lj , siendo i < j , entonces es imposible la desigualdad pi > pj (Lema anterior). Es decir, debe ser pi = pj , en cuyo caso, podemos intercambiar ai y aj y se consigue que el orden decreciente de las probabilidades conlleve el orden creciente de las longitudes Lk de las palabras-c odigo. Vamos a probar que tambi en puede conseguirse que las dos u ltimas palabrasc odigo de un c odigo instant aneo optimo (binario)sean de la forma x0 y x1, siendo x cierta cadena de longitud una unidad menos que la longitud m axima. Por el lema anterior, sabemos que, al menos, hay dos palabras-c odigo de longitud m axima que tienen la forma: x0 y x1. Las dos palabras anteriores,

CAP ITULO 2. CODIGOS INSTANTANEOS. EL ALGORITMO DE HUFFMAN26 x0 y x1, podemos suponer que son las u ltimas ( si fuera necesario, intercambiamos dos palabras de longitud m axima en el c odigo y sigue siendo optimo). M as concretamente, si la u ltima palabra-c odigo, que codica an , tiene la forma x0, necesariamente la palabra x1 pertenece al c odigo (en caso contrario, podemos sustituir x0 por x y resulta un c odigo instant aneo de menor longitud media). Por tanto, tenemos que la u ltima palabra-c odigo de C es x0 y que tambi en x1 pertenece a C . Si esta no es la pen ultima, supongamos que ocupa la posici on i. Podemos codicar ai con cn1 y an1 con ci = x1. Resulta un nuevo c odigo que tiene igual longitud media, pues ci y cn1 tienen longitud m axima. El nuevo c odigo tambi en es optimo y tiene la propiedad deseada. A continuaci on se indica de una forma m as gr aca el aspecto del c odigo C antes y despu es de realizar las operaciones anteriores que tienen por objeto que las dos palabras de longitud m axima x0 y x1 ocupen los u ltimos lugares en el c odigo.

s mbolos probabilidades palabra c odigo Longitudes

ai pi c i = x1 Lmax

an1 pn1 cn1 Lmax

an pn c n = x0 Lmax

ai pi cn1 Lmax

an1 pn1 ci = x1 Lmax

an pn c n = x0 Lmax

En resumen, podemos suponer que nuestro c odigo optimo C tiene la propiedad de que dos palabras de longitud m axima de la forma x0 y x1 est an al nal.

2.4.

Algoritmo de Human

Vamos a estudiar un algoritmo debido a Human para determinar un c odigo optimo. Desarrollaremos s olo el caso binario, pero al nal consideraremos alg un ejemplo no binario. Algoritmo de Human (caso binario).

CAP ITULO 2. CODIGOS INSTANTANEOS. EL ALGORITMO DE HUFFMAN27 (1) Ordenar los s mbolos de S por orden decreciente de sus probabilidades: p(a1 ) p(a2 ) p(an ). (2) Atribuir como u ltimo s mbolo: 0 al mensaje an1 1 al mensaje an (3) Reagrupar los dos u ltimos s mbolos en un nuevo mensaje para formar un nuevo conjunto S = {a1 , a2 , .., an1 an }, con probabilidades P = {p1 , .., pn2 , pn1 + pn }. (4) Asignar: SS nn1 P P si n > 1, entonces ir a (1). En caso contrario, detener el algoritmo, ya tenemos codicados todos los mensajes. El Teorema siguiente contiene la prueba de que el algoritmo de Human funciona correctamente.

Teorema 2.4.1. Si C es un c odigo optimo para (S , P ), sea C el c odigo para (S, P ) formado por las primeras n 2 palabras de C m as las palabras cn1 0 y cn1 1. Entonces el c odigo C es optimo. A la vista del Teorema precedente se ocurre realizar sucesivos agrupamientos de los dos s mbolos con menor probabilidad hasta obtener un conjunto con s olo dos elementos. Un c odigo optimo para este ser a {0, 1} y para el pen ultimo conjunto (de tres elementos), seg un el Teorema, {0, 10, 11}. Retrocediendo de esta forma llegar amos a obtener un c odigo optimo para S . El sencillo ejemplo siguiente nos ayudar a a comprender mejor todo el proceso.

CAP ITULO 2. CODIGOS INSTANTANEOS. EL ALGORITMO DE HUFFMAN28

Ejemplo 2.4.2. Sean S = {a1 , a2 , a3 , a4 } el alfabeto fuente y P = {0.4, 0.3, 0.2, 0.1} la distribuci on de probabilidades. Los sucesivos agrupamientos de s mbolos produce el siguiente resultado S = {a1 , a2 , a34 }, P = {0.4, 0.3, 0.3} S = {a1 , a2(34) } , P = {0.4, 0.6}. Por aplicaci on del Teorema, los c odigos optimos para S , S y S ser an C = {0, 1}, C = {0, 10, 11}

C = {0, 10, 110, 111}. Los ejemplos siguientes muestran una forma rutinaria de desarrollar el algoritmo de Human.

Ejemplos 2.4.3. a) Aplicar el m etodo de Human para obtener un c odigo instant aneo optimo para una fuente con alfabeto S = {a1 , .., a6 } y con la distribuci on de probabilidades siguiente: p(a1 ) = 0.3, p(a2 ) = 0.25, p(a3 ) = 0.2, p(a4 ) = p(a5 ) = 0.1, p(a6 ) = 0.05.

CAP ITULO 2. CODIGOS INSTANTANEOS. EL ALGORITMO DE HUFFMAN29

ai p(a i )

a 0.3

a2 0.25

a3 0.2

a4 0.1

a6 0.05 1 0 0.15

0.1 0

1 0.55 1

1 0 0.45

0.25

Por tanto, el c odigo optimo resultante es C = {00, 01, 11, 101, 1000, 1001}. b) Obtener un c odigo optimo para el conjunto de s mbolos {a1 , .., a7 } y la funci on de probabilidad P = {0.25, 0.15, 0.15, 0.15, 0.1, 0.1, 0.1}.

ai

a2 0.15 0

a3 0.15 1 0.3

a4

a6 0.1 0 1 0.45 1

a7 0.1 1 0.2

P(ai ) 0.25

0.15 0.1 0 1 0.25 0

0 0.55 0

CAP ITULO 2. CODIGOS INSTANTANEOS. EL ALGORITMO DE HUFFMAN30 Por tanto, el c odigo optimo resultante tiene la forma C = {01, 000, 001, 100, 101, 111, 110}. Vemos que todo c odigo de Human puede describirse por medio de un arbol binario como el que se muestra a continuaci on.
0 1 b 0 1 a 0 c 0 d 1 e 1

Los cuadrados denotan nodos externos u hojas y los c rculos nodos interiores. Los primeros se corresponden con los s mbolos del alfabeto fuente. La palabra-c odigo para cada s mbolo se obtiene recorriendo el arbol desde la ra z hasta la hoja correspondiente y convenimos que 0 corresponde a la rama izquierda y 1 a la derecha. Si el tama no del alfabeto es n, el n umero total de nodos es 2n 1. Veamos ahora la prueba del Teorema anterior. DEMOSTRACION: Tenemos que C = {c1 , .., cn1 } y C = {c1 , .., cn2 , cn1 0, cn1 1}. Veamos qu e relaci on existe entre las longitudes media de ambos:
n2

L(C ) =
k=1

pk Lk + (Ln1 + 1)pn1 + (Ln1 + 1)pn =

CAP ITULO 2. CODIGOS INSTANTANEOS. EL ALGORITMO DE HUFFMAN31


n1

=
k=1

pk Lk + pn1 + pn = L(C ) + pn1 + pn .

Se ha obtenido, pues, la relaci on L(C ) = L(C ) + pn1 + pn . Consideremos ahora un c odigo optimo arbitrario C para (S, P ). Por el lema anterior, al menos, hay dos palabras-c odigo de longitud m axima que tienen la forma: x0 y x1, siendo x cierta cadena de longitud igual a la m axima menos una unidad. Desde luego, podemos suponer que las palabras-c odigo de longitud m axima est an al nal (recu erdese la nota anterior). A partir de C , vamos a determinar un c odigo instant aneo C para (S , P ), sustituyendo estas dos u ltimas palabras por la cadena x. Esta palabra no puede estar en C y, por tanto, C es un c odigo instant aneo para (S , P ). Vamos a ver qu e relaci on existe entre las longitudes media de C y C :
n2

L(C ) =
k=1

pk L k + (Lmax 1)pn1 + (Lmax 1)pn =

= L(C ) (pn1 + pn ). Vemos, pues, que L(C ) = L(C ) + pn1 + pn . Ahora usamos el hecho de que C es optimo para (S , P ) y obtenemos la desigualdad L(C ) L(C ) = L(C ) pn1 pn , de donde se sigue que L(C ) L(C ) + pn1 + pn . Es decir, la cantidad L(C ) + pn1 + pn es una cota inferior para las longitudes media de los c odigos optimos para (S, P ). Como C es instant aneo y su longitud media es igual a dicha cota, se deduce que C es optimo. Finalizamos esta secci on desarrollando un ejemplo que muestre c omo funciona el algoritmo de Human en el caso no binario.

CAP ITULO 2. CODIGOS INSTANTANEOS. EL ALGORITMO DE HUFFMAN32

Ejemplo 2.4.4. Construir un c odigo optimo con el alfabeto A = {0, 1, 2} para la misma fuente del ejemplo anterior. En general, para un alfabeto de q s mbolos, el algoritmo en cada paso determina el n umero natural s que verica las siguientes condiciones 2sq y s n mod(q 1).

Calculado el valor de s, se atribuyen los s primeros s mbolos del alfabeto como u ltimos s mbolos de las palabras-c odigo que codican los u ltimos s mensajes.

ai

a2

a3 0.15

a4

a 6 a7 0.1 0.1 1 2 0.3

P(ai ) 0.25 0.15 0 2


El c odigo optimo obtenido es

0.15 0.1 0

2 1 0.45 0

C = {2, 00, 01, 02, 10, 11, 12}

2.5.

C odigos de Human con varianza m nima

Considerando un ejemplo concreto, vamos a ver c omo es posible obtener c odigos de Human diferentes aplicando convenientemente el algoritmo ante-

CAP ITULO 2. CODIGOS INSTANTANEOS. EL ALGORITMO DE HUFFMAN33 rior. Consideramos la fuente {a1 , a2 , a3 , a4 , a5 } con las probabilidades dadas por 0.2, 0.4, 0.2, 0.1, 0.1. Procediendo de la manera habitual, obtenemos:
a p
i i

a1 0.2

0.4

a 3 0.2 0

a 0

a5 0.1 1 0.2

0.1 1 0.4 0

0.6

Por tanto, el c odigo resultante es: C1 = {01, 1, 000, 0010, 0011}. La longitud media de este c odigo es L(C1 ) = 2 0.2 + 1 0.4 + 3 0.2 + 4 0.1 + 4 0.1 = 2.2. Pero ahora vamos a proceder de esta otra forma. En cada paso, siempre que sea posible, no escogemos el mensaje obtenido por reunicaci on de los dos mensajes con menor probabilidad del paso anterior. En nuestro ejemplo, el primer paso conduce a la siguiente situaci on

ai pi

a1 0.2

a2 0.4

a4 0.1 0

a5 0.1 1 0.2

0.2

Vemos que hay 3 mensajes con probabilidad 0.2. Descartamos el reunicado y escogemos a1 y a3 para desarrollar el siguiente paso, resultando

CAP ITULO 2. CODIGOS INSTANTANEOS. EL ALGORITMO DE HUFFMAN34

ai pi

a1 0.2 0

a2 0.4 0.4

a4 0.1 0

a5 0.1 1 0.2

0.2 1

De nuevo podemos evitar escoger el mensaje reunicado que se acaba de formar y resulta

ai p
i

a1 0.2 0

a2 0.4 0.4 0

a4 0.1 0

a5 0.1 1 0.2 1

0.2 1

0.6
Finalmente, obtenemos

ai p
i

a1 0.2 0

a2 0.4 0.4 0

a4 0.1 0

a5 0.1 1 0.2 1

0.2 1

0.6 1 0

El c odigo de Human que resulta en este caso es el siguiente:

CAP ITULO 2. CODIGOS INSTANTANEOS. EL ALGORITMO DE HUFFMAN35

C2 = {10, 00, 11, 010, 011}, siendo su longitud media L(C2 ) = 2 0.2 + 2 0.4 + 2 0.2 + 3 0.1 + 3 0.1 = 2.2. Ambos c odigos tienen la misma longitud media, sin embargo, la varianza de las longitudes de las palabras-c odigo es signicativamente diferente. En efecto, la varianza de las longitudes para el primer c odigo es igual a 1.304 y para el segundo 0.160. En algunas situaciones pr acticas son preferibles los c odigos de Human con varianza m nima.

2.6.

El c odigo de Human modicado

Cuando el alfabeto fuente es muy grande, algunas palabras del c odigo de Human pueden alcanzar una longitud demasiado grande. Una forma de corregir este inconveniente consiste en determinar el c odigo de Human para cierto subconjunto del alfabeto fuente El m etodo que acabamos de describir se utiliza en la transmisi on de documentos por fax. Para minimizar el tiempo de transmisi on, el documento es escaneado y convertido en una imagen binaria; es decir, los pixels toman s olo dos valores: negro o blanco. Por tanto, estos valores pueden representarse con un bit por pixel. El grupo 3 de ITU-T (International Telecommunications Union) ofrece dos formas diferentes de proceder: MH y MMR. Vamos a describir la primera de ellas. El c odigo MH (Modied Human). El escaneado del documento produce una imagen binaria a la que se aplica el sistema RLC l nea a l nea (cada l nea consta de 1728 pixels). Seguidamente, se codican las frecuencias con un c odigo de Human. Como se trata de documentos que, por lo general, tienen fondo blanco, es razonable suponer que los runs blancos de longitud grande y los runs negros de longitud peque na son los m as frecuentes.

CAP ITULO 2. CODIGOS INSTANTANEOS. EL ALGORITMO DE HUFFMAN36 Dada la gran variedad de longitudes que pueden presentar los runs, el uso de un c odigo de Human producir a palabras-c odigo de gran longitud (para los runs con probabilidades muy peque nas. Por ello, se busca un c odigo de Human para las longitudes m as frecuentes y las restantes longitudes se codican como indicamos m as adelante. Se usa el mismo c odigo para todas las im agenes y cada la codicada se termina con un car acter que consiste en 11 ceros seguidos por un 1. No hay ninguna combinaci on de palabras-c odigo que contenga m as de 7 ceros consecutivos, por tanto, cuando el decodicador encuentra 8 ceros se da cuenta de que se trata del n de l nea. En la tabla siguiente se muestran las palabras-c odigo de algunos runs blancos y negros de longitud peque na o grande. Se considera que cada l nea comienza con un run blanco, por ello, se hace necesario incluir los runs de longitud cero y, cuando la l nea no comienza por blanco, su compresi on comienza con un run blanco de longitud 0. Longitd run 0 1 2 3 4 5 6 7 60 61 62 63 blanco 00110101 000111 0111 1000 1011 1100 1110 1111 01001011 00110010 001110011 00110100 negro 0000110111 010 11 10 011 0011 0010 00011 000000101100 000001011010 000001100110 000001100111

Recibe el nombre de Modied Human porque el c odigo de Human se elabora s olo para los run de longitud menor o igual que 63. Para codicar un run de longitud L superior a 63 se procede a realizar la divisi on entera de L por 64: L = 64M + N .

CAP ITULO 2. CODIGOS INSTANTANEOS. EL ALGORITMO DE HUFFMAN37 La palabra-c odigo para el run en cuesti on se obtiene anteponiendo un prejo (makeup code) a la palabra c odigo que corresponde a un run de longitud N . La tabla siguiente muestra los prejos que corresponden a valores de M menores o iguales que 5: M 1 2 3 4 5 blanco 111011 10010 010111 0110111 00110110 negro 000000111 00011001000 000011001001 000001011011 000000110011

2.7.

C odigos de Human con MATLAB

Supongamos que se desea codicar un mensaje (de cualquier longitud) en el que aparecen los s mbolos 1, 2,...,n, usando un c odigo instant aneo optimo (binario). Denotemos por p la matriz la con las frecuencias relativas con que aparecen los s mbolos. Matlab permite determinar el diccionario conteniendo las palabras-c odigo que corresponden a cada s mbolo del modo siguiente: >> symbols = [1, 2, 3, ...., n]; >> p = [p1 , p2 , p3 , ..., pn ]; >> dict = huf f mandict(symbols, p); Si tecleamos dict{j, :} obtenemos la palabra que usaremos para codicar el s mbolo j. Por ejemplo, si los s mbolos del mensaje fuente son 1, 2, 3, 4 y las frecuencias est an dadas por la matriz p = [0.1, 0.1, 0.3, 0.5], el programa anterior determina el diccionario siguiente: 1 = 111 2 = 110 3 = 10 4 = 0. Para obtener el c odigo C = {111, 110, 10, 0}, debemos teclear dict{:, 2}. Una vez encontrado el diccionario, veamos c omo se codica un mensaje. Si

CAP ITULO 2. CODIGOS INSTANTANEOS. EL ALGORITMO DE HUFFMAN38 mens denota el mensaje, se codica usando la funci on humanenco: >> mens = [2234431124]; >> codmens = huf f manenco(mens, dict); ans 1101101000101111111100 Para decodicar un mensaje se usa la funci on humandeco: >> huf f mandeco(codmens, dict) ans 2234431124

2.8.

Ejercicios

1. Determinar cu ales de los siguientes c odigos son de decodicaci on u nica: a) C = {0, 10, 11}, b) C = {0, 01, 11}, c) C = {0, 01, 10} y d) C = {110, 11, 100, 00, 10}. 2. Encontrar el c odigo binario de Human para los s mbolos fuente {a1 , a2 , a3 , a4 , a5 } con probabilidades: 1/3, 1/5, 1/5, 2/15, 2/15. Deducir razonadamente que el c odigo obtenido tambi en es optimo para la distribuci on de probabilidades: 1/5, 1/5, 1/5, 1/5, 1/5. 3. Probar que no existe ninguna codicaci on binaria instant anea de los enteros {0, 1, ...., 9} con las longitudes 2,3,3,3,3,4,4,4,4,5. 4. Se considera la fuente {a1 , .., a5 } con probabilidades: 0.4, 0.3, 0.1, 0.1, 0.1. Enontrar un c odigo optimo con alfabeto ternario.

CAP ITULO 2. CODIGOS INSTANTANEOS. EL ALGORITMO DE HUFFMAN39 5. Encontrar un c odigo binario de Human para una fuente S = {a1 , .., a6 } con probabilidades: 1/21, 2/21, 3/21, 4/21, 5/21, 6/21. 6. Consideremos la fuente {a1 , a2 , a3 , a4 , a5 } con probabilidades 0.15, 0.04, 0.26, 0.05, 0.50. a) Encontrar un c odigo de Human. b) Determinar la longitud media del c odigo obtenido.

2.9.

Pr acticas de Programaci on

1. Dados el alfabeto fuente S y la funci on de probabilidad P , elaborar un programa de Matlab para determinar un c odigo binario de Human y codicar y decodicar un mensaje fuente de longitud arbitraria. 2. Dados el alfabeto fuente S = {a1 , .., an } y las longitudes L1 , .., Ln , elaborar un programa de Matlab para determinar un c odigo (binario) instant aneo cuyas palabras-c odigo tengan dichas longitudes. El programa deber a empezar determinando si las longitudes dadas verican la desigualdad de Kraft. 3. Elaborar un programa de Matlab para codicar y decodicar por el procedimiento de Human modicado la imagen binaria escaneada de una p agina de un documento cualquiera.

También podría gustarte