Está en la página 1de 23

CAPÍTULO 4: CODIFICACIÓN DE FUENTE:

Introducción:
A continuación veremos el diagrama de bloques de un sistema de transmisión digital:

Se dice que los símbolos son generados por una fuente y a la conversión a dígitos binarios se le
llama codificación de fuente (por ejemplo PCM o DPCM). El codificador de fuente también se
puede encargar de codificar eficientemente los datos binarios, asignando, por ejemplo, mas bits a
los símbolos menos probables y menos bits a los mas probables. Por su parte, el codificador de
canal introducirá bits redundantes de una manera controlada, con el fin de fortalecer la
información frente al ruido o a la interferencia que pueda conseguir en el canal.
Luego de pasar por un canal que, entre otras cosas, agrega ruido, el receptor se encarga de
realizar todas las operaciones inversas a fin de rescatar el mensaje original.

Clasificación de las fuentes de información

Las fuentes de información pueden clasificarse como fuentes analógicas (ej: señales de voz,
audio, señales biomédicas, señales provenientes de procesos físicos naturales en general, etc.) o
como fuentes discretas (ej: señales provenientes de texto, o de un computador (bits)). Si la
información debe ser transmitida por un sistema de Comunicaciones Digitales habrá que adaptar
al sistema (formatear o darle formato) de manera distinta la información que proviene de una
fuente analógica a aquella que proviene de una fuente discreta. A dicho proceso lo llamaremos
Codificación de fuente siempre que además de formatear se prevea la posibilidad de compactar la
información usando la posible redundancia que presente la fuente.

Fuentes discretas:
Para hacer el tratamiento lo más general posible modelaremos este tipo de fuente como
constituida por un alfabeto de símbolos independientes los cuales se generan de forma aleatoria
con valores de probabilidad regulares. Si la ocurrencia de cada valor en un momento determinado
no depende de la ocurrencia de los valores anteriores se dice que es una Fuente Discreta sin
Memoria. Los datos que vienen de un computador ya estarían, en principio, discretizados y listos
para alimentar un Sistema de Comunicaciones Digitales. Si la información proviene de caracteres
(por ejemplo letras de un alfabeto) habrá que formatear y aprovechar su redundancia para reducir
el número de bits necesarios para transmitir o almacenar los datos. Esto sería el proceso completo
de Codificación de Fuente.
Fuentes analógicas:
En este caso sería necesario aplicar procedimientos diferentes para adaptar este tipo de fuente al
Sistema de Comunicaciones Digitales. Consideraremos cada forma de onda como la salida de un
Proceso Ergódico con Densidad Espectral de Potencia conocida y a partir de la cual podrá
determinarse el ancho de banda de cualquiera de las señales. Para convertir esta señal analógica
en una forma digital se necesita Muestrearla, Cuantificarla y Codificarla.
A continuación comenzaremos con Codificación de Fuentes discretas para lo cual será necesario
comprender principios básicos contenidos en la Teoría de Información.

Teoría de Información:
La teoría de información puede ser vista como una rama de la teoría de probabilidad
aplicada y, dentro del área de comunicaciones, pretende dos objetivos: a) Desarrollo de los
límites teóricos de desempeño que se pueden alcanzar en cuanto a la transmisión de una fuente, a
través de un canal determinado utilizando cierto tipo de codificación b) Desarrollo de nuevos
esquemas de codificación que logren un desempeño razonablemente bueno comparado con el
límite teórico.
Una transmisión digital ideal es aquella en donde no ocurren errores. Sin embargo en el
sistema existe ruido que aumenta la probabilidad de error. Una forma de reducir la probabilidad
de error sería aumentar la energía por bit Eb; para esto, o se aumenta la potencia de transmisión
S, o se reduce la velocidad de transmisión Rb (Eb=S/Rb). Antes de 1948 se pensaba que era
imposible transmitir sin errores. Shannon estableció que:

1) Mientras la tasa de transmisión se mantenga dentro de ciertos límites, se podrá transmitir


sin errores. NO es necesario que Rb sea nula para lograrlo
2) Para esto hay que transmitir por debajo de lo que se conoce como capacidad del canal por
segundo (C )

Shannon utilizó dos medidas: a) la entropía de la fuente como medida de la cantidad de


información de la misma o autoinformación y b) una medida de información mutua o sea la
información que un proceso tiene sobre otro.

Cantidad de Información en un mensaje: Autoinformación e


Información mutua.
Cuando a uno le transmiten una noticia mientras menos probable sea mas información
lleva consigo. Por ejemplo
“La próxima clase nos vemos” o
“Venezuela rompe relaciones con USA”.
Es evidente que la segunda oración trata sobre un evento bastante menos probable que el primero
y que, por ende, lleva más información.
Si P=Probabilidad de un evento e I= Información, entonces una posible forma de relacionarlos es
a través de una función logarítmica
I es función de log 1/P.
Esto puede justificarse si se entiende que las restricciones son:
1) La información es un número positivo
2) Si la probabilidad de un mensaje es 1, entonces su información es nula
3) Si un mensaje A es mas probable que uno B, entonces la información de B es mayor
que la información que conlleva A
4) Si se tienen dos mensajes independientes A y B, cuando se transmite primero A y
luego B, la información recibida por el usuario es la suma de las informaciones de los
mensajes individuales. Si hablamos del evento C como el que representa la ocurrencia
de AyB, entonces P(C)=P(A).P(B); la información que lleva C es función de P(A)P(B)

