09 organizando arquivos para desempenho parte1

52
Capítulo 5 Organizando Arquivos para Desempenho

Upload: podsony

Post on 25-Jul-2015

48 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: 09 Organizando Arquivos Para Desempenho Parte1

Capítulo 5

Organizando Arquivos para Desempenho

Page 2: 09 Organizando Arquivos Para Desempenho Parte1

Programa

� Introdução� Operações básicas sobre arquivos � Armazenagem secundária� Conceitos básicos sobre estrutura de arquivo

2

� Organizando arquivos para desempenho� Indexação� Processamento co-seqüencial e ordenação� B-Tree e outras organizações em árvores� B+Tree e acesso seqüencial indexado� Hashing� Hashing estendido

Page 3: 09 Organizando Arquivos Para Desempenho Parte1

Motivação

� Veremos formas de organizar ou mesmo reorganizar arquivos:� visando melhorar desempenho.� usando as técnicas de

• compressão de dados (como tornar arquivos menores),

3

• Usam uma codificação

• recuperação de espaços não usados, gerados no processo de eliminar ou atualizar registros no arquivo,

• via compactação de dados.

• reorganização de arquivos, • por ordenação de arquivos para suportar busca binária:

• Introdução a “Internal Sorting” e busca binária,• criando estruturas externas (índices) através das quais podemos acessar

um arquivo. • Um método melhor de ordenação: KeySorting (Tag Sort)

Page 4: 09 Organizando Arquivos Para Desempenho Parte1

Visão Geral do Capítulo

1. Compressão de dados e codificação2. Recuperando espaço em disco

4

3. Achando as coisas mais rapidamente:� uma introdução a ordenação interna e

busca binária.

4. Ordenação de chaves (Keysorting ou Tag Sort):

� ordenação de arquivos grandes.

Page 5: 09 Organizando Arquivos Para Desempenho Parte1

Compressão de dados

5

Page 6: 09 Organizando Arquivos Para Desempenho Parte1

Compressão de dados

� Por quê tornar os arquivos menores?� Para economizar espaço� Para gastar menos tempo em transferências

