4
 Codicação aritmética Algoritmo  para compressão de dados, não-baseado em tabelas de símbol os. O codicado r aritmético elimi na a associaçã o entre símbolos individuais e palavras-c ódigos de comprimento inteiro e, com isto, é capaz de pratica- mente igualar a entropia da fonte em todos os casos. A partir de um modelo estatístico, constr ói-se uma tabela onde são listadas as probabilidades de o próximo sím- bolo lido ser cada um dos possíveis símbol os. Em geral esta probabilidade é simplesmente a contagem de todas as ocorrências do símbol o no arqui vo dividida pelo tama- nho do arquivo: P (σ) =  n σ N onde P (σ) é a probabilidade de ocorrência do símbolo σ ,  n σ  é o número de ocorrências desse símbolo e  N  é o tamanho do arquivo. Em contextos especícos (ao asso- ci ar a codicaç ão ari tmé tic a com out ros tod os de com- pressão como o BWT por exe mplo) outros modelos mais apropriados podem ser adotados, que desprezam parte do contexto, ou usam probabilidades determinadas dinami- camente a medida que o arquivo é processado. Esta tabe la é exp res sa na f orma de intervalos cumulat iv os, de tal forma que se ordenarmos os símbolos em uma or- dem qualquer, o início do intervalo de um símbolo coin- cide com o nal do intervalo do símbolo anterior. O pri- meiro símbolo tem seu intervalo começado em 0 e o úl- timo símbolo tem seu interv alo terminado em 1. Sejam os símbolos ordenados de 1 a N chamados respectiva- mente de  σ 1 , σ 2 ,..., σ N  e  I (σ n )  o intervalo do n-ésimo símbolo: I (σ n ) = n1 i=1  P (σ i ), n i=1 P (σ i ) [[Imagem:Arithmetic enco- ding.svg|thumb|3 00p x|Diagrama re pr ese nta ndo a sub div isão dos inte rva los na codi ca ção aritméti ca, usand o-se quat ro símbol os de prob abi lid ades 0.6, 0.2, 0.1, e 0.1. Os círculos ne gros represe ntam a mensagem codicada, que pode ser decodicada para o primeiro sím bol o, de poi s o ter ce iro , em segu ida o quarto. A primeira linha mostr a o inte rva lo comp leto [0,1) en- quanto as linhas subsequentes mostram as subdivisões proporci onais do intervalo anterior.]] O algoritmo de codic ação aritmética consiste em repre- sentar a probabil idade de ocorrência de cada caractere de acordo com esses intervalos. Parte-se do intervalo [0, 1) e nele identica-se o subintervalo ao qual corresponde o pri me iro mbolo li do do arq ui vo. Pa ra ca da sím bol o sub- seq üente , sub div ide -se o inte rva lo atual em sub -inte rva los proporcionais às probabilidades da tabela de intervalos, e encontra-se novamente o intervalo que corresponde ao próximo símbolo. Ao nal do processo, tere mos um in- tervalo que corresponde a probabilidade da ocorrência de todos os mbol os na or de m corre ta. A g ura ao lad o il us- tra essa divisão e subdivisão sucessiva dos intervalos. A saída do algoritmo é então um valor que esteja contido neste interval o e possa ser representado com o menor nú- mero possível de dígitos. Na prática não se tenta encon- trar o menor número de dígitos, mas apenas um número razoáve l de dígitos. 1 Desc riç ão do algori tmo A cod ica çã o aritmétic a pod e ser de scrita como se se gue : 1. Cria-se um interva lo corrente ini ciado com [0,1) 2. Para cada el emento da mensa gem: (a) Parti cio na-se o interval o corr ente em sub inter- valos, um para cada letra do alfabeto. O tama- nho do su bi nte rval o ass oci ado a uma dad a le tra é proporcional à probabilidade de que esta le- tra seja o próximo elemento da mensagem, de acordo com o modelo assumido. (b) O sub inte rva lo corr esp onde nte à letr a que é realmente o próximo elemento é selecionado como novo intervalo corrente. 3. Codica-s e a mensag em com o men or número de bits necessário para distinguir o intervalo corrente nal de todos os outro s poss íveis inte rva los corr ente s nais. Pode-se ver uma implementação em linguagem  python deste algoritmo ao nal do artigo, na seção #Exemplo de implementação 2 Cálc ulo com pre ci são ni ta Se nos base armos diretamente na deniç ão da codi c ação aritmétic a iremos esbarrar em dois problemas práticos: 1. nenh uma codicação é prod uzi da antes que toda a mensag em tenha sido processa da. 1