Todo esto justifica la aparición de la función logarítmica para relacionar información con
probabilidad. La base que se elija para el logaritmo estará relacionada con la unidad de
información. Así si tomamos base 2, hablaremos de binary units o binary digits o bits. Esto
tiene un sentido adicional y es que lo más simple que podemos imaginar es 1 bit; entonces la
unidad de información estará normalizada respecto al caso de menor orden. Trataremos de no
confundir el bit como elemento de representación al bit que representa la unidad de información.
Recordemos que logax=logbx/logba
Si se usa logaritmo en base e(logaritmo natural), la unidad será el nat y cuando la base es
10, la unidad se denomina Hartley o decit. En definitiva la Información que proporciona un
evento X=xi llamada también autoinformación se calculará como:
1
I( x i ) = log
p( x i )
Supongamos ahora que tenemos dos variables aleatorias x, y provenientes de dos
alfabetos diferentes. Uno podría interesarse en calcular la cantidad de información que la
ocurrencia del evento Y=yi proporciona sobre el evento X=xi . Cuando estos son independientes
la ocurrencia de Y=yi no proporciona información sobre el evento X=xi . Un ejemplo de esto es
con los alfabetos de los diferentes idiomas. En español la letra u tiene una cierta probabilidad de
ocurrencia, sin embargo si se calcula la probabilidad de que la letra sea u en un texto si se sabe
que la letra anterior fue una q,esta probabilidad dará cercana a la unidad
Una medida apropiada de esta cantidad de información sería la siguiente
1 p( x i / y j )
I( x i ; y j ) = log = log
p( x i ) p( x i )
p( x i / y j )
Esta cantidad se llama la Información mutua entre xi y yj. Observe que la probabilidad se
normaliza respecto a la probabilidad condicional.
Ejemplo: Tomado del Proakis:
Suponga que X y Y son variables aleatorias binarias (0,1) que representan la entrada y la
salida de un canal. Los símbolos de entrada son equiprobables y los símbolos de salida dependen
de la entrada de acuerdo a las probabilidades condicionales siguientes:
P(Y=0/X=0)=1-p0
P(Y=1/X=0)= p0
P(Y=1/X=1)=1-p1
P(Y=0/X=1)= p1
Determine la información mutua acerca de la ocurrencia de los eventos X=0 y X=1 dado
que Y=0
P(Y=0)=P(Y=0/X=0)P(X=0)+ P(Y=0/X=1)P(X=1)=0.5(1- p0+ p1)
P(Y=1)=P(Y=1/X=0)P(X=0)+ P(Y=1/X=1)P(X=1)=0.5(1+ p0- p1)
Por lo tanto la información mutua acerca del evento X=0 dado que ocurre que Y=0, es:
I(X=0;Y=0)=log2[P(Y=0/X=0)/P(Y=0)]= log2[2(1- p0)/ (1- p0+ p1)]
Además
I(X=1;Y=0)=log2[P(Y=1/X=0)/P(Y=1)]= log2[2p1/ (1- p0+ p1)]
Si el canal no es ruidoso (noiseless channel) p0= p1=0
I(X=0;Y=0)= log2(2)=1 bit
Al conocer la salida se conoce la entrada con exactitud.

Si, en cambio p0= p1=0.5,


I(X=0;Y=0)= log2(1)=0 bit

Si, p0= p1=0.25,


I(X=0;Y=0)= log2(3/2)=0.587 bit
I(X=0;Y=1)= -1 bit
Claramente p0 y p1 definen la característica del canal y por tanto cambian la cantidad de
información mutua.
También se puede definir la Información condicional
I(xi/yj)=log(1/P (xi/yj))= -log P (xi/yj))
Se pueden relacionar las definiciones anteriores
I(xi; yj)= I(xi)- I(xi/yj)
I(xi/yj) puede ser interpretado como la auto información del evento X=xi después de haber
observado el evento Y=yj.
I(xi; yj) sera negativa cuando I(xi/yj)> I(xi)
I(xi; yj) sera positiva cuando I(xi/yj)< I(xi)
También puede ser nula
Entropía:
Llamaremos entropía H a la cantidad de información promedio por mensaje.
Consideremos una fuente de información de n símbolos, sin memoria, es decir donde cada
mensaje m i con probabilidad de ocurrencia Pi no tiene ninguna relación con los mensajes
anteriormente enviados.
La información contenida en cada mensaje mi será
I= log2(1/Pi) bits
Sabemos que la información promedio de la fuente será la sumatoria de las informaciones de
cada mensaje multiplicada por su probabilidad. Así:
n
H = ∑ I i Pi
i =1
y la unidad de la entropía, al igual que la de la información, serán bits
Sustituyendo la expresión anteriormente obtenida de Ii
n n
H = ∑ Pi log 2 (1 / Pi ) = −∑ Pi log 2 ( Pi )
i =1 i =1
Entonces podemos decir que la entropía de una fuente es una medida de las
probabilidades de los mensajes.
Si la fuente tiene una distribución de probabilidades que genera la máxima incertidumbre
(todos los mensajes son equiprobables), ésta será una fuente de máxima entropía.
Ejemplo: n mensajes equiprobables (P=1/n) daría una entropía igual a
H= log2n

La información es una medida de la incertidumbre o expectativa de un mensaje y también es


igual al mínimo número de bits requeridos para codificarlo
La entropía es una medida de la incertidumbre promedio (por mensaje) y también representa el
número de bits requeridos en promedio para codificar un mensaje de esa fuente.
n
H (m) = ∑ P (mi ) log 2 (1 / P (mi ))
i =1
Esto es una función de una variable aleatoria mi

Si la fuente se dice que tiene memoria porque la ocurrencia de los mensajes está
relacionada entre sí, la entropía tendrá un valor menor al dado por la ecuación anterior ya que la
relación entre mensajes disminuye la incertidumbre presente en cada uno de ellos.
Para un alfabeto de K símbolos, la entropía tiene un valor límite que es log2K. La
demostración es la que sigue:
Trabajemos la siguiente expresión, donde se tiene un alfabeto de K símbolos y qk y pk
representan dos distribuciones de probabilidad cualesquiera
K ⎛q ⎞
∑ p k log 2 ⎜⎜ k ⎟⎟
k =0 ⎝ pk ⎠
Cambiando el logaritmo base 2 a logaritmo base 10
K ⎛q ⎞ 1 K ⎛q ⎞
∑ p k log 2 ⎜⎜ k ⎟⎟ = ∑ p k log⎜⎜ k ⎟⎟ =
k =0 ⎝ pk ⎠ log 2 k =0 ⎝ pk ⎠
Pero, (observe la gráfica de abajo),
log x ≤ ( x − 1) para x ≥ 0

Entonces
⎛q ⎞ 1 K ⎛ qk ⎞ 1 K 1 K 1 K
∑ (q k − p k ) = ∑ (q k ) − ∑ (p k ) = 0
K
∑ p k log 2 ⎜⎜ k ⎟⎟ ≤ ∑ p k ⎜⎜ − 1⎟⎟ =
k =0 ⎝ pk ⎠ log 2 k =0 ⎝ p k ⎠ log 2 k =0 log 2 k =0 log 2 k =0

En definitiva
K ⎛q ⎞
∑ p k log 2 ⎜⎜ k ⎟⎟ ≤ 0 (1)
k =0 ⎝ pk ⎠
Por otra parte si la fuente está constituida por símbolos equiprobables, la entropía resulta
igual a H=log2K

