Buscar

A codificação aritmética

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

A codificação aritmética:
Em codificação aritmética uma palavra de código para cada um dos símbolos do alfabeto de origem como foi feito nas vistas acima técnicas não está atribuído. Nesta técnica, o que é feito é o de codificar uma sequência de entrada de símbolos do alfabeto fonte representados por um número de ponto flutuante, isto é, um código aritmético palavra é atribuído a uma sequência completa de símbolos de código. O código palavra muito define um intervalo de números reais entre 0 e 1. Uma vez que o número de símbolos de mensagem, o intervalo utilizado para representar torna-se menor e vai aumentar o número de unidades de informação necessária para representar a gama. Cada símbolo da mensagem reduz o intervalo de tamanho de acordo com a probabilidade de ocorrência.Uma vez que esta técnica exige, tal como com a técnica de Huffman, cada símbolo da fonte é traduzido para um número inteiro de símbolos de código (isto é, os símbolos são codificados 1-1), é obtido (apenas teoria) o limite definido pelo teorema de codificação sem ruído.
Quando um valor é transmitido para o receptor é necessário para indicar quantos símbolos tinha enviado para o receptor saber quando terminar o processo de descompressão. Para indicar que existem duas técnicas. O primeiro é para enviar valor escolhido antes que o número de símbolos que foram compactados binário. Assim, o receptor sabe quantos símbolos foram comprimido antes de o processo de descompressão. A segunda técnica consiste em utilizar o alfabeto um símbolo com uma probabilidade associada. Este símbolo é um símbolo especial para indicar o fim de uma sequência de símbolos e tablets será comprimido pro emissor após o último símbolo que você deseja compactar. O receptor vai saber quando terminar o processo de descompressão ao interpretar o símbolo máximo descompactou este símbolo é um símbolo especial.
A Figura 8 ilustra o processo básico de codificação aritmética. Neste caso, uma sequência de cinco símbolos ou mensagem, é codificado para 1 a 2 para 3 para 3 a 4 , gerado por uma fonte de quatro símbolos. Pelo o início do processo de codificação, isto assume-se que a mensagem ocupa a metade - intervalo aberto [0,1). Como mostrado na Tabela 6, este intervalo é inicialmente dividida em quatro regiões com base na probabilidade de cada símbolo da fonte. Por exemplo, o sub-intervalo [0, 0,2) está associado com osímbolo de um . Uma vez que este é o primeiro símbolo a ser codificada, a mensagem de intervalo é inicialmente reduzida para [0, 0,2). Assim, na Figura 8, o intervalo de [0, 0,2), cobrindo a totalidade da altura da figura e as extremidades são marcados com valores de classificação reduzidas. Subsequentemente, esta gama reduzida é dividido de acordo com as probabilidades de os símbolos da fonte original, e o processo continua com o símbolo da mensagem. Assim, o símbolo 2 reduz a subintervalo [0,04, 0,08) em 3reduz ainda mais, deixando em [0056, 0072), e assim por diante. O último símbolo da mensagem, que deve ser reservado como um fim especial de indicador de mensagem, reduz o intervalo, o qual se torna [0,06752, 0,0688). É claro, qualquer número pode ser usado que está dentro do sub-intervalo, tal como 0068, para representar a mensagem.
Nota: O cálculo da redução dos intervalos é como se segue: (tirar os dois primeiros símbolos do exemplo como um exemplo)
Uma vez que o primeiro símbolo é codificado, o intervalo de mensagem é reduzida de [0, 0,2). Para codificar o segundo símbolo deve ter em conta que a nossa nova gama de trabalho é criada pelo primeiro símbolo, e, por conseguinte, a gama do segundo símbolo [0,2, 0,4) refere-se a percentagens na gama de corrente. É a codificação do segundo símbolo terá a classificação:
limite inferior:
(Amplitude variam faixa inferior *) + valor mais baixo
limite superior:
(Intervalo Amplitude * gama superior) + valor mais baixo
Onde: faixa de amplitude é a amplitude da faixa atual (definido pelo símbolo apenas codificar acima), classificar inferior e superior da faixa referem-se aos limites superiores e inferiores do intervalo do símbolo desejado para codificar e valor mais baixo refere-se aolimite abaixo da faixa atual.
No processo de decodificação da tabela original que tinha alguns intervalos iniciais atribuídas a cada símbolo é usado. 
O receptor recebe através do canal de um decimal número de ponto flutuante. A primeira coisa a fazer é verificar na tabela que pertence intervalo que valorizam e o símbolo que tem sido associado esse intervalo será o primeiro símbolo que foi passado. Ele é então subtraído a partir do número recebido na extremidade inferior do intervalo ao qual ele pertence, e o resultado é dividido pelo comprimento do intervalo. 
Com o número obteve-se repetir o processo acima.
 