Codificação aritmética

Embed Size (px)

DESCRIPTION

wikibooks wikipedia

Citation preview

Page 1: Codificação aritmética

7182019 Codificaccedilatildeo aritmeacutetica

httpslidepdfcomreaderfullcodificacao-aritmetica 14

Codificaccedilatildeo aritmeacutetica

Algoritmo para compressatildeo de dados natildeo-baseado em

tabelas de siacutembolos O codificador aritmeacutetico elimina a

associaccedilatildeo entre siacutembolos individuais e palavras-coacutedigos

de comprimento inteiro e com isto eacute capaz de pratica-

mente igualar a entropia da fonte em todos os casos

A partir de um modelo estatiacutestico constroacutei-se uma tabela

onde satildeo listadas as probabilidades de o proacuteximo siacutem-

bolo lido ser cada um dos possiacuteveis siacutembolos Em geral

esta probabilidade eacute simplesmente a contagem de todas

as ocorrecircncias do siacutembolo no arquivo dividida pelo tama-

nho do arquivo

P (σ) = nσ

N

onde P (σ) eacute a probabilidade de ocorrecircncia do siacutembolo σ

nσ eacute o nuacutemero de ocorrecircncias desse siacutembolo e N eacute o

tamanho do arquivo Em contextos especiacuteficos (ao asso-

ciar a codificaccedilatildeo aritmeacutetica com outros meacutetodos de com-

pressatildeo como o BWT por exemplo) outros modelos mais

apropriados podem ser adotados que desprezam parte do

contexto ou usam probabilidades determinadas dinami-

camente a medida que o arquivo eacute processado

Esta tabela eacute expressa na forma de intervalos cumulativos

de tal forma que se ordenarmos os siacutembolos em uma or-dem qualquer o iniacutecio do intervalo de um siacutembolo coin-

cide com o final do intervalo do siacutembolo anterior O pri-

meiro siacutembolo tem seu intervalo comeccedilado em 0 e o uacutel-

timo siacutembolo tem seu intervalo terminado em 1 Sejam

os siacutembolos ordenados de 1 a N chamados respectiva-

mente de σ1 σ2σN e I (σn) o intervalo do n-eacutesimo

siacutembolo

I (σn) =983131sum

nminus1

i=1 P (σi)

sumn

i=1P (σi)

983081

[[ImagemArithmetic enco-

dingsvg|thumb|300px|Diagrama representando a

subdivisatildeo dos intervalos na codificaccedilatildeo aritmeacuteticausando-se quatro siacutembolos de probabilidades 06 02

01 e 01 Os ciacuterculos negros representam a mensagem

codificada que pode ser decodificada para o primeiro

siacutembolo depois o terceiro em seguida o quarto A

primeira linha mostra o intervalo completo [01) en-

quanto as linhas subsequentes mostram as subdivisotildees

proporcionais do intervalo anterior]]

O algoritmo de codificaccedilatildeo aritmeacutetica consiste em repre-

sentar a probabilidade de ocorrecircncia de cada caractere de

acordo com esses intervalos Parte-se do intervalo [0 1)e nele identifica-se o subintervalo ao qual corresponde o

primeiro siacutembolo lido do arquivo Para cada siacutembolo sub-

sequumlente subdivide-se o intervalo atual em sub-intervalos

proporcionais agraves probabilidades da tabela de intervalos

e encontra-se novamente o intervalo que corresponde ao

proacuteximo siacutembolo Ao final do processo teremos um in-

tervalo que corresponde a probabilidade da ocorrecircncia de

todos os siacutembolos na ordem correta A figura ao lado ilus-

tra essa divisatildeo e subdivisatildeo sucessiva dos intervalos

A saiacuteda do algoritmo eacute entatildeo um valor que esteja contido

neste intervalo e possa ser representado com o menor nuacute-

mero possiacutevel de diacutegitos Na praacutetica natildeo se tenta encon-

