112029637 codigos de hoffman y shannon fano

8
http://es.scribd.com/doc/43669982/Codificacion-Huffman http://www.isa.cie.uva.es/proyectos/codec/teoria32.html#sanon http://www.gedlc.ulpgc.es/docencia/seminarios/cd/Codificacion/sld051.htm Codigos de Huffman y Shannon Fano Ciencia y Tecnologia de la Informacion II Universidad Distrital Francisco Jose de Caldas Docente:Julio Florez Christian Javier Bonilla Herrera 20072020013 Jonathan Camilo Bonilla Malaver 20072020014 David Felipe Camargo Polo 20071020016 Sergio Andres Novoa Moreno 20072020111 Introducción El objetivo de estos códigos es generar una representación de la información de la fuente de forma tal que su tamaño se aproxime a la entropía teórica de esa fuente, produciendo una "compresión" de los datos. Son códigos prefijo. Codificación Shannon-Fano Introducción Este método de codificación fue desarrollado por Claude Shannon en los laboratorios Bell y por Robert Fano en MIT (Massachussets Institute of Technology) en la década del 40 casi simultáneamente.La técnica fue propuesta por Claude Elwood Shannon, en “Una Teoría Matemática de la Comunicación”, su artículo de 1948 introduciendo el campo de la teoría de la información. El método fue atribuido a Robert Fano, quien posteriormente lo publicó como un informe técnico. La codificación Shannon-Fano no debe confundirse con la codificación Shannon, método de codificación usado para probar el teorema de Shannon de la codificación sin ruido, ni con la codificación Shannon-Fano-Elias (también conocida como codificación Elias), el precursor de la codificación aritmética. El metodo de Shannon fano se refiere a la probabilidad de aparición de cada símbolo en un mensaje, su utilidad principal es la compresión de datos aunque desafortunadamente, Shannon-Fano no produce siempre códigos prefijos óptimos, lo cual lo hace no optimo en el sentido de que no consigue la menor longitud de palabra código esperada posible como en la codificación Huffman; aunque a diferencia de la codificación Huffman, garantiza que todas las longitudes de palabras de código están a un bit de su ideal teórico logP(x). Propiedades

Upload: pegasus1986

Post on 15-Jan-2016

36 views

Category:

Documents


2 download

DESCRIPTION

Teoria de la informacion. Hoffmann y Shannon

TRANSCRIPT

Page 1: 112029637 Codigos de Hoffman y Shannon Fano

http://es.scribd.com/doc/43669982/Codificacion-Huffman

http://www.isa.cie.uva.es/proyectos/codec/teoria32.html#sanon

http://www.gedlc.ulpgc.es/docencia/seminarios/cd/Codificacion/sld051.htm

Codigos de Huffman y Shannon Fano

Ciencia y Tecnologia de la Informacion II

Universidad Distrital Francisco Jose de Caldas

Docente:Julio Florez

Christian Javier Bonilla Herrera 20072020013

Jonathan Camilo Bonilla Malaver 20072020014

David Felipe Camargo Polo 20071020016

Sergio Andres Novoa Moreno 20072020111

Introducción

El objetivo de estos códigos es generar una representación de la información de la fuente de

forma tal que su tamaño se aproxime a la entropía teórica de esa fuente, produciendo una

"compresión" de los datos. Son códigos prefijo.

Codificación Shannon-Fano

Introducción

Este método de codificación fue desarrollado por Claude Shannon en los laboratorios Bell y por

Robert Fano en MIT (Massachussets Institute of Technology) en la década del 40 casi

simultáneamente.La técnica fue propuesta por Claude Elwood Shannon, en “Una Teoría

Matemática de la Comunicación”, su artículo de 1948 introduciendo el campo de la teoría de la

información. El método fue atribuido a Robert Fano, quien posteriormente lo publicó como un

informe técnico. La codificación Shannon-Fano no debe confundirse con la codificación

Shannon, método de codificación usado para probar el teorema de Shannon de la codificación

sin ruido, ni con la codificación Shannon-Fano-Elias (también conocida como codificación

Elias), el precursor de la codificación aritmética.

El metodo de Shannon fano se refiere a la probabilidad de aparición de cada símbolo en un

mensaje, su utilidad principal es la compresión de datos aunque desafortunadamente,

Shannon-Fano no produce siempre códigos prefijos óptimos, lo cual lo hace no optimo en el

sentido de que no consigue la menor longitud de palabra código esperada posible como en la

codificación Huffman; aunque a diferencia de la codificación Huffman, garantiza que todas las

longitudes de palabras de código están a un bit de su ideal teórico – logP(x).

Propiedades

Page 2: 112029637 Codigos de Hoffman y Shannon Fano

http://es.scribd.com/doc/43669982/Codificacion-Huffman

http://www.isa.cie.uva.es/proyectos/codec/teoria32.html#sanon

http://www.gedlc.ulpgc.es/docencia/seminarios/cd/Codificacion/sld051.htm

● Diferentes códigos, tienen diferentes tipos de bits

● Los códigos para símbolos con bajas probabilidades tienen más bits

● Los códigos para símbolos con altas probabilidades tienen menos bits

