codificacion aritmetica

download codificacion aritmetica

of 16

  • date post

    02-Mar-2018
  • Category

    Documents

  • view

    242
  • download

    0

Embed Size (px)

Transcript of codificacion aritmetica

  • 7/26/2019 codificacion aritmetica

    1/16

    Codificacin aritmtica

    Es til cuando se tienen fuentes con alfabetos pequeos.

    En el cdigo Huffman si el alfabeto es grande, la probabilidad del smbolo ms probable espequea y la desviacin de la rata de cdigo de la entropa (redundancia) es pequea. Alcontrario si el alfabeto es pequeo en donde la redundancia del cdigo Huffman es grande.

    Esto se resuelve generando un cdigo extendido pero esto a veces es imprctico porque se

    generan alfabetos demasiado grandes, se requieren grandes cantidades de memoria y tiempos

    y recursos exagerados en la decodificacin.

    Ejemplo:

    Considere una fuente que pone letras independientes e idnticamente distribuidas desdeun alfabeto

    {, , }Con el modelo de probabilidad

    . . .

    La entropa para esta fuente es . /. Un cdigo Huffman para esta fuenteest dado en la tabla 1

    Letra cdigo

    Tabla 1: Cdigo Huffman para un alfabeto de tres letras

    La longitud promedio para este cdigo es . /. La diferencia entre la longitudpromedia de cdigo y la entropa, o redundancia, para este cdigo es . /,lo que es el % de la entropa. Esto significa que para codificar esta secuencianecesitaramos ms del doble del nmero de bits prometidos por la entropa.

    Agrupando los smbolos en bloques de dos, el alfabeto extendido y el modelo de probabilidady el cdigo se muestran en la tabla 2.

  • 7/26/2019 codificacion aritmetica

    2/16

    Letra Probabilidad Cdigo

    . . . . . . . . .

    Tabla 2: Cdigo Huffman para un alfabeto extendido

    La rata promedio para el alfabeto extendido es . /. La rata adicionalsobre la entropa es an cerca del %de la entropa. Si se contina poniendo bloques dems smbolos encontramos que la redundancia cae a un valor aceptable cuando hacemosbloques de . El tamao de alfabetocorrespondiente a este nivel es de ,lo cual hace que el tamao de este cdigo sea imprctico por varias razones:

    El tamao de la memorianecesario para almacenar este cdigo puede que no estdisponible.

    La decodificacinde un cdigo de este tamao puede serun proceso altamenteineficiente y consumidor de tiempo.

    Si la estadstica cambia aunque sea ligeramente puede hacer que el cdigo seaineficiente.

    Problema: para codificar una secuencia de longitud

    en Huffman se requieren

    palabras de cdigo para todas las posibles secuenciasde longitud .En la codificacin aritmtica se asigna un identificador nico o tag a la secuencia a

    codificar, el cual es una fraccin binaria a la que se le asigna posteriormente un cdigo

    binario.

    Se asigna un cdigo aritmtico nico a una secuencia de longitud sin que sea necesariogenerar palabras de cdigo para todas las posibles secuencias de longitud .Codificando una secuencia

    Una manera de codificar con un identificador nico a cada secuencia es asignarle un nmeroen el intervalo [,,lo cual da un conjunto infinito de identificadores.Una funcin que toma este intervalo es la funcin distribucin acumulativa de

    probabilidadde una variable aleatoria asociada con la fuente.

  • 7/26/2019 codificacion aritmetica

    3/16

    La variable aleatoriase toma como la asignacin de un nmero a las letras o smbolosde la fuente

    Siendo {, , , }el alfabeto de la fuente.El mapeo supone que se dispone de un modelo de probabilidadde la fuente y de lafuncin densidad de probabilidad de la variable aleatoria, tal que

    Y la funcin distribucin acumulativa

    =

    Ejemplo:

    Considere el alfabeto de tres letras {, , } con . , . , . .Usando el mapeo propuesto . , . , Estoparte el intervalo unitario como se muestra en la ilustracin 1.

    Ilustracin 1: Restringiendo el intervalo que contiene el identificador para la secuencia{, , }

    La particin en la cual reside el identificador depende del primer smbolo de la secuencia que

    est siendo codificada. Por ejemplo, si el primer smbolo es ,el identificador estar en elintervalo [.,.]; si el primer smbolo es , el identificador estar entre[.,.], y si

  • 7/26/2019 codificacion aritmetica

    4/16

    el smbolo es el identificador estar entre [.,.]. Una vez el intervalo que contieneel identificador ha sido determinado, el resto del intervalo unidad es descartado y el intervalo

    restringido es dividido otra vez en las mismas proporciones del intervalo original. Suponga

    que el primer smbolo fue . El identificador estara contenido en el sub intervalo[,.];Este sub intervalo es luego dividido en exactamente las mismas proporciones como elintervalo original, dando los sub intervalos [.,.],[.,.], [.,.] laprimera particin corresponde al smbolo , la segunda al smboloy as sucesivamente.El proceso iterativo puede visualizarse en la ilustracin 1.

    La aparicin de cada nuevo smbolo de la secuencia restringe el identificador a un nuevo

    subintervalo que es disjunto de cualquier otro subintervalo que pueda haber sido generadousando este proceso, luego cualquier miembro de este subintervalo puede ser usado como

    identificador. Una escogencia popular es el lmite inferiorpero tambin puede ser el medio

    del intervalo.

    Hay un procedimiento recursivo para calcular los lmites inferior y superior del intervalo parauna secuencia de longitud .En general, se puede mostrar que para cualquier secuencia

    + ( )

    + ( )

    En donde se supone que y .Observe que a travs de este proceso no necesitamos calcular explcitamente cualquierprobabilidad conjunta.

    Si se usa el punto medio del intervalo para el identificador, entonces

    +

    Ejemplo:Generando un identificador

    Considere una fuente que genera los smbolos con probabilidad ., conprobabilidad =0.02 y con probabilidad . . Se define la variablealeatoria . Se supone que se va a codificar la secuencia .Del modelo de probabilidad sabemos que

  • 7/26/2019 codificacion aritmetica

    5/16

    , . , ., , Usando las ecuaciones que permiten calcular los limites inferior y superior de manera

    iterativa y suponiendo y . El primer elemento de la secuencia resulta enla siguiente actualizacin: +

    + ,

    , O sea, el identificador de la secuencia estar en el intervalo [,..El segundo elementode la secuencia es . Usando las ecuaciones de actualizacin tenemos:

    + . + . ..

    + . + . .

    Por consiguiente, el intervalo que contiene el identificador de la secuencia es[.,.]. El tercer elemento es , lo que resulta en las siguientes ecuaciones deactualizacion:

    . + .. . + .. ..

    Y por lo tanto el intervalo que contiene la secuencia es [.,..Continuando con el ltimo elemento, las ecuaciones de actualizacin dan lo siguiente:

    .+ .. .+ .. . .

    .+ .. .+ .. . .

    Y el identificador para la secuencia se puede generar como

  • 7/26/2019 codificacion aritmetica

    6/16

    +

    .+..

    Generando una secuencia binaria

    Para codificar el identificador se toma la representacin binaria del nmero y se trunca a

    + En donde es la probabilidad de la secuencia.Ejemplo:

    Considere la fuenteque genera los smbolos {, , , }con probabilidades

    Se puede generar un cdigo binario para esta fuente como se muestra en la tabla 3. La

    cantidad se obtiene usando la ecuacin .). La representacin binaria de se truncaa / + para obtener el cdigo binario.

    Smbolo En Binario

    + Cdigo

    . . . . . . . . . . . .

    Tabla 3: Cdigo binario para un alfabeto de 4 smbolos

    Descifrando un identificador

    Dado el identificador obtenido en el ejemplo anterior trataremos de imitar al codificador para

    obtener la secuencia representada por este identificador. El valor del identificador es.. El intervalo que contiene este identificador es un subconjunto de todos losintervalos contenidos en el proceso de codificacin. La estrategia de decodificacin ser

    decodificar los elementos en la secuencia de tal manera que los limites inferior siempre contengan el valor del identificador para cada. arrancamos con . Despus de decodificar el primer elemento de la secuencia , los lmites inferior ysuperior llegan a ser:

  • 7/26/2019 codificacion aritmetica

    7/16

    +

    +

    En otras palabras, el intervalo que contiene el identificador es [ , .Necesitamos encontrar el valor de para el cual . est en el intervalo[ , . Si hacemos , el intervalo es [,., Si hacemos ,elintervalo es [.,., Si hacemos , el intervalo es [.,. Como .esta en el intervalo [,. escogemos . Repetimos este procedimiento para elsegundo elemento ,usando los valores actualizados para

    + .

    . + . .

    Si hacemos , el intervalo actualizado es [0, 0.64), el cual no contiene el identificador.Luego no puede ser . Si hacemos , el intervalo actualizado es [0.64, 0.656), elcual tampoco contiene el identificador. Si hacemos , el intervalo actualizado es[0.656, 0.8), el cual s contiene el valor . del identificador. Luego el segundoelemento en la secuencia es . Sabiendo cual es el segundo elemento de la secuencia,podemos actualizar los valores de y y encontrar el elemento , el cual nos dar unintervalo que contiene el identificador:

    . + .. .+.

    . + ...+.

    Sin embargo, las expresiones resultantes son cansonas en esta forma. Para hacer las

    comparaciones ms fciles, podriamos restar el valor de tanto de los limites como delidentificador. O sea, encontramos el valor de

    para el cual el intervalo

    [. , . contiene .... O, podramoshacerlo an ms simple y dividir el valor del identificador residual de .por. para obtener ., y encontrar el valor de para