Algo sobre Compresión de Datos

Documentos relacionados
Compresión de Datos. Método de Huffman. Dpto. Informática

F. Javier Gil Chica 2010

Almacenamiento de imágenes digitales. Primera parte

Códigos IRA. Máster en Multimedia y Comunicaciones Comunicaciones Digitales. Luca Martino

2 de mar de 2004 Codificación de imágenes y v ideo

Algoritmos y Estructuras de Datos III

Estructura de datos y de la información Boletín de problemas - Tema 10

Propiedades de lenguajes independientes del contexto

Capítulo 8. Capa de Presentación 8.1 Representaciones comunes de los datos ASCII 7 bits ASCII 8 bits Unicode

APLICACIÓN DE ÁRBOLES BINARIOS

Algoritmos para determinar Caminos Mínimos en Grafos

Introducción a la biología computacional. El plan: Algoritmos de reconocimiento de patrones:

DIPLOMATURA EN TÉCNICA, CONSERVACIÓN Y CATALOGACIÓN FOTOGRÁFICA DE ARCHIVOS DE LA ADMINISTRACIÓN PÚBLICA. Digitalización de imágenes fotográficas

EL4005 Principios de Comunicaciones Clase No.30: Códigos Lineales de Bloque

Análisis y Complejidad de Algoritmos. Arboles Binarios. Arturo Díaz Pérez

Tema 1: INTRODUCCIÓN A LAS IMÁGENES DIGITALES

Eje 2. Razonamiento lógico matemático

TEMA 2. CODIFICACIÓN DE LA INFORMACIÓN

Arreglos. Algoritmos y Estructuras de Datos I. Arreglos en C++ Arreglos y listas

Algoritmos genéticos

El nivel Interno. Índice Tema 3

Operaciones a nivel bit

+- S x B +-E. Este estándar presupone una representación normalizada. Es decir, los números a representar obedecen a la siguiente forma:

ESTRUCTURA Y TECNOLOGÍA DE COMPUTADORES I CAPÍTULO III ARITMÉTICA Y CODIFICACIÓN

ECUACIONES EN N (NÚMEROS NATURALES)

Representación de números enteros: el convenio complemento a uno

Capítulo 8. Árboles. Continuar

INDICE 1. Introducción: Archivos y Estructuras de Archivos 2. Operaciones Fundamentales para el Procesamiento de Archivos

APUNTES DE CATEDRA: SISTEMAS DE NUMERACION - REPRESENTACION INTERNA DE NUMEROS Y CARACTERES

Tipos de datos en S. Lógica y Computabilidad. Codificación de variables y etiquetas de S. Codificación de programas en S

Complejidad computacional. Algoritmos y Estructuras de Datos I. Complejidad computacional. Notación O grande

Criterios de divisibilidad y Congruencias

CC40A Complejidad de Kolmogorov

Conceptos básicos de bases de datos

Compresión de imágenes

CURSO 2016/2017 INFORMÁTICA 1ºBCH. La codificación es. Por qué se. Fíjate en. la imagen de decirle que si. cero. decimal: 1* *2 3.

Estructuras de Datos. 8.6 Árboles B. Supongamos que los nodos de un árbol deben ser guardados en un medio de almacenamiento secundario (disco).

Este material es de uso exclusivo para clase de algoritmos y estructura de datos, la información de este documento fue tomada textualmente de varios

Introducción a la Teoría de Grafos

El Juego como Problema de Búsqueda

FUNDAMENTOS DE PROGRAMACIÓN TALLER No. 1 Profesor: Alvaro Ospina Sanjuan

ALGORITMOS GENÉTICOS

I.E.S Santo Domingo. Departamento Informática. Tema 1 Los Sistemas de Numeración. José Luis Mollinedo Jiménez

Características y uso. Recordando. La criptografia define una función de

SISTEMAS DE NUMERACIÓN. Sistema de numeración decimal: = =8245,97

Problemas propuestos. Simplificar las siguientes expresiones lógicas

Tema 1. Informática Básica

Webir /09/2014

Capítulo 12: Indexación y asociación

Parte de Algoritmos de la asignatura de Programación Master de Bioinformática. Búsqueda exhaustiva

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

L = {a n b n n>0}. L = {a n b n c n n>0}. L = {xcx x {a, b} + }.

