Está en la página 1de 54

Capítulo 1

MEDIDA DE LA INFORMACIÓN DE
SHANNON

1.1 Medida de Hartley

En 1948, Claude E. Shannon, entonces en los Laboratorios Bell Telephone, publicó uno de los trabajos más
extraordinarios en la historia de la ingeniería. Este trabajo (“Una Teoría Matemática de la Comunicación”, Bell
System Tech. Journal, Vol. 27, Julio y Octubre 1948, pp. 379423 y pp. 623656) echó las bases de una disciplina
científica completamente nueva, “la teoría de la información”, que le permitió a ingenieros por primera vez
trabajar cuantitativamente con el evasivo concepto de “información”.
Quizás el único precedente del trabajo de Shannon en la literatura es un trabajo en 1928 por R. V. L. Hartley
(“Transmisión de Información”, Bell Syst. Tech. J., Vol. 3, Julio 1929, pp. 535564). Hartley reconoció muy
claramente ciertos aspectos esenciales de la información. Quizás lo más importante, reconoció que la recepción
de un símbolo proporciona información solamente si ha habido otras posibilidades para su valor además del
que se recibió. Para decir lo mismo en terminología más moderna, un símbolo puede dar información sólo si es
el valor de una variable aleatoria. Esto era una idea radial, que los ingenieros de comunicaciones captaron muy
lentamente. Los sistemas de comunicaciones deben construirse para transmitir cantidades aleatorias, no para
reproducir señales sinusoidales.
Hartley continuó y propuso una medida cuantitativa de la información basada en el siguiente razonamiento.
Considérese un solo símbolo con D valores posibles. La información transferida por n de esos símbolos debe se n
veces mayor que la transferida por un símbolo, sin embargo, hay Dn valores posibles de los n símbolos. Este
sugiere que log  Dn   n log D es la medida apropiada de la información, donde “la base seleccionada (para el
logaritmo) fija el tamaño de la unidad de información”, para usar las propias palabras de Hartley.
Por tanto, podemos expresar la medida de Hartley de la cantidad de información suministrada por la
observación de una variable aleatoria discreta X com
I  X   log b L (1.1)

donde
L = número de valores posibles de X
Cuando b = 2 en (1.1), la unidad de información de Hartley la llamaremos “bit”, aunque la palabra “bit” no se
usó sino hasta el trabajo de Shannon en 1948. Por tanto, cuando L  2n , tenemos I  X   n bits de información –
un solo dígito binario siempre da exactamente un bit de información según la medida de Hartley.
La medida sencilla de Hartley proporciona la “respuesta correcta” a muchos problemas técnicos. Si hay ocho
teléfonos en algún pueblo, podríamos darle a cada uno un número telefónico diferente de tres dígitos binarios,
ya que 000, 001, 010, 011, 100, 101, 110 y 111 son los 8  2 3 números posibles; por tanto, solicitar un número
2

telefónico X en ese pueblo requiere darle al operador 3 bits de información. En la misma forma, necesitamos
usar 16 dígitos binarios para ubicar una locación de memoria particular en una memoria con 216  65536
posiciones de memoria; por tanto, la dirección da 16 bits de información.
Quizás éste es el lugar para eliminar la noción de que un bit es una pequeña cantidad de información (aunque la
ecuación de Hartley (1.1) no admite cantidades diferentes de cero más pequeñas). En el mundo actual viven
aproximadamente 6  109  232.5 personas; por tanto, bastan ¡solamente 32.5 bits de información para identificar
cualquier persona en la superficie de la tierra!
Para ver que algo está “errado” en la medida de la información de Hartley, consideremos el experimento
aleatorio donde X es el símbolo inscrito en una bola sacada “aleatoriamente” de un sombrero que contiene
algunas bolas inscritas con 0 y otras bolas inscritas con 1. Como L = 2, Hartley diría que la observación de X da 1
bit de información ya sea que el sombrero fue el mostrado en la Fig. 1.1a o el mostrado en la Fig. 1.1b. Pero,
como para el sombrero de la Fig. 1.1b estamos bastante seguros por adelantado que X = 0 ocurrirá, parece
intuitivamente claro que obtenemos menos información al observar esta X que la que obtendríamos si X
proviniese del sombrero de la Fig. 1.1a. La debilidad de la medida de información de Hartley es que ignora las
probabilidades de los diferentes valores de X.

Figura 1.1. Dos experimentos aleatorios que dan 1 bit de información por la medida de Hartley.

El trabajo pionero de Hartley parece haber tenido muy poco impacto. Harley es más recordado por su oscilador
electrónico que por su medida de información. El único rastro de esta última contribución está en el hecho de
que los teóricos de la información se han puesto de acuerdo en llamar “el Hartley” la unidad de información de
Shannon cuando se usa la base 10 para el logaritmo. Éste es un honor cuestionable ya que es probable que nadie
use esta base y, además, es inapropiado porque Harley reconoció claramente la arbitrariedad involucrada en la
selección de la base usada con las medidas de información.

1.2 Medida de Shannon

La publicación en 1948 del trabajo de Shannon, veinte años después del trabajo de Hartley, el cual propuso una
nueva medida de información, provocó un estallido de actividad en la aplicación de los conceptos de Shannon
que todavía continúa. Shannon había encontrado evidentemente algo que Hartley no vio y que era esencial para
la aplicación general de la teoría.
En vez de confirmar la medida de Shannon desde el comienzo, veamos cómo Hartley, con sólo un pequeño
esfuerzo adicional, podría haber establecido la misma medida. Refiriéndonos de nuevo al sombrero de Hartley
de la Fig. 1.1b, vemos que hay solamente una oportunidad en cuatro de seleccionar la bola marcada “1”.
Entonces, el escoger esta bola es, en un sentido, equivalente a seleccionar una de 4 posibilidades y por tanto, por
la medida de Hartley proporcionar
log 2 (4)  2 bits
3

de información. Pero hay tres de cuatro oportunidades para seleccionar una bola marcada “0”. Por tanto, la
escogencia de tal bola es en un sentido equivalente a seleccionar una de solamente 43 posibilidades (¡lo que sea
que 4 posibilidades podría significar!) y entonces, una vez más, la medida de Hartley proporciona solamente
3
4
log 2    0.415 bits
3
de información. Pero ¿cómo reconciliamos estos dos números tan diferentes? Parece obvio que debemos
ponderarlos por sus probabilidades de ocurrencia para obtener
1 3
2   0.415   0.811 bits
4 4
que también podríamos escribir como
1 1 3 3
 log 2 ( )  log 2    0.811 bits
4 4 4 4
de información como la cantidad proporcionada por X. En general, si el i-ésimo valor posible de X tiene
probabilidad pi, entonces la información de Hartley log  1 pi    log pi para este valor debe ser ponderado por pi
para dar
L
  p log p
i 1
i i (1.2)

como la cantidad de información suministrada por X. Ésta es precisamente la medida de Shannon, que podemos
en cierto sentido considerar como la “información de Hartley promedio”.
Hay un pequeño problema sobre qué hacer cuando pi = 0 para una o más selecciones de i. Desde un punto de
vista práctico, concluiríamos que, como los valores correspondientes de X nunca ocurren, ellos no deben
contribuir a la información dada por X. Por tanto, estaríamos ganados a omitir esos términos de la suma en (1.2).
Alternativamente, podríamos usar el hecho de que
lím p log b p  0 (1.3)
p  0

como una justificación matemática para ignorar términos con pi = 0 en (1.2). En cualquier caso, ahora hemos
llegado al punto donde podemos establecer formalmente la medida de información de Shannon. Primero es
conveniente introducir alguna terminología y notación. Si f es cualquier función de valores reales, entonces el
soporte de f se define como el subconjunto de su dominio donde f toma valores diferentes de cero y se denota
sop  f  . Por tanto, si PX es la distribución de probabilidades para la variable aleatoria discreta X, entonces
sop  PX  es precisamente el subconjunto de valores posibles de X que tienen probabilidad diferente de cero.

Definición 1.1: La incertidumbre (o entropía) de una variable aleatoria discreta X es la cantidad

H X    
x  sop PX 
PX ( x)log b PX  x  (1.4)

La selección de la base b (que por supuesto debe mantenerse constante en un problema dado) determina la
unidad de información. Cuando b = 2, la unidad se denomina el bit (una palabra sugerida a Shannon por J.W.
Tukey como la contracción de “binary digit” – Tukey es más conocido por su trabajo con la transformada rápida
de Fourier.) Cuando b = e, la única otra base usada comúnmente en la actualidad en la teoría de la información,
la unidad se llama el nat. Como log 2  e   1.443 , se deduce que un nat de información es igual a
aproximadamente 1.443 bits de información.
4

En nuestra definición de la medida de Shannon, no hemos usado la palabra “información”. De hecho, debemos
tener cuidado en no confundir “información” con “incertidumbre”. Para Shannon, información es lo que recibimos
cuando se reduce la incertidumbre. La razón de que la información que recibimos al observar el valor de X es igual
a H(X) es que H(X) es nuestra incertidumbre a priori acerca del valor de X, en tanto que nuestra incertidumbre a
posteriori es cero. Shannon es implacablemente consistente al definir información en todos los contextos como la
diferencia entre incertidumbres. Además del nombre físicamente sugerente de “incertidumbre” para H(X),
Shannon también usó el nombre “entropía” porque en termodinámica estadística la fórmula para la entropía la
de (1.4). Shannon también tomo prestado el símbolo H de la termodinámica – pero no se haría ningún daño si
también pensamos en H como un honor tardío para Harley.
No debe ser una sorpresa, a la luz de nuestro análisis de la medida de Hartley, que H(X) pueda expresarse como
un promedio o valor esperado, a saber

H  X   E  log PX  X  (1.5)

siempre y cuando adoptemos la convención (como hacemos aquí y de aquí en adelante) de que valores posibles con
probabilidad cero se ignoran al tomar la expectativa de una función de valores reales de una variable aleatoria discreta, esto
es, definimos E F  X  como

E F  X    
xsopPX 
PX  x  F  x  (1.6)

Debido a que no hay una distinción matemática entre variables aleatorias discretas y vectores aleatorios
discretos (de hecho, podríamos tener X  Y , Z ), se deduce que (1.4) o (1.5) también define la incertidumbre de
vectores aleatorios. La tradición común es denotar la incertidumbre de Y , Z como H YZ , pero la notación
H Y , Z también se usa. Siempre usaremos la primera notación, de modo que, por ejemplo,

H  XY   E   log PXY  X , Y  (1.7)


la cual significa
H  XY   
 x , y sopPXY 
PXY  x, y  log PXY  x, y  (1.8)

Ejemplo 1.1: Supongamos que X tiene solamente dos valores posibles x1 y x2 y que PX  x1   p tal que
PX  x2   1  p . Entonces, la incertidumbre de X en bits, siempre y cuando 0 < p < 1, es

H  X   p log 2 p   1  p  log 2  1  p 

Como la expresión en la derecha ocurre con mucha frecuencia en la teoría de información, le damos su nombre
propio (la función de entropía binaria) y su propio símbolo (h(p)). La gráfica de h(p) se da en la Fig. 1.2 junto con
una tabla de números útiles.
5

Figura 1.2 La Función Entropía Binaria.

Tabla 1.1 Valores de la función entropía binaria h(p).

1.3 Algunas Desigualdades Fundamentales y una Identidad

La siguiente desigualdad es a menudo de tanta utilidad en la teoría de información que la llamaremos la


“Desigualdad de la Teoría de Información (TI)”:

Desigualdad TI: Para un número real y positivo r,


log r   r  1 log e (1.9)

con igualdad si y sólo si r = 1.


6

Demostración: En la Fig. 1.3 se muestran las gráficas de ln r y de r  1. Pero

d  1   1 para r  1
ln r   
dr r   1 para r  1

por lo que las gráficas nunca se cruzan. Por tanto, ln r  r  1 , con igualdad si y sólo si r = 1. Multiplicando
ambos lados de esta desigualdad por log e y observando que log r   ln r   log e  , se obtiene entonces la Ec.
(1.9).

Figura 1.3 Las gráficas usadas para de mostrar la desigualdad TI.

Ahora estamos listos para demostrar nuestro primer resultado importante que muestra que la medida de la
información de Shannon coincide con la medida de Hartley cuando y sólo cuando los valores posibles de X son
todos igualmente probables. También muestra que la incertidumbre de X es más grande cuando sus valores son
igualmente probables y es mínima cuando uno de sus valores tiene probabilidad 1.

Teorema 1.1: Si la variable aleatoria discreta X tiene L valores posibles, entonces


0  H  X   log L (1.10)

con igualdad en la izquierda si y sólo si PX ( x)  1 para alguna x, y con igualdad en la derecha si y sólo si
PX ( x)  1 L para toda x.

Demostración: Para demostrar la desigualdad por la izquierda en (1.10), observamos que si x  sop  PX  , es
decir, si PX ( x)  0 , entonces

  0 si PX ( x)  1
PX ( x)log PX ( x) 
  0 si 0  PX ( x)  1

Por tanto, de inmediato vemos en (1.4) que H(X) = 0 si y sólo si PX ( x ) es igual a 1 para toda x en sop  PX  , pero
por supuesto no puede haber una sola de esas x.
Para demostrar la desigualdad en el lado derecho de (1.10), usamos un “truco” común en teoría de información,
a saber, primero escribimos la cantidad que esperamos demostrar que es menor que o igual a cero, entonces la
manipulamos y la convertimos en una forma donde podamos aplicar la desigualdad TI.
Por tanto, comenzamos con
7

H  X   log L   
   X
P  x  log P  x   log L

 x  sop P 
  P  x   log P  x   log L 
xsop PX 


1
 P  x  log
LP  x 
xsop PX 

 
xsop PX 
 1
P x 


 1 log e
LP  x  
(Desigualdad TI )

 
 1 
  P  x  log e
L
 xsop PX  xsop PX  
  1  1 log e  0

donde la igualdad se cumple en el punto donde usamos la desigualdad TI si y sólo si LP  x   1 para toda x en
sop P  x  , lo que a su vez es cierto si y sólo si LP  x   1 para todos los L valores de X.

En la demostración anterior, hemos comenzado a omitir subíndices de las distribuciones de probabilidades, pero
solamente cuando el subíndice es la versión en mayúsculas del argumento. Por tanto, con frecuencia simplemente
escribiremos P(x) o P(x, y) por PX ( x) o PXY ( x, y) , respectivamente, pero nunca escribiríamos P  x1  por PX  x1  .
Esta convención simplificará mucho nuestra notación sin ninguna pérdida de precisión, siempre y cuando no
nos descuidemos con ella.
Con frecuencia estaremos muy interesados en la conducta de una variable aleatoria cuando se especifica otra
variable aleatoria. La siguiente definición es la generalización natural de la incertidumbre a esta situación.

Definición 1.2: La incertidumbre condicional (o entropía condicional) de la variable aleatoria discreta X, dado que
ocurre el evento Y = y, es la cantidad

H X Y  y    
xsop PX Y  y 
P  x y  log P  x y  (1.11)

Se observa que (1.11) también puede escribirse como una esperanza condicional, a saber,

H  X Y  y   E  log PX Y  X Y  y  (1.12)
 

Para ver esto, recuerde que la esperanza condicional, dado Y = y de una función de valores reales F  X , Y  de
las variables aleatorias discretas X y Y se define como

E F  X , Y  Y  y    
xsop PY 
PX Y  x y  F  x , y  (1.13)

Observe además que (1.6), (1.13) y el hecho de que PXY  x, y   PX Y  x y  y implican que la esperanza
Y
incondicional de F(X, Y) puede calcularse como

E  F  X , Y    
xsop PY 
PY  y  E F  X , Y  Y  y  (1.14)

