Almacenamiento de datos CI-1010 Introducción a la computación Prof. Braulio José Solano Rojas ECCI, UCR Compresión de datos ● Dos categorías: ● Sin pérdida de información (lossless). – ● No pierde información en el proceso de compresión de los datos. Con pérdida de información (lossy). – Pierde información en el proceso de compresión. Usualmente comprimen más y se utilizan en campos donde la pérdida puede ser tolerada, como con imágenes o audio. Tipos de compresión ● ● ● ● ● Codificación por zonas (run length encoding) Codificación dependiente de la frecuencia (frecuency dependent encoding) Codificación relativa (relative encoding – differential encoding) Codificación de diccionario (dictionary encoding) Codificación adaptativa de diccionario (adaptative dictionary encoding) Codificación por zonas ● ● ● BBBBBBBBBBBBNBBBBBBBBBBBBNNNBBB BBBBBBBBBBBBBBBBBBBBBNBBBBBBBBB BBBBB Si aplicamos la codificación run-length a esta línea, obtendríamos lo siguiente: 12B1N12B3N24B1N14B Codificación dependiente de la frecuencia ● ● Es un sistema de codificación donde el largo de la representación en bits de cada símbolo es inversamente proporcional a la frecuencia de aparición del símbolo. Acá los símbolos codificados son de tamaño variable, a diferencia de codificaciones como Unicode (16 bits), ASCII (7 bits), etc. Codificación dependiente de la frecuencia: Huffman ● ● “Esto es un ejemplo de árbol de Huffman” Codificar esta frase con Huffman requiere de 156 bits (sin contar el espacio del árbol). Codificación dependiente de la frecuencia: Huffman Codificación relativa ● ● Algunas veces el flujo de datos consiste en unidades las cuales difieren ligeramente de las precedentes. Por ejemplo, los cuadros de una película. Este tipo de codificación lo que hace es grabar las diferencias entre unidades consecutivas en lugar de unidades completas. Puede ser con pérdida o sin pérdida. Codificación de diccionario ● ● Un diccionario es una colección de bloques que nos permiten construir el mensaje a ser construido y el mensaje mismo es un conjunto de referencias al diccionario. Ejemplo: dado que los procesadores de texto ya poseen un diccionario para corrección ortográfica se podría utilizar este para codificar el texto en el procesador. Codificación adaptativa de diccionario ● ● Un ejemplo muy popular de este tipo de codificación es el algoritmo LZW (Lempel-ZivWelsh). Para codificar un mensaje utilizando LZW se comienza con un diccionario básico Codificación de imágenes ● GIF (Graphics Interchange Format) ● JPEG (Joint Photographic Experts Group) ● TIFF (Tagged Image File Format) Codificación de audio y vídeo ● MPEG (Motion Picture Experts Group) ● MP3 (MPEG layer 3) Errores de comunicación ● ● En la transmisión de datos es posible que el flujo de bits en el destino no sea el mismo que en el origen debido a factores físicos. Para resolver dicho problema se han diseñado una serie de técnicas de codificación que permiten la detección y la detección de errores. Bit de paridad ● Un método muy sencillo de detección de errores basado en el hecho de que si cada grupo de bits contiene un número par de 1s y si hay un número par un error ocurrió. Para esto se agrega un bit más a grupos como los bytes. Bit de paridad ● Defecto: ● ● No detecta todos los errores. Por ejemplo, si dos errores ocurren, no sólo uno, el conteo de paridad puede ser correcto aunque se haya modificado el patrón de bits. Solución: ● Utilizar un conjunto de bits de paridad. Por ejemplo, se puede utilizar un byte donde cada bit es un bit de paridad para un conjunto de bits. El primer bit de paridad toma en cuenta comenzando desde el primer bit, el segundo bit de paridad toma en cuenta contando desde el segundo, etc. Bit de paridad ● Variaciones del grupo de bits de paridad dan nacimiento a esquemas como: ● Checksums ● Cyclic redundant checks Códigos de corrección de errores ● Aunque el uso de bits de paridad nos permite la detección de errores, no nos permite la corrección de estos errores. Existen códigos para que los errores no sólo sean detectados si no también corregidos. Distancia de Hamming Distancia de Hamming ● Si se recibe el patrón 010100 y lo comparamos con nuestro código es fácil saber que lo que recibimos es una D pues la distancia más pequeña es la de la D. ¡Gracias por su atención! ¿Preguntas?