K ⎛ 1 ⎞ 1 K
H = ∑ q k log 2 ⎜⎜ ⎟⎟ = ∑ log 2 K = log 2 K (2)
k =0 ⎝ qk ⎠ K k =0
Si insertamos esta igualdad en la ecuación (1)

K ⎛q ⎞
∑ p k log 2 ⎜⎜ k ⎟⎟ ≤ 0
k =0 ⎝ pk ⎠
⎛ 1 ⎞
∑ p k log 2 (q k ) + ∑ p k log 2 ⎜⎜
K K
⎟⎟ ≤ 0
k =0 k =0 ⎝ pk ⎠
K ⎛1⎞
∑ p k log 2 ⎜ ⎟ + H p ≤ 0
k =0 ⎝K⎠
⎛1⎞K
log 2 ⎜ ⎟ ∑ p k + H p ≤ 0
⎝ K ⎠ k =0
⎛1⎞
log 2 ⎜ ⎟ + H p ≤ 0
⎝K⎠
− log 2 (K ) + H p ≤ 0
H p ≤ log 2 (K )
Hagamos el análisis de la entropía para un alfabeto de dos símbolos 0 y 1: Suponga que
p0es la probabilidad de que se transmita 0 y p1=(1-p0) es la probabilidad de que se transmita 1.
H=-p0 log2 p0- (1-p0) log2 (1-p0). Cuando se grafica esto en función de p0 resulta lo
siguiente:
Habiendo definido la autoinformación, la información mutua y la entropía, es interesante
introducir un nuevo concepto: la tasa de información, ya que, desde el punto de vista práctico una
empresa cobra por el tiempo en que se tarda en transmitir un mensaje; la información en un
mensaje depende entonces del mínimo tiempo para transmitirlo, esto implica que los mensajes
menos probables se tomarán mas tiempo en transmitirse. Si tomamos como ejemplo la
transmisión de letras de nuestro alfabeto, debiésemos asignar menos bits a la letra “a” (ocurre
frecuentemente) que a la letra “x” (ocurre raras veces).

Mostraremos a continuación que el tiempo para transmitir un mensaje es proporcional a


log(1/P)
Tasa de Información:
Si una fuente genera k mensajes por segundo, entonces la tasa de información, en bits por
segundo si es logaritmo en base 2, será R=kH.
Ejemplo 1(tomado del Taub & Schilling):
Una señal analógica, de ancho de banda B, es muestreada a frecuencia de Nyquist (2B) y
cuantificada con 4 niveles (M=4) independientes. Suponga que los 4 niveles ocurren con las
siguientes probabilidades P(N1)=P(N2)=1/8 y P(N3)=P(N4)=3/8. Determine la tasa de
información de esta fuente.
Primero se calcula H=p(N1)log(1/ p(N1))+ p(N2)log(1/ p(N2))+ p(N3)log(1/ p(N3))+
p(N4)log(1/ p(N4))=1.8 bits
Entonces la tasa de información será
R=2B*H=3.6 B bits/seg.
Observe que si los niveles de cuantificación fuesen igualmente probables entonces H=2 bit y
R=4B bits/segundo lo cual es mejor.

Ejemplo 2:
Supongamos dos mensajes posibles (0 y 1) equiprobables. Requeriríamos 1 solo bit para
enviarlos
Supongamos 4 mensajes (00, 01, 10 y 11) equiprobables. Requeriríamos 2 bits para
enviarlos
En este último caso se tardaría el doble de tiempo que en el primer caso en enviar 1
mensaje y tiene dos veces mas información.
Si tenemos n mensajes probables, requeriríamos log2n dígitos binarios para transmitirlos.
En este caso la probabilidad de cada mensaje es 1/n
La información contenida en un mensaje con probabilidad P es proporcional a log 1/P es decir
I=k log2n
Si se toma k=1
I= log2(1/P) bits (binary units o binary digits)= log2n bits
Resultado al que ya habíamos llegado antes intuitivamente.
La interpretación de esto es que hacen falta I bits para codificar los mensajes.

Ejemplo:
Supongamos una fuente que emite 4 posibles mensajes
m1; P(m1)=0.5; m2; P(m2)=0.3; m3; P(m3)=0.15; m4; P(m4)=0.05
Entonces
I(m1)=log2(1/P(m1))=3.32log10(1/P(m1))=0.99
I(m2)=log2(1/P(m2))=3.32log10(1/P(m2))=1.73
I(m3)=log2(1/P(m3))=3.32log10(1/P(m3))=2.73
I(m4)=log2(1/P(m4))=3.32log10(1/P(m4))=4.31
Observe como I decrece cuando P aumenta.
Si llegasen estos 4 mensajes uno tras otro (m1m2m3m4), asumiendo independencia, la
información total de este nuevo mensaje sería igual a 9.76 bits. Si todos fuesen equiprobables
P(m1)= P(m2)= P(m3)= P(m4)=1/4, la información de uno de los mensajes sería 2 bits, número
necesario para representarlo. Para 4 seguidos daría 8 bits.
Ejercicio: Compare la cantidad de información de una imagen de 8 niveles de grises de 500
pixels x 500 pixels con la de 1000 palabras, asumiendo un vocabulario de 100000 palabras
igualmente probables.

Codificación de fuente
El objetivo de la codificación de fuente es minimizar la tasa promedio de bits requerida para
representar la fuente de información, reduciendo su redundancia y aumentando así la eficiencia
del sistema. Si se conoce la estadística de la fuente una buena idea pareciera asignar códigos
cortos a los símbolos más frecuentes y códigos largos a los menos frecuentes. La primera persona
que de manera empírica usó esto fue Samuel Morse (1791-1872). Observe, en la siguiente tabla,
el código asignado a la A y el asignado a la Y.

A ·- J ·--- R ·-·
B -··· K -·- S ···
C -·-· L ·-·· T-
D -·· M -- U ··-
E· N -· V ···-
F ··-· Ñ --·-- W ·--
G --· O --- X -··-
H ···· P ·--· Y -··--
I ·· Q --·- Z --··
Otra característica es que los códigos debían poder ser decodificados unívocamente.
Recordemos que si los mensajes son equiprobables , la entropía había resultado
H= log2(1/P) =log2n
Si los mensajes no son equiprobables y si se transmiten N mensajes
Cada mensaje mi ocurre NPi veces
La probabilidad de que ocurra una secuencia específica de mensajes será
P ( S N ) = ( P1 ) NP1 ( P2 ) NP2 ....( PN ) NPN
Debido a la composición que se ha escogido para la secuencia SN, estas son equiprobables y la
información, en este caso resultará igual a log2(1/P( SN)) y está será la cantidad de bits requerida
(LN) para transmitir los mensajes
log 2 (1 / P( S N )) = log 2 (1 /(( P1 ) NP1 ( P2 ) NP2 ....( PN ) NPN )) =
log 2 (1 /( P1 ) NP1 ) + log 2 (1 /( P2 ) NP2 .) + ... + log 2 (1 /( PN ) NPN )) =
N ∑ Pi log 2 (1 / Pi ) = NH (m)

