Figure 2 - Nós folhas de uma árvore binária representando caracteres ASCII



Documentos relacionados
ESTRUTURAS DE DADOS II

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES SISTEMAS DE NUMERAÇÃO: REPRESENTAÇÃO EM PONTO FLUTUANTE. Prof. Dr. Daniel Caetano

Unidade 5: Sistemas de Representação

Aula 4 Estatística Conceitos básicos

2. Execução do algoritmo de Huffman para construção de uma árvore binária (árvore de Huffman).

E/S CPU. Memória (Instruções e dados) 2 PARADIGMA IMPERATIVO. Instruções e dados. Resultados das operações. Unidade lógica e aritmética

Estrutura de Dados Básica

REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade

1. Os caracteres (p.ex: a, A, 8,!, +, etc) são representados no computador através da codificação ASCII (American Standard Code for

Sistema de Numeração e Códigos. CPCX UFMS Prof. Renato F. dos Santos

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES

1) Ao ser executado o código abaixo, em PHP, qual será o resultado impresso em tela?

Exercícios Adicionais

Lista 1 para a P2. Operações com subespaços

Realizando cálculos para o aparelho divisor (I)

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À PROGRAMAÇÃO COM C/C++ Prof. Dr. Daniel Caetano

Este trabalho tem como objetivo praticar o uso de tipos abstratos de dados e estruturas do tipo Lista.

Árvores B. Hashing. Estrutura de Dados II Jairo Francisco de Souza

Aula 4 Conceitos Básicos de Estatística. Aula 4 Conceitos básicos de estatística

Regras Métodos Identificadores Variáveis Constantes Tipos de dados Comandos de atribuição Operadores aritméticos, relacionais e lógicos

Fundamentos em Informática (Sistemas de Numeração e Representação de Dados)

Organização e Arquitetura de Computadores I

Memória cache. Prof. Francisco Adelton

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA DISCUSSÃO DOS EXERCÍCIOS E CONSTRUÇÃO DE PROGRAMAS SEQUENCIAIS. Prof. Dr. Daniel Caetano

Trabalho 7 Fila de prioridade usando heap para simulação de atendimento

MC102 Algoritmos e programação de computadores Aula 3: Variáveis

Variáveis e Comandos de Atribuição

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo

Som, Vídeo, e Deep Zoom. José Antônio da Cunha IFRN

Circuitos Digitais. Conteúdo. Sistema de Numeração e Códigos :: Conversões de Binário para Decimal SISTEMA DE NUMERAÇÃO E CÓDIGOS

Sumário. Deadlock. Definição. Recursos. M. Sc. Luiz Alberto

Conceitos básicos da linguagem C

PRINCÍPIOS DE INFORMÁTICA PRÁTICA OBJETIVO 2. BASE TEÓRICA. 2.1 Definição de Planilha Eletrônica

Vetores. Professor Dr Francisco Isidro Massettto

FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2

Sistemas Operacionais. Prof. André Y. Kusumoto

Principais códigos utilizados. Codificação. Código binário puro. Codificação binária. Codificação Binária. Código Binário puro e suas variantes

Estrutura de Dados Básica

Trabalho Prático 1 Tipos Abstratos de Dados

9 Comandos condicionais

Portal do Projeto Tempo de Ser

Exercícios Teóricos Resolvidos

Circuitos Digitais 144L

ÍNDICE. Tela de Configuração Dados de Etiqueta Configuração da Impressora Configuração do Papel Itens para Inserção...

INFORMÁTICA PARA ADMINISTRAÇÃO I

Gerenciamento de Entrada e Saída Hélio Crestana Guardia e Hermes Senger

Prof. Célio Conrado 1

20 Caracteres - Tipo char

Resolução da lista de exercícios de casos de uso

Introdução. A Informação e sua Representação (Parte II) Universidade Federal de Campina Grande. Unidade Acadêmica de Sistemas e Computação

Linguagem e Técnicas de Programação I Tipos de dados, variáveis e constantes. Prof. MSc. Hugo Souza Material desenvolvido por: Profa.

Computação II Orientação a Objetos

CentreWare Web e superior Agosto de P Xerox CentreWare Web Identificar e Aplicar o Firmware Patch para Escanear

Algoritmos DCC 119. Introdução e Conceitos Básicos

Especificação do Trabalho

Trabalho 3: Agenda de Tarefas

Eletrônica Digital para Instrumentação. Herman Lima Jr.

Criar as tabelas para um banco de dados

ILP - Introdução à Linguagem de Programação. Plano de estudo: - Constantes e variáveis. - Atribuindo valores às variáveis.