(diminuindo o tempo de acesso, ou usando o

6

(diminuindo o tempo de acesso, ou usando o mesmo tempo com uma banda mais baixa ou mais barata)

� para recuperar registros em menos tempo• arquivos menores tornam o processamento sequencial

mais rápido.

Page 7: 09 Organizando Arquivos Para Desempenho Parte1

Compressão de dados

� Exemplos de técnicas para compressão de dados:1. notação diferente (mais compacta).

• Redução de redundância (codificação de dados)2. supressão de sequências repetidas.

• Codificando a sequência através de:

7

• código de supressão • elemento da sequência• frequência de repetição

3. códigos de comprimento variável. • Código de Huffman (pack e unpack)

• Lempel-Ziv (zip e unzip, compress e uncompress )

4. técnicas de compressão irreversíveis (lossy x lossless)• Sacrifica parte das informações

Page 8: 09 Organizando Arquivos Para Desempenho Parte1

Codificação de Dados

� Transformação de um certo conjunto de símbolos num outro conjunto de símbolos.

Mensagem Original

Mensagem Codificada

Fonte X que toma valores {x1,x2,...,xn}

Fonte X codificada toma valores {y1,y2,...,yn}

Page 9: 09 Organizando Arquivos Para Desempenho Parte1

Codificação de Dados

� A transformação (codificação) é feita para atingir certos objetivos:

� Compressão � Compressão • Representação Eficiente• Também chamada como: Codificação de Fonte

� Segurança nos âmbitos de Proteção e Autenticação• Também chamada como: Criptografia

� Robustez• Canal não ideal (erro de transmissão)• Também chamada como: Codificação de Canal

Page 10: 09 Organizando Arquivos Para Desempenho Parte1

Codificação de Dados

� É importante notar que cada um deste objetivos normalmente envolve requisitos contrários aos outros:

� O principal objetivo dos algoritmos de compressão é a reduçãodo comprimento da mensagem (codificação de fonte).

� Por outro lado, os códigos de controle de erros implicammuitas vezes o aumento do comprimento das mensagens(codificação de canal).

� Dados que tenham sido previamente cifrados são geralmentemuito difíceis de comprimir.

Page 11: 09 Organizando Arquivos Para Desempenho Parte1

Codificação de DadosRobustez

� Detecção e Correção de Erros� A natureza física do armazenamento pode ocasionar

corrupção de dados.� Para detecção de erro, deve-se incluir redundância na

informação.• A idéia principal é utilizar uma certa quantidade de bits de• A idéia principal é utilizar uma certa quantidade de bits de

controle para um determinado bloco de informação. Os bitsde controle devem ser gerados a partir dos bits querepresentam a informação e gravados junto com o bloco

• Ao ler a informação gera-se novamento os bits decontrole, se não conferem com os bits gravados, então ainformação foi corrompida.

� Os bits de controle podem ajudar também na correção deerros.

Page 12: 09 Organizando Arquivos Para Desempenho Parte1

Codificação de DadosCriptografia

� A criptografia é utilizada para transformar ainformação de forma que se torne ilegível aosusuários não autorizados.

� Existem diversas formas de criptografor umamensagem. A maioria é baseada no uso de umachave criptgrafica.

Page 13: 09 Organizando Arquivos Para Desempenho Parte1

Codificação de DadosCompressão

� Compressão de dados é o processo de codificar uma determinada informação utilizando uma menorrepresentação.

� Os dois principais benefícios trazidos pela compressão � Os dois principais benefícios trazidos pela compressão de dados são :

� Capacidade de armazenamento de informações crescente: o uso de compressão de dados pode aumentar significativamente a capacidade de armazenamento do sistema.

• “Um sinal comprimido ocupa menos espaço”.

� Transmissão de dados crescente: informações digitais podem ser comprimidas antes de serem transmitidas de um módulo para outro.

• “Um sinal comprimido requer menor largura de banda”.

Page 14: 09 Organizando Arquivos Para Desempenho Parte1

Compressão de DadosConceitos Básicos

� ENTROPIA:� Na Termodinâmica: Medida da desorganização de

um sistema.� Na mecânica estatística: Medida da quantidade de� Na mecânica estatística: Medida da quantidade de

incerteza que esta presente num sistema.� Na teoria da informação: Medida da incerteza

associada a uma variável aleatória.

� Entropia de Shannon:� Quantifica a informação contida numa mensagem,

normalmente na unidade de BITS.

Page 15: 09 Organizando Arquivos Para Desempenho Parte1

Compressão de DadosConceitos Básicos

� A entropia de uma variável aleatória X com valores possíveis {x1, ..., xn} :

� Onde E() é o valor esperado e I() é a informação contida em X, � Onde E() é o valor esperado e I() é a informação contida em X, ou auto-informação.

� Se I(X) é também uma variável aleatória é p representa a função de massa de probabilidade.

� Onde b é normalmente 2 (base binários)

I(xi)>I(xj) se pi<pj I(xi) →0 se pi →1

Page 16: 09 Organizando Arquivos Para Desempenho Parte1

Compressão de DadosConceitos Básicos

� Exemplo: Consideremos o lançamento de Moeda (Cara ou Coroa).� Se a Moeda é justa então a� Se a Moeda é justa então a

probabilidade de cada um dosdois eventos acontecer e ½.

• Então a entropia é H(X) = 1• É necessário um bit para transmitir a

informação a cada lançamento.

Page 17: 09 Organizando Arquivos Para Desempenho Parte1

Compressão de DadosLossless vs Lossy

� Existem 2 tipos de compressão:� Com perdas (Lossy) � Sem perdas (Lossless)

� A compressão sem perdas, e aquele que destina-se a� A compressão sem perdas, e aquele que destina-se aretirar somente a redundância nos dados.

� Em 1948 o pesquisador Claude E. Shannon publicou umartigo: “A Mathematical Theory of Communication”, quedemostrava que a compressão sem perdas tem um limite(denotada por H é definida como ENTROPIA)

Page 18: 09 Organizando Arquivos Para Desempenho Parte1

Compressão de DadosLossless vs Lossy

� Teorema de Codificação de Fonte:

� É possível comprimir um sinal sem perdas numataxa NÃO inferior a entropia do sinal.taxa NÃO inferior a entropia do sinal.

Page 19: 09 Organizando Arquivos Para Desempenho Parte1

Compressão de DadosLossless vs Lossy

� A compressão com perdas, e aquele que destina-se a retirar aredundância nos dados, e a irrelevância para um determinadaaplicação.

� Shannon também desenvolveu a teoria da compressão com perdas.Conhecida como a teoria da Taxa-Distorção (rate-distortion)Conhecida como a teoria da Taxa-Distorção (rate-distortion)

� Na compressão com perdas, o sinal reconstruído não é exatamenteigual ao sinal original. Existe uma distorção, D, que é tolerada paraum determinada aplicação.

� Vamos estudar somente algumas técnicas de compressão de dadosSEM PERDAS, já que dentro da organização de arquivos o objetivoe poder recuperar a informação dos dados completamente.

Page 20: 09 Organizando Arquivos Para Desempenho Parte1

Compressão de dados

� Exemplos de técnicas para compressão de dados:1. notação diferente (mais compacta).

• Redução de redundância2. supressão de sequências repetidas.

• Codificando a sequência através de:

20

• código de supressão • elemento da sequência• frequência de repetição

3. códigos de comprimento variável. • Código de Huffman (pack e unpack)

• Lempel-Ziv (zip e unzip, compress e uncompress )

4. técnicas de compressão irreversíveis • Sacrifica parte das informações

Page 21: 09 Organizando Arquivos Para Desempenho Parte1

� No registro constituído dos campos abaixo, relativos a aluno:<matrícula> <nome> <endereço> <uf> <curso> <opção> <departamento>

� <uf> é usualmente representado por uma sigla.• Ao invés de usar dois bytes: DF, GO, MG, RJ, etc, pode-se usar um byte

para representar os 26 Estados da Federação na forma binária.

Compressão de Dados Notação Diferente

21

para representar os 26 Estados da Federação na forma binária.� <curso> <opção> <departamento> é usualmente representado pelos

respectivos nomes.• Pode-se usar códigos correspondentes a essas entidades, em binário

(mais econômico) ou uma string numérica.

Redução de redundância:Essa notação mais compacta, economiza bytes que eram redundantes para representar a mesma informação.

Page 22: 09 Organizando Arquivos Para Desempenho Parte1

Compressão de Dados Notação Diferente

Matrícula Nome Curso Departamento

02/35879 Maria Vitória Bacharelado em Matemática 117-0

Departamento de MatemáticaMAT

03/01329 Pascual Monton Bacharelado em Física 116-8

Departamento de FísicaFIS

04/02556 Platina Construtiva Engenharia Elétrica Departamento de Engenharia Elétrica

22

04/02556 Platina Construtiva Engenharia Elétrica 115-3

Departamento de Engenharia ElétricaENE

04/03714 Gertrudes Sinagoga Bacharelado em Matemática 117-0

Departamento de MatemáticaMAT

04/03881 Miracema de Deus Engenharia Elétrica 115-3

Departamento de Engenharia ElétricaENE

ENE Dept de Engenharia Elétrica

FIS Dept de Física

MAT Dept de Matemática

Tabela de Departamentos115-3 Engenharia Elétrica

116-8 Bacharelado em Física

117-0 Bacharelado em Matemática

Tabela de cursos

Page 23: 09 Organizando Arquivos Para Desempenho Parte1

Compressão de Dados Notação Diferente

� Custo da Eliminação de Redundância� Uso de códigos binários torna o arquivo menos legível para humanos. � Há um custo associado a codificação e decodificação das entidades:

• Aumenta a Complexidade do Software.• Devem ser programados módulos para codificação e decodificação de

23

• Devem ser programados módulos para codificação e decodificação de cada entidade codificada:

• criando arquivos e tabelas em memória para tais entidades.• inserindo tais módulos nos programas que cotizam os arquivos com entidades

codificadas.

� Existe o tempo de codificar e decodificar• Torna o processo mais lento

Page 24: 09 Organizando Arquivos Para Desempenho Parte1

Compressão de Dados Notação Diferente

� Vale a pena eliminar a redundância?� Depende da aplicação:

� Em arquivos pequenos• com muitos programas diferentes tendo acesso a ele e • programas sem capacidade de lidar com binários

(ex. editor de texto)

24

(ex. editor de texto)• NÃO!

� Em arquivos grandes (milhares de registros) • poucos programas tendo acesso e• se a conversão (codificação/decoficação) nestas compressões pode ser

simples.• SIM! A economia de acesso compensa os custos de conversão.

Page 25: 09 Organizando Arquivos Para Desempenho Parte1

Compressão de Dados Notação Diferente

� Custo x Benefício� Deve-se considerar:

• Tempo de codificação e decodificação• Ganho de compressão

25

• Ganho de compressão• Número de acessos ao arquivo

� Por exemplo: se um arquivo for pequeno eacessado freqüentemente, o custo será maiorque o benefício.

Page 26: 09 Organizando Arquivos Para Desempenho Parte1

Compressão de DadosSupressão de Sequências Repetidas

� Indicada para arquivos nos quais sequências do mesmo byte são frequentes.

� Procedimento:� Leia os valores da sequência original e copie na nova sequência,

exceto quando o mesmo valor ocorre mais de três vezes

26

exceto quando o mesmo valor ocorre mais de três vezes consecutivamente.

� Quando o mesmo valor ocorre mais de três vezes consecutivamente, substitua todos esses valores consecutivos pelo 3 bytes seguintes (nesta ordem):

• Um código especial indicador de repetição,• O valor que é repetido, e• O número de vezes que aquele valor aparece repetido

na sequência original.

Page 27: 09 Organizando Arquivos Para Desempenho Parte1

Compressão de DadosSupressão de Sequências Repetidas

� Exemplo:� Sequência de bytes (em hexadecimal)

• 22 23 24 24 24 24 24 24 24 24 24 24 25 25 26 26 26 26 26 26 26 26 24 24� Sequência compactada (em hexadecimal)

• 22 23 FF 24 0A 25 25 FF 26 08 24 24 24 bytes são reduzidos a 12 bytes

27

� 24 bytes são reduzidos a 12 bytes

� Observe que se introduz a supressão apenas quando o fator de repetição for maior que 3.� Abaixo disto haveria um aumento e não redução do arquivo.

Redução de redundância: Essa técnica de supressão de sequência é um outro exemplo de redução de redundância.

Exemplo de Run Length Coding.

Page 28: 09 Organizando Arquivos Para Desempenho Parte1

Compressão de Dados Supressão de Sequências Repetidas

Não garante economia de espaço!!!

28

Não garante economia de espaço!!! Um arquivo com poucas sequências

repetidas não irá se beneficiar deste tipo de codificação

Page 29: 09 Organizando Arquivos Para Desempenho Parte1

Compressão de DadosCódigos de Comprimento Variável

� É baseado no fato de que há valores que ocorrem mais frequentemente que outros:� associa-se códigos menores aos valores mais frequentes!

• Assim, tais valores gastam menos espaço.

29

• Assim, tais valores gastam menos espaço. � Exemplos

� Código Morse (com alfabeto: ponto e traço)� Código de Huffman (com alfabeto: 0 e 1).

• É a mais importante técnica para compactar arquivos.

Variable Length Coding.

Page 30: 09 Organizando Arquivos Para Desempenho Parte1

� Código Morse:� O mais antigo e mais comum código de comprimento

variável.� Códigos de comprimento variável, em geral, são baseados

no princípio de que alguns valores ocorrem mais

Compressão de DadosCódigos de Comprimento Variável

30

no princípio de que alguns valores ocorrem mais frequentemente do que outros, portanto, os códigos para estes valores devem ocupar o menor espaço.

� Códigos de comprimento variável são outra forma de redução de redundância.

Page 31: 09 Organizando Arquivos Para Desempenho Parte1

� Código Morse:� Utiliza apenas dois símbolos no esquema de codificação:

ponto (.) e traço (-)� As duas letras mais utilizadas do alfabeto (“e” e “t”) são

Compressão de DadosCódigos de Comprimento Variável

31

� As duas letras mais utilizadas do alfabeto (“e” e “t”) sãocodificadas com um ponto e um traço, respectivamente.

� As outras letras do alfabeto recebem dois ou maissímbolos, sendo que as letras mais utilizadas recebemmenos símbolos do que as menos utilizadas.

Page 32: 09 Organizando Arquivos Para Desempenho Parte1

� Código Morse:

Compressão de DadosCódigos de Comprimento Variável

32

Page 33: 09 Organizando Arquivos Para Desempenho Parte1

� Uma vez que muitos conjuntos de dados não exibem uma distribuição de frequência previsível, técnicas mais modernas de códigos de comprimento variável dinamicamente constroem tabelas que

Compressão de DadosCódigos de Comprimento Variável

33

variável dinamicamente constroem tabelas que descrevem o esquema de codificação.

Código de Huffman:É um código de comprimento variável, que ao contrário docódigo Morse, a codificação depende da frequência que as letras ocorrem num determinado conjunto de dados.

Page 34: 09 Organizando Arquivos Para Desempenho Parte1

� Código de Huffman:• O código de Huffman é um algoritmo para compressão de arquivos.• Em exemplos contendo texto, é baseado na frequência em que os

caracteres aparecem. Os caracteres com frequência maior terão um código binário menor, enquanto que códigos com pouca frequência

Compressão de DadosCódigos de Comprimento Variável

34

código binário menor, enquanto que códigos com pouca frequência terão maior número de bits necessários para codifica-los.

• A utilização do código de Huffman permite, portanto, armazenar mais informação no mesmo espaço. Apresenta ganhos em relação a codificação em código ASCII. Isso é interessante também para imagens, pois o tamanho da imagem (quantidade de bits que podem ser codificados) é fixo.

Page 35: 09 Organizando Arquivos Para Desempenho Parte1

� Código de Huffman:� Determina a frequência relativa de cada valor no arquivo. � Constrói uma árvore binária:

• o valor está nas folhas e

Compressão de DadosCódigos de Comprimento Variável

35

• o caminho da raiz até a folha determina o código associado ao valor.• Valores mais frequentes estão associados aos ramos mais curtos.

� Converte a árvore numa tabela valor x código• Usada para codificar ou decodificar os dados.

� O código de Huffman é ótimo, ou seja, o tamanho medio simboloscódificados é igual a entropia do sinal, se as probabilidades de ocorrência das letras são potencias de dois (2-n).

Page 36: 09 Organizando Arquivos Para Desempenho Parte1

� Exemplo do Código de Huffman:� Suponha que o arquivo contenha:

• Total: 10 caracteres com 8 bytes.

Compressão de DadosCódigos de Comprimento Variável

36

• O Código de Huffman é um “prefix code”, ou seja, nenhum código é o prefixo de outro.

• Mensagem codificada: 1010010011011011001111100• 25 bits ao invés de 80 bits (10 bytes!)

Page 37: 09 Organizando Arquivos Para Desempenho Parte1

� Como se cria essa nova codificação?� A idéia do algoritmo de Huffman utiliza

uma árvore binária, onde as folhas são os respectivos caracteres.

� Árvore de Huffman:Mensagem codificada:

Compressão de DadosCódigos de Comprimento Variável

37

� Mensagem codificada:101001001101...

� Interprete ‘0’ como vá para a esquerda e ‘1’ como vá para a direita.

� Um código para um caracter corresponde ao caminho da raíz da árvore até a folha contendo o caracter.

Page 38: 09 Organizando Arquivos Para Desempenho Parte1

� Árvore de Huffman:� Mensagem codificada:

101001001101...

Compressão de DadosCódigos de Comprimento Variável

38

1010 representa I01 representa /b (espaço)00 representa A11 representa M01 representa /b (espaço)Etc...

Page 39: 09 Organizando Arquivos Para Desempenho Parte1

Compressão de DadosCódigos de Comprimento Variável

� Propriedades da Árvore de Huffman:� Cada nó interno tem 2 filhos� As frequências menores estão mais longe da raíz.� As duas frequências menores são nós irmãos.

O número de bits necessários para codificar um arquivo é dado por:

39

� O número de bits necessários para codificar um arquivo é dado por:B(T) = Σ f(c) . dT(c)

onde,B(T) = número de bits necessário para codificar o arquivo

usando a árvore Tf(c) = frequência do caracter ‘c’dT(c) = comprimento do código para o caracter ‘c’

Page 40: 09 Organizando Arquivos Para Desempenho Parte1

Compressão de DadosCódigos de Comprimento Variável

� No exemplo em questão:

40

B(T) = Σ f(c) . dT(c)

B(T) = 2 x 2 + 1 x 4 + 3 x 2 + 1 x 4 + 1 x 3 + 2 x 2 = 25

� Qual o número médio de bit por letra codificada?B(T)/número de caracteres = 25/10 = 2.5

� Qual a entropia?

H(X)=2*2/10*log2(10/2)+3*1/10*log2(10/1)+3/10*log2(10/3)=2.44

Page 41: 09 Organizando Arquivos Para Desempenho Parte1

Compressão de DadosCódigos de Comprimento Variável

41

A maneira como a Árvore de Huffman é construída garante que

B(T) seja o menor possível!!!

Page 42: 09 Organizando Arquivos Para Desempenho Parte1

Compressão de DadosCódigos de Comprimento Variável

� A construção da Árvore de Huffman:� O peso de um nó é a frequência total dos

caracteres abaixo da sub-árvore cuja raiz é aquelenó.

42

nó.� O algoritmo utiliza um método que sempre une as

sub-árvores com os menores pesos formando umanova sub-árvore cuja raiz terá a soma dos pesosdos seus nós filhos.

Page 43: 09 Organizando Arquivos Para Desempenho Parte1

Compressão de DadosCódigos de Comprimento Variável

� Algoritmo para construção da Árvore e criação do Código de Huffman:

1. Compute a frequência relativa (fr) de cada valor no arquivo e crie uma tabela valor vs frequência. • Cada valor nesta tabela será um nó folha na árvore.

2. Defina um nó pai unindo dois nós filhos, cuja soma das fr seja a menor

43

2. Defina um nó pai unindo dois nós filhos, cuja soma das fr seja a menor possível.• Calcule a fr deste pai como a soma das fr dos seus filhos. • Atribua o bit 1 para o primeiro filho e 0 para o segundo.

3. Se restar nós desconexos vá para o passo 2, senão passe para o passo 4.4. Obtenha o código de cada valor pegando a sequência de bits atribuída aos

nós, indo da raiz até a folha que corresponde ao valor.5. Gere a tabela valor vs código.

Page 44: 09 Organizando Arquivos Para Desempenho Parte1

Compressão de DadosCódigos de Comprimento Variável

� A construção da Árvore de Huffman:� Exemplo anterior:

44

� Unir as duas sub-árvores de menor peso

Page 45: 09 Organizando Arquivos Para Desempenho Parte1

Compressão de DadosCódigos de Comprimento Variável

45

Page 46: 09 Organizando Arquivos Para Desempenho Parte1

Compressão de DadosCódigos de Comprimento Variável

46

Page 47: 09 Organizando Arquivos Para Desempenho Parte1

Compressão de DadosCódigos de Comprimento Variável

47

Page 48: 09 Organizando Arquivos Para Desempenho Parte1

Compressão de DadosCódigos de Comprimento Variável

� Codificação dos dados (Genérico):1. Enquanto não feof(arquivo básico a ser compactado), faça2. Para cada byte lido, acesse a tabela valor vs código e recupere o código

dele.3. Transfira o código para a sequência de bits de saída.

• Soma 1 ao contador de bytes codificados.

48

• Soma 1 ao contador de bytes codificados.

4. Se o buffer de saída encheu grave-o no arquivo compactado de saída.• Volte ao passo 1.

5. Ao final do arquivo, grave no cabeçalho:• o valor do contador de bytes codificados• a tabela de frequência dos bytes ou a árvore gerada• a tabela de valor x código

6. Feche os arquivos.

Page 49: 09 Organizando Arquivos Para Desempenho Parte1

Compressão de DadosCódigos de Comprimento Variável

� Decodificação dos dados (Genérico):� Leia o cabeçalho do arquivo compactado:

• defina o contador de bytes codificados.• defina a árvore de Huffman.

� Enquanto não feof(arquivo-compactado):

49

� Enquanto não feof(arquivo-compactado):• leia o arquivo compactado• enquanto há bits lidos

• vá pegando os bits e percorrendo a árvore da raiz para as folhas, em função do valor dos bits encontrados.

• quando chegar ao nó folha você tem o valor (byte) correspondente ao código.

• transfira o byte para o arquivo descompactado.• decremente o contador de byte codificado.• se o contador de bytes codificado for zero, pare.

Page 50: 09 Organizando Arquivos Para Desempenho Parte1

Compressão de DadosCódigos de Comprimento Variável

� Os comandos pack e unpack do Unix utilizam o Código de Huffman.

� Atingem uma redução de 25 a 40% em arquivos tipo texto.� Entretanto, não se obtem resultados tão bons em arquivos

50

� Entretanto, não se obtem resultados tão bons em arquivos do tipo binário, uma vez que estes possuem uma distribuição mais uniforme dos valores.

Page 51: 09 Organizando Arquivos Para Desempenho Parte1

Compressão de Dados Códigos de Comprimento Variável

� Exercício 1:� Considere o seguinte texto:

• “ASSISTIMOS SEM NOS ASSUSTARMOS.”

� Este texto tem 31 caracteres, portanto ocupa 31 bytes, ou 248 bits. Vamos reduzir o seu tamanho usando o método de compressão de

51

Vamos reduzir o seu tamanho usando o método de compressão de Huffmann.

� Escreva a tabela frequência, a árvore de Huffman, a tabela valor x código, a sequencia codificada e o número total de bits da mesma (B(T)).

Page 52: 09 Organizando Arquivos Para Desempenho Parte1

Compressão de DadosCódigos de Comprimento Variável

� Exercício 2:� Considere seguinte texto:

• “O RATO ROEU A ROUPA DO REI DE ROMA.”

� Este texto tem 35 caracteres, portanto ocupa 35 bytes, ou 280 bits.

52

� Este texto tem 35 caracteres, portanto ocupa 35 bytes, ou 280 bits. Vamos reduzir o seu tamanho usando o método de compressão de Huffmann.

� Escreva a tabela frequência, a árvore de Huffman, a tabela valor x código, a sequencia codificada e o número total de bits da mesma (B(T)).