trar o menor nuacutemero de diacutegitos mas apenas um nuacutemero

razoaacutevel de diacutegitos

1 Descriccedilatildeo do algoritmo

A codificaccedilatildeo aritmeacutetica pode ser descrita como se segue

1 Cria-se um intervalo corrente iniciado com [01)

2 Para cada elemento da mensagem

(a) Particiona-se o intervalo corrente em subinter-

valos um para cada letra do alfabeto O tama-nho do subintervalo associado a uma dada letra

eacute proporcional agrave probabilidade de que esta le-

tra seja o proacuteximo elemento da mensagem de

acordo com o modelo assumido

(b) O subintervalo correspondente agrave letra que eacute

realmente o proacuteximo elemento eacute selecionado

como novo intervalo corrente

3 Codifica-se a mensagem com o menor nuacutemero de

bits necessaacuterio para distinguir o intervalo corrente

final de todos os outros possiacuteveis intervalos correntes

finais

Pode-se ver uma implementaccedilatildeo em linguagem python

deste algoritmo ao final do artigo na seccedilatildeo Exemplo de

implementaccedilatildeo

2 Caacutelculo com precisatildeo finita

Se nos basearmos diretamente na definiccedilatildeo da codificaccedilatildeo

aritmeacutetica iremos esbarrar em dois problemas praacuteticos

1 nenhuma codificaccedilatildeo eacute produzida antes que toda a

mensagem tenha sido processada

1

7182019 Codificaccedilatildeo aritmeacutetica

httpslidepdfcomreaderfullcodificacao-aritmetica 24

2 3 EXEMPLO

2 o caacutelculo dos limites do intervalo corrente para men-

sagens geneacutericas exige aritmeacutetica de altiacutessima preci-

satildeo

Entretanto a soluccedilatildeo para tal problema eacute relativamente

simples Um codificador aritmeacutetico praacutetico usa apenas dearitmeacutetica inteira para ldquosimularrdquo a aritmeacutetica de nuacutemeros

reais Para isso ele trabalha da seguinte maneira

Definem-se dois valores que chamaremos de high e low

que representam o intervalo atual No iniacutecio esse inter-

valo eacute entre [0 1) Entretanto estamos trabalhando ape-

nas com inteiros de precisatildeo finita Entatildeo vamos con-

siderar que high e low satildeo apenas os primeiros diacutegitos

apoacutes da viacutergula no nosso intervalo Sabemos tambeacutem que

0 999 eacute equivalente a 1 [1] Entatildeo podemos representar

(considerando base decimal e precisatildeo de 4 diacutegitos)

high = 9999 low = 0000

Representando nosso intervalo inicial Para cada carac-

tere lido devemos estreitar esse intervalo proporcional-

mente a probabilidade do caractere Assim teremos a

cada passada

new_low = low + (high-low+1) prob_inicial new_high

= low + (high-low+1) prob_final - 1

onde new_low e new_high satildeo os novos valores para low

e high e prob_inicial e prob_final satildeo respectivamente

o iniacutecio e o fim do intervalo das probabilidades cumu-

lativas de ocorrecircncia do caractere[2] A cada caractere

lido reaplica-se essa foacutermula ateacute que tenham sido lidos

todos os caracteres Entretanto isto ainda natildeo resolve oproblema da precisatildeo finita da nossa aritmeacutetica caso o

resultado desejado tenha mais de 4 diacutegitos depois da viacuter-

gula natildeo seremos capazes de calcular este valor O passo

a seguir soluciona os dois problemas listados no inicio

dessa seccedilatildeo

bull Caso o primeiro diacutegito (o diacutegito mais a esquerda)

dos dois valores low e high venha a se tornar idecircn-

tico sabemos que ele natildeo mais mudaraacute[1] e com isso

podemos eliminaacute-lo dos nossos caacutelculos e escrevecirc-lo

na saiacuteda do nosso programa

Assim caso os diacutegitos mais significativos do nosso inter-

valo se igualem escrevemos o diacutegito na saiacuteda (resolvendo

o problema 1) e atualizamos nosso intervalo para ignorar

esse diacutegito (ie nossos valores low e high passam a ser

os diacutegitos da segunda casa apoacutes a viacutergula em diante) Os

novos valores para low e high nesse caso seratildeo

