Compactação de Dados. Fonte de consulta: Szwarcfiter, J.; Markezon, L. Estruturas de Dados e seus Algoritmos, 3a. ed. LTC. Seção 12.5 em diante.

Documentos relacionados
Compactação de Dados Letícia Rodrigues Bueno

4 C odigos de Huffman 4.1 Arvores de c odigo folhas os internos n ıvel altura Arvore bin aria arvore bin aria ordenada

Pré-Processamento de Documentos

Compressão de Textos. Introdução. Introdução. Introdução. O volume de informação textual disponível on-line é imenso:

EET-49 Comunicações II

Nivio Ziviani. Conjunto de transparências elaborado por Nivio Ziviani, Patrícia Correia e Fabiano C. Botelho

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Árvores. Fabio Gagliardi Cozman. PMR2300 Escola Politécnica da Universidade de São Paulo

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Método Guloso. Troco mínimo. Paulo Eustáquio Duarte Pinto (pauloedp arroba ime.uerj.br) junho/2012. Troco mínimo. Troco mínimo

Compressão de Dados. Prof. Flávio Humberto Cabral Nunes

Algoritmos em Strings (compressão de texto)

Aplicação de Árvores: Código de Huffman

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula

Compressão Sem Perdas: Codificações Huffman e Aritmética. Adelar da Silva Queiróz Marcelo Teixeira Thiago da Silva Sodré

Estruturas de Dados 2

Gerenciamento de Memória. Aleardo Manacero Jr.

AULA A 6 ESTRUTURA DE DADOS. Compressão de dados

Estrutura de dados 1. Processamento de Cadeias de Caracteres

Processamento de Imagem. Compressão de Imagens Professora Sheila Cáceres

SM - Sistemas Multimédia CODIFICAÇÃO DE FONTE (parte 2) 4.º / 6.º semestre LEIC (verão 2016/2017)

Compressão de Textos

Organização de Arquivos. Thiago A. S. Pardo Leandro C. Cintra M.C.F. de Oliveira Cristina D. A. Ciferri

COMPRESSÃO E CODIFICAÇÃO SEM PERDAS. Mauro Nogueira Mônica Festa Paulo Antiquera

Fundamentos da Compressão de Vídeo

Teoria da Informação

universidade federal de pernambuco departamento de estatística

Algoritmos gulosos (greedy) CLRS

Módulo 5 Codificação Sistemas Multimédia Ana Tomé José Vieira

TÉCNICAS DE CODIFICAÇÃO DE SINAIS

Aplicações de árvores/ Exercícios. 30/11 e 2/12 QuadTrees para representação de imagens e Algoritmo de Huffman para transmissão/compressão de dados

COMUNICAÇÃO DIGITAL INTRODUÇÃO À TEORIA DE INFORMAÇÃO

Códigos Corretores de Erros e Cliques de Grafos

Problema de escalonamento

Árvores Binárias e AVL Felipe Barros Pontes Gustavo Márcio de Morais Cunha Márcio de Medeiros Ribeiro

6 Inserção Seletiva de Nulos

Televisão Digital. Codificação de Entropia Códigos de Huffman. Hélio Manuel Gonçalves Jaco

Code Compression for Embedded Systems

FACULDADE DE TALENTOS HUMANOS DEPARTAMENTO DE ENGENHARIA ELÉTRICA PROCEDIMENTOS EXPERIMENTAIS DE COMUNICAÇÃO DIGITAL II PARA TELECOMUNICAÇÃO

Sistemas de Numeração. Tiago Alves de Oliveira

Fundamentos de TI. Aula07_Representação de dados pelo Computador.doc 1

Organização de Arquivos

Organização de Arquivos

ÁRVORES E ÁRVORES BINÁRIAS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Processamento digital de imagens

Árvores de Pesquisa (Parte II)

Quinto Trabalho Prático. Este trabalho tem como objetivo indexar arquivos de dados usando um índice árvore-b.

Árvores Binárias. Disciplina de Algoritmos e Estrutura de Dados III. Prof. Marcos Antonio Schreiner 17/03/2015

Engenharia Civil. Representação da Informação. Introdução à Computação

SCC-502 Algoritmos e Estruturas de Dados 1 M. Cristina/Jorge. Trabalho Rec Codificação de Huffman