Pronto tendremos uso para la Ec. (1.14).


8

Debido a la semejanza matemática entre las definiciones (1.4) y (1.11) de H(X) y H  X Y  y  , respectivamente,
de inmediato podemos deducir el resultado siguiente:

Corolario 1 al Teorema 1.1: Si la variable aleatoria discreta X tiene L valores posibles, entonces

0  H  X Y  y   log L (1.15)

 
con igualdad en la izquierda si y sólo si P x y  1 para alguna x, y con igualdad en la derecha si y sólo si

P  x y   L para toda x. (Observe que y es un valor fijo de Y en este corolario.)

Cuando hablamos acerca de la “incertidumbre de X dado Y”, se entiende la incertidumbre condicional de X


dado el evento Y = y, promediado sobre los valores posibles y de Y.

Definición 1.3: La incertidumbre condicional (o entropía condicional) de la variable aleatoria discreta X dada la variable
aleatoria discreta Y es la cantidad

H X Y    
xsop PY 
PY  y  H  X Y  y  (1.16)

El corolario siguiente es una consecuencia directa de (1.16):

Corolario 2 al Teorema 1.1: Si la variable aleatoria discreta X tiene L valores posibles, entonces

0  H  X Y   log L (1.17)

 
con igualdad en la izquierda si y sólo si para toda y en sop  PY  , PX Y x y  1 para alguna x (esto es, cuando

 
Y esencialmente determina X), y con igualdad en la derecha si y sólo si, para toda y en sop  PY  , PX Y x y  1 L
para toda x.

Ahora notamos, al comparar (1.12) y (1.16) con (1.14), que podemos escribir

H  X Y   E   log PX Y  X Y  (1.18)
 
lo que significa que

H X Y    
xsop PXY 
PXY  x , y  log PX Y  x y  (1.19)

Para propósitos teóricos, se encontrará que (1.18) es de mucha utilidad. Sin embargo, (1.11) y (1.16) con
frecuencia proporciona la forma más conveniente para calcular H  X Y  .

Ahora introducimos la última de las definiciones de incertidumbre para variables aleatorias discretas, la cual es
completamente análoga a (1.12).
9

Definición 1.4: La incertidumbre condicional (o entropía condicional) de la variable aleatoria discreta X dada la
variable aleatoria discreta Y y dado que el evento Z =z ocurre, es la cantidad

H  X Y , Z  z   E  log PX YZ  X YZ  Z  z  (1.20)

En forma equivalente, podemos escribir

H X Y , Z  z     PXY Z  x, y z  log PXY Z  x, y z  (1.21)


 x , y sop PXY z  z 
Se deduce además, a partir de (1.14), (1.20) y (1.18), que

H X Y , Z  
zsop PZ 
PZ  z  H  X Y , Z  z  (1.22)

donde una vez más, al invocar (1.18), hemos confiado en el hecho de que no hay una diferencia esencial en la
teoría de probabilidades discretas entre una sola variable aleatoria Y y un vector aleatorio (Y, Z). La Ec. (1.22),
junto con la Ec. (1.21), con frecuencia proporciona el medio más conveniente para calcular H  X Y , Z  .

1.4 Divergencia Informacional

Ahora introducimos una cantidad que es muy útil en la demostración de desigualdades en la teoría de
información. Esencialmente, esta cantidad es una medida de la “distancia” entre dos distribuciones de
probabilidades.

Definición 1.4: Si X y X son variables aleatorias discretas con el mismo conjunto de valores posibles, esto es,
X    X   , entonces la divergencia de información entre PX y PX es la cantidad

PX  x 
D  PX PX   
x sop PX 
PX  x  log
PX  x 
(1.23)

La divergencia informacional entre PX y PX también se conoce por varios otros nombres, lo cual afirma su
utilidad. Algunas veces se llama la entropía relativa entre X y X y en estadística se conoce como la distancia de
Kullbach-Leibler entre PX y PX .

 
Siempre que escribimos D PX PX , estaremos suponiendo tácitamente que X    X   , ya que sin esta
condición, la divergencia informacional no está definida. De inmediato vemos de la definición de D  PX PX  que
si hay una x en sop  PX  pero no en sop  PX  , esto es, para la cual PX  x   0 pero PX  x   0 , entonces

D  PX PX   

Es por tanto claro que, en general,

D  PX PX   D  PX PX 
10

de modo que la divergencia informacional no tiene la simetría requerida para una medida verdadera de
“distancia”.

De la definición (1.23) de D  PX PX  , vemos que la divergencia informacional puede escribirse como una
esperanza, lo que será muy útil, en la forma siguiente:

 P X  
D  PX PX   E  log X (1.24)
 PX  X  

La desigualdad siguiente, simple y elegante, es la clave de la utilidad de la divergencia informacional y soporta


su interpretación como un tipo de “distancia”.

La Desigualdad de la Divergencia:
D  PX PX   0 (1.25)

con igualdad si y sólo si PX  PX , es decir, si y sólo si PX  PX para toda x  X     X    .

Demostración: Comenzamos por escribir


PX  x 
D  PX PX   
xsop PX 
PX ( x) log
PX  x 

 P x 
 
xsop PX 
PX  x   X  1
 PX  x  
desigualdad TI


   
PX  x     
PX  x  log e

 x  sop PX x  sop PX 
 (1  1) log e
0
La igualdad se cumple en el punto donde la desigualdad TI se aplicó si y sólo si PX  x   PX  x  para toda
x sop  PX  , lo que es equivalente a PX  x   PX  x  para toda x  X    X   y por tanto también da
igualdad en la segunda desigualdad arriba.
El ejemplo siguiente ilustra la utilidad de la divergencia informacional.

Ejemplo 1.2: Supongamos que X tiene L valores posibles, esto es, #  X     L . Suponga que X tiene la
distribución de probabilidades PX  x   1 L para toda x  X   . Entonces

 P X  
D  PX PX   E  log X
 PX  X  
 P X  
 E  log X
 1 L 
 log L  E   log PX  X  
 log L  H  X 

De la Desigualdad de la Divergencia se deduce entonces que H  X   log L con igualdad si y sólo si PX  x   1 L


para toda x  X   , que es la desigualdad fundamental en la derecha Ten el Teorema 1.1.
11

1.5 Reducción de la Incertidumbre por Condicionamiento

Ahora usaremos la Desigualdad de la Divergencia para demostrar un resultado que es extremadamente útil y
que una interpretación intuitivamente interesante, a saber, que si se conoce Y se reduce, en general, nuestra
incertidumbre sobre X.

Teorema 1.2 [La Segunda Desigualdad de Entropía]: Para dos variables aleatorias discretas cualesquiera X y Y,
H X Y   H X 

con igualdad si y sólo si X y Y son variables aleatorias independientes.

Demostración: Utilizando (1.5) y (1.18), tenemos que

H  X   H  X Y   E   log PX  X    E   log PX Y  X Y 
 
 PX Y  X Y  
 E  log 
 PX  X  
 PX Y  X Y  PY Y  
 E  log 
 PX  X  PY Y  
 P X, Y  
 E  log XY
 P    
X X PY Y 

 D  PXY PXY 
donde
PXY  x, y   PX  x  PY  y 

para toda  x, y   X    Y   . Ahora, de la Desigualdad de la Divergencia se deduce que H  X Y   H  X 


con igualdad si y sólo PXY  PX  x  PY  y  para toda  x, y   X    Y   , que es la definición de independencia
para variables aleatorias discretas.
Observamos ahora que (1.19) y (1.21) difieren solamente en el hecho de que las distribuciones de probabilidades
en la última están condicionadas aún más en el evento Z = z. Por tanto, debido a esta semejanza matemática,
podemos expresar de inmediato el resultado siguiente:

Corolario 1 al Teorema 1.2: Para tres variables aleatorias discretas cualesquiera X, Y y Z,

H  X Y , Z  z  H  X Z  z

con igualdad si y sólo si PXY Z  x , y z   PX Z  x z Y Z  y z  . (Observe que z es un valor fijo de Z en este


corolario.)

Al multiplicar ambos lados de la desigualdad en el corolario anterior por PZ(z) y sumando sobre toda z en
sop  PZ  , obtenemos el siguiente resultado, útil e interesante, que es la última de nuestras desigualdades que
relacionan varias incertidumbres y que muestra una vez más cómo el acondicionamiento reduce la
incertidumbre.
12

Corolario 2 al Teorema 1.2 [La Tercera Desigualdad de la Entropía]: Para cualesquiera tres variables aleatorias
discretas X, Y y Z,
H  X YZ   H  X Z 

con igualdad si y sólo si para toda x en sop  PZ  , la relación PXY Z  x, y z   PX Z  x z  PY Z  y z  se cumple


para todas x y y [o, el equivalente, si y sólo X y Y son independientes cuando se condicional al conocer Z].

Las desigualdades anteriores las podemos resumir diciendo que el acondicionamiento de variables aleatorias sólo
puede disminuir la incertidumbre (más precisamente, nuca puede incrementar la incertidumbre). Esto es de nuevo
una propiedad intuitivamente interesante de la medida de información de Shannon. Sin embargo, el lector debe
observar que el acondicionamiento de un evento puede aumentar la incertidumbre, por ejemplo, H  X Y  y  puede
exceder a H(X). Es sólo el promedio de H  X Y  y  sobre todos los valores de Y, a saber, H  X Y  , el que no
puede se mayor que H(X). Que este estado de cosas no es contrario a la noción intuitiva de “incertidumbre”
puede verse mediante el razonamiento siguiente. Supongamos que X es el color (amarillo, blanco o negro) de un
habitante de la tierra “seleccionado arbitrariamente” y que Y es su nacionalidad. “En el promedio”, si se nos dice

Y, se reduciría nuestra “incertidumbre” acerca de X H  X Y   H  X  . Sin embargo, como hay muchos más 
habitantes de la tierra que son amarillos que los que son negros o blancos, nuestra “incertidumbre” sobre X se
aumentaría si se nos dijese que la persona selecciona vino de una nación y en la cual los números de ciudadanos

amarillos, blancos y negros son aproximadamente iguales H  X Y  y   H  X  en este caso . Véase también el 
Ejemplo 1.3 más adelante.

1.6 La Regla de la Cadena para la Incertidumbre

Ahora derivaremos una de las identidades más sencillas, más intuitivamente interesante y más útiles en la teoría
de la información. Sea X1 , X2 , , XN  un vector aleatorio discreto con N componentes que son variables
aleatorias discretas. Como los vectores aleatorios discretos también son variables aleatorias discretas, la Ec. (1.5)
da

H  X1X2 XN   E  log PX1X2 XN  X1 , X2 , , XN  (1.26)

que también puede reescribirse a través de la regla de multiplicación para distribuciones de probabilidades
como

H  X1X2 XN   E   log PX1  X1  PX


 2 X1 X2 X1  PX
N X1 , XN  1  XN X1 , 
XN 1 

(1.27)

En forma más compacta, esta identidad se escribe como

 N 
H  X 1X 2 X N   E   log


n 1
PX
n X1 , Xn  1  Xn X1 , X n 1 

N
  E  log P
n 1
Xn X1 , Xn  1  Xn X1 , Xn1 
  (1.28)

N
  H X
n 1
n X1 , Xn1 
En notación menos compacta, pero más fácil de leer, podemos escribir la última expresión como

H  X1X2 
XN   H  X1   H X2 X1    H XN X1  XN 1  (1.29)
13

Esta identidad, que algunas veces se conoce como la regla de la cadena para la incertidumbre, puede frasearse como
expresando que “la incertidumbre de un vector aleatorio es igual a la incertidumbre de su primer componente,
más la incertidumbre de su segunda componente cuando se conoce la primera, … , más la incertidumbre de su
última componente cuando se conocen todas los componentes previas”. Ésta es una propiedad tan
intuitivamente interesante que no tienta a concluir, antes de que hayamos hecho una sola aplicación de la teoría,
que la medida de Shannon es la correcta.
De nuestra derivación de la Ec. (1.29) debe quedar claro que el orden de las componentes es arbitrario. Por tanto,
podemos expandir, por ejemplo H(XYZ), en cualquiera de las seis formas siguientes:

H  XYZ   H  X   H Y X   H  Z XY 
 H  X   H  Z X   H Y XZ 
 H Y   H  X Y   H  Z XY 
 H Y   H  Z Y   H  X YZ 
 H  Z   H  X Z   H Y XZ 
 H  Z   H Y Z   H  X YZ 

Ejemplo 1.3: Supongamos que el vector aleatorio [X, Y, Z] tiene igual posibilidad de tomar cualquiera de los
cuatro valores: {0, 0, 0], [0, 1, 0], [1, 0, 0] y [1, 0, 1]. Entonces PX (0)  PX (1)  1 2 de manera que

H  X   h  1 2   1 bit

Observe que PY X  0 1  1 , de modo que


H Y X  1  0

En forma similar, PY X  0 0  1 2 , de modo que


H Y X  0   h  1 2   1 bit
Ahora, la Ec. (1.16) da
1
H Y X    1  1 2 bit
2

Partiendo del hecho de que P z xy   es igual a 1, 1 y 1/2 para (x, y, z) igual a (0, 0, 0), (0, 1, 0) y (1, 0, 0) ,
respectivamente, se deduce que

H  Z X  0, Y  0   0
H  Z X  0, Y  1  0
H  Z X  1, Y  0   1 bit

Al observar que P  x, y  es igual a 1/4, 1/4 y 1/2 para (x, y) igual a (0, 0), (0, 1) y (1, 0), respectivamente, de
(1.16) se determina que
1 1 1 1
H  Z XY   (0)  (0)  (1)  bit
4 4 2 2
Ahora usamos la Ec. (1.29) para obtener
1 1
H  XYZ   1    2 bits
2 2
Alternativamente, pudimos haber determinado a H(XYZ) en una forma más sencilla observando que X , Y , Z
tiene la misma probabilidad de tomar cualquiera de 4 valores, de modo que
14

H  XYZ  log 4  2 bits

Puesto que PY (1)  1 4 , tenemos que

H Y   h  1 4   0.811 bits
Por tanto, vemos que
1
H Y X    H Y   0.811
2
en concordancia con el Teorema 1.1. Sin embargo, observe que

H Y X  0   1  H Y   0.811 bits

Se deja como ejercicios demostrar que las incertidumbres condicionales también pueden expandirse en forma
análoga a la Ec. (1.29), esto es, que

H  X 1X 2 X N Y  y   H  X1 Y  y   H  X 2 X 1 , Y  y 
  H  X N X1 X N 1 , Y  y 

H  X1 X 2 XN Y   H  X1 Y   H  X2 X1Y 
  H  X N X1 XN 1Y 
y finalmente

H  X1 X 2 XN Y , Z  z   H  X1 Y , Z  z   H  X2 X1Y , Z  z 
  H  X N X1 XN 1Y , Z  z 

Una vez más, reiteramos que el orden de las variables aleatorias componentes X1, X2, … , XN que aparecen las
expansiones anteriores es completamente arbitrario. Cada una de estas incertidumbres puede expandirse en N!
formas, correspondientes a N! diferentes ordenamientos de estas variables aleatorias.

1.7 Información mutua

Ya hemos mencionado que la incertidumbre es la cantidad básica en la teoría de información de Shannon y que,
por Shannon, “información” siempre es una diferencia de incertidumbres. ¿Cuánta información da la variable
aleatoria Y acerca de la variable aleatoria X? La respuesta de Shannon sería “la cantidad por la cual Y reduce la
incertidumbre acerca de X”, a saber H  X   H  X Y  .

Definición 1.5: La información mutua entre las variables aleatorias discretas X y Y es la cantidad