EL LENGUAJE ALGEBRAICO

Algoritmos y Estructuras de Datos Curso 06/07. Ejercicios

Representación de la Información (III)

Criptografía Susana Puddu

Árboles. Un grafo no dirigido es un árbol si y sólo si existe una ruta unica simple entre cualquiera dos de sus vértices.

Comprimiendo Grafos de la Web

Proyecto 6. Árboles de decisión: Un árbol de decisión es un modelo de predicción utilizado en el ámbito de la inteligencia artificial.

Programación Dinámica

UNIDAD I.- INTRODUCCIÓN A LA GRAFICACIÓN POR COMPUTADORA

1. Diseñe algoritmos que permitan resolver eficientemente el problema de la mochila 0/1 para los siguientes casos:

1.1 Sistemas de numeración. Ejemplos de sistemas de numeración posicionales. Base numérica. Circuitos Digitales

Programación Dinámica

Convertir un AFND a un AFD

Práctica de C. Observaciones preliminares. Problemas. LyA. Problema número 2

PRÁCTICA No. 9 RECORRIDOS EN ÁRBOLES BINARIOS

Búsqueda Heurística (1ª parte)

CREACIÓN Y OPERABILIDAD DE UNA BASE DE DATOS DE ADN DISTRIBUIDA MEDIANTE EL USO DE UN SISTEMA GRID CREACIÓN DE ÁRBOLES DE SUFIJOS

Seminario de problemas-eso. Curso Hoja 3

CODIFICACIÓN DE LA FUENTE

Organización de Computadoras. Clase 7

Tema 10: Árbol binario de búsqueda

Es un conjunto de palabras y símbolos que permiten al usuario generar comandos e instrucciones para que la computadora los ejecute.

Representación de números enteros: el convenio exceso Z

Búsqueda en línea y Búsqueda multiagente

JUEGOS. Área de aplicación de los algoritmos heurísticos Juegos bi-personales: oponente hostil

Lógica Proposicional IIC1253. IIC1253 Lógica Proposicional 1/64

Conjuntos. Un conjunto es una colección de objetos. Si a es un objeto y R es un conjunto entonces por. a R. se entiende que a pertenece a R.

Aritmética de Enteros

REPRESENTACIONES GRAFICAS DE LOS DATOS Ejemplo 2

Práctica de laboratorio: Uso de la calculadora de Windows con direcciones de red

Sistemas Operativos. IES Pedro Espinosa. Relación de ejercicios Tema 1: Conceptos básicos de informática

Definición de Memoria

banda, mayor es la distorsión, y mayor es la probabilidad de que se cometan errores en el receptor.

Definiciones Inductivas

Tema 4: Gramáticas independientes del contexto. Teoría de autómatas y lenguajes formales I

Estructura de datos y algoritmos. Tema V TDA DINÁMICOS NO LINEALES: Árboles: árboles binarios

Preparación de un diagrama de flechas para un pedigrí o árbol genealógico (Lasley, 1991)

Representación de números enteros: el convenio complemento a dos

Matemática computable

como les va con las practicas?

Teoría de la Información

III Unidad Planificación y diseño de una red (LAN)

(d) Puede haber estrategias que funcionan mejor que Minimax si el contrincante es

Definición 1.1 Sea G = (V, A) un grafo no dirigido. G se denomina árbol si es conexo y no contiene ciclos.

TEMA V SISTEMAS DE NUMERACIÓN

Técnicas y Dispositivos Digitales 1. UNIDAD 3 Códigos Binarios

Desarrollo de Programas. Prof. Lisbeth C. Pérez Rivas

Representación de la información

Transcripción:

Algo sobre Compresión de Datos

Un conflicto histórico Algoritmos tradicionalmente diseñados para ahorrar tiempo..y espacio Posibles conflictos: Estructuras que son más eficientes en términos de tiempo que requieren más espacio Estructuras que son eficientes en términos de espacio pero que requieren más tiempo de procesamiento A veces no hay conflicto: Guardar la información en forma tal que ocupe el menor espacio posible para que su transmisión lleve el menor tiempo posible Aunque cierto conflicto subsiste: Si la información está muy bien compactada, puede requerir tiempo de descompactación Argumento: No hace falta comprimir porque ahora los dispositivos de almacenamiento son muy baratos Contraargumentos: Al manejar grandes volúmenes de información, los ahorros son más importantes Time is money