ELEMENTOS MULTIMÍDIA Compressão de dados. Prof. Fabiano Taguchi 06/11/2014.

Pesquisa em Memória Primária. Prof. Jonas Potros

ÁRVORE B. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Circuitos Lógicos Aula 5

Algoritmos e Estruturas de Dados I. Aula 11 Árvores AVL. Prof. Jesús P. Mena-Chalco.

SEBENTA INTRODUÇÃO Á ALGORITMIA

2 Teoria da Informação

Árvores. SCC-214 Projeto de Algoritmos. Thiago A. S. Pardo. Um nó após o outro, adjacentes Sem relações hierárquicas entre os nós, em geral

Camada de Enlace de Dados

Abordagens para Resolução de Problemas

Algoritmos de Compressão sem Perdas

Nivio Ziviani. Conjunto de transparências elaborado por Nivio Ziviani, Patrícia Correia e Fabiano C. Botelho.

3 Algoritmos Genéticos

INTRODUÇÃO À TEORIA DA INFORMAÇÃO

Codificação de Huffman

Estudo de caso: codificação de Huffman (parte II)

Curso de Engenharia de Computação - UTFPR Teoria da Computação - Prof. Celso Kaestner Lista de exercícios

Árvores de Pesquisa (Parte II)

Pesquisa em Árvores Digitais. Adaptado de David M.

Questão 1. Nome para o arquivo fonte questao1.c

CIC 111 Análise e Projeto de Algoritmos II

Árvores. Algoritmos e Estruturas de Dados I. José Augusto Baranauskas Departamento de Física e Matemática FFCLRP-USP

Aula 19: Percursos em árvores binárias. Percurso em pré-ordem, ordem simétrica e pós-ordem. Algoritmo para cálculo de altura uma árvore binária

Algoritmos e Estrutura de Dados II. Árvore. Prof a Karina Oliveira.

Universidade Federal de Mato Grosso do Sul Estruturas de Dados e Programação. Processamento de Cadeias

COMPACTAÇÃO DE DADOS COM DETEÇÃO DE ERROS

ESTRUTURA DE DADOS E ALGORITMOS. Árvores Binárias de Busca. Cristina Boeres

Bit (Binary Digit) é a menor unidade de armazenamento de informação dentro do computador; Byte é a união de 8 bits capaz de representar 256

Sistemas de Numeração

Estruturas de Repetição

Organização de Arquivos. SCE-183 Algoritmos e Estruturas de Dados II

Teoria da Informação

Processamento de Imagem. Prof. MSc. André Yoshimi Kusumoto

Capítulo 3. A camada de enlace de dados

Expressões e Gramáticas Regulares e Autómatos Finitos

Binário Decimal

ÁRVORE B+ Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

o CÓDIGO FM 92-VIII EXT. GRIB

Aula 20: Árvores Binárias de Busca. Algoritmos de busca e inserção

CIC 110 Análise e Projeto de Algoritmos I

Hashing: conceitos. Hashing

Estruturas de Dados. Profº Carlos Alberto Teixeira Batista

Fundamentos de Telecomunicações

ESTRUTURAS DE DADOS II

Lista de Figuras Figura 1 1: Figura 1 2: Figura 1 3: Figura 1 4: Figura 1 5: Figura 1 6: Figura 1 7: Figura 2 1: Figura 2 2: Figura 2 3: Figura 2 4:

Tipos de códigos de fonte

Modelos Evolucionários e Tratamento de Incertezas

Linguagem C: Introdução

Sistemas numéricos e a Representação Interna dos Dado no Computador

Transcrição:

Compactação de Dados Fonte de consulta: Szwarcfiter, J.; Markezon, L. Estruturas de Dados e seus Algoritmos, 3a. ed. LTC. Seção 12.5 em diante.

Compactação de Dados } Armazenar arquivos grandes (backup) } Compactação permite armazenamento ocupando mesmo espaço } Transmitir arquivos grandes por uma rede } Compactação permite transmissão mais eficiente 2

Compactação } Dados do arquivo são substituídos por símbolos Tabela de Símbolos 3

Compactação = Codificação Arquivo Original Codificação Arquivo Compactado Tabela de Símbolos 4

Descompactação = Decodificação Arquivo Compactado Decodificação Arquivo Original Tabela de Símbolos 5

Alternativas } Algoritmo de Frequência de Caracteres } Algoritmo de Huffman 6