Esta es entonces la longitud de las palabras código requeridas para codificar N mensajes en una
secuencia.
Por lo tanto el número de bits promedio (dígitos promedio por mensaje) se consigue dividiendo
esa cantidad entre N resultando justamente el valor de la entropía de la fuente. Este valor es el
mínimo posible que permite representar el código.

En general la longitud promedio de los códigos será


N
L = ∑ pi li
i =1
donde pi es la probabilidad de ocurrencia del i-ésimo símbolo y li es la longitud del código que le
fue asignado.
Se puede definir la eficiencia del código como η=Lmin/L=H/L
El Teorema de Shannon sobre codificación de Fuente, llamado también Primer Teorema de
Shannon, establece que:
Dada una fuente sin memoria discreta de entropía H, la longitud promedia de las palabras
codificadas para transmisión sin distorsión están limitadas a:
L≥H
Por lo tanto el número de bits promedio por símbolo necesario para representar una fuente
discreta sin memoria puede ser tan pequeño como, pero no menor que la entropía de la fuente:

Códigos de Longitud Variable


Ya se ha hablado de la necesidad de conocer la probabilidad de los símbolos para determinar la
entropía a fin entonces de codificar los eventos de acuerdo a esa entropía. El procedimiento debe
ser reversible y rápido. Como se dijo anteriormente, en el caso de la clave Morse la noción
intuitiva sería usar códigos de longitud variable donde se asignen códigos cortos a símbolos mas
probables y códigos largos a los menos frecuentes. Los codificadores que usan este principio se
les conoce como codificadores de entropía.
Ejemplo: Supongamos un caso de 4 posibles niveles con diferentes probabilidades de
ocurrencia
m1; P(m1)=0.5; m2; P(m2)=0.3; m3; P(m3)=0.15; m4; P(m4)=0.05
Si codificamos normalmente en binario necesitaríamos en promedio 2 bits/símbolo
Si en cambio asignamos el siguiente código
m1------0
m2------10
m3------110
m4------1110
Si ahora calculamos el número promedio de bits en una transmisión, este sería:
L=<N>=1x0.5+2x0.3+3x0.15+4x0.05= 1.75
Esto es menor que 2 bits/símbolo que fue el resultado para el caso anterior.
La entropía de esta fuente se calcula usando la siguiente fórmula
n
H M (m) = −∑ Pi log 2 Pi
i =1
y resulta H=1,64
Recordemos que la longitud promedio de los códigos será
N
L = ∑ pi l i
i =1
donde pi es la probabilidad de ocurrencia del i-ésimo símbolo y li es la longitud del código que le
fue asignado., y que L no puede ser mayor que H
A fin de que todos los códigos sean descodificables, sus longitudes li deben satisfacer la
desigualdad de Kraft, que establece lo siguiente:
N

∑2
i =1
− li
≤1
donde N es el número total de palabras codificadas. Por ejemplo no se puede obtener un sistema
de 4 códigos con longitudes 1,2,2,3, ya que la sumatoria resulta igual a 1,125
Además recordemos que el Teorema de codificación de fuente establece que, en promedio, los
símbolos de entrada no pueden ser representados con menos dígitos que la entropía
N
L = ∑ pi li ≥ H
i =1

Para el último ejemplo H=1,64.


Solo en el caso que las probabilidades sean inversos de potencias de 2 se podrá cumplir que L=H.
Esto significa que la entropía es el límite inferior

Para utilizar codificación de longitud variable es importante conocer muy bien la estadística de la
señal ya que si no las asignaciones pueden generar un aumento en L. También hay que entender
que un error en un dígito de un símbolo codificado puede alterar la detección de varios símbolos.
Otro problema es que el código puede tener problemas de ambigüedad a la hora de descodificar.
Ejemplo:

Símbolos de entrada Código 1 Código 2


m1 1 0
m2 10 10
m3 111 110
m4 101 111

La descodificación de m4 para el código 1 es ambigua ya que si se hubiesen enviado m2m1 daría


el mismo código. Por eso es bueno recordar que ningún código puede ser el prefijo de otro
código. Esto se llama condición del prefijo y el Código 2 anterior la cumple mientras que el
código 1 no la cumple. Esta condición permite que un código pueda ser descodificado
instantáneamente. Si miramos el Código 2, para el cual se sabe que no se pueden usar mas de 3
dígitos, el 0 indica final de mensaje, excepto para el 111 el cual se reconoce por su tamaño.
Para cualquier conjunto de longitudes de palabras que cumplan la desigualdad de Kraft, siempre
existirá un código que cumpla la propiedad del prefijo. Esto simplifica enormemente la
descodificación.
Codificación de Shannon-Fano:
El primer código entrópico fue diseñado casi al mismo tiempo por dos personas: Shannon
(AT&T) y Fano (MIT). El método se basa en conocer las probabilidades de cada símbolo y
entonces de acuerdo a esto asignarle códigos de longitud variable que cumplan la condición del
prefijo.
El procedimiento es el siguiente:
1) Se hace una tabla con los símbolos y sus probabilidades en orden decreciente de estas
2) Se divide la tabla en dos partes de manera que las probabilidades de la parte superior e
inferior sean lo mas cercanas posibles
3) Se le asigna 0 a los símbolos de la mitad superior y 1 a los de la mitad inferior
4) Se repite 2 y 3 añadiendo un nuevo dígito binario hasta que no se pueda dividir mas.

mi Pi Primer Segundo Tercer


bit bit bit
m1 .3 0 00 00

m2 .25 0 01 01

m3 .15 1 10 100
m4 .12 1 10 101
m5 .10 1 11 110
m6 .08 1 11 111

Observe que se cumple la condición del prefijo. Si se envía el mensaje m1 m5 m6 m2