● Códigos de longitud diferente pueden ser unívocamente decodificados

Algoritmo

1 Para una secuencia de símbolos, se calcula la correspondiente lista de frecuencias de

aparición de los símbolos.

2 Se ordena la lista de símbolos según su frecuencia en orden decreciente.

3 Se divide la lista en dos partes, de forma que la suma total de frecuencias de la mitad

superior sea lo más cercana posible a la suma total de la parte inferior

4 A la mitad superior de la lista se le asigna el dígito binario 0, y a la mitad inferior se le

asigna el dígito binario 1. Esto significa que los códigos de los símbolos en la primera

mitad empezarán todos con 0 y los códigos en la segunda mitad empezarán todos con

1.

5 Cada una de las mitades, se subdivide en grupos y se agregan bits (digitos binarios) a

los códigos hasta que cada grupo conste de un único símbolo.

6 Se pueden representar los símbolos a modo de árbol binario

7 Se calcula la entropía como:

X = Largo de la serie / frecuencia

Entropía = Log 2 (X)

8 Una vez calculada la entropía se calcula la entropía en el mensaje (cantidad de bits

necesarios para representar el símbolo en el mensaje)

Entropia * frecuencia del símbolo

9 Finalmente el cálculo de los bits de código a transmitir está dado por la representación

binaria (0,1) del símbolo y los bits de mensajes es la multiplicación de los bits de

códigos * la frecuencia del símbolo

Ejemplo

Page 3: 112029637 Codigos de Hoffman y Shannon Fano

http://es.scribd.com/doc/43669982/Codificacion-Huffman

http://www.isa.cie.uva.es/proyectos/codec/teoria32.html#sanon

http://www.gedlc.ulpgc.es/docencia/seminarios/cd/Codificacion/sld051.htm

Dada la siguiente secuencia de simbolos codifique segun shannon fano:

DDABEBADACABAAECDCBAEACABCBAADDEAACAEAB

1 Calcular frecuencias de simbolos

A = 15 ; B = 7; C = 6; D = 6; E = 5

2 Hacer una tabla de simbolos

3 Dividir en 2 grupos

Grupo 1 A+B=22

Grupo 2 C+D+E=17

4 A la mitad inferior se le asigna 1 a la superior 0

5 Se agregan bits hasta que sean unicos

Page 4: 112029637 Codigos de Hoffman y Shannon Fano

http://es.scribd.com/doc/43669982/Codificacion-Huffman

http://www.isa.cie.uva.es/proyectos/codec/teoria32.html#sanon

http://www.gedlc.ulpgc.es/docencia/seminarios/cd/Codificacion/sld051.htm

6 Se representa como arbol binario

7 Se calcula la entropia

8 Y despues la entropia del mensaje

Page 5: 112029637 Codigos de Hoffman y Shannon Fano

http://es.scribd.com/doc/43669982/Codificacion-Huffman

http://www.isa.cie.uva.es/proyectos/codec/teoria32.html#sanon

http://www.gedlc.ulpgc.es/docencia/seminarios/cd/Codificacion/sld051.htm

9 Se calculan los Bits de codigo y mensaje

10 Utilizariamos 89 bits lo que es el 29% de compresion

Codificación Huffman

“En 1951, a David Huffman y sus compañeros de clase de la asignatura “Teoría de la

Información” se les permitió optar entre la realización de un examen final o la presentación de

un trabajo. El profesor Robert. M. Fano asignó las condiciones del trabajo bajo la premisa de

encontrar el código binario más eficiente. Huffman, ante la imposibilidad de demostrar qué

código era más eficiente, se rindió y empezó a estudiar para el examen final. Mientras estaba

en este proceso vino a su mente la idea de usar árboles binarios de frecuencia ordenada y

rápidamente probó que éste era el método más eficiente.

Con este estudio, Huffman superó a su profesor, quien había trabajado con el inventor de la

teoría de la información Claude Shannon con el fin de desarrollar un código similar. Huffman

solucionó la mayor parte de los errores en el algoritmo de codificación Shannon-Fano. La

solución se basaba en el proceso de construir el árbol de abajo a arriba en vez de al contrario.” 1

La codificación de Huffman es una técnica para la compresión de datos, ampliamente usada y

muy efectiva. Es un método general de codificación y compresión diseñado para minimizar el

número medio de bits necesarios para transmitir un símbolo cuando se debe transmitir varias

copias independientes y estadísticamente equivalentes de dicho símbolo. Este método

determina cómo los distintos valores del símbolo deben representarse como cadenas binarias.

1http://es.wikipedia.org/wiki/Codificaci%C3%B3n_Huffman#Historia 1http://neo.lcc.uma.es/evirtual/cdd/tutorial/presentacion/huffman.html

Page 6: 112029637 Codigos de Hoffman y Shannon Fano

http://es.scribd.com/doc/43669982/Codificacion-Huffman

http://www.isa.cie.uva.es/proyectos/codec/teoria32.html#sanon

http://www.gedlc.ulpgc.es/docencia/seminarios/cd/Codificacion/sld051.htm