I X; Y   H X   H X Y  (1.30)

lector puede preguntarse por qué usamos el término “información mutua” en vez de “información suministrada
por Y sobre X” para I(X; Y). Para ver la razón de esto, primero observamos que podemos expandir H(XY) en dos
formas, a saber,

H  XY   H  X   H Y X 
 H Y   H  X Y 
de las cuales se deduce que
H  X   H  X Y   H Y   H Y X 
15

o, en forma equivalente, que

I  X ; Y   I Y ; X  (1.31)

Por tanto, vemos que X no puede evitar dar la misma cantidad de información sobre Y que la que Y da sobre X.
La relación es completamente simétrica. El dar información es efectivamente “mutuo”.

Ejemplo 1.4: (Continuación del Ejemplo 1.3). Recuerde que PY(1) = 1/4, de manera que

H Y   h  1 4   .811
Por tanto,

I  X ; Y   H  Y   H Y X 
 .811  .500  .311 bits
En palabras, la primera componente del vector aleatorio [X, Y, Z] da 0.311 bits de información acerca de la
segunda componente, y viceversa.
Es interesante señalar que Shannon en 1948 no usó el término “información mutua” ni tampoco un símbolo
especial para denotarlo, sino más usó diferencias de incertidumbres. La terminología “información mutua” (o
“información mutua promedio” como se denomina con frecuencia) y el símbolo I(X; Y) fueron introducidos
posteriormente por Fano. Para nosotros es conveniente seguir el liderazgo de Fano, pero nunca debemos perder
de vista la idea de Shannon que la información no es sino un cambio en la incertidumbre.
Las dos definiciones siguientes deben ahora parecer naturales.

Definición 1.6: La información mutua condicional entre las variables aleatorias discretas X y Y, dado que el evento Z =
z ocurre, es la cantidad

I X; Y Z  z   H X Z  z   H X Y , Z  z  (1.32)

Definición 1.7: La información mutua condicional entre las variables aleatorias discretas X y Y dada la variables
aleatoria discreta Z es la cantidad
I  X ; Y Z   H  X Z   H  X YZ  (1.33)

De las Ecs. (1.16) y (1.26) se deduce que

I  X ; Y Z  
z  sop PZ 
PZ ( z)I  X ; Y Z  z  (1.34)

   
A partir del hecho que H XY Z  z y H XY Z cada una puede expandirse en dos formas, a saber,

H  XY Z  z   H  X Z  z   H Y X , Z  z 
 H Y Z  z   H  X Y , Z  z 
16

H  XY Z   H  X Z   H Y XZ 
 H Y Z   H  X YZ 

a partir de las definiciones (1.32) y (1.33) se deduce que

I  X ; Y Z  z   I Y ; X Z  z  (1.35)

y que

I  X ; Y Z   I Y ; X Z  (1.36)

A continuación consideramos las desigualdades fundamentales satisfechas por la información mutua. La


Definición (1.30), debido a (1.17) y (1.31), implica de inmediato el resultado siguiente:

Teorema 1.3: Para cualesquiera dos variables aleatorias discretas X y Y

0  I  X ; Y   mín  H  X  , H Y  (1.37)

con igualdad en el lado izquierdo si y sólo si X y Y son variables aleatorias independientes, y con igualdad en el
lado derecho si y sólo si Y determina esencial a X, o X determina esencialmente a Y, o ambos.

En la misma forma, las definiciones (1.32) y (1.33) conducen a las ecuaciones

0  I  X ; Y Z  z   mín  H  X Z  z  , H Y Z  z  (1.38)

0  I  X ; Y Z   mín  H  X Z  , H Y Z  (1.39)

respectivamente. Le dejamos al lector el establecer las condiciones para igualdad en las inecuaciones (1.38) y
(1.39).
Finalizamos esta sección con una advertencia. Puesto que el condicionamiento reduce la incertidumbre, uno está
tentado a suponer que la desigualdad siguiente se debe cumplir:

I X; Y Z  I X; Y 
17

Sin embargo, esto no es cierto en general. Esto no contradice una buena intuición, como puede verse al suponer
que X es el mensaje abierto en sistema secreto, Y es el mensaje encriptado y Z es la clave secreta. De hecho,
   
ambos I X ; Y Z  I  X ; Y  e I X ; Y Z  I  X ; Y  son posibles.

1.8 Lecturas Sugeridas