Compresión de archivos En general, las técnicas de compresión de archivos aprovechan la redundancia contenida en los archivos Varios métodos: Codificación por longitud de series Códigos de Huffman Familia de métodos ZL (Ziv-Lempel)

Codificación por longitud de series Empecemos por un chiste : Un Sr. llega a la casa y encuentra una nota de X: Pasó un Sr., dijo que era urgentísimo que lo llame sin falta al 77774444442222222299999 Intrigado, mira la nota al derecho y al revés sin entender a qué número tiene que llamar. Definitivamente ese no es un número de teléfono. Finalmente, llama a X y se lo dice - Cómo que no? Yo escribí lo que me dictaron: cuatro siete seis cuatro ocho dos cinco nueve La codificación por longitud de series es así.pero al revés! Originalmente, era un chiste de gallegos. X podría ser la esposa, el esposo, un gallego, el portero, la nueva secretaria, pero en todos los casos me acusarían de falta de correctitud política, así que lo dejamos como X.

Fundamentos La redundancia más simple que se puede encontrar son las largas series de caracteres repetidos Ej: AAAABBBAABBBBBCCCCCCCCDABCBAAABBBBCCCD Reemplazamos cada repetición por un sólo ejemplar del caracter repetido acompañado por la cantidad de repeticiones: 4A3B2A5B8C1D1A1B1C1B3A4B3C1D O mejor todavía 4A3BAA5B8CDABCB3A4B3CD

Variante para archivos binarios Almacenar simplemente la longitud de cada secuencia, sabiendo que los caracteres serán alternantes Es útil si hay pocas series cortas. Notar que, sabiendo que la longitud de cada línea es de 51 pixels, no hace falta almacenar fines de línea Si se utilizan 6 bits para cada longitud, se necesitan 384 bits contra los 975 de la representación explícita.