Software Básico. Conceito de Linguagem de Máquina e Montagem: introdução ao Assembly. Prof. MSc. Hugo Vieira L. Souza

Sistemas de Numeração. Professor: Rogério R. de Vargas INFORMÁTICA 2014/2

Programação em papel quadriculado

36ª Olimpíada Brasileira de Matemática GABARITO Segunda Fase

Usando o do-file editor Automatizando o Stata

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Montagem e Manutenção. Luís Guilherme A. Pontes

LÓGICA DE PROGRAMAÇÃO. Professor Celso Masotti

2ª Lista de Exercícios

ESTENDENDO A UML PARA REPRESENTAR RESTRIÇÕES DE INTEGRIDADE

UNIDADE 6 - PROGRAMAÇÃO MODULAR

Fabio Bento

P r o g r a m a ç ã o d e C o m p u t a d o r e s 1 o S e m P r o f. A n d r é A m a r a n t e L u i z L A B 5 tag %2d while printf PE1:

5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES

MÓDULO 4 DISTRIBUIÇÃO DE FREQÜÊNCIAS

Microsoft Access INTRODUÇÃO. Sumário INTRODUÇÃO INTRODUÇÃO INTRODUÇÃO INTRODUÇÃO. O que é Banco de Dados?

Sistemas de Numeração

Resolução eficaz de problemas: quatro exemplos

Estruturas de Dados Aula 15: Árvores 17/05/2011

INTRODUÇÃO À LINGUAGEM C++

Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos 2005.

Licenciatura em Engenharia Informática Departamento de Engenharia Informática Instituto Superior de Engenharia do Porto

Busca. Pesquisa sequencial

Introdução à Tecnologia Web HTML HyperText Markup Language XHTML extensible HyperText Markup Language Formatos de Imagens

Curso: Técnico de Informática Disciplina: Redes de Computadores. 1- Apresentação Binária

Disciplina Técnicas de Modelagem

Algoritmos e Programação Parte Teórica

O Princípio da Complementaridade e o papel do observador na Mecânica Quântica

VIII. VARIÁVEIS. Tabela I ARQUITETURA DA MEMÓRIA. 0x0000 0x34 0x0001 0xB0 0x0002 0x23. 0xFFFF 0x00

Introdução à Lógica de Programação. / NT Editora. -- Brasília: p. : il. ; 21,0 X 29,7 cm.

Permitir a troca de mensagens de texto entre os dois alunos; Permitir que um aluno enviasse para o outro uma cópia de prova;

5 Um simulador estocástico para o fluxo de caixa

Bem-vindo ao curso delta Gerenciamento de peso para a versão 9.1. Este curso aborda a nova solução de peso introduzida nessa versão.

PROCEDIMENTOS PARA ORGANIZAÇÃO E ENTREGA DE DOCUMENTOS NOVOS

UNIDADE III Aula 6 Cálculo do CRC. Fonte: Othon M. N. Batista

10/02/2015. Introdução. Podemos classificar os tipos de dados a serem processados em dados e instruções Dados: Algoritmos e Lógica de Programação

Segundo Trabalho de Programação em Ambientes Limitados

Tópicos Avançados em Banco de Dados Gerenciamento de Transações em Banco de Dados. Prof. Hugo Souza

2. Representação Numérica

A declaração de uma variável vel define o seu tipo. O tipo do dado define como ele será: Armazenado na memória. Manipulado pela ULA.

Transcrição:

A ocorrência tamanho ASCII codificação de Huffman é um A Codificação método de compactação de Huffman caracteres (American e a variável codificação dos usado símbolos Standard para por cada muitas no Code conjunto símbolo. linguages for Information de dados de programação. a Interchange) ser compactado Neste que é um para usa padrão, determinar as probabilidades cada codificação códigos caracter de (7) comuns, compacta mais bits. codificado (8) possíveis caracteres frequentemente como dados combinações o diferentes mesmo alfanuméricos, usando de maneira número para podem número pontuação que representar de ser nem bits menor codificados por todos e caracteres os de os bits caracteres com para (e.x., de 7 controle codificar bits. 8 em precisem bits). ASCII. A usam codificação caracteres Desta ser Os apenas codificados maneira, caracteres que de 7 bits. Huffman ocorrem há com mais 18 58 é Considere 1 funciona. caracteres a string dessa bom b o m e s string Char esse usam bombom. 18 ASCII 10 8 115 111 101 Usando bits. A a tabela codificação Binário 0111 0110 a seguir ASCII 1101 0011 1111 0101 0010 ilustra (8 bits como por character), a codificação os A 101 0010 0110 Considere string 0000 1101 8 bom agora 0110 111 esse 10 que 0010 0101 bombom 8 estamos Espaço 10. seria Em escrita binário, numericamente seria assim: 0010 assim: 0110 0000 Char b 0110 01111111 0011 utilizando 0110 0111 01101. uma 0011 codificação 01100101 Binário 000 baseada 00100000 em 8111 -bits 0110 10 por 0010 1111 caracter: 101 0110 1151101 1111 A string seria numericamente o m e s Espaço escrita 541 assim: 0154101 010 100 001 011 usando bits caracteres menos 18. 001 Usando 010 A economia vezes -bits 101 que 011 (e, por aparecem s). 100 caracter, de Essa 100 bits é mais 011 poderia a idéia string 101 vezes ser 000 básica bom (b, ainda 001 o, da esse 010 maior m codificação bombom ) 000 e se 001 mais usarmos 4 de 010. bits Huffman: 5 um para 0 menos 1 total caracteres 0 usar 148 e menor bits em bits que para binário: ao número aparecem invés codificar 000 as folhas para uma provêm representar árvore a sequência binária caracteres que armazena bits com que maior são caracteres frequencia. usados para nas Essa folhas, codificar técnica e cujos respectivos pode caminhos ser implementada caracteres. raiz até de