ultimo_digito = 1000 (high 1000) high = (high - ul-

timo_digito) 10 + 9 low = (low - ultimo_digito) 10

No caso de high somamos 9 pois o valor original de high

representava 0 999 uma diacutezima perioacutedica cujo proacute-

ximo diacutegito que vamos ldquobuscarrdquo sempre seraacute 9 em am-bos os casos multiplicamos por 10 para poder ldquoganharrdquo

um diacutegito na nossa precisatildeo

No final deste processo emitimos o valor de low na saiacuteda

que representa os uacuteltimos diacutegitos do nosso coacutedigo aritmeacute-

tico (os outros diacutegitos jaacute foram emitidos durante o pro-

cesso)

21 Underflow

Nessa abordagem temos ainda um problema

bull O que acontece se nosso intervalo se aproxima cada

vez mais mas o uacuteltimo digito natildeo se torna o mesmo

Por exemplo

low = 4999 high = 5000

Nessa situaccedilatildeo apenas se a probabilidade dor proacuteximo

siacutembolo for 100 eacute que conseguimos emitir um diacutegito

na saiacuteda Entretanto podemos observar que quando essa

situaccedilatildeo acontece temos

bull o primeiro diacutegito de low eacute um a menos que o pri-

meiro diacutegito de high

bull o segundo diacutegito de low eacute 9

bull o segundo diacutegito de high eacute 0

Essa situaccedilatildeo eacute chamada de underflow A soluccedilatildeo para

esse caso tambeacutem eacute simples mantemos um contador para

as vezes onde ela acontece e eliminamos o segundo diacutegito

de low e high Quando o primeiro diacutegito dos dois nuacuteme-

ros se igualarem emitimos normalmente o diacutegito que se

igualou e entatildeo verificamos

bull se ele se igualou ldquopara cimardquo ou seja foi o primeiro

diacutegito de low que cresceu para se igualar ao primeiro

diacutegito de high entatildeo emitimos uma sequumlecircncia de

diacutegitos 0 do tamanho do contador (se o contador for

3 emitimos 000 se for 4 emitimos 0000 e assim por

diante)

bull se ele se igualou ldquopara baixordquo emitimos a mesma

sequumlecircncia soacute que de diacutegitos 9

No momento da descompressatildeo basta seguir o mesmo

procedimento ignorando os diacutegitos introduzidos pela

teacutecnica acima semrpe que ocorrer um underflow

3 Exemplo

O quadro abaixo mostra um exemplo de codificaccedilatildeo arit-

metica da cadeia A_ASA_DA_CASA O modelo que uti-

lizamos considera a probabilidade de ocorrecircncia do siacutem-

bolo como o nuacutemero total de ocorrecircncias do mesmo divi-

dido pelo tamanho da cadeia Assim temos uma proba-bilidade fixa durante todo o processo As probabilidades

dessa cadeia satildeo

7182019 Codificaccedilatildeo aritmeacutetica

httpslidepdfcomreaderfullcodificacao-aritmetica 34

3

Baseado nesse quadro podemos executar os passos da co-

dificaccedilatildeo O quadro abaixo representa a codificaccedilatildeo de

cada letra Quando algum diacutegito eacute produzido na saiacuteda

estes diacutegitos satildeo indicados na uacuteltima coluna

Temos na saiacuteda os diacutegitos 2493469 que acrescidos dos

diacutegitos de low (podemos ignorar os zeros no final) se torna249346946 Esse eacute nosso coacutedigo aritmeacutetico para a frase

inicial Esse nuacutemero pode ser expresso em 28 bits A

frase inicial tem 13 caracteres que podem ser expressos

com 3 bits cada totalizando 39 bits Com a compressatildeo

aritmeacutetica economizamos 11 bits

Podemos reduzir ainda mais esse valor se repararmos que

o nuacutemero 5000 fica entre os intervalos de low e high fi-

nais economizando assim mais um diacutegito na codificaccedilatildeo

249346946 Em binaacuterio temos agora 25 bits Isso repre-

senta um bit a menos que a codificaccedilatildeo de Huffman da

mesma cadeia mostrando que a codificaccedilatildeo aritmeacutetica eacute

a que mais aproxima a entropia da cadeia de entrada

4 Notas e Referecircncias

