Professional Documents
Culture Documents
Para decodificar una secuencia de palabras de código generadas a partir de un código fuente de
prefijo, el decodificador de origen simplemente comienza al inicio de la secuencia y decodifica
una palabra de código a la vez. Específicamente, establece lo que es equivalente a un árbol de
decisión, que es una representación gráfica de las palabras de código en el código fuente
particular. Por ejemplo, la figura 5.4 representa el árbol de decisión correspondiente al código
II en la tabla 5.2. El árbol tiene un estado inicial y cuatro estados terminales correspondientes a
los símbolos fuente s0, s1, s2 y s3. El decodificador siempre comienza en el estado inicial. El
primer bit recibido mueve el decodificador al estado terminal s0 si es 0 o bien a un segundo
punto de decisión si es 1. En el último caso, el segundo bit mueve el decodificador un paso más
abajo en el árbol, ya sea al estado terminal s1 si es 0 o bien a un tercer punto de decisión si es
1, y así sucesivamente. Una vez que cada estado terminal emite su símbolo, el decodificador se
restablece a su estado inicial. Tenga en cuenta también que cada bit en la secuencia codificada
recibida se examina solo una vez. Considere, por ejemplo, la siguiente secuencia codificada:
Esta secuencia se decodifica fácilmente como la secuencia fuente s1s3s2s0s0 .... Se invita al
lector a llevar a cabo este decodificador.
Para profundizar en los códigos de prefijo, ejemplificados por el de la tabla 5.2, recurrimos a una
desigualdad, que se considera a continuación.
Desigualdad de Kraft.
Considere una fuente discreta sin memoria con el alfabeto de origen (s0, s1, ....., sk-1) y las
probabilidades de origen (p0, p1, ....., pk-1), con la palabra de código del símbolo sk que tiene
longitud lk, k = 0, 1, ...., A-1. Entonces, de acuerdo con la desigualdad de kraft, las longitudes de
la palabra de código siempre satisfacen la siguiente desigualdad:
(5,22)
* El código I viola la desigualdad de kraft; no puede, por lo tanto, ser un código de prefijo.
* La desigualdad de kraft es satisfecha por los códigos II y III, pero solo el código II es un código
de prefijo.
Dada una fuente discreta sin memoria de entropía H (S), se puede construir un código de prefijo
con una longitud promedio de palabra de código L, que está delimitada de la siguiente manera:
(5,23)
El límite de la izquierda de (5,23) se satisface con la igualdad bajo la condición de que el símbolo
Sk sea emitido por la fuente con probabilidad
(5,24)
donde lk es la longitud de la palabra de código asignada al símbolo fuente Sk. Se dice que una
distribución gobernada por (5,24) es una distribución diádica. Para esta distribución,
naturalmente tenemos
Bajo esta condición, la desigualdad de kraft de (5,22) confirma que podemos construir un código
de prefijo, de modo que la longitud de la palabra de código asignada al símbolo fuente Sk es -
log2 Pk. Para dicho código, la longitud promedio de la palabra de código es
(5,25)
(5,26)
Por lo tanto, en este caso especial (más bien estricto), encontramos (5,25) y (5,26) que el código
del prefijo se empareja con la fuente en que L = H (S).
¿Pero cómo hacemos coincidir el código de prefijo con una fuente arbitraria discreta sin
memoria? La respuesta a este problema básico radica en el uso de un código extendido. Deje
que Ln denote la longitud promedio de la palabra de código del código de prefijo extendido.
Para un código descifrable único, Ln es el más pequeño posible. De (5,23), encontramos que
o equivalente,
En el límite, cuando n se acerca al infinito, los límites inferior y superior en (5,28) convergen
como se muestra en
Código Huffman:
A continuación se describe una clase importante de códigos de prefijos conocidos como códigos
Huffman, la ida básica detrás de la codificación de Huffman es la construcción de un algoritmo
simple que calcula un código de prefijo óptimo para una distribución dada, óptimo en el sentido
de que el código tiene la longitud esperada más corta. El resultado final es un código fuente cuya
longitud promedio de palabra de código se acerca al límite fundamental establecido por la
entropía de una fuente discreta sin memoria, es decir, H (S). La esencia del algoritmo utilizado
para sintetizar el código de Huffman es reemplazar el conjunto prescrito de estadísticas fuente
de una fuente discreta sin memoria por una más simple. Este proceso de reducción se continúa
paso a paso hasta que nos queda un conjunto final de solo dos fuente (símbolos), para las cuales
(0,1) es un código óptimo. A partir de este código trivial, trabajamos hacia atrás y, por lo tanto,
construimos el código de Huffman para la fuente dada.
1. Los símbolos fuente se enumeran en orden de probabilidad decreciente. Los dos símbolos
fuente de la probabilidad más baja tienen asignados 0 y 1. Esta parte del paso se conoce como
la etapa de división.
2. Estos dos símbolos fuente se combinan en un nuevo símbolo fuente con una probabilidad
igual a la suma de las dos posibilidades originales. (Por lo tanto, la lista de símbolos de origen y,
por lo tanto, las estadísticas de origen, se reduce en uno). La probabilidad de que el nuevo
símbolo se coloque en la lista de acuerdo con su valor.
3. El procedimiento se repite hasta que nos queda una lista final de las estadísticas de fuente
(símbolos) de solo dos para las que se asignan los símbolos 0 y 1.
Huffman Tree.
Para ilustrar la construcción de un código de Huffman, considere los cinco símbolos del alfabeto
de una fuente discreta sin memoria y sus probabilidades, que se muestran en las dos columnas
más a la izquierda de la figura 5.5b. Siguiendo el algoritmo huffman, llegamos al final del cálculo
en cuatro pasos, lo que da como resultado un árbol Huffman similar al que se muestra en la
figura 5.5; el árbol de Huffman no debe confundirse con el árbol de decisión discutido
previamente en la figura 5.4. Las palabras de código del código de Huffman para la fuente se
tabulan en la figura 5.5a. La duración promedio de la palabra clave es, por lo tanto,
La entropía de la fuente discreta sin memoria especificada se calcula de la siguiente manera (ver
5.9):
Para este ejemplo, podemos hacer dos observaciones:
Se debe mencionar que el proceso de codificación Huffman (es decir, el árbol Huffman) no es
único.
En particular, podemos citar dos variaciones en el proceso que son responsables de la falta de
singularidad del código de Huffman. Primero, en cada etapa de división en la construcción de un
código Huffman, hay arbitrariedad en la forma en que los símbolos 0 y 1 están asignados a los
dos últimos símbolos fuente. Sin importar de qué forma se realicen las asignaciones, sin
embargo, las diferencias resultantes son triviales. Segundo, la ambigüedad surge cuando se
encuentra que la probabilidad de un símbolo combinado (obtenido al sumar las últimas dos
probabilidades pertinentes a un paso en particular) es igual a otra probabilidad en la lista.
Podemos proceder colocando la probabilidad de los nuevos símbolos altos como sea posible,
como en el ejemplo 4.
Alternativamente, podemos colocarlo lo más bajo posible. (Se presume que cualquiera que sea
la forma en que se realice la colocación, alta o baja, se cumple de manera uniforme durante
todo el proceso de codificación). En este momento, surgen diferencias notables debido a que
las palabras de código en el código fuente resultante pueden tener diferentes longitudes. Sin
embargo, las longitudes medias de la palabra de código de un código de origen, definimos la
varianza de la longitud promedio de la palabra de código L sobre el conjunto de símbolos fuente
como
donde p0, p1, ...., pk-1 son las fuentes estáticas y lk es la longitud de la palabra de código
asignada al símbolo fuente sk. Generalmente se encuentra que cuando un símbolo combinado
se mueve lo más alto posible, el código resultante de Humano tiene una varianza
significativamente menor d ^ 2 que cuando se mueve lo más bajo posible. Sobre esta base, es
razonable elegir el antiguo código Huffman sobre el último.
Codificación Lempel-Ziv.
La secuencia de datos fuente se analiza en segmentos que son las subsecuencias más cortas que
no se encontraron anteriormente.
Para ilustrar esta idea simple pero elegante, considere el ejemplo de la secuencia binaria
Se supone que los símbolos binarios 0 y 1 ya están almacenados en ese orden en el libro de
códigos. Nosotros escribimos
La segunda subsecuencia más corta que no se ha visto antes es 01; en consecuencia, vamos a
escribir
La siguiente subsecuencia más corta no encontrada previamente es 011; por lo tanto, escribimos
Considere, por ejemplo, el bloque codificado binario 1101 en la posición 9. El último bit, 1, es el
símbolo de innovación. Los bits restantes, 110, apuntan a la subsecuencia raíz 10 en la posición
6. Por lo tanto, el bloque 1101 se decodifica en 101, que es correcto.
Del ejemplo que se describe aquí, observamos que, a diferencia de la codificación Huffman, el
algoritmo Lempel-Ziv usa códigos de longitud fija para representar un número variable de
símbolos fuente; esta característica hace que el código Lempel-Ziv sea adecuado para la
transmisión síncrona.
Un canal discreto sin memoria es un modelo estadístico con una entrada X y una salida Y que es
una versión ruidosa de X; tanto X como Y son variables aleatorias. Cada unidad de tiempo, el
canal acepta un símbolo de entrada X seleccionado de un alfabeto X y, en respuesta, emite un
símbolo de salida Y del alfabeto Y. Se dice que el canal es "discreto" cuando ambos alfabetos X
e Y tener tamaños finitos. Se dice que es "sin memoria" cuando el símbolo de salida actual
depende solo del símbolo de entrada actual y no de ningún símbolo anterior o futuro.
La figura 5.7a muestra una vista de un canal discreto sin memoria. El canal se describe en
términos de un alfabeto de entrada
y un alfabeto de salida
La cardinalidad de los alfabetos X e Y, o cualquier otro alfabeto para el caso, se define como la
cantidad de elementos en el alfabeto. Además, el canal se caracteriza por un conjunto de
probabilidades de transición
(5,35)
Una forma conveniente de describir un canal discreto sin memoria es organizar las diversas
probabilidades de transición del canal en forma de una matriz.
La matriz P de J-por-K se llama matriz de canal o matriz estocástica. Tenga en cuenta que cada
fila de la matriz de canal P corresponde a una entrada de canal fijo, mientras que cada columna
de la matriz corresponde a una salida de canal fijo. Nótese también que una propiedad
fundamental de la matriz de canal P, como se define aquí, es que la suma de los elementos a lo
largo de cualquier fila de la matriz estocástica es siempre igual a uno, de acuerdo con (5,35).
Dado que pensamos en la salida de canal Y (seleccionada del alfabeto Y) como una versión
ruidosa de la entrada de canal X (seleccionada del alfabeto X) y que la entropía H (X) es una
medida de la incertidumbre previa sobre X, ¿cómo se puede medir la incertidumbre sobre X
después de observar Y? Para responder a esta pregunta básica, extendemos las ideas
desarrolladas en la sección 5.2 definiendo la entropía condicional de X seleccionada del alfabeto
X, dada Y = yk. Específicamente, escribimos:
Esta cantidad es en sí una variable aleatoria que toma los valores H (X | Y = yk), H (X | Y = yk-1)
con las probabilidades p (y0), ...., p (yk-1), respectivamente. La expectativa de entropía H (X | Y
= yk) sobre el alfabeto de salida Y está, por lo tanto, dada por:
donde, en la última línea, usamos la definición de la probabilidad del evento conjunto (X = xk, Y
= yk) como se muestra por:
que se llama información mutua del canal. Para agregar significado a este nuevo concepto,
reconocemos que la entropía H (X) explica la incertidumbre sobre la entrada del canal antes de
observar la salida del canal y la entropía condicional (X | Y) por la incertidumbre sobre la entrada
del canal después de observar la salida del canal.
La información mutua I (X, Y) es una medida de la incertidumbre sobre la entrada del canal, que
se resuelve al observar la salida del canal.
La información mutua I (Y, X) es una medida de la incertidumbre sobre la salida del canal, que
se resuelve enviando la entrada del canal.
Para probar esta propiedad, primero usamos la fórmula entropía y luego usamos (5,35) y (5,38),
en ese orden, obteniendo:
Esta propiedad estable que no se puede perder información, en promedio, observando la salida
de un canal.
Además, la información mutua es cero si, y solo si, los símbolos de entrada y salida del canal son
estadísticamente independientes.
Ahora que entendemos el significado de la entropía de una variable aleatoria, estamos
equipados para abordar un tema importante en la teoría de la comunicación: la representación
de los datos generados por una fuente discreta de información.