seguindo código direita-esquerda-esquerda-esquerda-esquerda-direita enquanto Árvore Usando uma o árvore caminho ASCII de uma o arcos Codificação caminho completa árvore 7 da da (1100001 raiz binária, da (ver à raiz folhas Figuras com podemos à folha sempre binário) 1. 1 e O representar concatenando ). tem código é Na 7 representando arcos. Figura ASCII todos Arcos, (Figura para a 0 s os árvore da na qualquer e caracteres ). esquerda 1 s. árvore tem Por 8 caracter/folha pelo exemplo ASCII são níveis, numerados caminho: como o a, que folhas é que significa direita- com obtido tem de 0 usando nós Podemos A compactação, estrutura teremos a convenção usar de uma precisamos uma esse codificação árvore 0/1 tipo atribuída encontrar pode diferente. codificação ser aos usada uma arcos, árvore para como determinar compactação ótima, descrito. que o Se apresente código de usarmos arquivos. de um qualquer uma número Para árvore folha maximar mínimo diferente, apenas Assuma de codificação vezes que de por cada de o Huffman, caracter caracter. e aparece foi em O inventando algoritmo em texto um está arquivo. por para D. associado encontrar Huffman Na string a em um essa bom 15. peso, árvore esse que bombom, é ótima definido é os chamado pelo caracteres número de a, árvores. caracter. Isso O 1. algoritmo Comece apenas, o faz e com Inicialmente À de m cada com de Huffman, têm uma o iteração número peso lista é essas da necessário, assume do enquando algoritmo, árvores. que igual calcular os têm diminua Inicialmente, uma duas ao caracteres um peso esses árvores a único do cada pesos será, caracter todas são passo. nó (ver construída com juntadas e do Dica árvores Este espaço um nó. 1). é criando Caracteres o caracter a são têm algoritmo: partir compostas peso uma e. o um nova Para peso ocorrerem de grupo árvore. usar um deste mais têm raiz da o frequentemente menor primeira peso. árvore Ordene têm seja o a maior o lista caracter peso. de árvores de Caracteres menor de peso forma que e ocorrerem crescente, o nó raiz da menos fazendo última frequentemente árvore seja o nó.. Repita A caracter árvore os Pegue subárvore Exclua maneira de final passos maior será T1 Tr que a duas cuja e peso. esquerda a seguir T árvore a raiz primeiras lista até lista tenha seja ótima que (mantendo mantida árvores T1 o sobre de e codificação. subárvore apenas igual da ordenada. T1 lista e à T soma uma direita e na única chame dos memória) seja pesos árvore: T. de T1 de e inclua e T1 T. e T Tr Crie na e cuja uma lista,de nova o string. mostrados A Figura Note 4 mostra com que o a peso a lista fase está inicial representa ordenada do algoritmo segundo o número para os a pesos string vezes dos bom o respectivo caracteres. esse bombom. caracter aparece Os nós são na Figure 1 - Exemplo de árvore de codificação binária o o Figure - Nós folhas de uma árvore binária representando caracteres ASCII Figure - Caminho de codificação ASCII para o caracter "a"

árvores. Os soma nós dois são dos primeiros retirados Figura nós 5 mosta da nós pesos lista são a dos nova e juntados o nós árvore raiz filhos para sendo da (Figura formar ávore inserida 5). criada uma Seguindo no nova é final inserido árvore, da o lista algoritmo, ordenadamente cujo (raiz peso com os o dois peso nó na primeiros raiz 4). lista é de a Lista o m Figure 4 - Etapa inicial algoritmo de Huffman (após passo 1) 4 o m o m 4 Figure 5 - Após passo do algoritmo (pela prímeira vez)