[1] Para uma prova dessa afirmativa veja SALOMON Da-

vid Data Compression The Complete Reference 2 ed

Nova Iorque Springer 2000 ISBN 0-387-95045-1 ou

qualquer livro de Caacutelculo diferencial

[2] A probabilidade cumulativa de ocorrecircncia de um carac-

tere eacute calculada ordenando-se os caracteres e somando a

probabilidade de ocorrecircncia de cada um dos caracteres

anteriores a ele O intervalo de cada caractere inicia-se na

soma de todos os anteriores e termina no inicio da proba-

bilidade cumulativa do proacuteximo caractere na ordenaccedilatildeo

5 Bibliografia

bull (em inglecircs) SALOMON David Data Compres-

sion The Complete Reference 2 ed Nova Iorque

Springer 2000 ISBN 0-387-95045-1

6 Ver tambeacutembull Codificaccedilatildeo de Huffman

bull Compressatildeo sem perda de dados

7182019 Codificaccedilatildeo aritmeacutetica

httpslidepdfcomreaderfullcodificacao-aritmetica 44

4 7 FONTES CONTRIBUIDORES E LICENCcedilAS DE TEXTO E IMAGEM

7 Fontes contribuidores e licenccedilas de texto e imagem

71 Texto

bull Codificaccedilatildeo aritmeacutetica Fonte httpptwikipediaorgwikiCodificaC3A7C3A3o_aritmC3A9ticaoldid=37359573 Contri-

buidores Rnbastos Ziguratt Chobot YurikBot Salgueiro He7d3r Girino Thijsbot Daimore BotMultichill Joaosilvakle DohBot

Ariel CMK Addbot e Anoacutenimo 5

72 Imagens

bull FicheiroNuvola_apps_edu_mathematics-psvg Fonte httpuploadwikimediaorgwikipediacommonscc2Nuvola_apps_edu_

mathematics-psvg Licenccedila GPL Contribuidores Derivative of ImageNuvola apps edu mathematicspng created by self Artista original

David Vignoni (original icon) Flamurai (SVG convertion)

bull FicheiroWikitextsvg Fonte httpuploadwikimediaorgwikipediacommonscceWikitextsvg Licenccedila Public domain Contribuido-

res Obra do proacuteprio Artista original Anomie

73 Licenccedila

bull Creative Commons Attribution-Share Alike 30

Page 2: Codificação aritmética

7182019 Codificaccedilatildeo aritmeacutetica

httpslidepdfcomreaderfullcodificacao-aritmetica 24

2 3 EXEMPLO

2 o caacutelculo dos limites do intervalo corrente para men-

sagens geneacutericas exige aritmeacutetica de altiacutessima preci-

satildeo

Entretanto a soluccedilatildeo para tal problema eacute relativamente

simples Um codificador aritmeacutetico praacutetico usa apenas dearitmeacutetica inteira para ldquosimularrdquo a aritmeacutetica de nuacutemeros

reais Para isso ele trabalha da seguinte maneira

Definem-se dois valores que chamaremos de high e low

que representam o intervalo atual No iniacutecio esse inter-

valo eacute entre [0 1) Entretanto estamos trabalhando ape-

nas com inteiros de precisatildeo finita Entatildeo vamos con-

siderar que high e low satildeo apenas os primeiros diacutegitos

apoacutes da viacutergula no nosso intervalo Sabemos tambeacutem que

0 999 eacute equivalente a 1 [1] Entatildeo podemos representar

(considerando base decimal e precisatildeo de 4 diacutegitos)

high = 9999 low = 0000

Representando nosso intervalo inicial Para cada carac-

tere lido devemos estreitar esse intervalo proporcional-

mente a probabilidade do caractere Assim teremos a

cada passada

new_low = low + (high-low+1) prob_inicial new_high

= low + (high-low+1) prob_final - 1

onde new_low e new_high satildeo os novos valores para low

e high e prob_inicial e prob_final satildeo respectivamente

o iniacutecio e o fim do intervalo das probabilidades cumu-

lativas de ocorrecircncia do caractere[2] A cada caractere

lido reaplica-se essa foacutermula ateacute que tenham sido lidos

todos os caracteres Entretanto isto ainda natildeo resolve oproblema da precisatildeo finita da nossa aritmeacutetica caso o

