Métodos de compresión sin pérdida de información

Slides:



Advertisements
Presentaciones similares
Teoría de la Información y Codificación
Advertisements

Ordenamiento, Heapsort y Colas de prioridad
Seguridad y encriptación Compresión de archivos
CÓDIGOS DE HUFFMAN. Códigos de Huffman Los códigos de Huffman, que representan caracteres por cadenas de bits de longitud variable, proporcionan alternativas.
CODIFICACION DE HUFFMAN
Algoritmos voraces Códigos de Huffman. Descripción del problema Tenemos un archivo de entrada. Asumiremos que el archivo está compuesto de bytes (enteros.
BLOQUE: ESTADÍSTICA Y PROBABILIDAD
TEMA 5: PROBABILIDAD. Índice Experimentos aleatorios. Sucesos. Tipos de sucesos. Sucesos elementales Suceso seguro Suceso imposible Álgebra de sucesos.
 E Expresión de un problema de programación lineal  A Aplicaciones de la programación lineal  S Soluciones de un problema de programación lineal.
TEMA 5: PROBABILIDAD. 1. Experimentos aleatorios. 2. Sucesos. Tipos de sucesos Sucesos elementales Suceso seguro Suceso imposible. 3.
Tipos de errores Error de escala Error sistemático Error aleatorio Error total.
Bioestadística Elementos de Probabilidad para la Inferencia Estadística.
NTICX 2014 – CLASE X Prof. Andrea Marigomez. Sistema Binario  Usa sólo ceros (o) y unos (1) para representar los números.  Constituye la clave del.
TUTORIA 1 Lógica para la Computación TUTORIA 1 Facultad de Ciencias Naturales y Matemáticas.
Funciones.
Curso Sygma. Grafos Universidad San Buenaventura Cali.
Capitulo 3 Análisis descriptivo inferencial: comparaciones de muestras
PROGRAMACION.
TECNOLOGICO DE ESTUDIOS SUPERIORES DE COACALCO
El conjunto de los números naturales
Fundamentos de la Computación
Diagramas de Flujo Algoritmos.
“Bootstrap” Jaime Mojica Cuevas
Tema 4 Elementos para el Desarrollo de Algoritmos
TEMA 5: PROBABILIDAD. 1. Experimentos aleatorios.
MANEJO DE ARRELOGS EN C Clase 8: Arreglos.
Estructuras de Control en Visual Basic.net
Codificación de Shannon-Fano
TAD’s ARBOLES GENERALIZADOS
CONCEPTOS BASICOS ESTADISTICA.-Conjunto de métodos que nos permiten tomar decisiones en momentos de incertidumbre (duda). Tiene como objetivo que la información.
Básicos de Autómatas.
PSEUDOCÓDIGO Prof. Rafael Mourglia.
Unidades de almacenamiento
Números Índices Un número de índice mide cuánto ha cambiado una variable con el tiempo. Se calcula encontrando el cociente del valor actual entre un valor.
Convergencia de variables aleatorias
1 1 1 El Sistema B nar o
Unidad 6. Capítulo IV. Puntos ordinarios y puntos singulares.
CREAR DIAGRAMA DE FLUJO
CODIGOS DE BLOQUE LINEALES
LA REGLA DE LA ESQUINA NOROESTE
LÓGICA DE PROGRAMACIÓN
TEORÍA DE GRAFOS -Algoritmo de Dijkstra -Algoritmo de Primm -Algoritmo de Kruskal Integrantes:
Métodos de Detección de Errores (VRC, LRC, CRC)
CODIFICACION DEL CANAL
CAPACIDAD DE DETECCION Y CORRECCION DE ERRORES
TALLER DE CERTIFICACIÓN INTERNACIONAL
HERRAMIENTAS DE PROGRAMACIÓN
Tema #1: Teoría de la Información y la Codificación.
COMPONENTES WEB TEMA: variables.
División por el método de Ruffini
Método Científico Ciencias – 6º Grado Srta. Camarasa.
Expositores: María Gracia León Nelson Arol Ruiz
Estructura de Datos M.C. J. Andrés V. F. FCC/BUAP
MÉTODO DE MÍNIMO COSTO DANIELA NARANJO LAURA RUBIO RENGIFO
TEMAS *Arboles Binarios *listas Abiertas y Cerradas - Inserción - Recorrido - Eliminación *Pilas - Concepto - Inserción - Recorrido -
Teoría Nº 3 Conceptos Básicos de Algoritmia Estructuras de Control
Resolución de Ecuaciones No Lineales
Matrices Conceptos básicos. Matrices Buscando formas para describir situaciones en matemáticas y economía, llegamos al estudio de arreglos rectangulares.
METODOS DE ORDENAMIENTO CHRISTIAN MICHAEL OBANDO GARCES JOAO ADRIAN BARIONUEVO.
Tema 6. Conceptos básicos de programación (Clase 2)
CAPACIDAD DE DETECCION Y CORRECCION DE ERRORES
1 VARIABLE ALEATORIA COLEGIOS MONTE TABOR Y NAZARET DEPARTAMENTO DE MATEMÁTICA III MEDIO – 2019.
REGRESIONINTERPOLACION Los Métodos Numéricos Métodos mas utilizados Ajuste de Curvas.

Fundamentos Algorítmicos 1
ALGORITMO Y ESTRUCTURA DE DATOS II UNIDAD 3 ORDENAMIENTO Y BUSQUEDA MARCOS RODRIGUEZ /4/2019ALGORITMO Y ESTRUCTURA DE DATOS II 1 Prof.
Pipelining Peligros de control.
Estrategia algorítmica
Grafos. Concepto: Un Grafo no es más que un conjunto de nodos o vértices que se encuentran relacionados con unas aristas. Además, los vértices tienen.
¿QUÉ ES UN DISEÑO INTRASUJETO?
Transcripción de la presentación:

Métodos de compresión sin pérdida de información Compresión de datos Métodos de compresión sin pérdida de información

Codificación de mensajes Supongamos que estamos codificando mensajes en binario con un alfabeto de tamaño  . Ejemplo: para el alfabeto A, ,Z de 26 letras se necesitan códigos de    bits Problema: Es posible disminuir el número promedio de bits por símbolo ?

Solución Asignar códigos más cortos a los símbolos mas frecuentes Ejemplo: Código Morse A = .- B -… E= . Z = --.. letras de mayor probabilidad de aparición (inglés) están más cerca de la raíz, y tienen una codificación más corta que letras de baja frecuencia

Problema Este código no es autolimitante, Por ejemplo, SOS y IAMS tienen la misma codificación Se necesita un tercer símbolo para delimitar las letras (espacio) este problema se produce sólo cuando el código es de largo variable (como en morse), en otros códigos de largo fijo (por ejemplo el código ASCII, donde cada caracter se representa por 8 bits) es directo determinar cuales elementos componen cada caracter.

Condición La condición que debe cumplir una codificación para no presentar ambigüedades, es que la codificación de ningun caracter sea prefijo de otra. Esto nos lleva a definir árboles que sólo tienen información en las hojas, como por ejemplo

Objetivo: producir el código más corto Dado un alfabeto a1 . . an tal que la probabilidad de que aparezca la letra ai es pi encontrar un código libre de prefijos que minimice el largo promedio del código de una letra Supongamos que a la letra ai se le asigna el código ti minimizar

Entropia de Shanon Shannon define la entropía del alfabeto como: El teorema de Shannon dice que el número promedio de bits esperable para un conjunto de letras y probabilidades dadas se aproxima a la entropía del alfabeto. Podemos comprobar esto en nuestro ejemplo anterior donde la entropia de Shannon es

Algoritmo de Huffman El algoritmo de Huffman permite construir un código libre de prefijos de costo esperado mínimo Inicialmente, comenzamos con  n  hojas desconectadas, cada una rotulada con una letra del alfabeto y con una probabilidad (ponderacion o peso) Consideremos este conjunto de hojas como un bosque. Se va construyendo el árbol de abajo hacia arriba uniendo en cada iteración dos los elementos de menor probabilidad

Algoritmo de Huffman El algoritmo es:    Algoritmo de Huffman El algoritmo es: while(nro de árboles del bosque > 1){   - Encontrar los 2 árboles de peso mínimo y     unirlos con una nueva raíz que se crea para esto   - Arbitrariamente, rotulamos las dos      líneas como ´ 0´ y ´ 1´   - Darle a la nueva raíz un peso que es        la suma de los pesos de sus subárboles. }

   Ejemplo Si tenemos que las probabilidades de las letras en un mensaje son :

   Ejemplo Entonces la construcción del árbol de Huffman es (los números en negrita indican los árboles con menor peso):

   Ejemplo

Ejemplo

Analisis Se puede ver que el costo esperado es de 2,53 bits por letra, mientras que una codificación de largo fijo (igual número de bits para cada símbolo) entrega un costo de 3 bits/letra El algoritmo de codificación de Huffman se basa en dos supuestos que le restan eficiencia: supone que los caracteres son generados por una fuente aleatoria independiente, lo que en la práctica no es cierto. Por ejemplo, la probabilidad de encontrar una vocal después de una consonante es mucho mayor que la de encontrarla después de una vocal; después de una q es muy probable encontrar una u, etc Debido a que la codificación se hace caracter a caracter, se pierde eficiencia al no considerar las secuencias de caracteres más probables que otras

Lempel Ziv Toma en cuenta los problemas de los supuestos enunciados anteriormente pues no solo se consideraran caracteres uno a uno, sino que donde además se consideraran aquellas secuencias de alta probabilidad en el texto. Por ejemplo, en el texto: aaabbaabaa Obtendríamos un mayor grado de eficiencia si además de considerar caracteres como a y b, también considerásemos la secuencia aa al momento de codificar

Algoritmo Consiste en separar la secuencia de caracteres de entrada en bloques o secuencias de caracteres de distintos largos, manteniendo una diccionario de bloques ya vistos. Luego, aplicando el algoritmo de Huffman para estos bloques y sus probabilidades, se puede sacar provecho de las secuencias que se repitan con más probabilidad en el texto.

Algoritmo El algoritmo de codificación es el siguiente: Inicializar el diccionario con todos los bloques de largo 1 Seleccionar del mensaje el prefijo más largo del mensaje que calce con alguna secuencia de W del diccionario y eliminar W del mensaje Codificar W con su índice en el diccionario Agregar W seguido del primer símbolo del        próximo bloque al diccionario. Repetir desde el paso 2. .

Ejemplo Si el mensaje es el siguiente: La forma como se van seleccionando los prefijos del mensaje (entre paréntesis) y los bloques que se van agregando al diccionario (como texto subíndice) que comienza con a y b solamente es Falta asignarle un código a cada bloque