Repete-se demonstra os o resto passos da acima execução até do que algoritmo sobre apenas passo-a-passo. uma árvore. A tabela de figuras a seguir 1 5 5 o m 4 7 o 4 5 o m 4 5 15 m A 0 para codificação arcos da de esquerda caracteres e 1 induzida para Char arcos pela da última direita): Binário árvore (árvore 8) é a seguinte (considerando 4 4 5 8 15 o m Usando b o 111 111 essa 00 tabela 01110 de codificação, 100101101 m e s Espaço a 100 string 110 bom 111 110 101 100 esse 0001 bombom 1110001 ficaria assim:

Desta como Implementação Há programa um duas arquivo mostramos forma arquivo partes que usamos faz descompactado distintas usando da a descompactação. Codificação na bits a codificação Compactador implementação: para descompactador. codificar Chamaremos Huffman de e -bits. o a um programa string o bom programa que esse que produz faz que bombom, a um lê compactação de arquivo ao arquivo invés normal e um de e a produz 48 partir bits. Para exemplo de Assumindo criado 1. compactação. Construa Leia compactar seguindo o bom arquivo que a esse tabela um os seguintes número arquivo, bombom. ser de compactado codificação; fixo é passos: necessário Como de bits vimos, e é processe escrito a tabela esta em tabela um de um compactação, caracter é arquivo, construída de um cada como arquivo vez mostramos uma (veja compactado árvore dica para binária 1). é Para o O ao um arquivo cabeçalho 111000111010010110110011011100011110001 Veja processar de compactado. caracteres Dica compactado original o no para caracter Por que a partir manipulação exemplo, foi deve e criada chegar conter arquivo para no de à as passo sequencia código compactar informações compactado. anterior. deve binário. de conter a bits necessárias As Escreva string seria que seguintes árvore bom representa essa escrita para informações esse sequencia codificação; no o bombom, chegar caracter, arquivo de são corretamente e bits alguma necessárias: compactado. use a no sequencia a arquivo tabela marca bits descompactador e navegar final deve arquivo árvore criar até para a encontrar árvore indicar de que os codificação nós a sequencia folhas correspondentes está bits no chegou cabeçalho àquela ao fim. arquivo, sequencia O programa ler de os iternos). lidos. Cabeçalho A maneiras cada árvore nó O custo visitado Uma de codificação armazenar deste maneira arquivo pela algoritmo travessia. pode a compactado árvore. fazer ser de a Nós armazenada busca diferenciação folha o é trabalho, proporcional devem no é início ser escrever use diferenciados à a do altura travessia arquivo um único da compactado. ávore. de bit pré-ordem nós para não-folhas cada Existem para nó, (nós escrever por várias bits que Caracter O pedaços comum escrever exemplo sistema se trata 1 o de operacional para caracter de final um nós da nó armazenado. folhas sequencia não-folha. e escreve 0 para Para de dados nós bits nós não-folha. bit a bit e Para sim é necessário nós-folha, em pedaços apenas é também maiores o bit necessário e gravá-los o de sistema de tamanho uma operacional vez. múltiplo Se o seu da usar arquitetura programa um mecanismo escreve específica de buffer bits do SO). e depois para Desta acumular maneira, todos os indicando dados (geralmente é muito bits são de mecanismo em Imagine tente para nenhuma algum completar escrever que informação. momento para o 1 sistema os desconsiderar bits. 4 escritos, bits Nesta operacional (múltiplo situação, mas estes não escreva de bits 8). é o possível sistema extra, O programa pedaços operacional ter uma certeza descompactador vez múltiplos que completará eles quando não 8 bits, deve eles representam os e 1 serão criar o bits seu algum escritos. com programa bits

programa devem explicitamente Uma solução entrar descompactador. na possível pelo árvore/tabela programador poderia Quando de introduzir codificação ao um final arquivo um da para pseudo-caracter sequencia compactado seja de bits corretamente de é válidos. escrito, final de os Este arquivo, descompactado últimos caracter introduzido inteiros calcular 1: ser os a bits frequencia representam com a qual o pseudo-caracter. os caracteres aparecem no arquivo, use bits um também escritos pelo Dica Para cedido número o caracter manipular : pelo de no do vezes qual Prof. arquivo binários, o João esse índice e Paulo caracter fazer use do Almeida. o vetor V[códigoASCII_caracter_lido]++. TAD é encontrado é Bitmap o (disponível no arquivo. na caracter, Desta página forma, da e professora), o é conteúdo necessário do cordialmente apenas vetor é ler de o