resultado desejado tenha mais de 4 diacutegitos depois da viacuter-

gula natildeo seremos capazes de calcular este valor O passo

a seguir soluciona os dois problemas listados no inicio

dessa seccedilatildeo

bull Caso o primeiro diacutegito (o diacutegito mais a esquerda)

dos dois valores low e high venha a se tornar idecircn-

tico sabemos que ele natildeo mais mudaraacute[1] e com isso

podemos eliminaacute-lo dos nossos caacutelculos e escrevecirc-lo

na saiacuteda do nosso programa

Assim caso os diacutegitos mais significativos do nosso inter-

valo se igualem escrevemos o diacutegito na saiacuteda (resolvendo

o problema 1) e atualizamos nosso intervalo para ignorar

esse diacutegito (ie nossos valores low e high passam a ser

os diacutegitos da segunda casa apoacutes a viacutergula em diante) Os

novos valores para low e high nesse caso seratildeo

ultimo_digito = 1000 (high 1000) high = (high - ul-

timo_digito) 10 + 9 low = (low - ultimo_digito) 10

No caso de high somamos 9 pois o valor original de high

representava 0 999 uma diacutezima perioacutedica cujo proacute-

ximo diacutegito que vamos ldquobuscarrdquo sempre seraacute 9 em am-bos os casos multiplicamos por 10 para poder ldquoganharrdquo

um diacutegito na nossa precisatildeo

No final deste processo emitimos o valor de low na saiacuteda

que representa os uacuteltimos diacutegitos do nosso coacutedigo aritmeacute-

tico (os outros diacutegitos jaacute foram emitidos durante o pro-

cesso)

21 Underflow

Nessa abordagem temos ainda um problema

bull O que acontece se nosso intervalo se aproxima cada

vez mais mas o uacuteltimo digito natildeo se torna o mesmo

Por exemplo

low = 4999 high = 5000

Nessa situaccedilatildeo apenas se a probabilidade dor proacuteximo

siacutembolo for 100 eacute que conseguimos emitir um diacutegito

na saiacuteda Entretanto podemos observar que quando essa

situaccedilatildeo acontece temos

bull o primeiro diacutegito de low eacute um a menos que o pri-

meiro diacutegito de high

bull o segundo diacutegito de low eacute 9

bull o segundo diacutegito de high eacute 0

Essa situaccedilatildeo eacute chamada de underflow A soluccedilatildeo para

esse caso tambeacutem eacute simples mantemos um contador para

as vezes onde ela acontece e eliminamos o segundo diacutegito

de low e high Quando o primeiro diacutegito dos dois nuacuteme-

ros se igualarem emitimos normalmente o diacutegito que se

igualou e entatildeo verificamos

bull se ele se igualou ldquopara cimardquo ou seja foi o primeiro

diacutegito de low que cresceu para se igualar ao primeiro

diacutegito de high entatildeo emitimos uma sequumlecircncia de

diacutegitos 0 do tamanho do contador (se o contador for

3 emitimos 000 se for 4 emitimos 0000 e assim por

diante)

bull se ele se igualou ldquopara baixordquo emitimos a mesma

sequumlecircncia soacute que de diacutegitos 9

No momento da descompressatildeo basta seguir o mesmo

procedimento ignorando os diacutegitos introduzidos pela

teacutecnica acima semrpe que ocorrer um underflow

3 Exemplo

O quadro abaixo mostra um exemplo de codificaccedilatildeo arit-

metica da cadeia A_ASA_DA_CASA O modelo que uti-

lizamos considera a probabilidade de ocorrecircncia do siacutem-

bolo como o nuacutemero total de ocorrecircncias do mesmo divi-

dido pelo tamanho da cadeia Assim temos uma proba-bilidade fixa durante todo o processo As probabilidades

dessa cadeia satildeo

7182019 Codificaccedilatildeo aritmeacutetica

httpslidepdfcomreaderfullcodificacao-aritmetica 34

3

Baseado nesse quadro podemos executar os passos da co-

dificaccedilatildeo O quadro abaixo representa a codificaccedilatildeo de

cada letra Quando algum diacutegito eacute produzido na saiacuteda

estes diacutegitos satildeo indicados na uacuteltima coluna