Se codifica como
0011011101
Observe que no existe ambigüedad en la descodificación.
Código Huffman:
David Huffman, de 25 años estudiaba doctorado en el MIT y era alumno de Fano. En un trabajo
de la asignatura Teoría de Información se le ocurrió la codificación Huffman la cual es óptima ya
que la longitud promedio del código L es mínima para un modelo con probabilidades específica.
Es un código compacto, y óptimo que tiende al ideal (Longitud promedio=H)
Para generar una codificación Huffman hacemos lo siguiente:
1.- Se organizan los mensajes en orden decreciente de probabilidad
2.-Se agrupan los dos últimos para dar origen a un nuevo mensaje con probabilidad igual a
Pn+Pn-1
3.- Se vuelven a reordenar los mensajes en forma decreciente de acuerdo a su probabilidad de
ocurrencia y se repite el paso2 hasta que solo queden dos mensajes
Ejemplo:
Pi code S1- S1 S2- S2 S3- S3 S4- S4
mi Pi code Pi code Pi code Pi code
m1 .3 .3 .3 .43 .57
m2 .25 .25 .27 .30 .43
m3 .15 .18 .25 .27
m4 .12 .15 .18
m5 .10 .12
m6 .08

Ahora comienza con la columna de la derecha asignado dos dígitos binarios ( 1 y 0)


Luego se va a la columna que está a la izquierda: Si la probabilidad es la misma que algunas de
las columnas de la derecha se le asigna la misma combinación. Si la probabilidad fue sumada
para generar algún elemento de la derecha se le asigna un bit (el mas significativo) igual al que se
le asignó a la suma y luego a cada elemento se le asigna 1 y 0 respectivamente al bit menos
significativo

Pi code S1- S1 S2- S2 S3- S3 S4- S4


mi Pi code Pi code Pi code Pi code
m1 .3 00 .3 00 .3 00 .43 1 .57 0
m2 .25 10 .25 10 .27 01 .30 00 .43 1
m3 .15 010 .18 11 .25 10 .27 01
m4 .12 011 .15 010 .18 11
m5 .10 110 .12 011
m6 .08 111

Para decodificarlo es muy sencillo:


Considere que llega
0011011110
Como lo menos que se usan son dos bits entonces uno mira los dos primeros bits y se ve si
pertenecen a algún mensaje (en este caso m1); si no hay ningún mensaje con ese código se toma
el siguiente bit y se busca a que mensaje pertenece esa combinación de 3 bits.
Para este ejemplo el mensaje sería m1 m5 m6 m2
La longitud promedio para este código se calcula de la siguiente manera:
n
L = ∑ Pi Li = 0.3(2) + 0.25(2) + 0.15(3) + 0.12(3) + 0.1(3) + 0.08(3) = 2.45bits
i =1
La entropía resulta

n
H (m) = −∑ Pi log 2 Pi = 2.418bits
i =1
Recuerde que la entropía da la mínima cantidad posible de bits por mensaje para un mensaje muy
largo (N tiene a infinito)

Se puede definir la eficiencia del código como η=H/L=0.976


La redundancia se define como γ= 1-η= 0.024 y da una medida de la habilidad de ser transmitido
en un ambiente ruidoso
Otro ejemplo se ilustra a continuación:
En este caso la longitud promedio resulta L=2.61, la eficiencia resulta 97.7%.
Utilizando Shannon-Fano resultaría 96.6%
Una de las aplicaciones de la codificación Huffman es en la transmisión de fax.

Tanto la codificación de Shannon-Fano como la de Huffman se realiza mejor usando una


estructura de datos basada en un árbol binario.

Códigos compactos para mensajes M-arios


Para diseñar códigos compactos M-arios se usa un procedimiento similar pero en vez de agrupar
los mensajes de 2 en dos se agrupan de M en M, hasta que queden solo M mensajes.
Por ejemplo para cuaternario habría que ir asignado los dígitos 0,1,2,3
Aplicando este método es posible que no se termine con M mensajes al final. Si esto ocurre
entonces se rellena el conjunto original con mas mensajes de probabilidad cero
Se requerirán M+k(M-1)= n mensajes originales donde k es entero.
Por ejemplo
K=1, cuaternario
4+3= 7 mensajes
k=2, cuaternario
4+6=10 mensajes

Teorema de Shannon sobre la Capacidad de un Canal


Para una fuente de M mensajes igualmente probables los cuales se transmiten a una tasa R, si se
envían por un canal con una Capacidad de Canal igual a C, entonces si R es menor que C siempre
será posible transmitir sin errores. Si, en cambio R es mayor a C entonces la probabilidad de
errores tenderá a 1.
Si una fuente consta de n mensajes discretos y estos son enviados por un canal no ruidoso, cada
mensaje podrá identificarse en el receptor. La máxima entropía de la fuente será
n
1
H =∑ log 2 (1 / Pi ) = log 2 ( n)
i =1 n
Si T es el tiempo de transmisión de cada mensaje, la capacidad del canal será
C=(1/T)log2n

Ejemplo (Tomado del Lathi): Una imagen tiene 300000 pixels y cada uno puede tener 10 niveles
de grises. Determine la información de cada posible imagen
I= log2(10300000)=300000log2(10)=3,32x 300000=996000 bits
Si se transmiten 30 cuadros por segundo, determine la tasa de información
R=(30)(996000)= 29,9 Mbps

Ejemplo: (Tomado del Carlson) Determine la información que llevan 1000 palabras que
pertenecen a un vocabulario de 100000 palabras.
I=1000log2(100000)=
3,32x1000x log10(100000)=16600 bits

Entropía condicional
Supongamos que tenemos una fuente X, de entropía H(X), cuyos símbolos serán transmitidos
por un canal ruidoso, de manera que a la salida tendremos un nuevo alfabeto Y de entropía H(Y).
Se puede definir una entropía condicional H(X/Y) de la siguiente forma

K −1 J −1
1
H(X / Y) = ∑∑ p( y k )p( x j / y k ) log
k = 0 j= 0 p( x j / y k )
Esto se conoce como la equivocación de x respecto a y. También se puede ver como la
incertidumbre promedio con respecto al símbolo transmitido a través de todos los símbolos que
se reciben. Esto representa la incertidumbre que queda sobre la fuente una vez que se ha
observado la salida.

Esta entropía es menor que la entropía de la fuente H o H(x)


n n
H = ∑ Pi log 2 (1 / Pi ) = −∑ Pi log 2 ( Pi )
i =1 i =1

Esto da pie a definir la información mutua entre X y Y