Este processo é repetido até que todos os símbolos de a mensagem ter sido processado.
 
 
Figura 8. Processo de codificação aritmética
 
 
Tabela 6. Exemplo de código de comprimento variável
	symbol Fonte
	probabilidade
	subintervalo inicial
	para 1
	0,2
	[0, 0,2)
	para dois
	0,2
	[0,2, 0,4)
	para 3
	0,4
	[0,4, 0,8)
	a 4
	0,2
	[0,8, 1)
Codificado aritmeticamente mensagem na figura 8, três dígitos decimais são usados ​​para representar a mensagem cinco símbolos. Isso se traduz em 3/5, ou 0,6 dígitos decimais por símbolo fonte, que é muito perto da entropia da fonte, que passa a ser dígitos decimais 0,58 por símbolo. Com o aumento do comprimento da sequência para codificar, o código aritmético resultante aproxima limite definido pelo teorema de codificação sem ruído. Na prática, existem dois factores que tornam codificação desempenho afasta-se este limite:
         A inclusão de indicador de fim de mensagem, é necessário remover uma mensagem a partir de uma outra.
         O uso de aritmética de precisão finito.
Codificação Aritmética
Introdução
Existem dois modos de comprimir a informação, usando Técnicas de compressão com perdas ou Técnicas de compressão sem perdas. Esta última que também é conhecida por lossless compression, bit-preserving ou reversible compression. Como o próprio nome indica nas técnicas de compressão que se enquadram neste modo não existe perda de informação entre os dados originais e os dados que serão primeiramente comprimidos e depois “descomprimidos” , ou seja, o fluxo de dados de entrada é idêntico ao fluxo de dados de saída e é nesta ultima categoria que se enquadra a codificação Aritmética.
O ideia de Codificação aritmética foi proposta pela primeira vez por Peter Elias no início dos anos 60  e foi descrita por Abramson em 1963 pela primeira vez. Por sua vez as primeiras demonstrações práticas deste método só foram feitas por  Rissanen  em 1976, Pasco em 1976 e Rubin em 1979. Witten em 1987 e Moffat  em 1998 discutiram os princípios e os detalhes da implementação da codificação aritmética mostrando também exemplos.
A codificação aritmética enquadra-se no grupo de técnicas de codificação de entropia, que é um termo genérico que se refere às técnicas de compressão e codificação que não têm em conta a natureza da informação a ser comprimida, ou seja, este tipo de compressão ignora a semântica da informação a ser comprimida sendo representada por sequências de bits.
Ao contrário da Codificação de Huffman que gera um novo código para cada símbolo de entrada na Codificação Aritmética atribui-se um único código a cada conjunto de dados (ficheiro de entrada ou outro tipo de conjunto de dados).
Justificação
A cada dia que passa o crescimento da qualidade presente nos formatos de áudio, vídeo e imagem e por esse motivo o consequente aumento no espaço de armazenamento que estes ocupam é cada vez mais importante a existência de algoritmos de compressão sendo o crescimento da partilha de conteúdos multimédia principalmente do streaming de vídeo através da Internet. É necessário a utilização de técnicas de compressão que permitam a transmissão dos mesmos sem perdas significativas de qualidade uma vez que seria impossível transmitir estes formatossem compressão, pois a estrutura da rede de internet existente nos dias de hoje não suporta a transmissão destes conteúdos sem compressão de uma forma eficiente e rápida.
Áreas de aplicação
Como a técnica de codificação aritmética é uma técnica patenteada o seu uso em aplicações fica limitado pelo fator monetário daí que muitas vezes deixa de ser viável a sua utilização em projetos open-source e em vez desta seja usada em seu detrimento a técnica de codificação de Huffman, ainda que esta seja menos eficiente que a codificação aritmética pode ser usada em projetos open-source e software de baixo custo.
Alguns exemplos de aplicações da técnica de codificação aritmética:
“bzip2” – Software de compressão open-source (versão anterior);
Codificadores e descodificadores do formato de ficheiros JPEG;
O codec H.264/AVC usa a codificaçao aritmética;
O algoritmo da codificação Aritmética
O algoritmo de codificação Aritmética faz parte das técnicas de codificação de entropia por isso, não tem em conta a semântica do fluxo de entrada/saída dos dados codificados/descodificados, codificando o fluxo de entrada num único código. O código resultante é visto como um sub intervalo aberto no limite superior do intervalo ( [0, 1[ ).
Como acontece no algoritmo de codificação de Huffman os conjuntos de dados mais prováveis correspondem a sub intervalos mais amplos gerando assim menos bits de precisão
Codificação
Para podermos proceder a codificação de um fluxo de entrada de dados é necessária a existência de um alfabeto com a probabilidade de ocorrência de cada símbolo nele contido. O fluxo de dados de entrada no início do processo encontra-se no intervalo  [0, 1], este intervalo vai ser dividido em sub intervalos que correspondem a cada um dos símbolos do alfabeto da seguinte forma:
O limite inferior(fechado ( [ ) ) é a probabilidade cumulativa até, mas deixando de fora o símbolo;
O limite superior(aberto ( [ )  ) de cada subintervalo cumulativa até incluindo o símbolo;
O primeiro passo do codificador Aritmético consiste na leitura e processamento do primeiro símbolo do fluxo de dados de entrada, em seguida vai detetar o sub intervalo correspondente ao símbolo lido e fazer com que este seja o novo intervalo atual que por sua vez vai fazer com que os restantes símbolos do alfabeto sejam recalculados com os novos limites do intervalo.
Para calcular para cada símbolo do fluxo de entrada aplica-se o algoritmo da codificação Aritmética abaixo apresentado:
 
 Fig 1. Algoritmo de codificação aritmética
 
No final do processamento vai ser usado o sub intervalo calculado apartir do último símbolo do fluxo de dados de entrada e o codificador Aritmético vai determinar um código aritmético contido nesse intervalo.
Aqui está uma aproximação do algoritmo que o codificador aritmético usa para a geração de um código binário ótimo, em que o high é o valor do sub intervalo superior e o low o valor do sub intervalo inferior do último símbolo calculado presente no fluxo de entrada.
Fig 2. Algoritmo de Geração do código binário ótimo
 
Descodificação
O descodificador aritmético usa o código binário produzido pelo codificador aritmético que representa a totalidade dos dados comprimidos.
No inicio do processo de descodificação o descodificador atribui a cada símbolo do alfabeto um índice único (i) ao qual associa um probabilidade cumulativa, depois desse processo o descodificador vai aplicar o algoritmo a seguir apresentado:
Fig 3. Algoritmo de descodificação aritmética
 
 Exemplo da Aplicação
Codificação
Usando o algoritmo de codificação aritmética para codificar por exemplo a mensagem “UUSSAC?”.
O primeiro processo que o codificador executa consiste no processamento do primeiro símbolo da mensagem “UUSSAC?”, ou seja, o símbolo “U” e vai procurar na tabela abaixo apresentada o sub intervalo correspondente a esse símbolo, que vai ser o intervalo atual usado pelo codificador, sendo necessário calcular os intervalos dos restantes símbolos do alfabeto.
 
	 Si
	 Pi
	Sub intervalo
	M
	0,05
	[0,00 ; 0,05[
	U
	0,20
	[0,05 ; 0,25[
	S
	0,10
	[0,25 ; 0,35[
	I
	0,05
	[0,35 ; 0,40[
	C
	0,30
	[0,40 ; 0 ,70[
	A
	0,20
	[0,70 ; 0,90[
	?
	0,10
	[0,90 ; 1,00[
Figure 4 Largura dos sub intervalos dos símbolos para o exemplo apresentado
Codificando o símbolo “U” o intervalo atual corresponde agora ao intervalo [0,05 ; 0,25[, sendo fácil de observar que o subintervalo_alto corresponde a 0,25 e osubintervalo_baixo corresponde a 0,05.
Os intervalos superior e inferior do símbolo seguinte da mensagem são calculados através expressões presentes no algoritmo de codificação aritmética:
Novo limite superior = 0,05 + (0,25 – 0,05) x 0,25= 0,10
Novo limite inferior = 0,05 + (0,25 – 0,05) x 0,05= 0,06
Fig. 5 Exemplo de codificação da mensagem
 
Estes cálculos devem ser efetuados sucessivamente aplicando o algoritmo de codificação aritmética até chegar ao último símbolo cujos sub intervalos calculados vão ser os limites superiores e inferiores do código binário que vai ser calculado pelo algoritmo apresentado na figura 2.
O código binário resultante neste exemplo será 0,0001001001000011 (16 bits) que corresponde ao decimal 0,00713348389.
 
Descodificação
A mensagem “UUSSAC?” que foi codificada anteriormente pelo algoritmo de codificação aritmética que originou um código binário com 16 bits e que o número decimal correspondente é 00713348389, dadas as probabilidades dos símbolos, inicia-se o processo de descodificação atribuindo um índice a cada símbolo do alfabeto, ao qual se associa uma probabilidade cumulativa probcum. Foram obtidos os seguintes valores:
 
	 Si
	 i
	 PROBCUMi
	M
	7
	0,00
	U
	6
	0,05
	S
	5
	0,25
	I
	4
	0,35
	C
	3
	0,40
	A
	2
	0,70
	?
	1
	0,90
	
	0
	1,00
Fig. 6 Tabela do descodificador para este exemplo
Aplicando o algoritmo do descodificador aritmético apresentado na Figura 3  obtemos os sub intervalos que correspondem a cada símbolo através da informação  presente na tabela da Figura 4 até chegar ao símbolo “?” que funciona como terminador do processo de descodificação.
 
Implementação do algoritmo de codificação aritmética
 
 
Comparação com outros métodos semelhantes
Comparando a codificação aritmética com a codificação de Huffman que é outro método de compressão sem perda com elevado rácio, podemos dizer que a codificação aritmética é bem mais complexo que o método de Huffman pois codifica uma sequência de dados de entrada num único código enquanto que Huffman trata cada símbolo individualmente e atribui-lhe um código binário respectivo.
A codificação aritmética quanto maior for o tamanho da sequência de dados a comprimir mais se aproxima do valor de Entropia enquanto que se o alfabeto for grande, a probabilidade máxima é baixa e portanto o código de Huffman  comporta-se melhor que a codificação aritmética.
Uma grande vantagem da codificação aritmética é a facilidade de se implementar sistemas com múltiplos codificadores aritméticos.
É muito mais simples adaptar a codificação aritmética para mudar a estatística. Somente o que precisamos é estimar a probabilidade do alfabeto de entrada. Não há necessidade de preservar a árvore como na codificação Huffman.
Conclusão
Podemos verificar que a codificação aritmética apesar de ser um metódo complexo produz resultados satisfatórios no que diz respeito ao rácio de compressão para grandes fluxos de entrada de dados.
Embora seja um método de compressão que apresenta uma boa performance não é utilizado em projectos open-source ou mesmo aplicações comerciais pois é um algoritmo patenteado, ou seja, a sua inclusão em projetos iria incutir custos extra no desenvolvimento e venda dos mesmo. Por esse facto muitas vezes em vez da codificação aritmética é usado o algoritmo de codificação de Huffman, pois não é patenteado embora na maioria dos casos apresente um performance inferior à codificação aritmética compensa pelo facto que não acresce custos ao projetoa desenvolver .
codificação aritmética
	
	Este artigo ou seção precisa para ser wikificado com um formato adaptado às convenções de estilo . 
Por favor edite -lo a cumprir -los . Enquanto isso, não remova este aviso, desde 4 de dezembro de 2015. 
Você também pode ajudar wikificando outros itens ou alterar este cartaz para uma forma muito específica .
A codificação aritmética é uma forma de codificação de entropia usada na compressão sem perdas. Normalmente, uma cadeia de caracteres como as palavras "Olá" é representado usando um número fixo de bits por caractere, como no código ASCII . Quando uma string é convertida para codificação aritmética, caracteres usados ​​com freqüência são armazenados com menos bits e os caracteres utilizados não tão freqüentemente serão armazenados com mais bits, resultando em menos bits usados ​​no total. A codificação aritmética difere de outras formas de codificação de entropia, tal como codificação de Huffman , no qual mais de entrada separada para os símbolos componentes e substituir cada um com um código, a codificação aritmética codifica toda a mensagem para um número único, uma fracção de n onde [0,0 ≤ '' n '' <1,0).
Um exemplo de codificação aritmética assumindo uma distribuição de probabilidade fixa de três símbolos "A", "B" e "C". A probabilidade de "A" é de 50%, a probabilidade de "B" é 33% e a probabilidade de "C", é de 17%. Em adição assumimos que a profundidade de recursão é conhecido em cada etapa. No passo um código "B", o que está dentro do intervalo [0.5, 0.83): o número binário "0,10 x " é o código que representa a mais curta que um intervalo é inteiramente dentro [0,5, 0,83). " X " significa uma sequência de bits arbitrários. Existem dois casos extremos: o X menor representa um número infinito de zeros, que representa o lado esquerdo do intervalo representado. Em seguida, o lado esquerdo é o intervalo de dezembro (0,10) = 0,5. As x maior que representa um número infinito de um número que dá convergindo para dezembro (0,11) = 0,75. Portanto, "0,10 x " representa o intervalo [0,5, 0,75), que está dentro [0,5, 0,83). Agora podemos deixar a parte "0."uma vez que todos os intervalos que começam com "0." e nós podemos ignorar a parte " x ", porque não importa o que seqüência de bits representa, nós ficar dentro [0,5, 0,75).
índice
  [ Ocultar ] 
1Detalhes de implementação e exemplos
1.1As probabilidades iguais
1.2A definição de um modelo
1.3codificação e decodificação: visão geral
1.4Codificação e decodificação: Exemplo
detalhes de implementação e exemplos [ editar ]
Iguais probabilidades [ editar ]
No caso mais simples, a probabilidade de ocorrência de cada símbolo representa o mesmo. Por exemplo, considere um conjunto de três símbolos A, B e C, cada uma com a mesma probabilidade de ocorrência. Um simples código de bloco iria requerer 2 bits por símbolo, o que é um desperdício: uma variação de bits nunca é utilizado. Isto é, A = 00, B = 01 e ​​C = 10, 11, mas não é usado.
Uma solução é mais eficiente para representar uma sequência destas três símbolos como um número racional na base 3, onde cada dígito representa um símbolo. Por exemplo, a sequencia "ABBCAB" pode tornar-se 0.011201 3 (em aritmética de codificação são números entre 0 e 1). O próximo passo é paracodificar este número ternário usando um binário fixo - número de ponto com uma precisão suficiente para se recuperar, como 0,0010110010 2 - este é de apenas 10 bits; 2 bits são guardados em relação ao bloco de codificação. Isto é praticável para sequências longas, porque existem algoritmos eficientes para converter a base de números precisos arbitrariamente.
Para decodificar o valor, sabendo que o comprimento da cadeia original 6, pode-se simplesmente converter de volta para base 3, arredondado para 6 dígitos e recuperar a cadeia.
Definir um modelo [ editar ]
Em geral, os codificadores aritméticas pode produzir uma saída perto do ideal para qualquer conjunto de símbolos e dadas as probabilidades (o valor ideal é -log 2 P bits por símbolo probabilidade P , consulte codificação fonte teorema ). algoritmos de compressão usando aritmética início de codificação determinar um modelo de dados - basicamente uma previsão de que os padrões serão encontrados nos símbolos da mensagem. A predição mais precisa de ser o mais próximo possível do óptimo para ser a saída.
Exemplo : um modelo estático simples para descrever a saída de um instrumento em particular monitorização ao longo do tempo poderia ser:
60% de chance de símbolo NEUTRO
20% de chance de símbolo positivo
10% de chance de símbolo negativo
. 10% de chance de símbolo FIM DE DADOS (fim dos dados) (A presença deste símbolo significa que a transmissão será "terminou internamente", como é bastante comum em compressão de dados, quando este símbolo aparecer no fluxo dados, o descodif icador vai saber que toda a corrente tenha sido descodificado.)
Modelos também pode lidar com diferentes alfabetos o conjunto simples de quatro símbolos escolhidos para este exemplo. Os modelos mais sofisticados também são possíveis: a modelagem de ordem elevada muda de estimativa da probabilidade actual de um sistema com base em símbolos que precedem (o símbolo contexto ), de modo que um modelo de texto em Inglês, por exemplo, a percentagem probabilidade de "U" é muito mais elevada quando se segue um "Q" ou um "Q". Modelos podem até adaptativa , de modo que mudam continuamente seus dados de previsão com base no que o fluxo de dados contém atualmente. O decodificador deve ter o mesmo modelo que o codificador.
Codificação e decodificação: Visão Geral [ editar ]
De um modo geral, cada etapa do processo de codificação, com excepção do último, é o mesmo; o codificador tem basicamente apenas três partes de dados a serem considerados:
O símbolo seguinte que deve ser cifrada.
O intervalo de corrente (para o início do processo de codificação, o intervalo é [0,1], mas que vai mudar).
As probabilidades de que o modelo atribui a cada um dos vários símbolos que são possíveis nesta fase (tal como mencionado acima, os modelos de maior ordem ou adaptativa implica que estas probabilidades não são necessariamente a mesma em cada etapa).
O codificador divide o intervalo de corrente em sub-intervalos, cada uma representando uma fracção da corrente proporcional à probabilidade de que o símbolo do intervalo actual. Qualquer que seja o intervalo correspondente ao símbolo corrente a ser codificado a seguir torna o intervalo usado no passo seguinte.
Exemplo : para o modelo acima de quatro símbolos:
intervalo de Terceiro a ser [0, 0,6)
o intervalo para positivo seria [0.6, 0.8)
intervalo de negativo a ser [0,8, 0,9)
o intervalo para FIM DE DADOS seria [0,9, 1).
Quando todos os símbolos têm sido codificadas, o intervalo resultante inequivocamente identifica a sequência de símbolos que produziram. Qualquer pessoa com o mesmo intervalo final e o modelo que é utilizado pode reconstruir a sequência de símbolos que deve ter sido introduzidos no codificador para resultar no intervalo final.
Não é necessário para transmitir o intervalo final, no entanto, só é necessário para transmitir uma fracção que cai dentro da gama.Em particular, isso é somente necessária para transmitir dígitos suficientes (em qualquer base) de modo que a fracção de todas as fracções que comecem com aqueles dígitos cair dentro do intervalo final; Isto irá assegurar que o código resultante é um código de prefixo .
Codificação e decodificação: Exemplo [ editar ]
Um diagrama que mostra a decodificação de 0,538 (ponto de loop) no exemplo do modelo. A região é dividida em proporcional às frequências das sub-regiões símbolos, em seguida, a sub-região que contém o ponto é sucessivamente subdividido da mesma forma.
Considere o processo para a descodificação de um padrão codificado de quatro símbolos de dados de mensagem. A mensagem é codificada na secção 0538 (decimal utilizando para maior clareza, ao invés de binário, também supondo que há apenas tantos dígitos quantos forem necessários paradescodificar a mensagem).
O processo começa com o mesmo intervalo de pelo descodificador: [0,1), e utilizando o mesmo modelo, dividindo-o em os mesmos quatro sub-intervalos que o codificador deve ter.A fração de 0538 insere-se no sub-intervalo para neutro, [0, 0,6); isto indica que o primeiro símbolo que o codificador deve ter lido foi neutra, em seguida, este é o primeiro símbolo da mensagem.
Em seguida, dividir o intervalo [0, 0,6) em sub-intervalos:
intervalo de neutro a ser [0, 0,36), 60% de [0, 0,6) .
intervalo de positivo a ser [0,36, 0,48), 20% de [0, 0,6) .
intervalo negativo a ser [0,48, 0,54), 10% de [0, 0,6) .
o intervalo para FIM DE DADOS seria [0.54, 0.6), 10% de [0, 0,6) .
Desde 0538 está dentro do intervalo [0,48, 0,54), o segundo símbolo da mensagem deve ter sido negativa.
Novamente dividir a nossa gama em sub-intervalos:
o intervalo para NEUTRO seria [0,48, 0,516).
o intervalo para positivo seria [0,516, 0,528).
intervalo de negativo a ser [0,528, 0,534).
o intervalo para FIM DE DADOS iria [0.534, 0.540).
Agora 0,538 quedas dentro do intervalo de símbolo FIM DE DADOS; portanto, este deve ser o próximo símbolo. Uma vez que também é o símbolo de realização, isso significa que a descodificação está completa. Se o fluxo de dados não está terminado internamente, você indique o contrário necessário quando o fluxo pára. Caso contrário, o processo de decodificação poderia continuar para sempre, erroneamente ler mais símbolos da fração do que foram codificados nele.

Outros materiais