Temos na saiacuteda os diacutegitos 2493469 que acrescidos dos

diacutegitos de low (podemos ignorar os zeros no final) se torna249346946 Esse eacute nosso coacutedigo aritmeacutetico para a frase

inicial Esse nuacutemero pode ser expresso em 28 bits A

frase inicial tem 13 caracteres que podem ser expressos

com 3 bits cada totalizando 39 bits Com a compressatildeo

aritmeacutetica economizamos 11 bits

Podemos reduzir ainda mais esse valor se repararmos que

o nuacutemero 5000 fica entre os intervalos de low e high fi-

nais economizando assim mais um diacutegito na codificaccedilatildeo

249346946 Em binaacuterio temos agora 25 bits Isso repre-

senta um bit a menos que a codificaccedilatildeo de Huffman da

mesma cadeia mostrando que a codificaccedilatildeo aritmeacutetica eacute

a que mais aproxima a entropia da cadeia de entrada

4 Notas e Referecircncias

[1] Para uma prova dessa afirmativa veja SALOMON Da-

vid Data Compression The Complete Reference 2 ed

Nova Iorque Springer 2000 ISBN 0-387-95045-1 ou

qualquer livro de Caacutelculo diferencial

[2] A probabilidade cumulativa de ocorrecircncia de um carac-

tere eacute calculada ordenando-se os caracteres e somando a

probabilidade de ocorrecircncia de cada um dos caracteres

anteriores a ele O intervalo de cada caractere inicia-se na

soma de todos os anteriores e termina no inicio da proba-

bilidade cumulativa do proacuteximo caractere na ordenaccedilatildeo

5 Bibliografia

bull (em inglecircs) SALOMON David Data Compres-

sion The Complete Reference 2 ed Nova Iorque

Springer 2000 ISBN 0-387-95045-1

6 Ver tambeacutembull Codificaccedilatildeo de Huffman

bull Compressatildeo sem perda de dados

7182019 Codificaccedilatildeo aritmeacutetica

httpslidepdfcomreaderfullcodificacao-aritmetica 44

4 7 FONTES CONTRIBUIDORES E LICENCcedilAS DE TEXTO E IMAGEM

7 Fontes contribuidores e licenccedilas de texto e imagem

71 Texto

bull Codificaccedilatildeo aritmeacutetica Fonte httpptwikipediaorgwikiCodificaC3A7C3A3o_aritmC3A9ticaoldid=37359573 Contri-

buidores Rnbastos Ziguratt Chobot YurikBot Salgueiro He7d3r Girino Thijsbot Daimore BotMultichill Joaosilvakle DohBot

Ariel CMK Addbot e Anoacutenimo 5

72 Imagens

bull FicheiroNuvola_apps_edu_mathematics-psvg Fonte httpuploadwikimediaorgwikipediacommonscc2Nuvola_apps_edu_

mathematics-psvg Licenccedila GPL Contribuidores Derivative of ImageNuvola apps edu mathematicspng created by self Artista original

David Vignoni (original icon) Flamurai (SVG convertion)

bull FicheiroWikitextsvg Fonte httpuploadwikimediaorgwikipediacommonscceWikitextsvg Licenccedila Public domain Contribuido-

res Obra do proacuteprio Artista original Anomie

73 Licenccedila

bull Creative Commons Attribution-Share Alike 30

Page 3: Codificação aritmética

7182019 Codificaccedilatildeo aritmeacutetica

httpslidepdfcomreaderfullcodificacao-aritmetica 34

3

Baseado nesse quadro podemos executar os passos da co-

dificaccedilatildeo O quadro abaixo representa a codificaccedilatildeo de

cada letra Quando algum diacutegito eacute produzido na saiacuteda

estes diacutegitos satildeo indicados na uacuteltima coluna

Temos na saiacuteda os diacutegitos 2493469 que acrescidos dos

diacutegitos de low (podemos ignorar os zeros no final) se torna249346946 Esse eacute nosso coacutedigo aritmeacutetico para a frase

inicial Esse nuacutemero pode ser expresso em 28 bits A

frase inicial tem 13 caracteres que podem ser expressos

com 3 bits cada totalizando 39 bits Com a compressatildeo

aritmeacutetica economizamos 11 bits

Podemos reduzir ainda mais esse valor se repararmos que