I(X;Y)=H(X)-H(X/Y)
Como H(x) representa la incertidumbre sobre la fuente sin haber observado la salida, entonces
H(X)-H(X/Y) representa la incertidumbre sobre la fuente que es resuelta observando la salida. A
esto se le llama la información mutua del canal. Otra forma de verlo: La información promedio
transferida por símbolo es igual a la entropía de la fuente menos la equivocación

J −1 K −1 J −1
1 1
I(X; Y) = ∑ p( x j ) log − ∑∑ p( x j , y k ) log
j p( x j ) k =0 j=0 p( x j / y k )
Debido a que si se suma la fdp conjunta p(xj, yk) sobre todo k se obtiene la fdp marginal p(xj)
J−1 K−1
1 K−1 J−1 1
I(X; Y) = ∑∑p(x j , yk ) log − ∑∑p(x j , yk ) log =
j=0 k=0 p(x j ) k=0 j=0 p(x j / yk )
K−1 J−1 p(x j / yk ) K−1 J−1 p(x j , yk ) K−1 J−1 p(yk / x j )
∑∑
k=0 j=0
p(x j , yk ) log
p(x j )
= ∑∑p(x j , yk ) log
k=0 j=0
= ∑∑p(x j , yk ) log
p(x j )p(yk ) k=0 j=0 p(yk )
=

K−1 J−1 p(yk / x j )


∑∑p(x j )p(yk / x j )log J−1
k=0 j=0
∑p(x )p(y
j=0
j k / xj)

La información mutua queda en función de: Las probabilidades de los símbolos de entrada p(xj) y
de las probabilidades condicionales de tener una determinada salida dado que se conoce cual fue
el símbolo que se envió; esto último solo depende de la naturaleza del canal.
De lo anterior se observa que I(X;Y)= I(Y;X)=H(Y)-H(Y/X).

Para entender mejor estas relaciones supongamos dos casos:


a) Supongamos que el canal no tiene ruido. Esto implica que si se transmite xi
obligatoriamente llega yj; así P(xi /yj)=1 y entonces I(xi; yj)=log(1/P(xi))=I(xi). En este
caso I(X;Y)=H(X)
b) Suponga que el canal introduce tanto ruido que xi no tiene nada que ver con yj; es decir
P(xi /yj)= P(xi ); entonces I(xi; yj)=0 de tal manera que no se transmite ninguna información
mutua ya que entrada y salida están decorrelacionadas. En este caso I(X;Y)=0

La información mutua es siempre positiva porque no es posible perder información sobre la


entrada observando la salida.
Se puede demostrar que:
I(X;Y)=H(X)+H(Y)-H(X,Y)
Ejemplo: Suponga una fuente binaria que genera símbolos x1 y x2 con probabilidad p y (1-p)
respectivamente. Debido al ruido presente se cumple que la salida puede tomar dos valores y1 ,
y2.
P(y1/x2)=α=P(y2/x1)
P(y1/x1)=1-α=P(y2/x2)

La probabilidad de error será:


Pe=P(x1)P(y2/x1)+P(x2)P(y1/x2)=pα+(1-p) α= α
También se cumple que P(x1y2)=P(y2/x1)P(x1)=pα
P(x2y1)= P(y1/x2)P(x2)=(1-p)α
P(x2y2)=P(y2/x2)P(x2)=(1-α)(1-p)

Ahora calculemos la información mutua en función de p y de α .


I(X;Y)=H(Y)-H(Y/X)
En primer lugar H(Y) depende de las probabilidades de los dos símbolos (p1, (1-p1)) o sea se
puede colocar en función de p1,es decir de la probabilidad de recibir y1
p1= P(x1)P(y1/x1)+P(x2)P(y1/x2)=p+α- 2α p
2 1 1 1
H(Y) = ∑ p( y k ) log p( y = p1log + (1 − p1) log
(1 − p1)
k =1 k) p1
K −1 J −1 1
H(Y / X) = ∑ ∑ p( x j y k ) log p( y / x )
=
k = 0 j= 0 k j
1 1 1 1
(1 − α)p log( ) + αp log( ) + (1 − α)(1 − p) log( ) + α(1 − p) log( ) =
1− α α 1− α α
1 1
α log( ) + (1 − α) log( )
α 1− α

I(X;Y)=Función de (p+α- 2α p)-Función de( α )


Si el ruido es pequeño α << 1 , entonces I(X;Y) es solo función de p
Si el ruido es grande , α=0.5, I(X;Y)=H(Y)-H(Y/X)=1-1=0

Capacidad del canal


La capacidad del canal tiene que ver con aspectos físicos como el medio de transmisión, el tipo
de señal, el tipo de receptor, ya que todos ellos afectan la transmisión de la información. Si se
define Cs como la máxima cantidad de información transmitida cuando se transmite una muestra,
símbolo o dígito, entonces, para k símbolos, kCs será la máxima tasa de transmisión de
información por segundo o capacidad del canal.
Pensemos en una fuente de señal gaussiana x(t) que es transmitida por un canal sin
memoria y contaminada con ruido blanco gaussiano n(t). La salida la llamaremos y(t)
Supongamos que la fuente emite los caracteres {x1,x2,....,xn}. Del receptor se rescatarán
entonces los caracteres {y1,y2,...,yn} que podrían o no ser iguales a los enviados.
En un canal sin ruido lo lógico sería que yi=xi. Sin embargo el ruido presente en un canal
proporciona cierta incertidumbre sobre el mensaje recibido.
Si se habla de P(xi / yi) como la probabilidad de haber transmitido xi dado que se recibió yi
, se puede estimar la incertidumbre de haber enviado xi cuando se ha recibido yi como
1
log 2
x
P( i )
yi
Si se promedia sobre todos los pares posibles xi,, yi se obtiene:
1
H ( x / y ) = ∑∑ P( xi , y j ) log 2
i j P ( xi / y j )
Esto es una incertidumbre que cambia la cantidad de información en el receptor cuando recibe y
La DEP de ruido n(t) es constante para toda f, al ser limitada por un canal de tipo pasabajo
de ancho de banda apropiado a la señal, la nueva DEP es como una ventana rectangular cuya
autocorrelación es igual a ηBSinc(2πBτ), esto implica que las muestras tomadas a razón de
Nyquist están decorrelacionadas (R(τ=k/2B)=0) y, por ser gaussiano eso implica que son
también independientes. La potencia se puede calcular como la autocorrelación en cero y por eso
resulta igual a ηB lo cual también es la varianza.
Antes de continuar con la búsqueda de la capacidad del canal comentaremos el
procedimiento que se sigue para maximizar la entropía de una fuente de una señal continua,
aleatoria x(t).
Para mensajes discretos la entropía resultó máxima cuando eran equiprobables (máxima
incertidumbre). Para el caso de x(t) continuo, hay que maximizar H(x), la cual para el caso de x(t)
continuo será:
∞ 1
H ( x ) = ∫ p( x ) log dx
p( x )
−∞