En la codificación Huffman se crea una estructura arbórea ordenada con todos los símbolos y

la frecuencia con que aparecen. Las ramas se construyen en forma recursiva comenzando con

los símbolos menos frecuentes.

La construcción del árbol se realiza ordenando en primer lugar los símbolos según la frecuencia

de aparición. Los dos símbolos con menor frecuencia de aparición se eliminan sucesivamente

de la lista y se conectan a un nodo cuyo peso es igual a la suma de la frecuencia de los dos

símbolos. El símbolo con menor peso es asignado a la rama 1, el otro a la rama 0 y así

sucesivamente, considerando cada nodo formado como un símbolo nuevo, hasta que se

obtiene un nodo principal llamado raíz.

El código de cada símbolo corresponde a la sucesión de códigos en el camino, comenzando

desde este carácter hasta la raíz. De esta manera, cuanto más dentro del árbol esté el símbolo,

más largo será el código.

Algoritmo

El algoritmo para la aplicación de la codificación Huffman, consiste en la creación de un arbol

binario que representa una fuente de información, los nodos hoja se etiquetan con los

caracteres del alfabeto propio de la fuente, y sus frecuencias de aparición, o probabilidades

asociadas. Se unen consecutivamente los nodos cuya suma de frecuencia sea menor, y se

procede hasta que no queda ningun nodo hoja por unir a ningun nodo superior y de esta

manera se haya completado la creación del arbol binario.

Posterior a este procedimiento, se etiquetan las ramas que unen cada uno de los nodos con „1‟

y „0‟, que indican hijo derecho e izquierdo respectivamente. El código resultante para cada

caracter es la lectura, siguiendo la rama desde la raiz hacia el nodo hoja que se quiera

alcanzar.

Ejemplo

Una fuente S, tiene un alfabeto con 6 caracteres, S= {s1, s2, … , s6}, y sus probabilidades

asociadas P{1, 2, … , 6} = {0.4, 0.2, 0.2, 0.1, 0.07, 0.03}

La entropía asociada a esta fuente es: H(S) = 2.21 bits

Siguiendo el algoritmo para la codificación de Huffman, el arbol binario que representa la fuente

seria este:

Page 7: 112029637 Codigos de Hoffman y Shannon Fano

http://es.scribd.com/doc/43669982/Codificacion-Huffman

http://www.isa.cie.uva.es/proyectos/codec/teoria32.html#sanon

http://www.gedlc.ulpgc.es/docencia/seminarios/cd/Codificacion/sld051.htm

En las hojas inferiores del árbol estan los nodos que tienen menos frecuencia, o peso. La

frecuencia de los nodos aumenta progresivamente hasta que se alcance la raiz del árbol. Los

nodos intersección hacen 2referencia a la suma de sus dos nodos hijo.

Propiedades principales

● Es óptima cuando la probabilidad de cada símbolo de entrada es una potencia negativa

de dos.

● Los códigos prefijos tienden a ser ligeramente ineficientes en alfabetos pequeños.

1 2

Page 8: 112029637 Codigos de Hoffman y Shannon Fano

http://es.scribd.com/doc/43669982/Codificacion-Huffman

http://www.isa.cie.uva.es/proyectos/codec/teoria32.html#sanon

http://www.gedlc.ulpgc.es/docencia/seminarios/cd/Codificacion/sld051.htm

● Concatenando múltiples símbolos en "palabras" de tamaño fijo o variable antes de la

codificación Huffman, normalmente ayuda, especialmente cuando símbolos adyacentes

están correlacionados.

Variaciones

Código huffman n-ario

El algoritmo n-ario de huffman usa el alfabeto {0,1,…,N-1} para codificar el mensaje y construir

un árbol n-ario. Este enfoque fue considerado por huffman en su enfoque originario.

Código huffman adaptable

La variación llamada código de huffman adaptable calcula dinámicamente la probabilidad de la

frecuencia de la cadena de origen basada en antiguas apariciones. Está relacionado con la

familia de algoritmos LZ.

Algoritmo de Huffman de plantilla

El algoritmo de plantilla de Huffman permite utilizar cualquier tipo de tamaño de código (costos,

frecuencias, los pares del tamaño, tamaños no numéricos) y uno de los muchos que combina

métodos (no solo la adición).

Código de Huffman de tamaño limitado

El Código de Huffman de tamaño de limitado es una variante donde el objetivo es lograr que el

camino de coste mínimo con la restricción de que la longitud de cada palabra sea menor que

una constante.

Codificación huffman con costes desiguales

En la codificación huffman con costes, los símbolos del alfabeto pueden tener longitudes no

uniformes, debido a características del medio de transmisión.U n ejemplo es el alfabeto del

código morse, donde una 'raya' requiere más tiempo para ser enviada que un 'punto', y por lo

tanto el costo del tiempo de transmisión de una raya es mayor.

Árboles binarios alfabéticos óptimos (codificación hu-tucker)

En una situación de codificación huffman estándar, se asume que cualquier código puede

corresponderse con cualquier símbolo de entrada. En la versiónal fa bé t ic a, el orden

alfabético de las entradas y salidas debe ser idéntico.