Alternativas } Algoritmo de Frequência de Caracteres } Algoritmo de Huffman 7

Algoritmo de Frequência de Caracteres } Pode ser usado em arquivos texto } Exemplo: sequência de DNA } GGCTAACAAACAAGAAACATAAACAGAATAGGCGCCCT 8

Compactação } Determinar a quantidade de símbolos idênticos consecutivos existentes no texto } Cada uma das sequências máximas de símbolos idênticos é substituída por um número indicando da frequência do símbolo em questão, seguido do símbolo 9

Exemplo } Cadeira Original: } GGCTAACAAACAAGAAACATAAACAGAATAGGCGCCCT } Cadeia Compactada: } 2G1C1T2A1C3A1C2A1G3A1C1A1T3A1C1A1G2A1T1A2G1C1G3C1 T 10

Exemplo } Cadeira Original: } GGCTAACAAACAAGAAACATAAACAGAATAGGCGCCCT } Cadeia Compactada: } 2G1C1T2A1C3A1C2A1G3A1C1A1T3A1C1A1G2A1T1A2G1C1G3C1 T Ineficiente! Texto compactado ficou maior que o original 11

Otimização } Assumir que ausência de frequência significa ocorrência = 1 } Exemplo: } Cadeira Original: } GGCTAACAAACAAGAAACATAAACAGAATAGGCGCCCT } Cadeia Compactada: } 2GCT2AC3AC2AG3ACAT3ACAG2ATA2GCG3CT 12

Arquivos que contêm números } Textos que contêm números como símbolos podem causar problema, uma vez que o número pode ser confundido com frequência } Solução: usar um caractere de escape, como @ } Exemplo: } Cadeia Original: } AAA33333BA6666888DDDDDDD99999999999AABBB } Cadeia Compactada: } 3A5@3BA4@63@87D11@92A3B 13

Alternativas } Algoritmo de Frequência de Caracteres } Algoritmo de Huffman 14

Algoritmo de Huffman } Objetivo: produzir codificação ótima dentro de certos critérios 15

Texto e Alfabeto } Texto é composto por um conjunto de símbolos S = {s 1,..., s n }, n > 1 } Para cada símbolo, sabe-se a frequência em que ele aparece no texto } Frequência total, incluindo ocorrências não consecutivas } Exemplo: } Texto: AAA33333BA6666888DDDDDDD99999999999AABBB } S = {A, 3, B, 6, 8, D, 9} } Frequências: f(a) = 6; f(3) = 5; f(b) = 4; f(6) = 4; f(8) = 3; f(d) = 7; f(9) = 11 16

Códigos } Nenhum código pode ser prefixo de outro } Uso de árvore binária de prefixos } Cada símbolo de S está em uma folha da árvore } Códigos atribuídos a cada símbolo de S são sequências binárias 17

Exemplo } S = {A, B, C, D, E} Símbolo Código A 00 B 0100 C 0101 D 011 E 1 A B C E D 18

Codificação } Uso da tabela de símbolos } Texto: Símbolo A 00 Código B 0100 C 0101 D 011 E 1 } DCCACADEACCCCCB CEBBBD 19

Codificação } Uso da tabela de símbolos } Texto: Símbolo A 00 Código } DCCACADEACCCCCB CEBBBD B 0100 C 0101 D 011 E 1 } Texto Codificado: } 011010101010001010001 110001010101010101010 101010001011010001000 100011 20

Codificação } Uso da tabela de símbolos } Texto: Símbolo A 00 Código } DCCACADEACCCCCB CEBBBD (21 bytes) B 0100 C 0101 D 011 E 1 } Texto Codificado: } 011010101010001010001 110001010101010101010 101010001011010001000 100011 (8 bytes + 5 bits) 21

Decodificação } Uso da Árvore Binária de Prefixos } Percorrer o texto da esquerda para a direita, ao mesmo tempo em que a árvore é percorrida } Ao atingir uma folha, substituir a sequência pelo símbolo identificado, e voltar para a raiz da árvore 22

Exemplo de Decodificação } 011010101010001010001 110001010101010101010 101010001011010001000 100011 E A 0 1 D B C 23

Exemplo de Decodificação } 011010101010001010001 110001010101010101010 101010001011010001000 100011 E A 0 1 D B C 24