sabiendo que se debe cumplir:


∫ x p( x)dx = σ
2 2

∫ p( x )dx = 1
Este problema se puede resolver usando el teorema del cálculo de variaciones, el cual se
plantea, en general, como sigue:

Sea H = ∫ F ( x , p )dx
−∞
Con las restricciones

∫ φ1( x , p)dx = λ1
−∞

∫ φ2 ( x , p)dx = λ2
−∞
Para maximizar H hay que resolver la siguiente ecuación

∂F ∂φ ∂φ
+ α1 1 + α 2 2 = 0
∂p ∂p ∂p
En nuestro caso

F(p,x) =p log (1/p)


φ1(x,p)=p
φ2(x,p)=x2p

por lo tanto se debe cumplir


1
∂ ( p log )
p ∂ ( x 2 p)
+ α1 + α 2 =0
∂p ∂p
− (1 + log p) + α1 + α 2 x 2 = 0

p = e (α1 −1)eα 2 x
2

Al aplicarle las restricciones se despejan α1 y α2 resultando

2
1 −x
p( x ) = e 2σ 2
σ 2π

Por lo tanto la distribución que maximiza la entropía es una gaussiana y el máximo valor
de la entropía resulta:
H(x) máxima= 0.5log(2πeσ2)
Para el caso de x(t) sea ruido blanco que fue filtrado por un canal de ancho de banda B,
entonces la entropía resulta igual a
0.5log(2πeηB)
Por lo tanto la entropía del ruido por segundo, es la entropía de 2B muestras tomadas a
Nyquist. Multiplicando entonces por 2B
H(n)= Blog(2πeηB)
Las señales de DEP constante filtradas y gaussianas tienen la máxima entropía ya que son
las mas aleatorias posibles.

Por otra parte:


H(x) es la incertidumbre sobre la entrada
H(y) es la incertidumbre sobre la salida
H(x/y) es la incertidumbre sobre la entrada conociendo cual es la salida
I(x;y) es la información mutua de las variables continuas x, y. Se dice que es la
incertidumbre sobre la fuente que es resuelta al mirar la salida. Si no hubiese ruido en el canal, y,
que es el valor recibido, debe ser igual al x, que es el valor transmitido. Pero el ruido del canal
introduce incertidumbre respecto a lo recibido en función de lo transmitido por lo tanto al recibir
y hay una cierta incertidumbre acerca de lo que se envió; dicha incertidumbre es culpa del ruido.
Se puede deducir que
I(x;y)=H(y)-H(y/x)=H(x)-H(x/y)
Donde H(x/y) es una información mutua entre x, y
Pero en un sistema como el que hemos descrito, H(y/x) depende solo del ruido n y entonces
H(y/x)=H(n)
Así I(x;y)=H(y)-H(n) en bits/muestra.
Buscaremos el máximo de esta función asumiendo que la potencia de y es S+N, mientras que la
potencia del ruido es N
Cs será el valor máximo de I(x;y) es decir será la máxima cantidad de información, por muestra,
que recibe el receptor.
Cs=Imax.(x;y)= 0.5log(2πe(S+N))- 0.5log(2πeΝ)=0.5log((S+Ν)/Ν)
1 ⎡S + N ⎤
Cs = log ⎢
2 ⎣ N ⎥⎦
Esto representa la información transmitida por muestra. La Capacidad del canal será la máxima
información transmitida por segundo, es decir será 2BCs ya que se envían 2B muestras por
segundo. El resultado final indica que
⎡ S⎤
C = B log ⎢1 + ⎥
⎣ N⎦
Ejemplo: Propuesto en el Haykin. Una imagen tiene 300000 pixels y cada uno puede tener 10
niveles de grises. Si se transmiten 30 imágenes por segundo cuando la relación señal a ruido es
30 dB
Determine el mínimo ancho de banda requerido para transmitir la señal de video
I= log2(10300000)=300000log2(10)=3,32x 300000=996000 bits
Si se transmiten 30 cuadros por segundo, determine la tasa de información
R=(30)(996000)= 29,9 Mbps=C
Para S/N= 30 dB, es decir S/N=1000, entonces B=C/log2(1001)=
29,9 x106/3,32(log(1001))= 3 MHz

Ejemplo: Qué velocidad se puede alcanzar en un canal telefónico de 3,4KHz de ancho de banda
si la relación señal a ruido es de 30 dB?
⎡ S⎤
C = B log ⎢1 + ⎥
⎣ N⎦
C=3400 log2 (1001)=3400(3,32)log(1001)=33864 bps

Otra forma de llegar al Teorema de Shannon es la siguiente: Considere una señal que tiene ancho
de banda B muestreada a Nyquist (R=2B muestras/seg.). Aunque la señal x(t) es continua la
modelaremos como una señal cuantificada con un paso de cuantificación igual al voltaje r.m.s del
ruido, o sea N donde N es la potencia del ruido. El número de posibles niveles de
cuantificación debieran estar distanciados ese valor para ser discernibles. Entonces
S+ N
M=
N
En ese caso la entropía resultaría, suponiendo equiprobabilidad, igual a
M −1 1 S S
H= ∑ M log 2 M = log 2 M = log 2 1+
N
= 0.5 log 2 (1 + )
N
k =0
La tasa de transmisión debe ser 2B muestras por segundo (Nyquist) por lo tanto la capacidad del
canal será
⎡ S⎤
C = B log ⎢1 + ⎥
⎣ N⎦

Límite de la Capacidad de un canal


Pareciera que si B tiende a infinito entonces C también tiende a infinito; sin embargo esto no es
así ya que N también crecería. El límite sería
S ⎡ηB S ⎤
C = B lim ∞ ⎢ log(1 +
ηB ⎥⎦
)
η⎣S
pero
⎡ 1 ⎤
lim ∞ x ⎢log 2 (1 + )⎥ = log 2 e = 1.44
⎣ x ⎦
x

así:

C=1.443(S/η)
La única forma entonces de aumentar C es aumentando la potencia de transmisión. Si la potencia
está limitada, también lo estará la capacidad del canal.
En aplicaciones donde no se puede contar con una alta potencia de transmisión y hay poca
restricción respecto al ancho de banda este resultado es muy útil