Volvamos a archivos genéricos Necesitamos representaciones separadas para los elementos del archivo y los de su versión codificada (en el chiste, si no tuvieramos los espacios, como distinguiríamos 47 64 de 4 764 o de 476 4? Supongamos que tenemos sólo las 26 letras y el espacio en blanco, Cómo hacemos? 1 ra posiblidad: usar un caracter que no aparece como caracter de escape. Cada aparición indica que las siguientes son un par (longitud,carácter), y representamos una longitud i con la i-ésima letra Ej. (usando la Q como escape ) QDABBBAAQEBQHCDABCBAAAQDBCCCD Notar que no codificamos secuencias de menos de 4 caracteres (ya que necesitamos al menos 3 para codificar! Esos 3 se llaman secuencia de escape )

Seguimos con archivos genéricos Problema: qué hacemos si el caracter de escape sí aparece? Posible solución: representarlo con una secuencia de escape imposible : Q<espacio> (sería imposible si el <espacio> corresponde al número 0) Qué pasa si tratamos de comprimir un archivo ya comprimido? cómo hacemos para series más largas que 26 elementos? podemos usar varias secuencias de escape: QZAQYA significa: 51 Aes (26+25) Otra posibilidad: si se esperan secuencias largas, utilizar más de un caracter para codificar longitudes. Cierre: este método no es muy útil para archivos de texto, en los que los únicos caracteres que aparecen en largas secuencias son los <espacio>.

Códigos de Huffman

Códigos de longitud fija Ejemplo: ABRACADABRA Representando cada letra con 5 bits, arrancando con el 00001 para la A etc.: 00001000101001000001000110000100100000010001010 01000001 Decodificación fácil: leer de a 5 bits y reemplazarlo por la letra correspondiente

Códigos de longitud variable Idea: por qué usar la misma cantidad de bits para representar caracteres muy frecuentes que para caracteres muy raros? Por ejemplo, qué pasaría si usaramos la siguiente tabla: A 0 B 1 R 01 C 10 D 11 ABRACADABRA = 0 1 01 0 10 0 11 0 1 01 0 (15 bits en lugar de 55) Mentira: qué pasa con los <espacio>? Igual es más corto! En realidad..todavía es peor: hay que incluir la tabla en el texto comprimido (pero para textos grandes, eso no molesta mucho )

Códigos Prefijos Podríamos evitar la necesidad de enviar separadores? Sí!: Códigos Prefijos el código de ningún caracter es prefijo del código de otro. Ej.: A 11 B 00 R 011 C 010 D 10 Hay una única forma de decodificar el mensaje 1100011110101110110001111 Hay una única forma de decodificar cualquier mensaje!

Representación de códigos prefijos Podemos usar un TRIE para representar el código. De hecho, cualquier trie con M nodos externos puede ser utilizado para codificar cualquier mensaje con M caracteres diferentes: el código de cada caracter se determina por el camino de la raíz al caracter. Con el código de la derecha, la cadena sería 011010011110111100110100, que es más corta por qué?

Códigos prefijos óptimos Código de Huffman (1952) Dado el mensaje, calcular la frecuencia de aparición de cada caracter. Ej. UNA CADENA SENCILLA A CODIFICAR CON UN NUMERO MINIMO DE BITS CAR b A B C D E F I L M N O R S T U FREC 11 6 1 5 3 4 1 6 2 3 7 4 2 2 1 3

Construcción del TRIE

Construcción del TRIE (cont.) Atención: ambas figuras no representan el mismo código

Volviendo a nuestro ejemplo Se codifica con la siguiente secuencia 01110100001111100000110101000010000111101 10100001011000011010010100000111000111110 01001110100011101110011100000101011111100 10010101110111010111010011101101000101011 00111101100010100010110100111111010100011 11101100011011110110111 Esta secuencia tiene 228 bits en lugar de los 300 que se utilizarían en la codificación directa.

Optimalidad del Código H Por qué este código es el mejor? Definición: La longitud ponderada del camino externo de un árbol es la suma, para todos los nodos externos, del producto de su peso por la distancia a la raíz. Propiedad: La longitud del mensaje codificado es igual a la longitud ponderada del camino externo del árbol de frecuencias de Huffman

Optimalidad del Código H Teorema: Ningún árbol con las mismas frecuencias en los nodos externos puede tener una longitud ponderada del camino externo menor a la del árbol de Huffman. Lema: Dado un código, podemos reacomodar las hojas del árbol para que los dos caracteres menos frecuentes sean hermanos y obtener un código mejor o igual. Dem: El menos frecuente (x) es la hoja más lejana (si no lo es, hago un intercambio y obtengo un código mejor o igual). El padre de x tiene otra hoja hija h (si no la tiene, por qué x no está más arriba?) h tambiénes una hoja más lejana. Si está ocupada por un nodo que no es el segundo menos frecuente, sino por uno más frecuente, podemos hacer un intercambio que mejorará el código.

Optimalidad del Código H Dem del teorema Por inducción en la cantidad de caracteres del alfabeto. Base: un caracter, trivial Paso inductivo: Sea T el árbol construido por el algoritmo de Huffman sobre todo el alfabeto. Sean x,y los caracteres menos frecuentes, f(x), f(y) sus frecuencias Sea el árbol T construido por el algoritmo de Huffman sobre el alfabeto en el que se eliminan x e y reemplazándolos por un nuevo caracter z, con frecuencia f(z)=f(x)+f(y). Por hipótesis inductiva, T es óptimo. LPCE(T)=LPCE(T )+f(x)+f(y). Supongamos existe T con LPCE(T )<LPCE(T). En T x e y son hermanos. Pero entonces sea T =T reemplazando al padre de x e y por z con f(z)=f(x)+f(y) Tenemos que LPCE(T ) = LPCE(T ) - f(x) - f(y) < LPCE(T) - f(x) - f(y) = LPCE(T ) Absurdo, pues supusimos T óptimo.

Familia de métodos ZL ( Sólo para tener idea!) Propuestos por Abraham Lempel y Jacob Ziv, en 1977 También basados en la repetición Pero de patrones más complejos No necesita ni presuponer frecuencias ni hacer dos pasadas También utiliza tries Reemplaza secuencias completas por un puntero a una posición del TRIE Utilizada en los conocidos métodos GZip, etc.

Mini-ejemplito ZL Ej. Partimos el texto en bloques ya visto + nuevo carácter Luego, numeramos los bloques

Mini-ejemplito ZL (sigue) Reemplazamos cada bloque por un puntero al bloque ya visto y el nuevo carácter Podemos pensar todo como un TRIE Cómo sigue este?