Exemplo de Decodificação } 011010101010001010001 110001010101010101010 101010001011010001000 100011 E A 0 1 D B C 25

Exemplo de Decodificação } 011010101010001010001 110001010101010101010 101010001011010001000 100011 E } Texto Decodificado: } D A 0 B C 1 D 26

Exemplo de Decodificação } 011010101010001010001 110001010101010101010 101010001011010001000 100011 E } Texto Decodificado: } D A 0 B C 1 D 27

Exemplo de Decodificação } 011010101010001010001 110001010101010101010 101010001011010001000 100011 E } Texto Decodificado: } D A 0 B C 1 D 28

Exemplo de Decodificação } 011010101010001010001 110001010101010101010 101010001011010001000 100011 E } Texto Decodificado: } D A 0 B C 1 D 29

Exemplo de Decodificação } 011010101010001010001 110001010101010101010 101010001011010001000 100011 E } Texto Decodificado: } DC A 0 B C 1 D 30

Objetivo do Algoritmo de Huffman } Minimizar o comprimento do texto codificado } Ideia: atribuir códigos menores a símbolos mais frequentes 31

Checando o tamanho do texto codificado 3 bytes menor que o exemplo anterior } Uso da tabela de símbolos } Texto: Símbolo Frequência A 3 101 Código } DCCACADEACCCCCB CEBBBD (21 bytes) B 4 111 C 9 0 D 3 110 E 2 100 } Texto Codificado: } 100001010101110100101 000001110100111111111 110 (5 bytes + 5 bits) 32

Geração dos códigos: Árvore de Huffman } Criar um nó da árvore para cada símbolo de S. Cada nó será considerado uma subárvore. } Unir as duas subárvores com menor frequência, formando uma nova subárvore } A raiz da nova subárvore conterá a soma das frequências das duas subárvores unidas } Continuar unindo subárvores até que reste apenas uma } Rotular arestas com ZEROS e UNS (zeros à esquerda e uns à direita) 33

Exemplo Símbolo Frequência A 3 B 4 C 9 D 3 E 2 E A D B C 34

Exemplo Símbolo Frequência A 3 B 4 C 9 D 3 E 2 5 E A D B C 35

Exemplo Símbolo Frequência A 3 B 4 C 9 D 3 E 2 5 7 E A D B C 36

Exemplo Símbolo Frequência A 3 B 4 C 9 D 3 E 2 12 5 7 E A D B C 37

Exemplo Símbolo Frequência A 3 B 4 C 9 D 3 E 2 12 5 7 21 E A D B C 38

Exemplo Símbolo Frequência Código A 3 001 B 4 011 C 9 1 D 3 010 E 2 000 12 0 21 1 Notem que essa árvore é um espelho da árvore do slide 32 ambas são mínimas 5 7 E A D B C 39

Algoritmo de Huffman } Uso de listas de prioridade } Construir uma lista de prioridade com as frequências de cada subárvore } ATENÇÃO: prioridades são invertidas } Nó com menor frequência é considerado como tendo maior prioridade 40

Construção da Árvore de Huffman /* T e T são subárvores significa fusão de árvores minimo(t, F) retira o nó T de menor prioridade da lista de prioridades F inserir(t, f, F) insere o nó T na lista de prioridades F, com priorodade f n é o número de símbolos no alfabeto S */ procedimento huffman(f, n) para i:= 1 até n-1 minimo(t, F) minimo(t, F) T := T T f(t) := f(t ) + f(t ) inserir(t, f, F) 41 Fonte: Algoritmo 12.4, página 289

Exercício 1 } Escrever o texto compactado correspondente ao texto abaixo usando: (a) Algoritmo de Frequência de Caracteres (omitindo o número 1 para ocorrências de um único caractere) (b) Algoritmo de Huffman BBBCCCCDEFFFBAAAAAAAAAACDDFFFFFFFCF 42

Exercício 2 } Desenhar a árvore de Huffman para o seguinte conjunto de símbolos e frequências Símbolo Frequência A 1 B 6 C 2 D 1 E 1 F 9 G 2 H 3 43

Exercício 3 } Implementar um algoritmo de codificação de textos que recebe como entrada um String contendo o texto a ser codificado, e uma matriz que representa a tabela de codificação. O algoritmo deve produzir como resultado o texto codificado. 44