o nuacutemero 5000 fica entre os intervalos de low e high fi-

nais economizando assim mais um diacutegito na codificaccedilatildeo

249346946 Em binaacuterio temos agora 25 bits Isso repre-

senta um bit a menos que a codificaccedilatildeo de Huffman da

mesma cadeia mostrando que a codificaccedilatildeo aritmeacutetica eacute

a que mais aproxima a entropia da cadeia de entrada

4 Notas e Referecircncias

[1] Para uma prova dessa afirmativa veja SALOMON Da-

vid Data Compression The Complete Reference 2 ed

Nova Iorque Springer 2000 ISBN 0-387-95045-1 ou

qualquer livro de Caacutelculo diferencial

[2] A probabilidade cumulativa de ocorrecircncia de um carac-

tere eacute calculada ordenando-se os caracteres e somando a

probabilidade de ocorrecircncia de cada um dos caracteres

anteriores a ele O intervalo de cada caractere inicia-se na

soma de todos os anteriores e termina no inicio da proba-

bilidade cumulativa do proacuteximo caractere na ordenaccedilatildeo

5 Bibliografia

bull (em inglecircs) SALOMON David Data Compres-

sion The Complete Reference 2 ed Nova Iorque

Springer 2000 ISBN 0-387-95045-1

6 Ver tambeacutembull Codificaccedilatildeo de Huffman

bull Compressatildeo sem perda de dados

7182019 Codificaccedilatildeo aritmeacutetica

httpslidepdfcomreaderfullcodificacao-aritmetica 44

4 7 FONTES CONTRIBUIDORES E LICENCcedilAS DE TEXTO E IMAGEM

7 Fontes contribuidores e licenccedilas de texto e imagem

71 Texto

bull Codificaccedilatildeo aritmeacutetica Fonte httpptwikipediaorgwikiCodificaC3A7C3A3o_aritmC3A9ticaoldid=37359573 Contri-

buidores Rnbastos Ziguratt Chobot YurikBot Salgueiro He7d3r Girino Thijsbot Daimore BotMultichill Joaosilvakle DohBot

Ariel CMK Addbot e Anoacutenimo 5

72 Imagens

bull FicheiroNuvola_apps_edu_mathematics-psvg Fonte httpuploadwikimediaorgwikipediacommonscc2Nuvola_apps_edu_

mathematics-psvg Licenccedila GPL Contribuidores Derivative of ImageNuvola apps edu mathematicspng created by self Artista original

David Vignoni (original icon) Flamurai (SVG convertion)

bull FicheiroWikitextsvg Fonte httpuploadwikimediaorgwikipediacommonscceWikitextsvg Licenccedila Public domain Contribuido-

res Obra do proacuteprio Artista original Anomie

73 Licenccedila

bull Creative Commons Attribution-Share Alike 30

Page 4: Codificação aritmética

7182019 Codificaccedilatildeo aritmeacutetica

httpslidepdfcomreaderfullcodificacao-aritmetica 44

4 7 FONTES CONTRIBUIDORES E LICENCcedilAS DE TEXTO E IMAGEM

7 Fontes contribuidores e licenccedilas de texto e imagem

71 Texto

bull Codificaccedilatildeo aritmeacutetica Fonte httpptwikipediaorgwikiCodificaC3A7C3A3o_aritmC3A9ticaoldid=37359573 Contri-

buidores Rnbastos Ziguratt Chobot YurikBot Salgueiro He7d3r Girino Thijsbot Daimore BotMultichill Joaosilvakle DohBot

Ariel CMK Addbot e Anoacutenimo 5

72 Imagens

bull FicheiroNuvola_apps_edu_mathematics-psvg Fonte httpuploadwikimediaorgwikipediacommonscc2Nuvola_apps_edu_

mathematics-psvg Licenccedila GPL Contribuidores Derivative of ImageNuvola apps edu mathematicspng created by self Artista original

David Vignoni (original icon) Flamurai (SVG convertion)

bull FicheiroWikitextsvg Fonte httpuploadwikimediaorgwikipediacommonscceWikitextsvg Licenccedila Public domain Contribuido-

res Obra do proacuteprio Artista original Anomie

73 Licenccedila

bull Creative Commons Attribution-Share Alike 30