Compresión Lempel-Ziv- Welch.


La codificación Huffman y Shannon-Fano se basan en la estadística de la fuente previamente
calculada; esto tiene dos inconvenientes: a) no siempre se dispone de esta estadística y b) al
codificar símbolos o mensajes en forma aislada se pierde la posibilidad de reducir aún mas la
cantidad de bits a transmitir.
En 1977 Abraham Zempel y Jacob Ziv propusieron un nuevo método basado en diccionarios: Se
lee una cadena de símbolos de entrada y se busca en un diccionario guardado emn memoria. Si la
cadena se encuentra en él se envía un código que representa un puntero al punto del diccionario
donde se encuentra esa cadena. Si el diccionario es fijo no hay necesidad de enviarlo al
descompresor. Sin embargo para fuentes de estadística cambiante es mas conveniente tener un
diccionario adaptable: se comienza con un diccionario muy pequeño (o con ninguno) y a medida
que se avanza se van agregando nuevas entradas al diccionario que serán usadas como nuevos
códigos. A este algoritmo se le llamó LZ77 y tenía como ventajas que no se requería conocer a
priori la estadística de la fuente y que no producía pérdida de información. PKZIP usaba LZ77.
Este tipo de algoritmo resulta especialmente útil para fuentes con pocos patrones muy repetitivos
Consideremos la siguiente cadena de caracteres. El codificador examina la secuencia de
caracteres de entrada a través de una ventana deslizante que consta de dos partes:
„ Un buffer de búsqueda (Search buffer): porción de la secuencia recién codificada
„ Un buffer de anticipación (Look-ahead buffer): siguiente porción a codificar

Para codificar la secuencia que hay en el buffer de anticipación se mueve un puntero de búsqueda
hasta que se encuentra un carácter que coincide con el primero de la cadena que está en el buffer
de anticipación. La distancia entre el carácter idéntico al del comienzo de la cadena y el comienzo
de la cadena se le llama offset; en este ejemplo offset=7
o=7

Una vez que se consigue coincidencia (se busca la mas larga) se codifica con una tripleta (o,l,c)
donde o es el offset, l es la longitud de la cadena y c es el código correspondiente al carácter del
buffer de anticipación que está después de la coincidencia. En el ejemplo la cadena “αβρα“ se
codifica como (7,4,C(ρ)).
El tercer elemento es necesario ya que si retrocediendo no se consigue coincidencia entonces se
codifica el elemento solo como (0,0,C(elemento)).
El algoritmo LZ77 presentaba un problema y es que descarta las cadenas mas antiguas solo usa
las mas nuevas.
En LZ78, Lempel y Ziv en vez de usar una ventana de tamaño limitado que se desliza sobre los
caracteres anteriores, construye un diccionario a partir de todos los símbolos de entrada ya
procesados; en vez de tripletas genera parejas (i,C) donde i es el puntero que indica donde se
encuentra la secuencia previa mas larga que coincide con la que estamos tratando de codificar y
C es el código correspondiente al carácter que está después de la coincidencia. Cada pareja (i,C)
se añade al diccionario. Observe que la longitud de la cadena no se envía ya que el descompresor
la puede determinar.
Ejemplo: Considere la siguiente secuencia:
wabbacwabbacwabbacwabbacwoocwoocwoo

Se comienza con un diccionario vacío. Luego se agregan los primeros 3 elementos (0,C(w)),
(0,C(a)) y (0,C(b))
El diccionario tendrá en el índice 1 el carácter w, en el índice 2 el carácter a y en el índice 3 el
carácter b: cuando viene la siguiente b, como ya existe, se avanza hacia el próximo, la pareja ba
será colocada en la posición 4.
wabbacwabbacwabbacwabbacwoocwoocwoo
Se siguen revisando las cadenas de caracteres y agregando elementos al diccionario
Codificación Índice Cadena o carácter
(0,C(w)) 1 w
(0,C(a)) 2 a
(0,C(b)) 3 b
(3,C(a)) 4 ba
(0,C(c)) 5 c
(1,C(a)) 6 wa
(3,C(b)) 7 bb
(2,C (c)) 8 ac
(6, C(b)) 9 wab
(4, C (c)) 10 bac
(9,C(b)) 11 wabb
(8,C(w)) 12 acw
(0,C(o)) 13 o
(13,C(c)) 14 oc
(1, C(o)) 15 wo
(14,C(w)) 16 ocw
(13,C(o)) 17 oo

El problema es que el diccionario puede crecer indefinidamente; esto hay que limitarlo

En el año 1984 Terry Welch publica un artículo para implementar el anterior. Esto se llamó
LZW. Una mejora sobre el anterior es que no necesita enviar una pareja, solo envía el apuntador.
Para esto es necesario partir de un diccionario inicial. Por ejemplo si se quieren comprimir
cadenas de símbolos ASCII el diccionario inicial tiene 256 cadenas

Por ejemplo. Supongamos una fuente que tiene los siguientes símbolos
{ _, a, b, o, w } elementos numerados del 1 al 5
Y se quiere comprimir la siguiente secuencia

wabba_wabba_wabba_wabba_woo_woo_woo
Se lee el primer carácter recibido, w, y se busca en el diccionario; al encontrarlo lee el siguiente y
se forma la cadena wa ,al no encontarla la agrega al diccionario con el número 6 y envío a la
salida el número 5 correspondiente al símbolo w. Ahora lee a,como existe busca ab. Como no
está agrega ab en la posición 7 y transmite 2. Se busca ab, como no esta, se le agrega en el
diccionario (índice 7) y transmitiendo el código de salida 2. Es lógico que los primeros códigos
de salida sean los que originalmente estaban en el diccionario. Hasta el guión se habrá
transmitido 5,2,3,3,2,1,
Si se continua irá creciendo el diccionario. A continuación se muestran el diccionario y la salida
para la cadena de 35 elementos. Observe que se envían 21 códigos.

Salida Índice Entrada

5 6 Wa
2 7 ab
3 8 bb
3 9 ba
2 10 A_
1 11 _w
6 12 wab
8 13 bba
10 14 a_w
12 15 wabb
9 16 ba_
11 17 _wa
7 18 abb
16 19 ba_w
5 20 wo
4 21 oo
4 22 o_
11 23 _wo
21 24 oo_
23 25 _woo
4

Una de las aplicaciones más conocidas del algoritmo LZW es en el programa Adobe Acrobat
quien convierte archivos a formato pdf.
Gran cantidad de modems utilizan este algoritmo también.

También podría gustarte