N. Abramson, Information Theory and Coding. New York: McGraw-Hill, 1963. (Éste es un libro
introductorio de texto sobre teoría de información de agradable lectura y muy preciso. No requiere de
una matemática sofisticada pero esta un poco anticuado.)
R. E. Blahut, Principles and Practice of Information Theory. Englewood Cliffs, NJ: Addison-Wesley, 1987.
(Uno de los mejores libros sobre teoría de la información y razonablemente fácil de leer.)
T. M. Cover y J. A. Thomas, Elements of Information Theory, New York, Wiley, 1991. (Éste es el libro más
nuevo y bueno sobre teoría de la información, pero está escrito en un nivel avanzado y comienza a
estar un poco anticuado. Una nueva edición está en preparación.)
R. J. McEliece, The Theory of Information and Coding. (Encyclopedia of Mathematics and Its
Applications, vol. 3, Sec. Probability.) Reading, Mass.: Addison-Wesley, 1977. (Éste es un pequeño
libro muy agradable de leer y contiene muchos resultados recientes en teoría de la información.
C. E. Shannon y W. Weaver, A Mathematical Theory of Communication. Urbana, Ill., Illini Press, 1949.
(Este pequeño y barato libro de bolsillo contiene la reimpresión del artículo original de Shannon de
1948 en el Beel System Technical Journal. La aparición de este artículo fue el nacimiento de la teoría de
la información. El artículo de Shannon está escrito lúcidamente y debe ser leído por cualquiera que
esté interesado en la teoría de la información.
Key Papers in the Development of Information Theory (Ed. D. Slepian). New York: IEEE Press, 1973.
Disponible con tapa de tela o de cartulina y republicado en 1988. (Ésta es una colección de muchos de
los trabajos más importantes sobre teoría de información, incluyendo el trabajo de Shannon de 1948 y
varios de los últimos trabajos de Shannon.)
18
Capítulo 2

CODIFICACIÓN EFICIENTE DE LA
INFORMACIÓN

2.1 Introducción

En el capítulo anterior se introdujo la medida de información de Shannon y se demostró que poseía varias
propiedades intuitivamente satisfactorias. Sin embargo, todavía no hemos demostrado que es la medida de
información “correcta”. Para hacer esto, debemos demostrar que las respuestas a problemas prácticos de
transmisión o almacenamiento de información pueden expresarse simplemente en términos de la medida de
Shannon. En este capitulo demostramos que la medida de Shannon hace exactamente esto para el problema de
codificar una fuente de información digital como una secuencia de letras (símbolos) de un alfabeto dado.
También desarrollaremos algunos métodos eficientes para realizar esa codificación.
Sin embargo, comenzamos en una forma mucho más modesta considerando como podemos codificar
eficientemente una sola variable aleatoria.

2.2 Codificación de una Sola Variable Aleatoria


2.2.1 Códigos Libres de Prefijos y la Desigualdad de Kraft

Se considerará la situación conceptual mostrada en la Fig. 2.1, en la cual una sola variable aleatoria U es
codificada como dígitos D-arios.

Mensaje de Codificador
la Fuente de la fuente

Figura 2.1: Esquema de Codificación de Longitud Variable

Más precisamente, para las cantidades mostradas en la Fig. 2.1:


(1) U es una variable aleatoria que toma valores en el alfabeto u1 , u2 , , uK  .

(2) Cada Xi toma valores en el alfabeta D-ario, el cual normalmente tomaremos como 0, 1, , D  1 .

(3) W es una variable aleatoria, esto es, los valores de la variable aleatoria X1 , X2 , , XW  son secuencias D-
arias de longitud variable.
Por un código U se entiende una lista z1 , z2 , , zK  de secuencias D-arias donde entendemos que zi es la
palabra de código para ui, esto es, U = ui implica que Z = zi. Tomamos la pequeñez de E[W], la longitud promedio
de la palabra de código, como la medida de la bondad del código. Si zi   zi1 , zi 2 , , ziwi  es la palabra de código
para ui y wi es la longitud de esta palabra de código, entonces podemos escribir la longitud de la palabra de
código como
20

K
E W   w P
i 1
i U  ui  (2.1)

puesto que W es una función de valores reales de la variable aleatoria U. Observe que las X1 , X2 , , XW son
en general solamente variables aleatorias definidas condicionalmente ya que Xi sólo toma un valor cuando W  i.
Diremos que la secuencia D-aria z es un prefijo de la secuencia D-aria z’ si z tiene longitud n (n  1) y los primeros
n dígitos de z’ forman exactamente la secuencia z. Observe que una secuencia es trivialmente un prefijo de sí
misma.
Ahora ponemos el siguiente requerimiento para el tipo de esquemas de codificación para U que deseamos
considerar:

Ninguna palabra de código es prefijo de otra palabra de código.

Esta condición asegura que una palabra de código puede reconocerse tan pronto como se recibe su último dígito,
aun cuando el codificador de fuente se use repetidamente para codificar una sucesión de mensajes de la fuente.
Esta condición también asegura que no hay dos palabras de código que sean iguales y por tanto que H(Z) =
H(U). Un código para U que satisfaga este requerimiento se denomina un código libre de prefijo (o un código
instantáneamente decodificable).

Ejemplo 2.1:
U Z
u1 0
Éste es un código libre de prefijo.
u2 10
u3 11

U Z
u1 1
Éste no es un código libre de prefijo ya que z1 es un prefijo de z3.
u2 00
u3 11

Por qué tiene sentido considerar solamente códigos libres de prefijo para una variable aleatoria U puede verse si
se reflexiona sobre lo que podría pasar si, en el pequeño pueblo del Capítulo 1, un suscritor tuviese el número
telefónico 011 y otro el 0111. Posteriormente veremos otras razones por el requerimiento de libre de prefijo.
Para obtener una idea de la naturaleza de un código libre de prefijo, ayuda mostrar los dígitos en las palabras de
código de algún código como las etiquetas en las ramas de un árbol enraizado. En la Fig. 2.2 se muestran los
“árboles binarios” correspondientes a los dos códigos binarios del Ejemplo 2.1. Observe que las palabras de
código (mostradas por los círculos oscuros grandes al final de la rama identificada con el último dígito de la
palabra de código) del código libre de prefijo todas corresponden a hojas (esto es, vértices sin ramas de salida) en
su árbol, pero que el código de no prefijo también tiene una palabra de código correspondiente a un nodo (esto
es, un vértice con ramas de salida), donde la dirección se toma alejándose del vértice especificado especialmente
y denominado la raíz (e indicado en los diagramas por una tierra eléctrica).

Definición 2.1: Un árbol D-ario es un árbol enraizado finito (o semifinito) en el que se originan D ramas desde cada
nodo (esto es, en la dirección que se aleja de la raíz)

Las D ramas que se originan y se alejan de un nodo se marcarán con las D diferentes letras D-arias
0, 1, , D  1 en nuestro alfabeto de codificación.
21

El árbol binario del


código binario libre de
prefijo del Ejemplo 2.1

El árbol binario del


código binario no libre de
prefijo del Ejemplo 2.1

Figura 2.2: Los árboles de dos códigos binarios.

Definición 2.2: El árbol D-ario completo de longitud N es el árbol D-ario con DN hojas, cada una a una profundidad
N de la raíz.

Véase la Fig. 2.3 para ejemplos de árboles D-arios.


Ahora debe ser auto evidente que todo código D-ario libre de prefijo puede ser identificado con un conjunto de
hojas en un árbol D-ario, y que, inversamente, cualquier conjunto de hojas en un árbol D-ario define un código
D-ario libre de prefijo. (De aquí en adelante mostraremos en nuestros árboles aquellas hojas usadas como
palabras de código como círculos oscuros y aquellos no usados como palabras de código como círculos huecos.)
Hacemos que el árbol D-ario para un código libre de prefijo dado sea único “podando” el árbol en cada nodo del
cual no se originan palabras de código.

Ejemplo 2.2: El código libre de prefijo z1 = [011], z2 = [10], z3 = [11] y z4 = [00] tiene el árbol
22

Un árbol binario El árbol ternario completo de longitud 2

Figura 2.3: Ejemplos de árboles D-arios.

El resultado siguiente nos dice exactamente cuando un conjunto dado de longitudes de palabras de código
puede ser realizado por un código D-ario libre de prefijo.

La Desigualdad de Kraft: Existe un código D-ario libre de prefijo cuyas longitudes de sus palabras de código son
los enteros positivos w1, w2, … , wK si y sólo si
K

D
i 1
 wi
1 (2.2)

Cuando se satisface la Ec. (2.2) con igualdad, el código libre de prefijo correspondiente no tiene hojas sin usar en
su árbol D-ario.

Demostración. Usaremos el hecho de que, en el árbol D-ario completo de longitud N, DN  w hojas se originan en
cada nodo a una profundidad w, donde w < N.
Supongamos primero que sí existe un código D-ario libre de prefijo cuyas longitudes de sus palabras de código
son w1, w2, … , wK. Sea N  máx wi y considérese la construcción del árbol para el código podando el árbol D-
i
ario completo de longitud N en todos los vértices correspondientes a palabras de código. Comenzando con i = 1,
encontramos el nodo (en la hoja) zi en lo que queda del árbol D-ario completo de longitud N y, si wi < N,
podamos el árbol allí para que este vértice sea una hoja a profundidad wi. Mediante este proceso, eliminamos
DN wi hojas del árbol, ya que ninguna de estas hojas pudo haber sido eliminada previamente debido a la
condición de libre de prefijo. Pero sólo hay DN hojas que pueden ser eliminadas, así que debemos hallar
después que todas las palabras de código han sido consideradas que

DN w1  DN w2   DN wN  DN

Dividiendo ahora por DN da la desigualdad (2.2) como una condición necesaria para un código libre de prefijo.
23

Supongamos lo contrario, esto es. que w1, w2, … , wK son enteros positivos tales que (2.2) se satisface. Sin pérdida
de generalidad esencial, podemos asegurar que hemos ordenado estas longitudes de manera que
w1  w2   wK . Consideremos entonces el algoritmo siguiente: (Sea N  máx wi y comience el árbol D-ario
i
completo de longitud N.)
(1) i  1.
(2) Seleccione zi como cualquier nodo u hoja sobreviviente a una profundidad wi (todavía no usado como una
palabra de código) y, si wi < N, pode el árbol en zi de modo que zi sea una hoja. Deténgase aquí si no hay un
nodo o una hoja sobreviviente.
(3) Si i = K, deténgase. De lo contrario, i  i + 1 y vaya al paso (2).

Si podemos seleccionar zK en el paso (2), entonces habremos construido un código D-ario libre de prefijo con la
longitud dada de la palabra de código. Ahora demostraremos que efectivamente podemos seleccionar zi en el
paso (2) para toda i  K. Supongamos que z1 , z2 , , zi1 han sido seleccionadas. El número de hojas
sobrevivientes a una profundidad N que no se originan en una palabra de código cualquiera es

 i 1 
DN   DN w1  DN w2   DN wi 1   DN  1 
 D wj


 j 1 
Entonces, si i  K, la condición (2.2) muestra que el número de hojas sobrevivientes a una profundidad N es
mayor que cero. Pero si hay una hoja sobreviviente a una profundidad N, entonces también debe haber nodos
sobrevivientes (no usados) a la profundidad wi < N. Puesto que w1  w2   wi 1  wi , ninguna palabra de
código ya escogida puede originarse desde un nodo sobreviviente así y por tanto este nodo sobreviviente debe
seleccionarse como zi. Por tanto, (2.2) también es suficiente para la construcción de un código D-ario libre de
prefijo con las longitudes dadas de las palabras de código.
Observe que nuestra demostración de la desigualdad de Kraft en realidad contiene un algoritmo para construir un
código D-ario libre de prefijo dadas las longitudes de las palabras de código w1  w2   wK , dondequiera que exista
un código así, es decir, siempre que se satisfaga (2.2). Sin embargo, no hay necesidad de comenzar desde el árbol
completo de longitud N  máx wi ya que el algoritmo dado en la demostración es completamente equivalente
i
al crecimiento del árbol desde la raíz y seleccionando cualquier hoya a una profundidad wi para la palabra de
código zi siempre y cuando las palabras de código con menor longitud se escojan primero.

Ejemplo 2.3: Construya un código binario libre de prefijo con longitudes w1 = 2, w2 = 2, w3 = 3, w4 = 3, w5  4 .


5
Puesto que 2 wi  1 4  1 4  1 4  1 8  1 16  15 16  1 sabemos que un código sin prefijo así existe.
i 1
“Cultivamos” ese código para obtener
24

Ejemplo 2.4: Construya un código binario libre de prefijo con longitudes w1 = 1, w2 = 2, w3 = 2, w4 = 3, w5  4 .

 i 1 2  w
5
Puesto que i
 1 2  1 4  1 4  1 8  1 16  19 16  1 , la desigualdad de Kraft muestra que ¡un código así
no existe!

Ejemplo 2.5. Construya un código ternario libre de prefijo con longitudes de palabras de código w1 = 1, w2 = 2,
 i 1 3  w
5
w3  2 , w4 = 3, w5  4 . Puesto que i
 1 3  1 9  1 9  1 27  1 81  49 81  1 , sabemos que tal código
libre de prefijo existe. “Cultivamos” ese código para obtener

El lector debe pensar un poco sobre el hecho de que todavía no nos hemos ocupado de las probabilidades de las
palabras de código en los códigos libres de prefijo que hemos construido, aunque nuestro objetivo es codificar U
de forma tal que se minimice E[W]. De la Ec. (2.1), es obvio que debemos asignar las palabras de código más
cortas a los valores más probables de U. Pero ¿cómo sabemos qué longitudes de palabras de código usar? Y
¿cuál es el mínimo valor de E[W] que podemos alcanzar? Regresaremos muy pronto a estas preguntas, pero
primero estudiaremos más cuidadosamente los aspectos teóricos de la información en árboles enraizados.

2.2.2 Árboles Enraizados con Probabilidades – Longitud de Trayectoria e


Incertidumbre

Por un árbol enraizado con probabilidades se entenderá un árbol de raíces finitas con números no negativos
(probabilidades) asignadas a cada vértice de manera que:
(1) a la raíz se le asigna la probabilidad 1 y
(2) la probabilidad de cada nodo (incluyendo la raíz) es la suma de las probabilidades de los nodos y de las
hojas con profanidad 1 en el subárbol que se origina en este nodo intermedio.

Éste es un árbol enraizado


con probabilidades, pero no
es ni un árbol ternario ni
uno binario.
25

Observe que aquí no se requiere que el árbol sea “D-ario”, es decir, que tenga el mismo número de ramas
originándose en todos los nodos intermedios.

Ejemplo 2.6:
Observe que, en un árbol enraizado con probabilidades, la suma de las probabilidades de las hojas debe ser
igual a uno.

Lema de la Longitud de la Trayectoria: En un árbol enraizado con probabilidades, la profundidad promedio de las
hojas es igual a la suma de las probabilidades de los nodos (incluyendo la raíz).

Demostración: La probabilidad de cada nodo es igual a la suma de las probabilidades de las hojas en el subárbol
que se origina en ese nodo. Pero una hoja a una profundidad d está en los d subárboles que corresponden a los d
nodos (incluyendo la raíz) en la trayectoria desde la raíz hasta esa hoja. Por tanto, la suma de las probabilidades
de los nodos es igual a la suma de los productos de la probabilidad de cada hoja y su profundidad, pero esta
última suma es precisamente la profanidad promedio de las hojas según (2.1).
En el ejemplo precedente, la profundidad promedio de las hojas es 1 + .7 = 1.7 por el Lema de la Longitud de la
Trayectoria. Como una verificación, observe que 1 .1  1 .2   2 .3   2 .4   1.7 .

Podemos pensar en la probabilidad de cada vértice en un árbol enraizado con probabilidades como la
probabilidad de que podríamos alcanzar ese vértice en un recorrido aleatorio de una sola vía a través del árbol,
comenzando en la raíz y terminando en alguna hoja. Dado que uno está es un nodo especificado, la probabilidad
condicional de seleccionar cada rama emergente como la siguiente etapa del recorrido es precisamente la
probabilidad del nodo u hoja al final de cada rama dividida por la probabilidad del nodo en su comienzo (esto
es, del mismo nodo especificado). Por ejemplo, en el Ejemplo 2.6, la probabilidad de movernos a las hojas con
probabilidad .3 y .4 dado que se está en el nodo con probabilidad .7 es 3/7 y 4/7, respectivamente.
Ahora se considerarán algunas incertidumbres que se definen de forma natural para un árbol enraizado con
probabilidades. Supongamos que el árbol enraizado tiene T hojas cuyas probabilidades son p1, p2, … , pT.
Entonces definimos la entropía de la hoja del árbol enraizado como la cantidad

Hhoja    p log p
i:pi 0
i i (2.3)

Observe que Hhoja puede considerarse como la incertidumbre H(U) de la variable aleatoria U cuyo valor
especifica la hoja alcanzada en el recorrido aleatorio descrito anteriormente.
Supongamos a continuación que el árbol enraizado tiene N nodos (incluyendo la raíz) cuyas probabilidades son
P1, P2, … , PN. (Recuerde del Lema de la Longitud de la Trayectoria que P1  P2   PN es igual a la longitud
promedio, en ramas, del recorrido aleatorio descrito anteriormente.) Ahora queremos definir la entropía de
enramado en cada uno de estos nodos de modo que sea igual a la incertidumbre de una variable aleatoria que
especifique la que sale de ese nodo, dado que habíamos llegado a ese nodo en nuestro recorrido aleatorio.
Supongamos que qi1 , qi 2 , , qiLi son las probabilidades de los nodos y hojas en los extremos de las Li ramas
que se originan en el nodo cuya probabilidad es Pi. Entonces la entropía de enramado Hi en este nodo es
qij qij
Hi    P log P
j:qij 0 i i
(2.4)

porque qij/Pi es la probabilidad condicional de selecciona la j-ésima de estas ramas como la etapa siguiente de
nuestro recorrido dado que estamos en ese nodo.

Ejemplo 2.7: Supongamos que T = 4 hojas y que los N = 2 nodos para el segundo árbol enraizado del Ejemplo 2.6
han sido numerado de tal forma que p1 = .1, p2 = 2, p3 = .3, p4 = .4, P1 = 1 y P2 = .7.
Entonces
26

4
H hoja    p log p  1.846 bits
i 1
i i

Vemos que L1 = 3 y q11 = .1, q12 = .2 y q13 = .7. Por tanto,


H1  0.1log 0.1  0.2 log 0.2  0.7 log 0.71.157 bits

Debido a la parte (2) de la definición de un árbol enraizado con probabilidades, vemos que
Li
Pi  q j 1
ij (2.5)

Usando (2.5) junto con log  qij Pi   log qij  log Pi en (2.4), obtenemos para el producto PiHi

Pi Hi   q
j:qij 0
ij log qij  Pi log Pi (2.6)

Usaremos la Ec. (2.6) para demostrar el siguiente resultado fundamental:

Teorema 2.1 (Teorema de Entropía de las Hojas): La entropía de las hojas de un árbol enraizado con probabilidades
es igual a la suma sobre todos los nodos (incluyendo la raíz) de la entropía de enramado de ese nodo ponderada
por la probabilidad del nodo, eso es,
N
Hhoja  P H
i 1
i i (2.7)

Ejemplo 2.8: Continuando el Ejemplo 2.7, ahora calculamos Hhoja usando (2.7) para obtener
Hhoja   1 H1   0.7  H2
 1.157  0.7 .985 
 1.846 bits
lo que está de acuerdo con el cálculo directo del Ejemplo 2.7

Demostración del Teorema 2.1: De (2.6), vemos que el k-ésimo nodo, si no es la raíz, contribuirá Pk log Pk al
término en la suma en (2.7) con i = k, pero contribuirá Pk log Pk al término para i tal que qij  Pk (es decir, el
término para i tal que el nodo k esta al final de una rama que sale del nodo i). Por tanto, la contribución total de
todos los nodos, excepto la raíz, a la suma en (2.7) es 0. La raíz, digamos i = 1, contribuye solamente el término
P1 log P1 a la suma en (2.7), pero éste también es 0 puesto que P1 = 1. Finalmente, de (2.6), vemos que la k-ésima
hoja contribuye pk log pk a la suma en (2.7), ya que afecta solamente el término para aquella i tal que qij  pk .
Por tanto, hemos demostrado que
N T

i 1
Pi Hi    p log p
i 1
k k (2.8)

como se quería.

2.2.3 Cota Inferior para E[W] para Código Libres de Prefijo

Ahora usamos los resultados de la sección previa para obtener una cota inferior fundamental para la longitud
promedio de la palabra de código, E[W], de una palabra de código D-aria libre de prefijo para una variable
27

aleatoria K-aria U. Ya hemos señalado que un código libre de prefijo así define un árbol D-ario enraizado en el
cual cada palabra de código corresponde a una hoja. La distribución de probabilidades PU asigna probabilidades
a las palabras de código y, por ende, a las hojas, cuya suma es 1. Por convención, asignamos probabilidad 0 a
cualquier hoja que no corresponde a una palabra de código. Además, asignamos a todos los nodos una
probabilidad igual a la suma de las probabilidades de los nodos con profundidad 1 en el subárbol que se origina
en este nodo. Esto crea ahora un árbol D-ario enraizado con probabilidades.

Ejemplo 2.9: Tomando PU  u1   0.1 y PU  u2   PU  u3   PU  u4   0.3 para el código binario libre de prefijo en el
Ejemplo 2.2 se obtiene el siguiente árbol binario enraizado con probabilidades:

Para el árbol D-ario enraizado con probabilidades creadas por la construcción que acabamos de describir, vemos
que
Hhoja  H U  (2.9)

esto es, la entropía de hojas es igual a la incertidumbre de la variable aleatoria que se está codificando.
Adicionalmente, como D ramas salen de cada nodo, se deduce del Corolario al Teorema 1.1 que la entropía de
enramado en cada nodo satisface la relación
Hi  log D (2.10)

con igualdad si y sólo si el siguiente dígito del código tiene igual probabilidad de ser cualquiera de las D
posibilidades dado que los dígitos del código previo son aquellos en la trayectoria hasta ese nodo. Usando (2.9)
y (2.10) en (2.7), ahora se obtiene
N
H U   log D P
i 1
i (2.11)

Pero, por el Lema de la Longitud de la Trayectoria, la suma en la derecha de (2.11) es la profundidad promedio
de las hojas, esto es, la longitud promedio de la palabra de código E[W]. De manera que hemos demostrado la
siguiente cota fundamental:

Parte Contraria del Teorema de Codificación para una Sola Variable Aleatoria: La longitud promedio de la palabra de
código, E[W], de cualquier código D-ario libre de prefijo para una variable aleatoria K-aria U satisface la relación
H U 
E W   (2.12)
log D

donde la igualdad se cumple si y sólo si el código es óptimo y la probabilidad de cada valor de U es una
potencia entera negativa de D.
28

La cota (2.12) se pudo haber anticipado intuitivamente. Se requiere H(U) bits de información para especificar el
valor de U. Pero cada dígito D-ario de la palabra de código puede, según los Teoremas 1.1 y 1.3, proporcionar un
máximo de log 2 D bits de información acerca de U. Por tanto, con seguridad necesitaremos por lo menos
H U  log 2 D dígitos del código, en promedio, para especificar U. Esto argumentos intuitivos son atractivos y
dan ideas; sin embargo, no son sustitutos para las demostraciones.
El teorema anterior es nuestro primer ejemplo donde la respuesta a una pregunta técnica se expresa
naturalmente en términos de la medida de información de Shannon, pero todavía no es una justificación
completa de esa medida ya que especifica solamente una cota inferior para E[W]. (Trivialmente, E[W]  1 también
es una cota inferior válida, pero no tomaríamos esta cota como una justificación ¡para nada!) La medida de
Shannon se justificará, solamente si la cota inferior (2.12) es, en algún sentido, la mejor cota inferior posible. Para
demostrar esto, necesitamos probar que existen códigos cuya E[W] está arbitrariamente cerca de la cota inferior
de (2.12).

2.2.4 Códigos de Shannon-Fano Libres de Prefijo

Ahora se demostrará cómo construir códigos libres de prefijo “buenos”, pero en general no óptimos. Quizás la
mejor idea para hacer esto es regresar por un momento a nuestro análisis de la medida de información de
Hartley en la Sección 1.1. Allí se argumentó que, cuando ocurre el evento U = ui, es como si uno ocurrente una
de las 1 PU  ui  posibilidades igualmente probables. Pero para codificar L posibilidades igualmente probables
con palabras de código D-arias de igual longitud, necesitamos una longitud de palabras de código de  log D L
dígitos – donde  x  denota el menor entero igual a o mayor que x. Este sugiere que la longitud, wi, de la palabra
de código para ui debe seleccionarse como

 1 
wi   log D
 PU  ui  

 log D PU  ui 
 
  log PU  ui  
  (2.13)
 log D 
Si PU(u) = 0, (2.13) se vuelve sin sentido. Este dilema lo resolvemos poniéndonos de acuerdo ahora y de aquí en
adelante que no nos preocuparemos por proporcionar palabras de código para valores de U que tengan probabilidad cero.
Ahora enfrentamos dos preguntas. Primero, ¿existe un código libre de prefijo cuyas longitudes de palabras de
código las (2.13)? Si existe, ¿cuál es el tamaño de E[W]?
Para responder estas preguntas, primero notamos la desigualdad obvia
x   x  x  1 (2.14)
Por (2.13), podemos entonces concluir que
wi   log D PU  ui  (2.15)

de modo que, si U es una variable aleatoria K-aria,


K K


i 1
D wi  D
i 1
log D PU  ui 

K
 P
i 1
U  ui   1 (2.16)

Por tanto, la desigualdad de Kraft nos asegura que efectivamente podemos encontrar un código D-ario libre de
prefijo cuyas longitudes de las palabras de código son dadas por (2.13). Para ver lo bueno que nuestro código es,
observamos a continuación que (2.13) y (2.14) implican que
29

 log PU  ui 
wi  1 (2.17)
log D

Multiplicando por PU  ui  y sumando sobre i da, debido a (2.1), que

H U 
E W   1 (2.18)
log D

Vemos que este método de codificación, el cual se denomina codificación de Shannon-Fano ya que la técnica está
implícita en el trabajo de Shannon de 1948, pero fue hecha explícita primero por Fano, nos da un código libre de
prefijo cuya longitud promedio de la palabra de código está dentro de 1 dígito de la cota inferior (2.13) satisfecha
por todos los códigos libres de prefijo. Por tanto, hemos demostrado el resultado siguiente.

El Teorema de Codificación para una Variable Aleatoria K-aria: La longitud promedio de la palabra de código de un
código D-ario libre de prefijo para una variable aleatoria K-aria U satisface
H U  H U 
 E W   1 (2.19)
log D log D

con igualdad en la izquierda si y sólo si la probabilidad de cada valor de U es alguna potencia entera no
negativa de D. Además, E[W] para la codificación de Shannon-Fano (que generalmente no es óptima) también
satisface la desigualdad (2.19) con igualdad si y sólo si la probabilidad de cada valor de U es alguna potencia
entera negativa de D.

teorema de codificación no da todavía una justificación completa de la medida de información de Shannon


porque la cota superior no puede hacerse arbitrariamente cercana a la cota inferior. La justificación completa
debe esperar nuestra introducción en la Sección 2.3 de la codificación para una fuente de información que emite
una secuencia de variables aleatorias.

Ejemplo 2.10: Consideremos una codificación de Shannon-Fano para la variable aleatoria 4-aria U para la cual
PU  ui  es igual a 0.4, 0.3, 0.2 y 0.1 para i igual a 1, 2, 3 y 4, respectivamente. Primero usamos (2.13) con D = 2
para calcular las longitudes de las palabras de código como

 1   1 
w1   log 2 2 w2   log 2 2
 0.4   0.3 
 1   1 
w3   log 2 3 w4   log 2 4
 0.2   0.1 
Entonces “cultivamos el código” con el algoritmo dado en la Sección (2.2.1) para obtener el código cuyo árbol
binario es
30

Por el Lema de la Longitud de la Trayectoria, vemos que

E W   1  0.7  0.3  0.3  0.1  2.4


y un cálculo directo da
H U   1.846 bits
Vemos que, efectivamente, se satisface la Ec. (2.19). Sin embargo, observamos que nuestro código es claramente
no óptimo. Si hubiésemos usado simplemente las 4 palabras de código posibles de longitud 2, hubiéramos
obtenido un código mejor (E[W] = 2). No obstante, por nuestro teorema de codificación sabemos que ningún
código puede superar la E[W] del código de Shannon-Fano por más de 1 dígito. Cuando H(U) es grande, la
codificación de Shannon-Fano es casi óptima. Pero cuando H(U) es pequeña, generalmente podemos obtener
resultados mejores que la codificación de Shannon-Fano.

2.2.5 Códigos de Huffman – Códigos Óptimos Libres de Prefijo

Ahora se mostrará cómo construir un código D-ario libre de prefijo óptimo para una variable aleatoria K-aria.
Suponemos que
PU  ui   0, i  1, 2, ,K

de modo que podamos asignar una palabra de código a todo valor posible de U.
Primero consideramos una codificación binaria, esto es, D = 2. Dos lemas sencillos nos darán la clave para la
construcción de un código óptimo.

Lema 2.1: El árbol binario de un código binario libre de prefijo óptimo para U no tiene hojas sin usar.

Demostración: Supongamos que el árbol tiene hojas sin usar. Puesto que el código es óptimo, estas hojas sin usar
deben estar a una profundidad máxima en el árbol. Entonces, para por lo menos un valor ui de U, tenemos la
situación

En cualquier caso, podemos eliminar el último dígito de la palabra de código para ui (sin cambiar las otras
palabras de código) y todavía tener un código libre de prefijo. Pero el nuevo código tiene una E[W] más pequeña
y por tanto el código original podría no haber sido óptimo.

Lema 2.2: Existe un código binario libre de prefijo para U tal que las dos palabras de código menos posibles,
digamos aquellas para uK 1 y uK , difieren solamente en su último dígito.

Demostración: Supongamos que PU  uK 1   PU  uK  . Sea zi una de las palabras de código más largas en un
código óptimo para U. Entonces, por el Lema 2.1 no puede haber hojas sin usar en el árbol del código y debemos
tener la situación
31

donde uj es algún otro valor de la variable aleatoria U que se está codificando. Ahora, si j  K, debemos cambiar
las hojas por uj y uK. Esto no puede incrementar a E[W] ya que PU  u j   PU  uK  y w j  wK . Si i  K  1 , también
cambiamos los nodos para ui y uK 1 . Esto no puede incrementar a E[W] por un argumento similar. Como el
código original era óptimo, el código nuevo también lo es. Pero en el nuevo código óptimo, sus dos palabras de
código menos probables difieren solamente en el último dígito.
Debido al Lema 2.1 y al Lema de la Longitud de la Trayectoria, vemos que la construcción del código binario
óptimo libre de prefijo para la variable aleatoria K-aria U es equivalente a construir un árbol binario con K hojas tal
que la suma de las probabilidades de los nodos es mínima cuando a las hojas se les asignan las probabilidades PU  ui 
para i = 1, 2, … , K. Pero el Lema 2.2 nos dice cómo podemos seleccionar un nodo en un código óptimo, vale
decir como

donde uK 1 y uK son los dos valores de U menos probables. Pero, si ahora podamos nuestro árbol binario en
este nodo para volverlo una hoja con probabilidad PU  uK 1   PU  uK  , se convertiría en uno de K  1 hojas en un
nuevo árbol. Completando la construcción del código óptimo sería entonces equivalente a construir un árbol
binario con esas K  1 hojas de moso que la suma de las probabilidades de los nodos es mínima. Una vez más, el
Lema 2.2 nos dice cómo selecciones el nodo en este nuevo árbol. Hemos demostrado así la validez de lo
siguiente:

Algoritmo debido a Huffman, para construir un código binario óptimo libre de prefijo para una variable
aleatoria K-aria U tal que P(u)  0 para toda u.

Paso 0: Designe K vértices (que serán las hojas en el árbol final) como u1, u2, … , uK y asigne las
probabilidades PU  u1  al vértice ui para i = 1, 2, … , K. Designe estos K vértices como “activos”.

Paso 1: Cree un nodo que agrupe los vértices activos menos probables con ramas binaras en la forma

los dos vértices activos


nodo recién creado menos probables

Desactive estos dos vértices activos, active el nuevo nodo y asígnele probabilidades iguales a la suma
de las probabilidades de los dos vértices recién activados.
Paso 2: Si ahora sólo hay un vértice activo, entonces ponga a tierra este vértice (es decir, vuélvalo una raíz) y
deténgase. De lo contrario, vaya al paso 1.

Ejemplo 2.11: Consideremos la variable aleatoria U tal que

Un código óptimo binario libre de prefijo para U es el siguiente:


32

Observe que E W   2 0.2  0.23  0.27   3 0.15  4 0.1  0.5  1.4  0.45  0.6  2.45 .


6
También, H U    PU  u  log 2 PU  u   2.42 bits , de modo que (2.18), efectivamente se satisface. Ahora
i 1
consideraremos la generalización de los resultados previos para D = 2 al caso de D arbitraria. Primero
demostraremos un resultado con frecuencia muy conveniente.

Lema de Conteo de Nodos: El número de hojas en un árbol D-ario finito es siempre dado por D  q  D  1 , donde
a es el número de nodos sin contar la raíz.

Demostración: Considérese la construcción de un árbol así a partir de la raíz. En el primer paso, obtenemos

el cual tiene D hojas. En cada paso posterior, cuando “extendamos” cualquier hoja, obtenemos D hojas nuevas
pero perdemos una vieja (la que se extiende) para una ganancia neta de D  1 hojas, y ganamos un nodo que no
es raíz. Sigue el lema.
Consideremos ahora el árbol para un código óptimo D-ario para U. Un árbol así no puede tener hojas no usadas
excepto en la longitud máxima, porque si existiese tal hoja, podríamos disminuir E[W] transfiriendo una de las
palabras de código con longitud máxima a esta hoja. Además, si hay D  1 o más hojas sin usar en la longitud
máxima, podríamos agrupar D  1 o D de estos nodos no usado en un nodo como

D1
sin usar D o más nodos
o sin usar
33

Por tanto, podemos acortar la palabra de código removiendo el último dígito en el primer caso, o podemos crear
un nodo no usado con longitud menor que la máxima en el último caso. Pero, en cualquier caso, el código podría
no haber sido óptimo. Conclusión:

Lema 2.0’: Hay como máximo D  2 hojas sin usar en el árbol de un código óptimo D-ario libre de prefijo para U
y todas están a longitud máxima. Además, existe un código D-ario óptimo para U que tiene todas las hojas sin
usar originándose en el mismo nodo previo.

Sea r el número de hojas sin usar. Entonces si U tiene K valores, tenemos

 número de hojas en el 
r K
árbol D-ario del código
Por el Lema 2.0’ sabemos que 0  r  D  1 si el código es óptimo. Del lema de conteo de nodos se deduce que

r  D  q  D  1   K
o
D  K  q  D  1  r donde 0  r  D  1 (*)

Se deduce entonces, por el teorema de la división de Euclides para enteros, que r es el residuo cuando D  K se
divide por D  1. (El cociente es q.) Ésta no es una caracterización conveniente de r puesto que D  K usualmente
será negativa. Sin embargo, si se añade  K  D  D  1 a ambos lados en (*), se obtiene
 K  D  D  2    K  D  q   D  1  r donde 0  r  D  1

y Euclides nos dice que r también es el residuo cuando  K  D D  2  se divide por D  1. Por tanto, hemos
demostrado el resultado siguiente:

Lema 2.1’: El número de hojas sin usar en el árbol de un código óptimo D-ario libre de prefijo para una variable
aleatoria U con K valores posibles, K  D, es el residuo cuando  K  D D  2  se divide por D  1 .

Argumentos completamente similares a los usados en el caso binario darían, con los cambios necesarios, el
resultado siguiente:

Lema 2.2’: Existe un código óptimo D-ario libre de prefijo para una variable aleatoria U con K valores posibles tal
que las D  r palabras de código posibles difieren solamente en su último dígito, donde r es el residuo cuando
 K  D D  2  se divide por D  1.

El Lema 2.2 nos dice cómo seleccionar un nodo en el árbol D-ario de un código óptimo libre de prefijo para U. Si
podamos el árbol en este nodo, el Lema 2.0’ nos dice que no quedarán hojas sin usar en el árbol D-ario
resultante. El Lema de la Longitud de la Trayectoria nos dice que la construcción de un código óptimo es
equivalente a construir un árbol D-ario con estas K  r   D  1 hojas que minimiza la suma de las
probabilidades de los nodos. El Lema 2.2’ nos dice ahora cómo seleccionar un nodo en este nuevo árbol con
K  r  D  1 hojas, creando un nodo de donde se originan la D menos probables de estas hojas. Por tanto,
hemos justificado lo siguiente:
34

Algoritmo, debido a Huffman, para construir un código óptimo D-ario libre de prefijo (D  3) para una
variable aleatoria K-aria U tal que P(u)  0 para toda u.

Paso 0: Designe K vértices (que serán las hojas usadas en el árbol final) como u1, u2, … , uK y asigne la
probabilidad PU  ui  al vértice ui para i = 1, 2, …, K. Designe estos K vértices como “activos”. Calcule r
como el residuo cuando  K  D D  2  se divide por D  1.
Paso 1: Agrupe los D  r vértices activos menos posibles con D  r ramas de una rama D-aria en la forma

los D  r vértices menos probables

nodo recién creado

r vértices no usados

Desactive estos D  r vértices activos, active el nuevo nodo y asígnele una probabilidad igual a la suma
de las probabilidades de los D  r vértices que acaba de desactivar.
Paso 2: Si hay un solo vértice activo, entonces ponga a tierra este vértice (esto es, hágalo la raíz) y deténgase.
De lo contrario, haga r = 0 y vaya al Paso 1.

Ejemplo 2.12: Para la misma U en el ejemplo previo y D = 3, tenemos r = residuo cuando


 R  D D  2    6  3 3  2   3 se divide por D  1  2 , es decir, r = 1. Construimos un código óptimo
como

Observación: E  W   3  0.16   2  0.35   1  0.50   1.65


H U  2.42
  1.52
log D 1.59
35

2.3 Codificación de una Fuente de Información


2.3.1 La Fuente Discreta Sin Memoria

La mayoría de las “fuentes de información” no emiten una sola variable aleatoria, sino más bien una secuencia de
variables aleatorias. De hecho, este hecho lo reconocimos implícitamente cuando requerimos que nuestros
códigos para variables aleatorias fuesen libres de prefijo, porque el requerimiento asegura que podríamos
reconocer de inmediato el final de una palabra de código cando apareciese en una secuencia de palabras de
código. Ahora precisamos el primer tipo de fuente de información “secuencial” que consideraremos.

Definición: Una fuente K-aria discreta sin memoria (o DMS) es un dispositivo cuya salida es una secuencia semi
infinita U1, U2, … de variables aleatorias K-arias estadísticamente independientes y distribuidas idénticamente
(i.i.d., por sus siglas en inglés).

Una DMS es matemáticamente la clase más sencilla de fuente de información que se puede considerar y es un
modelo apropiado para ciertas situaciones prácticas. Sin embargo, muchas fuentes de información reales tienen
memoria en el sentido de que letras de salida sucesivas no son estadísticamente independientes de las letras de
salida previas. Antes de analizar fuentes con memoria, parece recomendable familiarizarnos con la fuente sin
memoria más sencilla.

2.3.2 Análisis de una Fuente de Información

La primera interrogante que surge en la codificación de cualquier fuente de información, sin memoria o con ella,
es ¿qué debemos codificar realmente, esto es, a cuáles objetos se les asigna palabras de código? Obviamente no
podemos esperar por siempre para ver toda la secuencia de salida semi infinita de la fuente U1, U2, … antes de
comenzar nuestra codificación. La respuesta a esta pregunta es que primero debemos agrupar algunos dígitos de
salida de lafuente y asignar una palabra de código a esta secuencia, entonces agrupar algunas letras adicionales
de la fuente y asignarles una palabra de código, etc. En la Fig. 2.4, mostramos los dos dispositivos que
corresponden a esta forma de codificación de la fuente, a saber, el analizador de la fuente y el codificador del mentaje.

Codificador Analizador de Fuente de


del mensaje la fuente Información

Figura 2.4 Esquema general para la Codificación de una Fuente de Información

La función del analizador de la fuente en la Fig. 2.4 es dividir la secuencia de salida de la fuente en mensajes, que
son los objetos a los que después se les asigna palabras de código por el codificador del mensaje. Escribimos V1, V2, …
para denotar la secuencia semi infinita de mensajes del analizador de la fuente. El analizador de fuente más
sencillo y muy útil es el analizador de L-bloques, para el cual cada mensaje consiste de los siguientes L dígitos de
salida de la fuente, esto es,
V1  U1 , U2 , , UL 
V2  UL1 , UL2 , , U2L 
etc.
Es posible demostrar que la separación de la secuencia de salida de la fuente en mensajes realizada por el
analizador de L-bloques es la siguiente:
U1 , U2 , , UL UL1 , UL2 , , U2L U2L1 ,
36

donde la barra vertical indica el final de un mensaje. Esta forma de mostrar la función del analizador de L-
bloques quizás explique porqué el término “analizar” es una descripción apropiada. Posteriormente veremos
que también son de interés los analizadores de fuentes de “longitud variable”.

2.3.3 Codificación de Bloques a Longitud Variable de una DMS

Ahora consideraremos la codificación de una DMS. Siguiendo con nuestra convención anterior de no
suministrar palabras de código para valores de una variable aleatoria que tienen probabilidad cero, hacemos la
convención correspondiente, para las DMS K-arias que codificaremos, que todos los K valores de un dígito de salida
tienen probabilidad diferente de cero.
Ahora podemos considerar un mensaje V formado por un analizador de fuente como una variable aleatoria que
podemos codificar en una forma que ya se consideró en la Sección 2.2. Por codificación D-aria de bloques a longitud
variable de una DMS K-aria, se entiende que el analizador del mensaje para la DMS K-aria es el codificador del
mensaje de L-bloques (para alguna L especificada) y que el codificador realiza una codificación D-aria de longitud
variable de cada mensaje formado por ese analizador, por ejemplo, una codificación de Huffman o una de
Fannon-Shanon.
Cuando la salida de una DMS K-aria es analizada por el analizador de mensajes de L-bloques, entonces la
naturaleza i.i.d. de la secuencia de salida de la fuente U1, U2, … garantiza que la secuencia de salida del
analizador V1, V2, … también es i.i.d., esto es, es una secuencia de variables aleatorias K L -arias idénticamente
distribuidas. Por tanto, podemos sin pérdida de generalidad considerar la codificación del primer mensaje en
esta secuencia, que denotamos simplemente por V, esto es, al mensaje
V  U1 , U2 , , U

Ahora hemos llegado al punto donde podemos demostrar que la medida de información de Shannon da
precisamente la respuesta correcta a l pregunta: ¿Cuántos dígitos D-arios por letra de lafuente se requieren en
promedio para representar la secuencia de salida de una DMS K-aria particular?

El Teorema de Codificación de Bloques a Longitud Variable para una DMS: Existe una codificación D-aria libre de
prefijo de un mensaje de L-bloques de una DMS tal que el número promedio de dígitos de código D-ario por
letra de la fuente satisface la relación
E  W  H U  1
  (2.20)
L log D L

donde H(U) es la incertidumbre de una sola letra de la fuente. Inversamente, para toda codificación D-aria
libre de prefijo de un mensaje de L-bloques
E  W  H U 
 (2.21)
L log D

Demostración: Como el mensaje V  U1 , U2 , , UL  tiene L componentes i.i.d., de la Ec. (1.31) y el Teorema 1.2
se deduce que
H V   H U1   H U2    H UL 
 LH U  (2.22)

donde la primera igualdad se deduce de la independencia y la segunda de la distribución idéntica de


U1 , U2 , , UL . Por tanto, podemos aplicar de inmediato el teorema anterior para concluir que, para cualquier
código D-ario libre de prefijo para V,
H V  L H U 
E W   
log D log D
37

de la cual se deduce (2.21). Inversamente, podemos aplicar (2.19) para concluir que existe un código libre de
prefijo para V tal que
H V  L H U 
E W   1 1
log D log D

Entonces, al dividir por L, se establece (2.20).


Debe quedar claro que un esquema de codificación óptimo de bloques a longitud variable [en el sentido de
minimizar E[W], el número promedio de letras D-arias por letra de la fuente, sobre todos los códigos D-arios
libres de prefijo para V] puede obtenerse aplicando el algoritmo de Huffman a la variable aleatoria V
considerada en la demostración precedente.

2.3.4 Codificación de Longitud Variable a Codificación de Bloques


de una DMS

Las palabras de código de longitud variable que hemos considerado hasta este punto, algunas veces son
inconvenientes en la práctica. Por ejemplo, si las palabras de código son almacenadas en la memoria de una
computadora, usualmente se preferiría usar palabras de código cuya longitud coincida con la longitud de
palabra de la computadora. O si los dígitos en la palabra de código deben ser transmitidos de forma
sincronizada (digamos, con una tasa de 2400 bits/seg), normalmente no se desea tener palabras de código de
longitud variable como reserva para asegura un suministro estable de dígitos que deben transmitirse. Pero fue
precisamente la variabilidad de las longitudes de las palabras de código lo que permitió la codificación eficiente
de una sola variable aleatoria, como por ejemplo el mensaje V de un analizador de L-bloques. ¿Cómo podemos
obtener una eficiencia de codificación similar para una DMS cuando todas las palabras de código son forzadas a
tener la misma longitud? La respuesta es que debemos asignar palabras de código no a bloques de letras de la
fuente sino más bien a secuencias de longitud variable de letras de la fuente, esto es, debemos realizar análisis de
longitud variable.
Ahora consideraremos la codificación de un número variable de letras de la fuente en palabras de código de N-
bloques, como se indica en la Fig. 2.5.

Z = [X1 , X2 , … , XN] Codificador V = [U 1 , U 2 , … , U Y] Analizador


de Bloques de Fuente

Figura 2.5 Codificación de Longitud Variable a Bloques de una Fuente Discreta Sin Memoria

Aquí, las palabras de código D-arias todas tienen longitud N, pero la longitud Y del mensaje V al cual se asignan
las palabras de código es una variable aleatoria. El analizador de fuente simplemente almacena la salida de la
DMS hasta que observa que estas letras forman un mensaje válido. El criterio de bondad es E[Y], la longitud
promedio del mensaje. Observe que N/E[Y] es el número promedio de dígitos D-arios del código por letra de la
fuente – por tanto, nos gustaría hacer que E[Y] fuese tan grande como sea posible.
Para que siempre podamos reconstruir la secuencia de salida de lafuente a partir de las palabras de código, es
necesario y suficiente que toda secuencia de la fuente lo suficientemente larga tenga algún mensaje como prefijo.
Para que el formador de mensajes pueda reconocer un mensaje tan pronto como esté completo, es necesario y
suficiente que ningún mensaje sea el prefijo de un mensaje más largo. Esto motiva la definición de un conjunto de
mensajes correctos para una fuente K-aria como un conjunto de mensajes que forman un conjunto completo de
hojas para un árbol K-ario enraizado.

Ejemplo 2.13: K = 3, alfabeto fuente = {a, b, c}.


38

Un conjunto de mensajes correctos Un conjunto de mensajes incorrectos Un conjunto de mensajes incorrectos

El segundo de estos conjuntos de mensajes no puede utilizarse en un analizador de fuente ya que no habría un
análisis válido de U1 = U2 = … = c, c, … como una secuencia de mensajes. Sin embargo, el tercer conjunto de
mensajes quizás podría usarse con la regla: seleccionar siempre el mensaje más largo si es posible más de un
análisis.
Se debe señalar que la secuencia V1, V2, .. de mensajes del formador de mensajes es en sí mismo una secuencia
i.i.d. cuando el conjunto de mensajes es correcto. Esto se deduce del hecho de que el formador de mensajes
reconoce la última letra en cada mensaje sin mirar más a la secuencia de salida de la fuente; esto, junto con el
hecho de que la fuente es una DMS, implica que las letras de la fuente que forman Vi son estadísticamente
independientes de aquellas que forman V1, V2, .. , Vi  1 y tienen la misma distribución que aquellas para Vi. Por
tanto, cuando se usa un conjunto de mensajes correctos, basta con considerar la codificación solamente el primer
mensaje, al cual ya hemos llamado V.
Podemos asignar probabilidades al árbol enraizado K-ario correspondiente a un conjunto de mensajes correcto
asignado la probabilidad 1 a la raíz y, a cada vértice subsiguiente, se le asigna una probabilidad igual a la
probabilidad del nodo del cual se origina multiplicado por la probabilidad de que la DMS emita la letra en la
rama que conecta ese nodo con su vértice. En esta forma, las probabilidades de las hojas serán precisamente las
probabilidades de que la DMS emita estos mensajes y, por tanto, la entropía dominante será H(Y), la
incertidumbre del mensaje, esto es,
Hhoja  H V  (2.23)

Ejemplo 2.14: Supongamos que la DMS es ternaria con PU (a)  0.1 , PU (b)  0.3 y PU (c)  0.6 . Entonces, esta DMS
crea el siguiente árbol enraizado ternario con probabilidades para el conjunto de mensajes correctos dados en el
Ejemplo 2.13.

Como todos los nodos en el árbol de mensajes tienen entropía de ramas igual a H(U), esto es
Hi  H U  , toda i (2.24)

ahora se puede aplicar el Teorema 2.1 para dar


39

N
H V   H U  P
i 1
i (2.25)

donde Pi es la probabilidad del i-ésimo nodo. Al aplicar el Lema de la Longitud de la Trayectoria a (2.25) se
obtiene el siguiente resultado fundamental:

Teorema 2.2: La incertidumbre H(V) de un conjunto de mensajes correctos para una DMS K-aria con
incertidumbre de salida H(U) satisface
H V   E Y  H U  (2.26)
donde E(Y) es la longitud promedio del mensaje.

Ejemplo 2.17: Para la DMS del Ejemplo 2.14, la incertidumbre de salida es H U   0.1log  0.1 
0.3 log  0.3   0.6 log 0.6   1.295 bits.

Por el Lema de la Longitud de la Trayectoria aplicado al árbol en el Ejemplo 2.14, encontramos que E Y   1.6
letras, Del Teorema 2.2 se deduce que la incertidumbre de conjunto de mensajes correctos es
H V    1.6 1.295  2.073 bits
Se invita al lector para que verifique este resultado directamente a partir de las probabilidades
 0.1, 0.3, 0.06, 0.18 y 0.36  de los cinco mensajes en este conjunto.
Ahora queremos establece un “inverso del teorema de codificación” para la codificación de longitud variable a
codificación de bloques de una DMS. Pero, como un código de bloques es tipo muy especial de código libre de
prefijo, podría simplemente demostrar el resultado más fuerte siguiente:

Inverso General del Teorema de Codificación para una DMS: Para cualquier codificación D-aria de cualquier conjunto
de mensajes correctos para una DMS, la relación entre la longitud promedio de la palabra de código, E[W], y la
longitud promedio del mensaje, E[T], satisface la relación
E  W  H U 
 (2.27)
E V  log D

donde H(U) es la incertidumbre de una sola letra de la fuente.

Demostración. Tomando V como el mensaje al cual se le asigna la palabra de código, del Teorema 2.2 tenemos
que
H V   E Y  H U  (2.28)
y del Teorema 2.1 que
H V 
E W   (2.29)
log D

Combinando las Ecs. (2.28) y (2.29), obtenemos la Ec. (2.27).


Aunque la demostración anterior es bastante trivial, hay un aspecto más sutil en este teorema inverso, a saber,
¿por qué es E(W)/E(Y) la medida apropiada del “número promedio de dígitos del código usados por letra de la
fuente” en vez de E[W/Y]? La respuesta se obtiene de la consideración de la “ley de los grandes números”.
Supongamos que tomamos a Y1, Y2, Y3, … como la secuencia de longitudes de mensajes para la secuencia
V1 , V2 , V3 , de mensaje y a W1, W2, W3, … como la secuencia de longitudes de las palabras de código para la
secuencia correspondiente Z1, Z2, Z3, … de palabras de código. Como V1, V2, V3, … es una secuencia i.i.d., las
secuencias Y1, Y2, Y3, … y W1, W2, W3, … son cada una i.i.d. Por tanto, la ley suave de los grandes números
implica que
40

Y1  Y2   Yn
plím  E Y  (2.30)
n n
y
W1  W2   Wn
plím  E W  (2.31)
n n

Pero (2.30) y (2.31) y el hecho de que E[Y]  0 implican que


W1  W2   Wn E  W 
plím  (2.32)
n   Y1  Y2   Yn E Y 

La Ec. (2.32) nos dice que, después de haber codificado un gran número de mensajes, podemos tener una virtual
certeza de que la razón del número total de dígitos de código que hemos usado para codificar el número total de
letras de la fuentes será virtualmente igual a E[W]/E[Y]. Por tanto, la razón E[W]/E[Y] es la cantidad de interés
físico que mide los “dígitos del código por letras de la fuente” y por ello es la cantidad que deseamos minimizar
cuando diseñamos un sistema de codificación para una DMS.
Ahora es el momento para desarrollar el procedimiento para realizar la codificación óptima de longitud variable
a bloques de una DMS K-aria. Si se selecciona la longitud del bloque como N, entonces E[W] = N, de modo que
la minimización de E[W]/E[Y] es equivalente a la maximización de la longitud promedio del mensaje E[Y].
Ahora consideraremos cómo se forma un conjunto de mensajes correctos con E[Y] máxima. Del lema de conteo
de nodos y la definición de un conjunto de mensajes correctos, se deduce que el número M de mensajes en un
conjunto de mensajes correctos paa una DMS K-aria debe ser de la forma
M  K  q  K  1 (2.33)

para algún entero no negativo q. Formaremos conjuntos de mensajes para una DMS mediante la “extensión” de
nodos en un árbol enraizado K-ario con probabilidades. Por la “extensión de un nodo” se entiende el proceso de
convertir una hoja con probabilidad p en un nodo añadiéndole K ramas al nodo como se indica en el diagrama
siguiente.

donde u1, u2, … , uK son los valores posibles de la letra de la fuente U y donde
pi  PU  ui  (2.34)

es la probabilidad de que la siguiente letra de la DMS será ui, dado que la fuente ya ha emitido los dígitos en la
rama de la raíz al nodo que hemos extendido.

Definición: Un conjunto de mensajes con M  K  q  K  1 es un conjunto de mensajes de Tunstall para una DMS K-
aria si el árbol K-ario enraizado puede formarse, comenzando con la raíz extendida, mediante q aplicaciones de
la regla: extienda la hoja más probable.
41

Ejemplo: Consideremos la fuente binaria sin memoria (BMS, por sus siglas en inglés) que tiene PU (0)  p1  0.6 y
PU (1)  p2  0.4 . El mensaje de Tunstall único con M = 5 mensajes corresponde al árbol:

donde los nodos han sido numerado para mostrar el orden en el cual fueron extendidos por la regla de
extensión de la hoja más probable. (Hay dos conjuntos diferentes de mensajes de Tunstall con M = 6 mensajes
para esta fuente porque hay un empate para la hoja más probable que se extendería después en el árbol
anterior.) Por el lema de la longitud de la trayectoria, vemos que la longitud promedio del mensaje para este
conjunto de mensajes de Tunstall es
E Y   1  0.60  0.40  0.36  2.36 letras
Observe que, para el conjunto de mensajes de Tunstall del ejemplo previo, la probabilidad (0.24) de la hoja más
probable no excede la probabilidad (0.36) del nodo menos probable. ¡Esto no es accidental!

El Lema de Tunstall: Un conjunto de mensajes correctos para una DMS K-aria es un conjunto de mensajes de
Tunstall si y sólo si, en su árbol enraizado K-ario, todo nodo es por lo menos tan proable como toda hoja.

Demostración: Consideremos el desarrollo de un conjunto de mensajes de Tunstall comenzando desde la raíz


extendida y extendiendo repetidamente la hoja más probable. La raíz extendida tiene trivialmente la propiedad
de que ninguna hoja es más probable que único nodo (la raíz misma). Supongamos que esta propiedad se
mantiene por las primeras i extensiones. En la siguiente extensión, ninguna de las K hojas nuevas puede ser más
probable que el nodo que se acaba de extender y por tanto ninguna es más probable que cualquiera de los viejos
nodos puesto que éstos eran al menos tan probables como la vieja hoja que se acaba de extender. Pero ninguna
de las viejas hojas restantes es más probable que cualquier nodo viejo ni más probable que el nuevo nodo ya que
este último nodo era previamente la más probable de las hojas viejas. Por tanto, la propiedad deseada se cumple
también después de i +1 extensiones. Por inducción, esta propiedad se cumple para todo conjunto de mensajes
de Tunstall.
Inversamente, consideremos cualquier conjunto de mensajes correctos con la propiedad de que, en si árbol K-
ario, ninguna hoja es más probable que cualquier nodo intermedio. Esta propiedad todavía se cumple si
“podamos” el árbol cortando las K ramas que se originan en el nodo menos probable. Luego de suficientes de
esas podas, nos quedará solamente la raíz extendida. Pero si entonces desarrollamos de nuevo el mismo árbol
extendiendo hojas en el orden inverso a nuestra poda de nodos, en cada paso estaremos extendiendo la hoja más
probable. Por tanto, este conjunto de mensajes correctos era efectivamente un conjunto de mensajes de Tunstall,
y el lema queda demostrado.
42

Ahora es muy sencillo demostrar el teorema siguiente:

Teorema 2.3: Un conjunto de mensajes correctos con M mensajes para una DMS maximiza la longitud promedio
del mensaje, E[Y], para todos estos conjuntos de mensajes correctos si y sólo si es un conjunto de mensajes de
Tunstall.

Demostración: Consideremos el árbol enraizado K-ario semi-infinito para la DMS que tiene cada nodo marcado
con la probabilidad de que la fuente emita la secuencia de letras en las ramas desde la raíz hasta el nodo. Por
ejemplo, para la BMS con PU (0)  0.6 , este árbol es

Las observaciones claves que se tienen que hacer aquí son:


(1) que todos los vértices en el subárbol semi-infinito que se extienden desde cualquier nodo dado son menos
probables que ese nodo, y
(2) que todos los vértices (tanto nodos como hojas) en el árbol K-ario de un conjunto de mensajes correctos
para esta DMS también son nodos con las mismas probabilidades en este árbol semi-infinito.

Del lema de Tunstall se deduce entonces que un conjunto de mensajes correctos con M  K  q  K  1 mensajes
es un conjunto de mensajes de Tunstall si y sólo si su q + 1 nodos son los q + 1 nodos más probables en este árbol
semi-infinito. Por tanto, la suma de las probabilidades de los nodos es la misma para todos los conjuntos de
mensajes Tunstall con M mensajes y estrictamente excede la suma de las probabilidades de los nodos en
cualquier conjunto de mensajes correctos de Tunstall con M mensajes. El teorema se deduce ahora del Lema de
la Longitud de la Trayectoria.
El lector puede ahora seguramente anticipar cómo se usarán los conjuntos de mensajes de Tunstall para realizar
codificación óptima de longitud variable a bloques de una DMS. La única pregunta es cuál debe ser el tamaño
del mensaje. Supongamos que se especifica la longitud N del bloque y también el tamaño D del alfabeto de
codificación. Entonces hay solamente DN palabras de código posibles, de modo que el número M de mensajes
no debe ser mayor que DN . Debemos seleccionar a M tan grande como sea posible ya que queremos maximizar
E[Y]. la longitud promedio del mensaje. De (2.33) vemos que podemos incrementar M sólo en pasos de tamaño
K  1. Por tanto, el mayor valor de M que podemos usar corresponde al entero q tal que

0  DN  M  DN  K  q  K  1  K  1
o, el equivalente, tal que
DN  K  q  K  1  r donde 0  r  K 1 (2.35)

Pero, gracias a Euclides, ahora vemos de (2.35) que este valor de q no es nada más sino el cociente cuando
DN  K es dividido por K  1. [Observe que se requieres que DN  K porque el conjunto más pequeño de
mensajes correctos (a saber, la raíz extendida) tiene K mensajes]. Entonces, con la ayuda del Teorema 2.3, ahora
hemos justificado lo siguiente:
43

Algoritmo de Tunstall para Codificación Óptima D-aria de Bloques con Longitudes de Bloques N de un
Conjunto de Mensajes Correctos para una DMS K-aria con Variable de Salida U.

Paso 0: Verifique que DN  K . Si no lo es, aborte el proceso porque no es posible ninguna codificación. De lo
contrario, calcule el cociente q cuando DN  K es dividida por K  1.
Paso 1: Construya el conjunto de mensajes de Tunstall de tamaño M  K  q  K  1 para la DMS comenzando
desde la raíz extendida y formando q extensiones de la hoja más probable en cada paso.
Paso 2: Asigne una palabra de código D-aria distinta de longitud N a cada mensaje en el conjunto de mensajes
de Tunstall.

Ejemplo 2.16: Para la BMS (K = 2) con PU (0)  0.6 , supongamos que queremos formar un código de bloques
binario (D = 2) óptimo con longitud de bloque N = 3 de un conjunto de mensajes correctos. Del Paso 0 en el
algoritmo anterior, hallamos q = 6. El paso 1 da entonces el siguiente conjunto de mensajes de Tunstall:

De acuerdo con el paso 2, ahora asignamos las palabras de código:

mensaje palabra de código


0000 000
0001 110
001 001
010 010
011 011
100 100
101 101
11 111

Por conveniencia de implementación, hemos seleccionado la palabra código igual a la del mensaje para aquellos
mensajes de longitud N = 3 y tan semejantes al mensaje como pudimos en los otros casos. Por el lema de la
longitud de la trayectoria, vemos que la longitud promedio del mensaje es
E Y   1  0.6  0.4  0.36  0.24  0.24  0.216  3.056
44

tal que
N
 .982 dígitos de código dígito de fuente
E Y 
El inverso del teorema de codificación para codificación libre de prefijo de un conjunto de mensajes correctos
nos dice que la razón anterior no podía ser menor que
H U 
 h  A  0.971 dígitos de código dígito de fuente
log D

Observe que si hubiésemos usado “ninguna codificación” (lo que es posible aquí puesto que el alfabeto fuente y
el alfabeto de codificación coinciden), entonces habríamos logrado trivialmente 1 dígito de código/dígito de
fuente. Sería una cuestión económica determinar si el 2% de reducción en los dígitos del código ofrecido por el
esquema de Tunstall en el ejemplo anterior valía el costo de su implementación. De hecho, vemos que ningún
esquema de codificación podría “comprimir” esta fuente binaria por más de 3%, de modo que Tunstall no lo
hizo demasiado mal.
El inverso del teorema de codificación para codificación libre de prefijo de un conjunto de mensajes correctos
implica la cota superior del siguiente teorema:

El Teorema de Codificación de Longitud Variable a Bloques para una DMS: La razón E[Y]/N de la longitud promedio
del mensaje a la longitud del bloque para una codificación de bloque óptima D-aria de longitud N de un
conjunto de mensajes correctos para una DMS K-aria satisface

log D log  2 pmín  E Y  log D


   (2.36)
H U  N H U  N H U 

donde H(U) es la incertidumbre de una sola letra de lafuente y donde pmín  mín PU  u  es la probabilidad de la
u
letra de la fuente menos probable.

Nuestra convención para codificar una DMS implica que pmín > 0. De (2.36) vemos entonces que podemos hacer
que E[Y]/N esté tan cerca como queramos de la cota superior log D H U  . Por tanto, tenemos otra afirmación
del hecho de que H(U) es la verdadera “tasa de información” de una DMS.

Demostración de la cota inferior en (2.36): El mensaje menos probable en el conjunto de mensajes tiene
probabilidad Ppmín , donde P es la probabilidad del nodo del cual se origina, pero como hay M mensajes, este
mensaje menos probable tiene probabilidad como máximo de 1/M, así que debemos tener
1
Ppmín  (2.37)
M
Por el Lema de Tunstall, ningún mensaje (es decir, ninguna hoja) tiene probabilidad mayor que P, de modo que
(2.37) implica que
1
PV  v   , toda v
 Mpmín 
que a su vez implica
 1 
 log PV  v   log M  log   (2.38)
 pmín 

Ahora, recuerde que el número M  K  q  K  1 de mensajes se seleccionó con q tan grande como fuese posible
para DN palabras de código, así que seguramente

M *  K  1  DN (2.39)
45

Pero M  K tal que (2.39) además implica que

2 M  M  K  DN
que, al sustituirse en (2.38), da
 2 
H V   N log D  log   (2.40)
 pmín 
Utilizando ahora el Teorema 2.2, vemos que (2.40) es equivalente a

 2 
E Y  H U   N log D  log   (2.41)
 pmín 
y al dividir por NH(U), se obtiene la desigualdad en (2.36).
A pesar de su importancia fundamental, el trabajo de Tunstall nunca fue publicado en la literatura abierta
(pública). La tesis doctoral de Tunstall (A. Tunstall, “Synthesis of Noiseless Compression Codes” Ph.D thesis,
Georgia Institute of Technology, Atlanta, GA, 1968). la cual contiene este trabajo, permaneció inadvertida por
muchos años antes de ser conocida por los teóricos de la información.
El trabajo de Tunstall muestra cómo hacer codificación óptima de longitud variable a bloques de una DMS, pero
sólo cuando se ha decidido usar un conjunto de mensajes correctos. Un conjunto de mensajes “casi correctos”
(como por ejemplo el tercer conjunto de mensajes en el Ejemplo 2.13) en el cual hay por lo menos un mensaje en
cada trayectoria desde la raíz hasta un hoja en su árbol K-ario, pero algunas veces más de un mensaje, también
puede utilizarse. Lo que es sorprendente (como mostrarán los ejercicios), algunas veces se puede hacer una
mejor codificación de longitud variable a bloques de una DMS con un conjunto de mensajes casi correctos que
con un conjunto de mensajes correcto que tienen el mismo número de mensajes, aunque no se pueden usar
menos que  log D H U  letras de la fuente por dígito de código D-ario en el promedio. Quizás, hasta más
sorprendente, nadie sabe en la actualidad cómo hacer codificación óptima de longitud variable a bloques de una
DMS con un número dado de mensajes cuando se permiten conjuntos de mensajes casi correctos.

2.4 Codificación de Fuentes con Memoria


2.4.1 Fuentes Estacionarias Discretas

La mayoría de las fuentes de información reales exhiben memoria sustancial, de modo que la DMS no un
modelo apropiado para ellas. Ahora se introduce un modelo para fuentes con memoria que es lo suficientemente
general para modelar bien la mayoría de las fuentes de información reales, pero todavía es bastante sencillo para
ser analíticamente amigable.
Una fuente K-aria estacionaria y discreta (DSS) es un dispositivo que emite una secuencia U1, U2, U3, … de variables
aleatorias K-arias de manera que para toda n  1 y toda L  1, los vectores aleatorios U1 , U2 , , UL  y
Un11 , Un22 , , UnL  tienen la misma distribución de probabilidades. En otras palabras, para toda longitud
de ventana L a lo largo de la secuencia de salida de la DSS, se verá la misma conducta estadística
independientemente de dónde se coloca esa venta a lo largo de la secuencia de salida de la DSS. Otra forma de
decir esto es que las estadísticas de la secuencia de salida de la DSS son invariantes en el tiempo.
Para especificar un DSS, debemos en principio especificar la distribución de probabilidades conjunta para toda
L  1. Esto es equivalente a especificar PU1 y PU U U para toda L 2.
L 1 L1

Se dice que una DSS tiene memoria finita  si, para toda n > , la relación

PU
n U1 Un1 un u1 , , un1   PU
n Un Un1 un un , , un1  (2.42)

se cumple para todas las selecciones de u1, … , un y si  es el menor entero negativo tal que ésta se cumple. [Por
convención, se interpreta a PU U U como precisamente PUn cuando  = 0.
n 1 n1
46

La fuente sin memoria discreta (DMS) es el caso especial de la fuente estacionaria discreta (DSS) con memoria 
= 0. De (2.42) se deduce que, para una DSS con memoria , la relación

H Un U1 Un1   H Un Un Un1  (2.43)

se cumple para toda n > . [ H Un U1 Un1  se interpreta como precisamente H U1  cuando n = 1.] De hecho,
(2.43) puede alternativamente considerarse como la definición de memoria finita  para una DSS, porque (2.42)
es equivalente a (2.43), como se deduce del Corolario 2 al Teorema 1.2.
Hasta el momento el lector habrá llegado a esperar que la “tasa de información” de una fuente es la
“incertidumbre por letra” de la secuencia de salida. La forma obvia para definir la incertidumbre por letra de la
secuencia de salida es definir primero la incertidumbre por letra de L letras como
1
HL U   H U1U2 UL  (2.44)
L
y entonces hacer que L tienda a infinito. Pero hay otra forma razonable de definir la incertidumbre por letra, a
saber, como la incertidumbre de una letra de salida dadas L  1 letras precedentes, esto es, como
H UL U1 UL1  , y entonces hacer que L tienda a infinito. ¿Cuál es la noción correcta? El resultado siguiente
muestra que de hecho ambas de estas formas para definir la “incertidumbre por letra” de una DSS dan el mismo
valor conforme l tiende a infinito, es decir, ¡ambas nociones son correctas!

Caracterización Teórica de Información de una DSS: Si U1, U2, U3, … es la secuencia de salida de una DSS, entonces

(i) H UL U1 UL1   HL U  para toda L  1;

(ii) H UL U1 UL1  es no creciente conforme L crece;

(iii) HL(U) es no creciente conforme L crece, y

(iv) lím H UL U1 UL1   lím HL U  , esto es, ambos de estos límites siempre existen y ambos tienen el
L L

mismo valor, digamos H U  .

Demostración: Comenzamos por demostrar (ii), que el sitio más fácil para comenzar:

H UL1 U1 UL   H UL1 U2 UL   H UL U1 UL1 

donde se deduce la desigualdad porque la remoción del condicionamiento sólo puede incrementar la
incertidumbre y donde la igualdad se deduce por la invariabilidad en el tiempo de las estadísticas de una DSS.
Esto demuestra (ii) y ahora usamos (ii) para demostrar (i).

H U1U2 UL   H U1   H U2 U1    H UL U1 U L 1 


 L H UL U1 UL  1 

donde la desigualdad se deduce porque (ii) implica que cada término en la suma precedente es por lo menos tan
grande como el último término; dividiendo por L en la desigualdad da (i). Ahora podemos usar (i) y (ii) para
demostrar (iii) en la forma siguiente:

H U1U2 UL1   H U1 UL   H UL 1 U1 UL 


 H U 1 UL   H UL U1 U L 1 
 H U 1 UL   HL U 
  L  1 HL U 
47

donde la primera desigualdad proviene de (ii) y la segunda de (i); dividiendo por L + 1, se obtiene

HL1 U   HL U 

que es la afirmación de (iii).

Por supuesto, HL U   0 y H UL U1 , , UL1   0 , puesto que las incertidumbres no pueden ser negativas.
Pero una secuencia no creciente acotada por debajo siempre tiene un límite. Por tanto, (ii) y (iii) aseguran que
tanto lím H UL U1 , , UL1  y lím HL U  siempre existan. Además, (i) implica que
L L

lím H UL U1 , , UL1   lím HL U  H U  (2.45)


L L

La única tarea por realizar es demostrar que de hecho la igualdad se cumple en esta desigualdad. Aquí
necesitamos usar algo de astucia.. Comenzamos con

H U1 UL ULn   H U1 UL   H UL1 U1 UL   H ULn U1 U L  n 1 


 H U1 UL   nH UL1 U1 UL 

donde la desigualdad sale del hecho de que (ii) implica que H UL1 U1 , , UL  es la mayor de las n
incertidumbres condicionales en la suma precedente; dividiendo por n + L da
H U1 UL  n
HLn U    H UL1 U1 UL 
nL nL
El truco ahora está hacer que n, y no L, tienda a infinito, lo cual da

H U   H UL1 U1 UL  (2.46)

donde se usó el hecho de que H U1 UL   L log K , de modo que este término dividido por n + L se anula
conforme n tiende a infinito. Pero ahora se sigue por la Ec. (2.46) que

lím H UL U1 , , UL1   H U  (2.47)


L

Las dos ecuaciones, (2.45) y (2.47), juntas muestran que la igualdad se cumple en dos desigualdades, lo que
completa la demostración.

Hemos visto ahora que H(U) es la forma natural para definir la “incertidumbre por letra” de una DSS. Nuestra
experiencia hasta ahora sugiere que debe ser posible codificar una DSS con letras D-arias, digamos con algún
tipo de código libre de prefijo, en una forma tal que estemos tan cerca como queramos de H U  log D dígitos
de código por letra de la fuente en promedio, pero que no podemos usar menos. En el resto de este capítulo,
demostraremos que éste es efectivamente el caso. Observe que, para una DSS con memoria finita , la Ec. (2.43)
 
muestra que H U   H U1 U1 U , lo que, de nuevo, es muy natural.

2.4.2 Inverso del Teorema de Codificación para una DSS

Por sencillez, consideraremos solamente análisis de bloques de la secuencia de salida de un DSS, pero en la
práctica también se usa con frecuencia análisis de longitud variable. La situación se muestra en la Fig. 2.6
Debido al analizador de mensajes de L-bloques, el i-ésimo mensaje a ser codificado es simplemente

Vi  UiLL1 , , UiL1 , UiL 


48

Codificador D-
Analizador
ario Libre de DSS
de Mensajes
Prefijo con K-aria
de L-Bloques
Memoria

Figura 2.6: La situación para codificación de bloques a longitud variable de una DSS.

para i = 1, 2, …. Sin embargo, como la fuente tiene memoria, tiene sentido permitir que el codificador tome en
cuenta mensajes previos cuando codifica el mensaje Vi. En principio, la codificador podría usar un código libre
de prefijo diferente para cada secuencia posible de valores para los mensajes previos V1, V2, … , Vi1; el
decodificador ya habría decodificado estos mensajes y por tanto también sabría qué código se usó para dar la
palabra Zi, que entonces decodificaría como Vi.
Dado que V1 , , Vi1   v1 , , vi1  , se deduce del inverso del teorema de codificación para una sola variable
aleatoria que la longitud Wi de la palabra de código Zi para el mensaje Vi debe satisfacer

H Vi V1 , , Vi 1   v1 , , vi 1 


E Wi V1 , , Vi 1    v1 , , vi 1  
log D

Multiplicando por PV1 Vi  1  v1 , , vi1  y sumando sobre todos los valores v1, … , vi – 1, se obtiene

H Vi V1 Vi 1 
E  Wi   (2.48)
log D

donde en el lado izquierdo de la desigualdad hemos aplicado el teorema de la “esperanza total”. Pero

H Vi V1 Vi 1   H UiLL1 UiL U1 UiL L 


 H UiLL1 U1 UiLL    H UiL U1 UiL 1 
 LH UiL U1 UiL1 
 LH U  (2.49)

donde la primera desigualdad se obtiene porque por l parte (ii) de la Caracterización Teórica de una DSS, el
último término es el más pequeño en la suma precedente, y donde la segunda desigualdad se deduce de las
partes (ii) y (iv). Sustituyendo (2.49) en (2.48) da el siguiente resultado fundamental:

Inverso del Teorema de Codificación para Codificación de Bloques a Longitud Variable de una Fuente Estacionaria Discreta:
Si mensajes de bloques de longitud L de una DSS son codificados mediante un código D-ario libre de prefijo,
donde el código usado para cada mensaje puede depender de mensajes previos, entonces la longitud W de la
palabra de código para el i-ésimo mensaje satisface la desigualdad

E  Wi  H  U 
 (2.50)
L log D
donde H(U) es la incertidumbre por letra de la DSS.

2.4.3 Codificación de los Enteros Positivos

En esta sección describimos un código binario libre de prefijo muy ingenioso para los enteros positivos que
usaremos posteriormente dentro de un esquema de codificación eficiente para cualquiera DSS.
Actualmente todos están familiarizados con la representación binaria “estándar” de los enteros positivos, como
se ilustra en la pequeña tabla siguiente:
49

n B(n)
1 1
2 10
3 11
4 100
5 101
6 110
7 111
8 1000

La primera característica obvia de este código de “base dos” para los enteros positivos es que no es libre de
prefijos; de hecho, ¡toda palabra de código B(n) es el prefijo de infinitamente muchas otras palabras de código!
Dos otras propiedades son de un interés especial: (1) toda palabra de código tiene 1 como su primer dígito, y (2)
la longitud L(n) de la palabra de código B(n) es dada por
L  n    log 2 n  1 (2.51)

Hay algo intuitivamente agradable sobre el hecho de que L(n) es aproximadamente igual a log 2 n , pero en este
punto es difícil decir por que esto es tan natural. No obstante, ciertamente nos gustaría, y quizás sorprendería,
hallar que existiese un código binario libre de prefijos para los enteros positivos de manera que la longitud de la
palabra de código para n también fuese aproximadamente igual a log 2 n , y hasta más sorprendente, si esta
codificación pudiese implementarse fácilmente. Pero precisamente un código así ha sido dado por Elias.

Elias comenzó por introducir primero un código binario B1    para los enteros positivos que es obviamente
libre de prefijos, pero no necesariamente útil. El truco es simplemente añadir un prefijo de L(n)  1 ceros a la
palabra de código estándar B(n) para formar la palabra de código B1(n), como se ilustra en la pequeña tabla
siguiente:

n B1(n)
1 1
2 010
3 011
4 00100
5 00101
6 00110
7 00111
8 0001000

El número de ceros delanteros en una palabra de código nos dice exactamente cuántos dígitos seguirán al
inevitable 1 dominante. Por tanto, sabemos dónde finaliza la palabra de código cuando es seguida por otras
palabras de código, lo que significa que el código es libre de prefijo. Por ejemplo, la secuencia 0100011000111…
es reconocible de forma no ambigua como la secuencia de palabras de código para la secuencia de enteros
positivos 2, 6, 7, …. El único problema es que las palabras de código tienen aproximadamente el doble de la
longitud que nos gustaría que tuviesen. Más precisamente, la longitud L1(n) de la palabra de código B1(n) es
dada por
50

L1 (n)  2 log 2 n  1 (2.52)

El segundo truco que Elias sacó de su sombrero de mago fue usar su primer código para señalizar el número de
dígitos siguientes en la palabra de código y después añadir el código natural B(n) cuyo 1 dominante puede ahora
descartarse para ganar eficientita. Más precisamente, la palabra de código B2(n) en este segundo código de Elias
para los enteros positivos comienza con B1  L  n   , seguido por B(n) con el 1 dominante removido. Una vez más
damos una pequeña tabla:

n B2(n)
1 1
2 0100
3 0101
4 01100
5 01101
6 01110
7 01111
8 00100000

Como el código B1    es libre de prefijo, podemos reconocer la primarte B1  L  n   de la palabra de código B2(n)
tan pronto como vemos el último dígito de B1  L  n   y, por tanto, sabemos el número L(n) de dígitos en el resto
de la palabra de código. En consecuencia, la codificación B2    es efectivamente libre de prefijo. También es
fácil obtener el código natural a partir de B2(n), solamente colocamos un 1 delante de la segunda parte de la
palabra de código.
¿Cuál es la eficiencia de este segundo código libre de prefijo de Elias B2(n) para los enteros? La longitud L2(n) de
B2(n) es dada por

L2 (n)  L1  L  n    L  n   1
 L1   log 2 n  1   log 2 n
  log 2 ( n)  2  log 2   log 2 n  1   1 (2.53)

donde hemos utilizado (2.51) y (2.52). Como log 2  log 2 n  se vuelve despreciable en comparación con log 2 n
para grandes enteros positivos n, de (2.53) vemos que Elias ha hecho lo que parecía imposible, a saber, dado un
código binario, libre de prefijo fácil de implementar para los enteros positivos en los cuales la longitud de la
palabra de código para n es aproximadamente log 2 n . Por supuesto, este código trabaja cuando n es grande,
pero no es del todo malo para n más bien pequeña. Se invita al lector para que haga una tabla de B(n), B1(n) y
B2(n) para 1  n  64, la que confirmará que
L2 (n)  L1(n) sólo para 2  n  15,
L2 (n)  L1(n) sólo para n  1 y 16  n  31,
L2 (n)  L1(n) sólo para toda n  32.

Pronto veremos con la segunda codificación de Elias de los enteros de Elias puede usarse para una eficiente
codificación binaria libre de prefijos de cualquiera DSS.

2.4.4 Esquema de Codificación de Fuente de EliasWillems

La Fig. 2.7 muestra las partes esenciales del esquema de codificación de fuente de EliasWillems para una DSS
K-aria.
51

Zi Ni Calculador Vi Analizador U1 , U2 , …
DSS
B(  ) de Rango de Mensaje
K-aria
Reciente de Bloque L

Figura 2.7. El Esquema de Codificación de Fuente de Elias-Willems para una DSS.

La única parte de este esquema de codificación de fuente que no hemos visto antes es el dispositivo que hemos
llamado el “calculador de rango reciente”. Para explicar este dispositivo, suponemos primero que el esquema ha
estado operando por un largo tiempo, esto es, i >> 1 y que ha ocurrido todo valor de los K L valores posibles de
un mensaje de bloque L como el valor de algún mensaje pasado Vj, 1  j < i. Entonces el valor del mensaje visto
más recientemente tiene rango reciente 1, el siguiente valor de mensaje diferente más recientemente visto tiene
rango reciente 2, etc. Como un ejemplo sencillo, supongamos que L = 2 de modo que los valores de cuatro
mensajes posibles son [00], [01]. [10] y [11]. Supongamos que la secuencia de mensajes pasados es
Vi1 Vi1  11 00 11 00 10 11 01 01

Entonces el mensaje [01] tiene rango reciente 1, el mensaje [11] tiene rango reciente 2, [10] tiene rango reciente 3
y [00] tiene rango reciente 4. El calculador de rango reciente dl esquema Elias-Willems asigna al mensaje Vi el rango
reciente Ni del valor de este mensaje en la secuencia de mensajes pasados. Continuando nuestro ejemplo, vemos
que si Vi = [10], entonces Ni = 3 sería la salida del calculador de rango reciente. En el siguiente paso, [10] tendría
rango reciente 1, etc. Por supuesto, cuando primero comienza la codificación y por cierto tiempo después, no
todos los valores de los mensajes tendrán un rango reciente genuino. Esto no es un problema muy importante y
puede resolverse con simplemente dar a todos los valores de los mensaje un rango reciente artificial y arbitrario
cuando comienza la codificación – cuando el valor de un mensaje particular aparece, adquirirá un rango reciente
verdadero y continuará teniendo rango reciente genuino para todos los tiempos futuros.
Queda por determinar con cuánta eficiente codifica una DSS el esquema de Elias-Williems. Con este fin,
supongamos que la codificación ha estado en progreso por un tiempo lo suficientemente largo para que todos
los valores de los mensajes hayan aparecido por lo menos una vez en el pasado de modo que todos los rangos
recientes son genuinos. Ahora definimos el tiempo i a la ocurrencia más reciente de Vi en la forma que si Vi = v,
entonces i = , donde Vi es el mensaje pasado más reciente con este mismo valor v. En nuestro ejemplo previo
con Vi = [10], tenemos i = 5 puesto que Vi es el mensaje pasado más reciente con valor [10]. Sin embargo,
recuerde que Ni = 3 para este ejemplo. A continuación notamos que
Ni   i (2.54)

siempre se cumple, ya que solamente los valores de Vi1 , , Vii 1 (que podrían no ser todos diferentes)
podrían tener rangos recientes menores que el valor v de Vi.
Ahora hacemos la suposición de que la DSS que está siendo codificada es ergódica, esto es, sus “estadísticas en el
tiempo” son las mismas que sus “estadísticas en probabilidades”. Esto significa que uno examina una secuencia
muy larga U1 , U2 , , UN L1 , entonces la fracción de las N ventanas Ui1 , Ui2 , , UiL  , 0 ≤ i < N, en la
cual aparece un patrón particular a1 , a2 , , aL es virtualmente igual a PU1 UL  a1 , , aL  para toda L ≥ 1 y
todas las selecciones de a1 , a2 , , aL . La ergodicidad es un requerimiento técnico que no es de mucha
importancia – la mayoría de las fuentes de información reales son ergódicas. Nuestra única razón para suponer
que la DSS es ergódica es porque queremos llegar a la simple conclusión de que
1
E   i Vi  v  
  P ( v)
(2.55)
V

donde V  U1 , , UL  . Esto se deduce del hecho que, como la fracción de mensajes igual a v debe ser PV ( v)
por la ergodicidad, el espaciamiento promedio entre estos mensajes debe ser 1 PV ( v) . [También hemos usado
52

tácitamente el hecho obvio de que la erodicidad de la secuencia de salida de la fuente U1 , U2 , garantiza la


ergodicidad de la secuencia del mensaje V1 , V2 , .]

Puesto que la palabra de código binaria Zi para el mensaje Vi es precisamente la palabra del código libre de
prefijo de Elias B2  Ni  para el rango reciente N i , se deduce que la longitud Wi es

Wi  L2  Ni   L2  i  (2.56)

debido a (2.54) y al hecho que L2 (n) es no decreciente conforme n crece. Debilitando (2.53) ligeramente da

L2 (n)  log 2 n  2 log 2  log 2 n  1  1

que ahora podemos usa en (2.56) para obtener

Wi  log 2  i   2 log 2  log 2  i   1  1 (2.57)

Tomando la esperanza condicional, dado que Vi  v , resulta en

   
E Wi Vi  v  log 2 E  i Vi  v  2 log 2 log 2 E  i Vi  v  1  1
        (2.58)

donde la aplicación de la esperanza dentro del logaritmo se justifica por la desigualdad de Jensen y el hecho de
que log    [y por tanto también log 2  log 2     ] es convexa. Ahora usamos (2.55) en (2.58) para obtener

E Wi V  v    log 2  PV  v    2 log 2   log 2  PV  v    1  1


 
Si multiplicamos por PV ( v) , sumamos sobre v e invocamos el teorema de la “esperanza total”, se obtiene

E Wi   H V   2 log 2  H V   1  1 (2.59)

donde hemos usado una vez más la desigualdad de Jensen y la convexidad∩ de log 2    . El paso final es notar
que
H(V )  H U1 , , UL 
 LHL U  (2.60)
Sustituyendo (2.60) en (2.59) y dividiendo por L da el resultado siguiente:

Teorema de la Codificación de Bloques a Longitud Variable de Elias-Willems para una DSS: Para el esquema de
codificación binario de Elias-Willems para mensajes en bloques de longitud L de una fuente K-aria estacionaria,
discreta y ergódica, la longitud Wi de la palabra de código para toda i suficientemente grande satisface la
relación
E  Wi  2 1
HL U   log 2  LHL U   1  (2.61)
L L L
Escogiendo L lo suficientemente grande, se puede hacer que E  Wi  L se acerque arbitrariamente a H .

De hecho, (2.61) se cumple aún si la DSS no es ergódica, pero la demostración es entonces algo más complicada
porque no podemos usar la conveniencia de (2.55).
El esquema de codificación de la fuente de Elias-Willems, a diferencia de nuestros esquemas previos de
codificación de la fuente, es universal, esto es, funciona muy para todas las fuentes en una gran clase y no
solamente para una fuente en particular para la cual ha sido diseñada. En un sentido muy real, el esquema de
53

Elias-Willems aprende sobre la DSS particular que está codificando del mismo proceso de codificación. Esta
universalidad es, por supuesto, una característica práctica muy importante de un esquema de codificación de
fuentes.
El esquema de Elias-Willems no solamente es asintóticamente óptimo conforme L tiende a infinito, sino que
también puede ser modificado para que sea una forma práctica y eficiente de codificar fuentes de información
reales. En versiones prácticas, resulta ser aconsejable mantener una lista de rango reciente diferente para cada
valor posible de los M mensajes previos, como se indica en la Fig. 2.8 para M = 2. También resulta prudente
reemplazar el codificador B2    de Elias de la Fig. 2.7 con un “codificador de Huffman adaptativo”, esto es, con
un código de Huffman diseñado para la frecuencia de ocurrencia observada de las entradas pasadas. Para L  8
y M = 2, tal esquema ha sido verificado para comprimir una amplia variedad de fuentes de información reales y
también cualquier otro esquema universal de codificación de uso actual.

Figura 2.8: Un esquema práctico de codificación de fuente basado en el esquema de Elias-Willems.


54