BRPI0722375A2 - codificação/decodificação aperfeiçoadas de sinais digitais, em particular em quantificação vetorial com códigos de permutação - Google Patents

codificação/decodificação aperfeiçoadas de sinais digitais, em particular em quantificação vetorial com códigos de permutação Download PDF

Info

Publication number
BRPI0722375A2
BRPI0722375A2 BRPI0722375-7A BRPI0722375A BRPI0722375A2 BR PI0722375 A2 BRPI0722375 A2 BR PI0722375A2 BR PI0722375 A BRPI0722375 A BR PI0722375A BR PI0722375 A2 BRPI0722375 A2 BR PI0722375A2
Authority
BR
Brazil
Prior art keywords
formula
original document
document page
see original
decomposition
Prior art date
Application number
BRPI0722375-7A
Other languages
English (en)
Inventor
Stephane Ragot
Claude Lamblin
Original Assignee
France Telecom
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by France Telecom filed Critical France Telecom
Publication of BRPI0722375A2 publication Critical patent/BRPI0722375A2/pt

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/26Pre-filtering or post-filtering
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3082Vector coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/94Vector quantisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • Acoustics & Sound (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

CODIFICAçãO/DECODIFICãO APERFEIçOADAS DE SINAIS DIGITAIS, EM PARTICULAR EM QUANTIFICAçãO VETORIAL COM CóDIGOS DE PEPMUTAçãO A invenção refere-se à codificação/decodificação de sinais digitais, utilizando, em particular, códigos de permutação envolvendo um cálculo de expressões combinatórias. De acordo com a invenção, as expressões combinatórias são representadas por decomposições em potências de fatores primos, e determinadas por uma leitura de memória de representações pré-gravadas de decomposições de números inteiros escolhidos.

Description

"CODIFICAÇÃO/DECODIFICAÇÃO APERFEIÇOADAS DE SINAIS DIGITAIS, EM PARTICULAR EM QUANTIFICAÇÃO VETORIAL COM CÓDIGOS DE PERMUTAÇÃO" - DIVIDIDO DO PI 0707839-0 DEPOSITADO EM 13/02/2007.
Campo da Invenção
A invenção refere-se à codificação/decodificação de sinais digitais, tais como sinais de áudio, video e, mais geralmente, os sinais de multimídia para seu armazenamento ou sua transmissão. Ela propõe, em particular, uma solução aos problemas que impõem a codificação e a decodificação de códigos de permutação.
Tipicamente, a presente invenção aplica-se também ao dual da codificação de fonte: a codificação de canal ou "modulação".
A codificação/decodificação em compressão de sinais digitais no sentido da invenção pode ser muito útil à quantificação dos coeficientes de transformada dos codificadores freqüênciais dos sinais de fala e/ou áudio.
Quantificação vetorial
Uma solução muito difundida em compressão dos sinais digitais é a quantificação vetorial. A quantificação vetorial representa um vetor de entrada por um vetor de mesma dimensão escolhido em um conjunto finito. Um quantificador de M níveis (ou "vetores-códigos") é uma aplicação não bijetora do conjunto dos vetores de entrada,
geralmente o espaço real euclidiano de η dimensões R" ou um subconjunto de R" em um subconjunto finito Y de R" de M elementos distintos: Y =
<formula>formula see original document page 2</formula>
Y é chamado de alfabeto de reprodução ou "dicionário" ou ainda "repertório", e seus elementos dos vetores-códigos, "palavras-código" (ou "pontos de saída" ou ainda "representantes").
O fluxo por dimensão r do quantificador (ou sua "resolução") é definido pela relação:
<formula>formula see original document page 3</formula>
Em quantificação vetorial, um bloco de η amostras é tratado como um vetor de dimensão η. De acordo com a teoria da codificação de fonte, quando a dimensão torna-se muito grande, o desempenho da quantificação vetorial aproxima o limite (borne) de fluxo-distorção da fonte. Os dicionários de quantificadores vetoriais podem ser concebidos a partir de métodos estatísticos, tais como o algoritmo de Lloyd generalizado (ou "GLA" para "Generalized Lloyd Algorithm"), baseado nas condições necessárias de optimalidade de um quantificador vetorial.
Os quantificadores vetoriais estatísticos assim obtidos não possuem nenhuma estrutura, o que torna sua exploração custosa em recursos de cálculos e de armazenamento, uma vez que a complexidade, tanto da codificação quanto do armazenamento, é proporcional a n2"nr .
Com referência à Figura 1A, três operações importantes implementam um quantificador vetorial: duas na codificação e uma na decodificação. Um vetor de entrada é codificado (etapa COD) escolhendo-se primeiro um vetor- código em um dicionário. Trata-se do vetor-código que se "parece" mais com ele (operação OP1 da Figura 1A). Em seguida, o índice deste vetor-código é determinado (etapa IND) para ser transmitido ou armazenado (operação 0P2 da Figura 1A). No decodificador (etapa DEC), o vetor-código é determinado a partir de seu índice (operação 0P3 da Figura 1A). Em modulação, encontram-se as três operações 0P1, 0P2 e OP3 da Figura 1A, mas em uma ordem diferente. Com referência à Figura 1B, que ilustra esta dualidade modulação/quantificação, é prevista a passagem de um índice para um vetor-código (etapa COD' da Figura 1B correspondendo à operação OP3 da Figura 1A). Em seguida, após a transmissão em um canal ruidoso, busca-se o vetor- código mais próximo do vetor recebido (etapa DEC' da Figura 1B correspondendo à operação OP1 da Figura 1A). Finalmente, a decodificação do índice do vetor-código é a terceira etapa (etapa IND' da Figura 1B correspondendo à operação OP2 da Figura 1A).
O crescimento exponencial da complexidade, em função da dimensão dos vetores e do fluxo, limita o emprego dos quantificadores vetoriais não estruturados a pequenas dimensões e/ou baixos fluxos para poder implementá-los em tempo real. Para um quantificador vetorial não estruturado, a busca do vizinho mais próximo (operação OP1) requer uma busca exaustiva entre todos os elementos do dicionário para selecionar o elemento do dicionário que minimiza uma medida de distância entre ele e o vetor de entrada. As duas últimas operações (indexação 0P2 e operação inversa 0P3) se efetuam, em geral, por simples leituras de tabelas, mas são, no entanto, custosas em espaço de memória. Para se livrar das restrições de tamanho e de dimensão, diversas variantes da quantificação vetorial de base foram estudadas. Elas tentam remediar a ausência de estrutura do dicionário e chegam, assim, a reduzir a complexidade, mas em detrimento da qualidade. No entanto, o compromisso desempenho/complexidade é melhorado, o que permite aumentar a gama das resoluções e/ou das dimensões sobre a qual a quantificação vetorial pode ser aplicada eficazmente em custo. Muitos esquemas de quantificadores vetoriais estruturados foram propostos e, em particular, o quantificador vetorial implementando um "código de permutação" apresentado a seguir.
Códigos de permutação
No quantificador vetorial "código de permutação", os vetores-códigos são obtidos por permutações das componentes do primeiro vetor-código (no sentido da ordem lexicográfica) chamado "líder" (ou ainda "vetor-diretor"). Estas componentes pegam seus valores em um alfabeto A =
<formula>formula see original document page 5</formula>
de tamanho q (alfabeto A q-ário tal que
As componentes a, são reais (ou inteiros).
A ponderação w'i (onde i é um índice variando de O a q-1) é o número de repetições da letra a, do alfabeto. As ponderações w'i são inteiros positivos tais que =
<formula>formula see original document page 5</formula>
Por convenção, os valores do alfabeto satisfazem a a0 > ax >... > aq_x. As η componentes do líder vão decrescendo da posição O à posição (w-1). O vetor-líder y0 é, então, um vetor de dimensão η da forma:
<formula>formula see original document page 5</formula>
Compreende-se que uma ordem diferente das componentes poderia ser escolhida, por exemplo, a0 < a1 < ... < aq-1.
O vetor líder é chamado "líder sinalizado" e o código de permutação é dito "do tipo I". Os outros vetores- códigos são obtidos por permutações das componentes de y0.
O número total de permutações é: <formula>formula see original document page 6</formula>
Existe um outro tipo de código de permutação (tipo II) . O vetor lider possui, ainda, a mesma forma que anteriormente, mas suas componentes devem ser positivas
<formula>formula see original document page 6</formula>
Os outros vetores-códigos são também obtidos por permutações das componentes de y0 lhes atribuindo todas as combinações de sinais possíveis. 0 número total M de permutações é:
<formula>formula see original document page 6</formula>
com h = n se aq-1 > 0 e h = n-wq~l senão.
Neste caso, o vetor-líder é também chamado líder absoluto.
0 quantificador vetorial "código de permutação" foi estendido na composição (ou na união) de códigos de permutação e, recentemente, esta estrutura com união de códigos de permutação foi generalizada na quantificação vetorial com dimensão e resolução variáveis (no documento W0-04/00219 em nome da Depositante) . Os códigos de permutação não são somente utilizados em quantificação vetorial estatística. Os mesmos são também encontrados em quantificação vetorial algébrica, a qual utiliza dicionários fortemente estruturados, provenientes de redes regulares de pontos ou dos códigos corretores de erro. Os códigos de permutação são também empregados em modulação.
A exploração da estrutura de código de permutação permite o desenvolvimento de algoritmos de busca do vizinho mais próximo (operação OPl na Figura IA) ótimos e rápidos. No entanto, a indexação (ou numeração) dos vetores-códigos (operação 0P2 da Figura 1A) e a operação inversa de decodificação (operação 0P3 da Figura 1A) necessitam de mais cálculos do que no caso dos quantificadores vetoriais não estruturados.
Há várias formas de enumerar as permutações. O algoritmo de Schalkwijk constitui uma dessas formas:
"An algorithm for source coding", por Schalkwijk J.P.M, em IEEE Trans. on Information Theory, vol. IT-18, No. 3, pp 395-399, maio de 1972.
Utilizando a análise combinatória, essas técnicas permitem indexar um vetor-código de um código de permutação (operação 0P2) e também efetuar a operação inversa de decodificação do indice (operação 0P3) . Dentre os algoritmos de indexação das permutações, é lembrado abaixo o algoritmo de Schalkwijk comumente utilizado, por exemplo, nas normas:
- [3GPP TS 26.273] (ANSI-C code for the Fixed- point Extended AMR - Wideband (AMR-WB+) codec; V6.1.0 (2005-06) (Release 6)),
- e [3GPP TS 26.304] (Extended Adaptive Multi- Rate-Wideband (AMR-WB+) codec; Floating-point ANSI-C code; V6.3.0 (2005-06) (Release 6), junho de 2005).
Cálculo da ordenação de uma permutação na codificação (operação OP2 da Figura IA)
Procura-se ordenar e indexar todas as permutações possíveis dos componentes do vetor y = O0'-,.JVi) · A ordem é lexicográfica e o índice é chamado aqui "ordenação" ("rang"). Calcular a ordenação do vetor y remete a calcular a ordenação do vetor D = (d0,dx,...,dn_x) associado a y, e tal que dk corresponda a um valor de índice d se e somente se yk=αd. Por exemplo, um vetor y, de dimensão η - 8, possui as seguintes componentes:
y = (4,2,4,0,0,4,4,2)
O alfabeto com q=3 letras (componentes de valores diferentes) é dado por ^ = {4,2,0} com a0=4, a, = 2 e α2=0.
Associa-se, então, ao vetor y o vetor D = (0,1,0,2,2,0,0,1) cujas componentes são simplesmente os índices das q letras do alfabeto A .
As ordenações de y e D são idênticas, mas a definição do vetor D permite chegar ao cálculo da ordenação de uma seqüência D tendo seus valores em um conjunto {0,1, ...,q-1} (comportando o mesmo número de
elementos que o alfabeto {α0,α1,...,αq-1}).
As ponderações dos vetores y e D são idênticas visto que as ocorrências de suas componentes respectivas são idênticas. Define-se, igualmente, a ponderação intermediária
<formula>formula see original document page 8</formula>
como a ponderação do vetor de componentes
<formula>formula see original document page 8</formula>
e corresponde, então, ao vetor y truncado deixando as posições k a η-1 . Assim:
<formula>formula see original document page 8</formula>
onde δ(x,y) é o operador de Kronecker (δ(x,y) = 1 se x = y e 0 senão).
Tem-se: <formula>formula see original document page 8</formula>
A ordenação t do vetor y pode ser calculada, em análise combinatória, pela fórmula: <formula>formula see original document page 9</formula>
Esta fórmula pode ser simplificada assim:
<formula>formula see original document page 9</formula>
É esta última formulação que é freqüentemente
<formula>formula see original document page 9</formula>
utilizada e que se adotará então aqui. Na continuaçao, Ik^ será chamado "ordenação parcial de ordem k", com:
<formula>formula see original document page 9</formula>
Decodificação da ordenação (operação 0P3) :
Determinação da permutação a partir de seu indice
A decodificação da ordenação t consiste em encontrar o vetor D = (d0, dx, ...,<*„_,) associado a y . Um método de busca seqüencial dos dk é descrito logo a seguir.
Determina-se primeiro a componente d0, depois a componente dx,... até a componente dn_x .
* Determinação de d0:
Para encontrar d0, explora-se a fórmula comportando as desigualdades:
<formula>formula see original document page 9</formula> Os termos
<formula>formula see original document page 10</formula>
e os valores W0 para
<formula>formula see original document page 10</formula>
são conhecidos.
Para encontrar o valor de d0, parte-se de d0 = 0, incrementa-se sucessivamente d0 de 1 até que a fórmula (8) seja verificada. Escrevendo a fórmula (8) com as ordenações parciais, o valor d0 é tal que:
<formula>formula see original document page 10</formula>
* Determinação de d] :
Para encontrar dx, explora-se a relação:
<formula>formula see original document page 10</formula>
Os valores de wf para d = 0,...,q-\ são deduzidos daqueles de W0 como a seguir:
- wf =Wq -1 se d = d0
- e wf =Wq se d*d0 (repete-se então Wd0 desde que d seja diferente de d0) .
Concentra-se no mesmo problema que a determinação da componente d0. Para encontrar o valor de dx, parte-se de d1 = 0 e incrementa-se sucessivamente d1 de 1 até que a desigualdade (9) seja verificada
<formula>formula see original document page 10</formula>
* Determinação dos outros dk : O cálculo dos dk seguintes é deduzido dos casos tratados acima. Para encontrar o valor de dk , parte-se de dk = 0 e incrementa-se sucessivamente dk de 1 até que a desigualdade
<formula>formula see original document page 11</formula>
seja verificada.
Uma vez que o vetor D = (J0decodificado, dai se deduz o vetor y por simples transposição de alfabeto.
Estado da Técnica e Problemas Impostos
A indexação de um código de permutação e a operação inversa são operações complexas. Os algoritmos utilizados exploram a análise combinatória. A indexação das combinações e a operação inversa requerem divisões dos produtos de fatoriais.
Complexidade da divisão
Apesar dos progressos em circuitos integrados e dos processadores de processamento de sinal, a divisão permanece uma operação complexa. Tipicamente, a divisão de um número inteiro representado em 16 bits por um número inteiro representado em 16 bits custa 18 vezes mais que sua multiplicação. A ponderação da divisão de um número inteiro de 32 bits por um número inteiro de 16 bits é de 32 enquanto que a ponderação de sua multiplicação é de 5.
Enquadramento das variáveis
O custo da divisão não é o único problema. O enquadramento das variáveis é outro como ilustra a tabela 1 logo a seguir.
Apenas os fatoriais dos números inteiros inferiores ou iguais a 8 podem ser representados em palavras inteiras de 16 bits. Para números maiores que 12, a representação dos fatoriais em palavras inteiras de 32 bits não é mais possível.
Além disso, a complexidade das operações aumenta também com o número de bits utilizado para representar as variáveis. Assim, a divisão por um inteiro de 16 bits de um inteiro de 32 bits é quase duas vezes mais complexa (ponderação 32) do que a divisão de um inteiro de 16 bits (ponderação 18).
<table>table see original document page 12</column></row><table>
Tabela 1: Fatoriais dos números inteiros
Soluções para reduzir a complexidade da operação OP1 foram propostas.
O problema da complexidade das operações 0P2 e 0P3 é pouco tratado.
No entanto, notadamente no codificador/decodificador TDAC da Depositante ou no codificador 3GPP-AMR-WB+, simplificações foram trazidas aos algoritmos de codificação e de decodificação pela fórmula de Schalkwijk.
Simplificações da enumeração das permutações e da operação inversa (operações 0P2 e 0P3)
O cálculo da ordenação t de uma permutação e a operação inversa foram acelerados graças a simplificações descritas logo a seguir dos cálculos dos η termos Idk"k , do qual se lembra abaixo a definição:
<formula>formula see original document page 13</formula>
As duas primeiras servem para reduzir a complexidade tanto da codificação quanto da decodificação.
A terceira é utilizada na codificação e as duas últimas na decodificação.
A técnica de codificação é ilustrada nas Figuras 2 e 3. Em particular, a Figura 3 visa ao cálculo da ordenação pela fórmula de Schalkwijk em relação a técnica anterior, enquanto que a Figura 2 ilustra as etapas preliminares (referidas "EP-n", para a nésima etapa preliminar da Figura 2).
Em referencia à Figura 2, o processamento começa pela etapa EP-I na qual são recuperadas as componentes do vetor y= O0, ...,JV1) . A etapa geral EP-2 seguinte visa ao cálculo dos elementos do alfabeto intervindo para este vetor A=(a0,...,aq_x) , assim como a determinação do indice máximo q . Para isto, após uma etapa de inicialização EP-21 onde se fixa q = I , a0 = y0 , conduz-se um ciclo (boucle) no indice k compreendido entre 1 e η-1 (teste final EP-26 e incrementação senão EP-27) visando buscar os elementos aq como a seguir:
- se a componente yk de índice corrente k não estiver ainda entre os elementos {a0, ...,aq_x) (teste EP-22), deve-se atribuir um novo elemento aq tal que aq = yk (etapa EP-23) no conjunto {a0, ...,aq_x} e incrementar q de 1 (etapa EP-25).
A etapa preliminar geral seguinte EP-3 é um cálculo do vetor D ={d0, ...,dn_x) como a seguir:
- para k variando de 0 a η-1 (etapa EP-31 de inicialização de k a 0, teste final EP-37 em k e incrementação EP-38 senão), encontra-se o valor d no conjunto dos índices (0, ...,q-l) tal que yk=ad (teste EP-33 no ciclo em d e incrementação EP-36 com d = d +1 senão).
Em referência à Figura 3, descreve-se agora as etapas de cálculo da ordenação t que seguem o processamento preliminar ilustrado na Figura 2. As etapas ilustradas na Figura 3 são referenciadas como "CA-n" para designar uma nésima etapa de codificação em relação a arte ou técnica anterior.
A etapa CA-I é uma inicialização da ordenação t a 0, da variável Pal (denominador intervindo no cálculo da ordenação na etapa CA-13) e das q ponderações W0,...,Wih a 0.
Aqui, decrementa-se o valor de k de η-1 a 0 (etapa CA-2 de inicialização de í a η-1, teste final CA-14 e decrementação CA-15 senão). O interesse de tal escolha é descrito mais adiante. Utilizam-se, em seguida, as componentes dk do vetor D obtido na etapa preliminar EP-3 e se fixa, para um k corrente, d = dk(e tapa CA-3) . Atualiza-se a ponderação associada wd{wd=wd +1 na etapa CA-4) para estimar o termo P (P = Pxwd na etapa CA-5) . Inicializa-se em 0 (etapa CA-6) a soma S intervindo no numerador no cálculo da ordenação correspondente na etapa CA-13 e se faz rodar em seguida um ciclo no índice i das ponderações Wi (teste final CA-9 e incrementação CA-10 senão, até d-1) para atualizar a soma S(S = S + wi na etapa CA-8). Antes de calcular a ordenação t na etapa CA-13, verifica-se que a soma S é não nula (teste CA-11) . O interesse desta realização é descrito mais adiante.
O cálculo da ordenação t (etapa CA-13) envolve o termo fatorial (n-k-1)! como a seguir:
t = t + (S/P)(n-k-1)!
No lugar de calcular o termo (n-k-\)\ a cada atualização da ordenação t, prefere-se pré-gravar na memória estes valores e recorrer a um simples acesso de memória (etapa CA-12) para obter o valor corrente de (n-k-1)!
Assim, certas vantagens do processamento ilustrado na Figura 3 serão retomadas na implementação da presente invenção. Estas vantagens são precisadas logo a seguir.
* Armazenamento dos fatoriais
Para evitar calcular os termos (n-1-k)! e w^i^k!, em tempo real, os valores dos « + 1 fatoriais (0!, 1!,..., n!) são pré-caleulados e armazenados. Se a dimensão η variar de forma delimitada (n<nmax), os valores 0!, 1!,..., n^max! são pré- calculados e armazenados.
* Teste sobre a acumulação das ponderações intermediárias para evitar a divisão Nao serve para nada calculator
<formula>formula see original document page 16</formula>
se o termo
<formula>formula see original document page 16</formula>
for nulo. Ora, este termo é freqüentemente nulo em particular para as últimas posições (k próximo de n-1). Acrescentando um teste sobre a nulidade deste termo (teste CA-11 da Figura 3), pode-se evitar uma divisão (e uma multiplicação) . O cálculo de uma divisão sendo claramente mais complexo do que um teste, o ganho em complexidade é importante.
* Inversão do ciclo nas posições na codificação
As ponderações
<formula>formula see original document page 16</formula>
são deduzidas das ponderações wk+i incrementando
<formula>formula see original document page 16</formula> de 1 e repetindo os outros valores wdk+x para d*dk. Pode-se, então, realizar um ciclo (etapas CA-2, CA-14, CA-15 da Figura 3) partindo da última posição (k = n-1) do vetor até a primeira (k = 0) . Este ciclo "invertido" permite calcular, após uma inicialização em 1, o termo Pk tal que:
<formula>formula see original document page 16</formula>
com somente uma incrementação e uma multiplicação por iteração, seja:
<formula>formula see original document page 16</formula> Pode-se, adicionalmente, processar as duas últimas posições à parte (k = n-1 e k = n-2).
De fato,
■ para a última posição
<formula>formula see original document page 17</formula>
então
<formula>formula see original document page 17</formula>
para a penúltima posição (k = n- 2),
<formula>formula see original document page 17</formula>
então ZndT22 =1,
senão
<formula>formula see original document page 17</formula>
então
<formula>formula see original document page 17</formula>
se dn_2=dn_x e P„_2=l senão.
Outros detalhes de realização vantajosos, descritos logo a seguir, podem também ser previstos.
* Supressão de uma divisão na decodificação
A fim de evitar divisões na decodificação quando da busca de dQ, a desigualdade (8) pode ser reformulada sob a forma:
<formula>formula see original document page 17</formula>
Da mesma forma, suprimem-se as divisões quando da busca de dx reformulando-se a desigualdade (9) sob a forma:
<formula>formula see original document page 17</formula>
ou ainda: <formula>formula see original document page 18</formula>
Deve-se notar que se for então possível suprimir as divisões quando da busca dos dk (0 ≤ k ≤ n-1), deve-se sempre efetuar ("-1) divisões para calcular os
<formula>formula see original document page 18</formula>
* Teste sobre as ponderações na decodificação
Nas últimas posições, para certos valores de d, Wdk= 0 (para as wd componentes de valor d ocupando posições precedendo a posição k). É então inútil calcular os termos das desigualdades (8) e (9) para estes valores de d.
Outro problema da técnica anterior: o enquadramento das variáveis.
O problema do enquadramento das variáveis foi abordado no codificador TDAC da Depositante.
Uma primeira solução consiste em distinguir os processamentos das dimensões superiores a 12 daqueles das dimensões menores. Para as pequenas dimensões («<12), os cálculos são efetuados em inteiros não sinalizados em 32 bits. Para as dimensões maiores, variáveis flutuantes em dupla precisão são utilizadas ao preço de um crescimento da complexidade de cálculo (as operações em dupla precisão flutuante custam mais caro do que seus equivalentes em precisão completa) e da capacidade de memória requerida.
Além disso, se a precisão máxima for limitada a inteiros de 32 bits não sinalizados (implementação por um processador com vírgula fixa), os fatoriais de inteiros superiores a 12 não podem ser pré-armazenados diretamente e os vetores de dimensão superior a 12 devem ser codificados à parte. Para resolver este problema, uma solução mais elaborada utiliza uma representação com vírgula pseudo flutuante por mantissa e expondo fatoriais n! sob a forma 2j χ r. Esta decomposição é detalhada na tabela 2 logo a seguir. O armazenamento de n! (para η inferior ou igual a 16) se reduz a armazenar r com uma precisão de 30 bits no máximo assim como o expoente j que corresponde a uma simples defasagem de bits.
<formula>formula see original document page 19</formula>
Tabela 2: Fatoração dos fatoriais
Assim, as técnicas da arte anterior, para a maior parte, não resolvem o problema do enquadramento das variáveis com precisão limitada, em particular com vírgula fixa. A implementação no codificador TDAC, mesmo se ela permite regular o problema de enquadramento, não evita custosas divisões de dois inteiros. Além disso, para dimensões elevadas, os cálculos intermediários (por exemplo, o numerador e o denominador das ordenações parciais I^d^k^k ) podem se aproximar da saturação. Neste caso, as simplificações apresentadas acima não podem ser utilizadas no processamento de decodificação e é necessário retornar as formulações das desigualdades (8) e (9), e então reintroduzir inúmeras divisões.
As técnicas de enumeração além daquela de Schalkwijk sofrem os mesmos problemas. Devido ao fato de que elas utilizam também a análise combinatória, elas necessitam do cálculo de produtos de fatoriais assim como suas divisões.
A presente invenção vem melhorar a situação.
Ela propõe, em primeiro lugar, para este fim, um processo de codificação/decodificação de sinais digitais, utilizando códigos de permutação envolvendo um cálculo de expressões combinatórias, no qual estas expressões combinatórias são representadas por decomposições em potências de fatores primos, e determinadas por uma leitura de memória de representações pré-gravadas de decomposições de números inteiros escolhidos.
A presente invenção fornece, então, uma solução eficaz aos problemas ligados tanto à indexação de um código de permutação quanto à operação inversa. Ela resolve, conjuntamente, os dois problemas de enquadramento das variáveis e de divisões.
De fato, em uma realização vantajosa, as representações pré-gravadas comportam valores representativos de expoentes, armazenados respectivamente em correspondência de valores representativos de números primos sucessivos, para cada um dos referidos inteiros escolhidos. Já se resolve, assim, o problema ligado ao enquadramento das variáveis da técnica anterior.
Este problema de enquadramento das variáveis é aumentado quando se trata de manipular termos fatoriais.
Em uma realização vantajosa, para manipular as expressões combinatórias quando elas comportam valores fatoriais de inteiros, as representações pré-gravadas comportam pelo menos representações de decomposições de valores fatoriais.
Esta realização permite, então, retirar a restrição de enquadramento das variáveis e, dai, afastar os limites habitualmente fixados quanto à dimensão η dos códigos de permutação considerados.
De acordo com outra característica vantajosa, pelo menos uma das referidas expressões combinatórias comporta um quociente de um numerador inteiro por um denominador inteiro, e este quociente é representado por uma decomposição de potências de fatores primos, das quais cada potência é uma diferença de expoentes respectivamente associados ao numerador e ao denominador e atribuídos a um mesmo número primo.
Resolve-se, assim, o problema ligado ao cálculo de divisões da técnica anterior, substituindo este cálculo por um simples cálculo de subtrações.
Em um primeiro modo de realização, prevê-se um endereçamento de memória para encontrar uma decomposição pré-gravada de um dos inteiros escolhidos pré-citados. Para este fim, a representação pré-gravada de um número inteiro escolhido é armazenada em uma memória endereçável, um endereçamento da referida memória dando uma sucessão de expoentes a atribuir a números primos respectivos para recompensar o inteiro escolhido. Preferencialmente, a representação pré-gravada de um número inteiro escolhido será armazenada sob a forma de uma sucessão de endereços dando cada uma, para um número primo, um expoente a atribuir a este número primo para recompensar o inteiro escolhido.
Denominar-se-á, logo a seguir, esta realização, de acordo com o primeiro modo, pelos termos "representação fragmentada das decomposições".
Em variante, em um segundo modo de realização, as representações pré-gravadas são armazenadas sob a forma de palavras comportando uma sucessão de grupos de bits, cada grupo tendo:
- uma ponderação de função de um número primo, e
- um valor de função de um expoente a associar a este número primo.
Preferencialmente, a determinação das potências de fatores primos se efetua, então, por aplicações sucessivas de pelo menos uma máscara parcial à palavra de bits, com defasagens sucessivas em função das ponderações dos bits e leituras dos bits restantes.
Denominar-se-á, logo a seguir, esta realização de acordo com o segundo modo, pelos termos "representação compacta das decomposições".
O desenvolvimento mesmo do processo, para o cálculo de uma expressão combinatória, pode, de maneira geral, ser conduzido de acordo com as etapas:
identificação, dentre os números inteiros escolhidos, de termos aparecendo em um produto e/ou quociente formando a referida expressão combinatória,
- leitura de memória dos expoentes intervindo nas decomposições em fatores primos dos referidos termos,
adição e/ou respectivamente subtração dos expoentes lidos para determinar os expoentes intervindo na decomposição em potências de fatores primos da referida expressão combinatória, e, dai, calcular a referida expressão combinatória a partir de sua decomposição em potências de fatores primos.
Para o que diz respeito ao cálculo de um produto a efetuar de forma recorrente e envolvendo, em cada recorrência, um novo termo, pode ser vantajoso armazenar temporariamente a decomposição de um cálculo de produto efetuado para uma recorrência anterior. Assim, se o processo comportar uma etapa recorrente de cálculo de um produto envolvendo, em cada recorrência, um termo se multiplicando a um produto determinado em uma recorrência anterior:
o referido produto determinado em uma recorrência anterior é vantajosamente conservado em memória sob a forma de uma decomposição em potências de fatores primos,
- o referido termo multiplicando ao produto é preferencialmente um dos inteiros escolhidos cuja decomposição é pré-gravada, e
para determinar o referido produto em uma recorrência corrente, basta adicionar, um a um por número primo, os expoentes provenientes das decomposições respectivas do referido produto determinado em uma recorrência anterior e do referido termo se multiplicando ao produto.
Da mesma forma, se o processo comportar uma etapa recorrente de cálculo de uma divisão envolvendo, em cada recorrência, um termo dividindo um quociente determinado em uma recorrência anterior:
o quociente determinado em uma recorrência anterior é vantajosamente conservado em memória sob a forma de uma decomposição em potências de fatores primos, o termo dividindo o quociente é, preferencialmente, um dos inteiros escolhidos cuja decomposição é pré-gravada, e
- para determinar a divisão em uma recorrência corrente, subtraem-se, um a um por número primo, os expoentes provenientes da decomposição do termo aos expoentes provenientes da decomposição do quociente determinado em uma recorrência anterior.
Este armazenamento temporário das decomposições intermediárias dos produtos e/ou dos quocientes calculados de forma recorrente se mostrará particularmente vantajoso para a determinação das ordenações parciais recorrentes cuja acumulação é representativa de uma ordenação de uma permutação.
Assim, em uma realização vantajosa da invenção, os códigos de permutação envolvem o cálculo de uma quantidade representativa de uma ordenação de uma permutação comportando uma acumulação de ordenações parciais, cada ordenação parcial correspondendo, então, a uma das referidas expressões combinatórias.
O cálculo da ordenação de uma permutação pode então intervir, na codificação de sinais digitais em quantificação vetorial, para indexar as permutações das componentes de um vetor diretor (operação 0P2 da Figura 1A) , estas permutações tendo sido efetuadas em uma etapa prévia (operação OPl) para determinar um vetor-código mais próximo de um vetor de entrada.
Da mesma forma, na decodificação de sinais digitais em quantificação vetorial, a estimação de uma ordenação de uma permutação intervém, devido ao fato de que a partir de um valor dado de uma ordenação de permutação:
calcula-se pelo menos uma quantidade representativa de uma ordenação de permutação (operação 0P3 da Figura 1A) aproximando o valor dado, em função de pelo menos uma componente presumida de um vetor-código a construir,
- validar a escolha da componente presumida se esta quantidade verifica uma condição de proximidade com o valor dado da ordenação.
Em um exemplo de realização, esta condição de proximidade é verificada se o valor dado da ordenação puder ser enquadrado por acumulações de ordenações parciais até a ordenação parcial associada à componente presumida, por um lado, e até a ordenação parcial associada a uma componente correspondente a uma incrementação da componente presumida, por outro lado.
Esta condição de proximidade pode, então, corresponder a uma formulação geral das desigualdades (8) descritas acima no caso de uma enumeração de Schalkwijk.
Assim, a presente invenção pode se aplicar vantajosamente à codificação/decodificação de fonte com quantificação vetorial em relação a Figura 1A.
No entanto, a codificação/decodificação pode também ser do tipo codificação/decodificação de canal, em modulação, em relação a Figura 1B, devido ao fato de que comporta:
- antes da transmissão, a determinação de um vetor-código a partir da ordenação de uma permutação (mesma operação 0P3 da Figura 1A e da Figura 1B), e
- em recepção, o cálculo da ordenação de uma permutação a partir de um vetor-código correspondente a um vetor recebido (mesma operação 0P2 da Figura 1A e da Figura 1B).
O cálculo de uma ordenação parcial envolve termos (em um produto ou um quociente) que, em regra geral, como se verá mais adiante, permanecem inferiores ou iguais à dimensão máxima η dos códigos de permutação. Assim, em uma realização vantajosa, os números inteiros escolhidos cujas dimensões são pré-gravadas comportam pelo menos:
- os inteiros compreendidos entre Iea dimensão máxima η ,
- o valor fatorial do inteiro O,
- e, de preferência, os valores fatoriais dos inteiros compreendidos entre Iea dimensão máxima η .
Em uma realização particular facultativa, os números inteiros escolhidos podem comportar, adicionalmente, o valor de 0.
Assim, se o código de permutação utilizar uma enumeração de Schalkwij k, a ordenação parcial Idkk associada à truncagem (yk,...,yn-1) de um vetor-código (y0,...,yn-1) se escreve:
<formula>formula see original document page 26</formula>
onde:
- a notação
<formula>formula see original document page 26</formula>
representa um produto para um índice inteiro i variando de 0 a m ,
- a notação
<formula>formula see original document page 26</formula>
representa uma soma para o índice i variando de 0 a m,
- a notação l! é o valor fatorial do inteiro l com l!=1χ2χ3χ ...x(/-1) x l, para l>0 e com 0!=1,
- o inteiro η é a dimensão do código de permutação, correspondente ao número total de componentes que comporta um vetor-código,
- o inteiro k, compreendido entre 0 e η-1, é o índice da k^ésima componente yk do vetor-código, buscada a partir de um valor de ordenação em decodificação de fonte (respectivamente em codificação de canal) ou do qual se procura indexar as permutações em codificação de fonte (respectivamente em decodificação de canal),
o inteiro q é o número de componentes distintas que comporta o vetor-código, e um termo w^d^k (denominado "ponderação intermediária") representa o número de componentes de índices compreendidos entre k e η-1 e que possuem um valor igual àquele de uma mesma componente de índice d.
Neste caso, os números inteiros escolhidos cujas decomposições são pré-gravadas e que busca então identificar na expressão da ordenação parcial Idk , em um produto e/ou um quociente, são preferencialmente:
- os termos fatoriais (n-1-k)!, para todos os inteiros k e compreendidos entre O e η-1, (isto é, os valores dos fatoriais para todos os inteiros entre O e (n-1)),
- o valor de cada termo Wk e/ou seu valor fatorial, intervindo no produto Pk =
<formula>formula see original document page 27</formula>
cada termo Wk
estando compreendido entre 0 e η, e
<formula>formula see original document page 27</formula>
- os termos
<formula>formula see original document page 27</formula>
cada um compreendido entre
<formula>formula see original document page 27</formula>
para todos os inteiros k compreendidos entre 0 e η-1 .
Sempre no caso particular da enumeração de Schalkwijk, o armazenamento temporário das decomposições intermediárias se aplica, vantajosamente, como se segue: a soma dos expoentes na decomposição do termo
<formula>formula see original document page 27</formula> é armazenada temporariamente em memória para um índice k precedente, para acrescentar ou subtrair os expoentes da decomposição de um termo w^i^k para um índice k corrente.
Breve Descrição das Figuras
Outras características e vantagens da invenção aparecerão no exame da descrição detalhada logo a seguir, e dos desenhos anexos nos quais, além das Figuras 1A, 1B, 2 e 3 descritas acima:
Figura 4 - ilustra os princípios da codificação/decodificação da ordenação de uma permutação explorando a invenção;
Figura 5 - ilustra um processamento para a codificação de uma ordenação de uma permutação explorando a invenção de acordo com um primeiro modo de realização, no qual se prevê uma representação fragmentada dos expoentes da decomposição em potências de números primos de termos intervindo neste cálculo;
Figura 6 - ilustra um processamento para a codificação de uma ordenação de uma permutação explorando a invenção de acordo com um segundo modo de realização, no qual se prevê uma representação compacta dos expoentes da decomposição,
Figura 7 - ilustra um processamento para a decodificação de uma ordenação de uma permutação explorando a invenção de acordo com um primeiro modo de realização, no qual se prevê uma representação fragmentada dos expoentes da decomposição, e
Figura 8 - ilustra um processamento para a decodificação de uma ordenação de uma permutação explorando a invenção de acordo com um segundo modo de realização, no qual se prevê uma representação compacta dos expoentes da decomposição, Figura 9 - representa esquematicamente um dispositivo de codificação/decodificação implementando a presente invenção.
Descrição Detalhada da Invenção
Convém insistir em lembrar (em particular em referência às Figuras 4 a 8 logo a seguir) que:
o termo "codificação" visa o cálculo da ordenação t de uma permutação (operação 0P2 das Figuras 1A e 1B), e
- o termo "decodificação" visa à determinação da permutação a partir desta ordenação t (operação 0P3 das Figuras 1A e 1B).
Estas operações serão assim nomeadas em referência à codificação/decodificação de fonte com quantificação vetorial. Lembre-se que estas operações podem ser conduzidas também em codificação/decodificação de canal, em modulação.
Para ilustrar inicialmente o principio da invenção, descreve-se logo a seguir a fatoração em potências de números primos.
A decomposição de um número inteiro positivo K não nulo, em potências de números primos, se escreve assim:
<formula>formula see original document page 29</formula>
sendo um i^ésimo número primo
<formula>formula see original document page 29</formula> etc.).
Nota-se e'K o expoente de Pi na decomposição do número inteiro K e mK o indice do maior fator primo intervindo na decomposição de K de expoente não nulo.
Por exemplo, o número ÃT = 120(seja 5!) se escreve: 120 = 1.2^3. 3^1. 5^1 e mK = 3 aqui visto que o maior fator "5" é de índice 3 Cp3 = 5) . Tem-se então:
<formula>formula see original document page 30</formula>
Na prática, o número "1" sendo o elemento neutro da multiplicação, pode-se suprimir p0 da decomposição, como:
<formula>formula see original document page 30</formula>
Obviamente, K = 0 não pode ser decomposto em potências de fatores primos.
A decomposição em produtos de potências de números primos dos inteiros positivos inferiores ou iguais a 16 é dada na tabela 3a, a decomposição de seus fatoriais na tabela 3b. Esta decomposição envolve 6 números primos (2, 3, 5, 7, 11 e 13) . As colunas sendo indexadas pelo número primo Pi e as linhas por η, o elemento da tabela 3a (respectivamente 3b) na interseção da coluna Pi e da linha η e o expoente
<formula>formula see original document page 30</formula>
(respectivamente e'nl) do número primo Pi na decomposição em produto de potências de números primos do número n(respectivamente n!) .
Para qualquer número inteiro positivo n>1, o número mn, de fatores primos de n\ é tal que:
<formula>formula see original document page 30</formula>
Foi indicado o número mn! (respectivamente o número mn) na última (respectivamente penúltima) coluna da tabela 3b (respectivamente 3a). Nota-se a desigualdade seguinte:
mn≤mnl .
Como mostra a tabela 3a, inúmeros expoentes da decomposição de um número η são nulos. Na última coluna da tabela 3a, notou-se o número m'n de expoentes não nulos na decomposição de η . A ausência de decomposição (e então de expoentes) para n = 0 é indicada na linha n = 0 da tabela 3a e pelo sinal
<table>table see original document page 31</column></row><table>
Tabela 3a: Decomposição em potências de números primos de vim inteiro positivo
<table>table see original document page 31</column></row><table> <table>table see original document page 32</column></row><table>
Tabela 3b: Decomposição em potências de números primos de n! (n<17)
Descreve-se logo a seguir a aplicação de tal decomposição para o cálculo de uma ordenação parcial de um código de permutação, no caso da fórmula de Schalkwijk em um primeiro tempo, depois no caso geral.
Lembre-se que a ordenação parcial, indicada como Idk"k, é dada pela relação (7) a seguir:
<formula>formula see original document page 32</formula>
de sorte que três termos podem ser decompostos em potências de números primos. Trata-se dos termos: <formula>formula see original document page 33</formula>
A partir dos expoentes das decomposições de
<formula>formula see original document page 33</formula>
de Pk e de S1t, calcula-se, por simples adições e
subtrações, os expoentes da decomposição de Idk.
De fato, o expoente
<formula>formula see original document page 33</formula>
de um fator primo pt na decomposição de Idt calcula-se a partir dos três expoentes de Pi nas decomposições dos três termos (n-1-k)!, Sk e Pk. O expoente édk é igual à soma dos expoentes de Pi dos dois primeiros termos (numerador de Idk) da qual se subtrai o expoente de Pi do último termo (denominador de Ik"). Esta observação, uma vez formalizada, se escreve:
<formula>formula see original document page 33</formula>
Foram representadas na Figura 4 as etapas gerais (referidas "G-n" para a nésima etapa geral) podendo intervir em um processamento no sentido da invenção tanto para a codificação como para a decodificação.
Assim, em referência à Figura 4, a partir de um indice corrente k (etapa G-1) e através de algumas etapas intermediárias que serão descritas em detalhes mais adiante, compreender-se-á, sobretudo, que é previsto se referir a tabelas pré-gravadas (indicadas como D1 e D1, na etapa G-2 ilustrada a título de exemplo na Figura 4) para calcular o expoente e^I^d^k global de acordo com a relação (10) acima (etapa G-3), este expoente sendo próprio para a decomposição da ordenação intermediária Id" em potências de fatores primos. Daí se deduz, então, o valor da ordenação intermediária I^d^k"k (etapa G-4), eventualmente conduzindo um ciclo sobre o índice i próprio para os fatores primos. O cálculo desta ordenação intermediária pode então prosseguir por uma atualização da ordenação total t da permutação (etapa G-5):
com uma relação do tipo t = t + I^d"k"k para a codificação da ordenação com decrementação do índice k (etapa G-6),
- ou com uma relação do tipo t = t-I^Dk"k para a decodificação da ordenação com incrementação do índice k (etapa G-6), como se verá mais adiante.
Finalmente, obtém-se a ordenação t da permutação, em codificação na etapa G-7, ou, em decodificação (traços pontilhados da Figura 4), deduz-se das desigualdades da fórmula (8) acima as componentes dk do vetor D na etapa G- 8 e, de lá, aquelas do vetor Y pela relação yk=ad acima.
No caso geral e independentemente da enumeração de Schalkwijk, se uma ordenação parcial t'(t'> 0) de uma permutação estiver sob a forma de um numerador de Nr termos
<formula>formula see original document page 34</formula>
e de um denominador de Dr termos
<formula>formula see original document page 34</formula>
de sorte que:
<formula>formula see original document page 34</formula>
então os expoentes er da decomposição da ordenação parcial são determinados a partir das decomposições intermediárias que são as decomposições dos Nr Vj e do Dt,Pj, o que se escreve: <formula>formula see original document page 35</formula>
Será utilizada também na continuação a decomposição em fatores de números primos para uma formulação em produtos de quocientes de números inteiros de uma ordenação parcial t' .
De maneira geral ainda, se
<formula>formula see original document page 35</formula>
então
<formula>formula see original document page 35</formula>
Voltando ao caso particular da enumeração de Schalkwij k, para calcular então uma ordenação parcial Ik" a partir de sua decomposição, uma vez esta decomposição determinada, pode-se proceder como a seguir.
Guardando o espírito da relação
<formula>formula see original document page 35</formula>
a ordenação parcial
<formula>formula see original document page 35</formula>
é calculada simplesmente multiplicando-se as potências correspondentes:
<formula>formula see original document page 35</formula>
Indica-se aqui que os termos (n-1-k)! e Pk são inteiros estritamente positivos, mas o termo Sk pode ser nulo e então não passível de decomposição. Neste caso, a ordenação parcial Ikk é nula. Prever-se-á, então, um teste sobre o valor do termo Sk(Sk= 0?) para só calcular a ordenação parcial
<formula>formula see original document page 35</formula>
se Sk‡0,como descrito acima (etapa CA-11 da Figura 3) . Mais geralmente, se
<formula>formula see original document page 36</formula>
então
<formula>formula see original document page 36</formula>
se então
<formula>formula see original document page 36</formula>
Entender-se-á, então, que a fatoração em fatores primos dos termos compondo uma ordenação parcial permite suprimir as divisões substituindo-as por multiplicações de potências de fatores primos, com, em particular, simples adições e subtrações dos expoentes associados a estes números primos.
Assim, em relação a presente invenção, prevê-se as etapas seguintes, a partir de um número restrito de decomposições em fatores primos de números inteiros, armazenadas em memória (ditas logo a seguir "decomposições de base"):
- determinação das decomposições em fatores primos de termos (tais que
<formula>formula see original document page 36</formula>
aparecendo na ordenação de uma permutação (ditas logo a seguir "decomposições intermediárias") , em relação a etapa G-2 da Figura 4,
- determinação, a partir destas decomposições intermediárias, da decomposição em fatores primos de uma ordenação parcial t'(I^k"k) de uma permutação, notadamente pelo cálculo dos expoentes intervindo na decomposição desta ordenação parcial (com, por exemplo, uma relação do tipo
<formula>formula see original document page 36</formula>
em relação a etapa G-3 da Figura 4, e - cálculo da ordenação parcial t' (I^d"k"k) a partir de sua decomposição (por exemplo, utilizando uma relação do tipo
<formula>formula see original document page 37</formula>
em relação a etapa G-4 da Figura 4.
Obviamente, as decomposições de base a armazenar são preferencialmente objeto de uma seleção vantajosa. Em uma realização preferida, mas não limitativa, as decomposições de base a armazenar serão escolhidas em função da dimensão máxima dos códigos de permutação considerados (esta dimensão máxima sendo referenciada como n). Assim, as decomposições de base são preferencialmente:
- as decomposições dos fatoriais de um inteiro / (indicado como l!) , o inteiro l sendo tal que 0 ≤ l ≤ n,
- e as decomposições do inteiro / próprio, com desta vez 1 ≤ l ≤ η ,
onde se lembra que η é a dimensão máxima dos códigos de permutação considerados.
Pode-se, então, identificar uma decomposição de base por um número m dando:
- o número m de fatores primos a considerar,
- estes m fatores primos, eles próprios,
- e seus expoentes respectivos.
Exemplos desta implementação serão descritos mais adiante em referência às tabelas 4a a 4d, no campo de uma representação dita "fragmentada" das decomposições. Indica- se que uma representação dita "compacta", descrita em detalhes mais adiante, consiste em armazenar uma simples palavra cujos bits dão todos os expoentes intervindo em uma decomposição.
Podemos definir, então, diferentes jogos de decomposições de base, assim como procedimentos de representação e de armazenamento destas decomposições de base.
Por outro lado, a seleção da qual se determina as decomposições intermediárias, assim como a determinação propriamente dita destas decomposições intermediárias, são objeto de realizações vantajosas que serão descritas mais adiante. A decomposição de uma ordenação parcial e o cálculo de uma ordenação parcial a partir de sua decomposição são também objeto de realizações vantajosas descritas mais adiante.
Descreve-se agora a escolha das decomposições de base a armazenar.
De maneira geral e independentemente da técnica de enumeração de um código de permutação de dimensão η, o cálculo da ordenação de uma permutação utiliza os números inteiros l(0<l<n) e, sobretudo, seus fatoriais l!(0≤l≤n). Em uma realização preferida, as decomposições de base são as decomposições dos fatoriais de l!(0≤l≤n) e de l!(0≤l≤n) onde η é a dimensão máxima dos códigos de permutação considerados, como indicado acima. Prevê-se, então, nesta realização preferida, (2n + 1) decomposições de base.
No entanto, outras realizações são possíveis.
Por exemplo, podem ser apenas previstas (n + 1) decomposições de base, a saber, aquelas de l!(0≤l≤n) e de 0!. Assim, se uma decomposição de l!(0≤l≤n) for necessária ao cálculo de uma ordenação parcial, ela é calculada na etapa de determinação das decomposições intermediárias a partir das l decomposições de base de j!(0≤j≤l) com
<formula>formula see original document page 38</formula>
Inversamente, podemos prever apenas as (n +1) decomposições del!(0≤l≤n). Se uma decomposição de l(l>0) for necessária ao cálculo de uma ordenação parcial, ela é calculada na etapa de determinação das decomposições intermediárias a partir das duas decomposições de base de l! e (l-1)! e a partir da relação:
<formula>formula see original document page 39</formula>
Compreende-se então que a escolha do jogo de decomposições de base pode vantajosamente resultar de um compromisso entre a minimização da memória necessária ao armazenamento das representações destas decomposições de base e a minimização da complexidade da etapa de determinação das decomposições intermediárias.
Descreve-se logo a seguir uma representação das decomposições em relação a invenção.
Como indicado mais acima, uma decomposição (seja ela de ordenação parcial, intermediária ou de base) e definida por um número m dando o número de fatores primos a considerar, estes m fatores primos e seus expoentes respectivos. Propõem-se, logo a seguir, diferentes soluções para representar as decomposições e armazenar os dados para as decomposições de base.
Representação fragmentada dos expoentes
* Representação dos fatoriais l!(0 ≤ l ≤ n)
O número mlx de fatores primos intervindo na decomposição do valor /! cresce com o número /. Uma primeira solução para representar a decomposição de l! (0 ≤ / ≤ n) consiste em armazenar, para cada valor de l(0 ≤ / ≤ n), o número de ml! e os ml! expoentes das potências de Pi (1 ≤ i ≤ m^l!) . Notar-se-á que os mn expoentes de l! são não nulos.
Em uma variante mais vantajosa, o jogo das decomposições de base divide o mesmo número m^n! de fatores primos e armazena-se mM expoentes para cada decomposição de base, os expoentes da decomposição de base de l! de índice superior a mn sendo nulos. Esta solução permite recorrer a uma tabela dos expoentes prevendo um endereçamento regular desta tabela. No entanto, tal realização necessita de um tamanho de memória conseqüentemente. Esta tabela comporta mn!x(n + V) valores e
o expoente ej, é armazenado no endereço (m^n!,l + (i-1)) desta tabela, onde a anotação (x,y) visa ao caso desta tabela na linha χ e na coluna y . Obviamente, será compreendido que outras convenções podem ser consideradas. Assim, no lugar de considerar uma tabela com duas dimensões com m colunas e N linhas que comporta então mxN casos (ou elementos), pode-se considerar uma tabela com uma dimensão tendo mxN elementos, o elemento no endereço (x,.y) da tabela com duas dimensões se encontrando então no endereço mxx + y da tabela com uma dimensão. O expoente e'„ armazenado no endereço (l,(i-1)) da tabela com duas dimensões é então armazenado no endereço (mn,xl + (i-1)) da tabela com uma dimensão. Por exemplo, os expoentes das decomposições dos fatoriais dos números O a 8 podem ser armazenados na tabela com duas dimensões compreendendo 36 elementos, composta de 4 colunas (colunas pt= 2, 3, 5, 7) da tabela 3b e de 9 linhas (linhas n=O, ...8). Estes mesmos expoentes podem ser armazenados em uma tabela monodimensional Dv com 36 elementos, dada logo a seguir (anexo A-11) . O elemento no endereço da primeira tabela sendo igual ao elemento no endereço Dl!,:4xx + y.
Pode ser previsto, em complemento, armazenar os (n + 1) valores de m,, para poder reduzir os cálculos das decomposições intermediárias utilizando a decomposição de base de l!.
* Representação dos inteirosl !(0≤l≤n)
Para representar a decomposição de base l!(0≤l≤n), várias soluções podem também ser previstas. Uma primeira solução consiste em armazenar para cada valor 1 o número m, e os m, expoentes das potências de pi(0≤i≤ml)de l. Em uma variante, pode-se preferir armazenar tantos expoentes que para l!(ml! ou mn!) expoentes. As decomposições de base de l e /! compartilham então o mesmo número m .
Em outra variante, pode-se explorar o fato de que o número rri, de expoentes não nulos da decomposição de l seja pequeno. Por exemplo, aparecia na tabela 3a que este número m', era no máximo de 2 (para /<16). Assim, é possível só armazenar este número e os valores correspondentes pt ou os índices i . No entanto, deve-se prever também armazenar os índices i destes fatores primos de potência não nula uma vez que eles não são mais implicitamente reconhecidos pelo endereço do expoente correspondente na tabela.
* Representação de uma decomposição que não uma decomposição de base
A representação de uma decomposição intermediária depende da representação das decomposições de base a partir das quais ela é determinada. Da mesma forma, a representação de uma decomposição de uma ordenação parcial depende da representação das decomposições intermediárias a partir das quais ela é determinada.
* Armazenamento das decomposições de base
Tipicamente, quatro soluções possíveis de armazenamento podem ser ilustradas a título de exemplo pelas tabelas 4a a 4d logo a seguir para um código de permutação de dimensão 8 (n = 8) onde quatro (w8! = 4) números primos (2, 3, 5 e 7) são considerados. Estes exemplos podem ser aplicados no codificador 3GPP AMR-WB+ (normas [3GPPTS26.273] e [3GPPTS26.304]). Este codificador utiliza uma quantificação vetorial algébrica cujo dicionário é uma união dos códigos de permutação da rede de Gosset RE8 de dimensão 8.
As três primeiras soluções (tabelas 4a-4c) representam e armazenam as decomposições de base de m^l! da mesma maneira. Prevê-se, de fato, um armazenamento de mn e dos mn expoentes das potências de Pi (1 ≤ l <mn) de l!. Elas diferem na representação e no armazenamento das decomposições de base de /. A tabela 4a mostra uma primeira solução visando ao armazenamento de m, e dos m, expoentes das potências de Pi (1 ≤ i ≤ m^l!) de l. A tabela 4b mostra uma segunda solução visando ao armazenamento dos mn expoentes das potências de Pi·(1 ≤ i ≤ m^l!) de l.
<table>table see original document page 42</column></row><table> <table>table see original document page 43</column></row><table>
Tabela 4a: Primeira solução para um armazenamento da decomposição em potências de números primos de l e l! e para um código de permutação de dimensão 8 (l variando de 0 a 8)
<table>table see original document page 43</column></row><table>
Tabela 4b: Segunda solução para o armazenamento da decomposição em potências de números primos de l e l! e para iam código de permutação de dimensão 8 (l variando de 0 a 8)
A tabela 4c logo a seguir mostra uma terceira solução visando ao armazenamento do número m'l, de expoentes não nulos das potências de Pi de l, dos índices i correspondentes, assim como seus expoentes. Na tabela representada, para mais clareza, são os fatores primos Pi que são indicados.
<table>table see original document page 44</column></row><table>
Tabela 4c: Terceira solução para o armazenamento da decomposição em potências de números primos de / e /! e para um código de permutação de dimensão 8 (/ variando de 0 a 8)
Em uma quarta solução (ilustrada pela tabela 4d logo a seguir) , representa-se o jogo das decomposições de base pelo número mn[ e, para cada decomposição de base (/ ou /!), armazena-se mM expoentes. A tabela 4d é extraída das quatro colunas (Pi = 2, 3, 5 e 7) e das 9 linhas (n = 0 a 8) das tabelas 3a e 3b dadas precedentemente.
<table>table see original document page 44</column></row><table> <table>table see original document page 45</column></row><table>
Tabela 4d: Quarta solução para o armazenamento da decomposição em potências de números primos de 2 e 1/ e para um código de permutação de dimensão 8 (1 variando de 0 a 8)
No codificador TDAC que utiliza uma quantificação vetorial estatística de dimensão e resolução variáveis de dimensão máxima 15, seis (m15!= 6) números primos são
considerados: 2, 3, 5, 7, 11 e 13. As 6 colunas (Pi= 2, 3, 5, 7, 11 e 13) e as 16 linhas (n=O a 15) das tabelas 3a e 3b podem então ilustrar o armazenamento do jogo das representações de base para a quarta solução.
Representação compacta dos expoentes
Descreve-se logo a seguir uma outra solução vantajosa minimizando o armazenamento e que consiste em representar de maneira compacta os expoentes de uma decomposição de base em um número limitado de palavras. Nesta variante de representação das decomposições de base, as decomposições intermediárias e aquelas das ordenações parciais são também representadas de forma compacta. Vantajosamente, esta solução minimiza também a complexidade da determinação destas decomposições, como se verá.
* Representação compacta das decomposições
Procura-se determinar, para cada fator primo ρ, , um limite superior β, do valor máximo de seu expoente no numerador das ordenações parciais. Este limite atribui que o número máximo de valores possíveis do expoente de Pi , seja Bi+l . Observando b^i^n, o número inteiro de bits para representar de forma binária o valor (>9,+1), tem-se:
<formula>formula see original document page 46</formula>
onde H denota o inteiro imediatamente superior ou igual a
<formula>formula see original document page 46</formula>
Os expoentes da decomposição em fatores primos de um termo K intervindo em uma ordenação parcial t' podem ser representados de forma compacta por uma palavra eK de
<formula>formula see original document page 46</formula>
esta palavra eK sendo tal que:
<formula>formula see original document page 46</formula>
A notação "«B" representa uma defasagem à esquerda de B bits.
Deve-se notar que, se o número η for grande, pode ser que Bn seja superior ao número de bits B0 utilizados para representar inteiros (16, 32 ou 40 bits). Neste caso, os expoentes da decomposição em fatores primos de um inteiro K intervindo em f são representados sob a forma de M palavras inteiras eK(m), 0 ≤ m < M (com, obviamente, M > 1).
Vantajosamente, as M palavras podem ser formadas da seguinte forma: eK(0) compreende os Z0 primeiros expoentes (expoentes de p1 a pi0) :
<formula>formula see original document page 47</formula>
ek-(l) compreende os expoentes de pi0+1 a pi1:,o+1 a :
<formula>formula see original document page 47</formula>
. Esta última relação pode ser generalizada para qualquer m , até compor a última palavra que compreende o expoente de ρmn!.
Obviamente, outras variantes podem ser previstas. Por exemplo, uma variante consiste em armazenar à parte o expoente de px , e aplicar o processamento acima a partir do expoente de p2 .
* Determinação do limite superior
Os limites Pi podem ser determinados de várias maneiras. Explorando as informações sobre o código de permutação (tamanho q do alfabeto, ponderação w'0≤i<q)r o valor máximo de cada expoente do numerador de uma ordenação parcial pode ser explicitamente determinado. Se vários códigos de permutação (eventualmente de dimensões diferentes) forem utilizados, escolhe-se preferencialmente,
A presente invenção propõe vantajosamente um processamento geral para determinação do limite superior no campo da enumeração de Schalkwijk. 0 processamento não explora nenhuma informação a priori sobre os códigos de permutação utilizados que não a dimensão máxima. Ele explora simplesmente a relação:
<formula>formula see original document page 48</formula>
para escolher então
<formula>formula see original document page 48</formula>
Este processamento bem geral é particularmente bem adaptado quando uma grande variedade de códigos de permutação é utilizada.
A tabela 5a apresenta os limites superiores dos valores máximos dos expoentes nos numeradores de para as dimensões 8 e 15. A tabela 5b apresenta o número de bits b^i^n para representar estes expoentes para as dimensões 8 e 15 assim como sua soma Bn (última coluna). Em dimensão 8, o expoente do fator primo 2 é representado em 3 bits, os expoentes dos outros fatores primos (3, 5 e 7) sendo representados em 2 bits. Em dimensão 15, o expoente do fator primo 2 é representado em 4 bits, o expoente do fator primo 3 em 3 bits, os expoentes dos outros fatores primos (5, 7, 11 e 13) sendo representados em 2 bits.
<table>table see original document page 48</column></row><table>
Tabela 5a: limites superiores dos expoentes dos numeradores para os códigos de permutação de dimensões 8 e 15
<table>table see original document page 48</column></row><table> <table>table see original document page 49</column></row><table>
Tabela 5b: Número de bits para representar os expoentes para os códigos de permutação de dimensões 8 e 15
A tabela 6a (respectivamente 6b) apresenta a representação compacta dos expoentes de l e l! para a dimensão η igual a 8 (respectivamente 15).
<table>table see original document page 49</column></row><table>
Tabela 6a: Representação compacta dos expoentes para os códigos de permutação de dimensão 8
<table>table see original document page 49</column></row><table>
Tabela 6b: Representação compacta dos expoentes para os códigos de permutação de dimensão 15
A titulo de exemplo puramente ilustrativo, procura-se determinar a decomposição do inteiro l—12 com o auxilio da tabela 6b.
Preferencialmente, na tabela 6b, como a dimensão máxima dos códigos é n = 15, o expoente de "2" é representado em 4 bits, aquele de "3" em 3 bits, e os outros fatores primos 5, 7, 11, 13 em 2 bits. Na tabela, na coluna l = 12, lê-se seu expoente compacto e12=18. Apoiando-se na leitura da tabela logo a seguir, a representação binária de 18 ( = 16+2) em B15=15 bits é: 000 0000 0001 0010, seja 00 00 00 00 001 0010 reagrupando os bits associados a um mesmo número primo.
<table>table see original document page 50</column></row><table>
Os 4 bits de ponderações fracas (ponderações z=0 a 3) são o expoente do fator primo 2, seja: 0010=2, o que significa que 2 é o expoente a afetar o número primo 2.
Os 3 bits seguintes (ponderações z = 4 a 6) são o expoente do fator primo 3, seja: 001=1, o que significa que 1 é o expoente a afetar o número primo 3.
Os 2 bits seguintes (ponderações z' = 7 a 8) são o expoente do fator primo 5, seja: 00=0
Os 2 bits seguintes (ponderações z' =9 a 10) são o expoente do fator primo 7, seja: 00=0
Os 2 bits seguintes (ponderações z = 7 a 12) são o expoente do fator primo 11, seja: 00=0
Os 2 bits seguintes (ponderações z' = 13 a 14) são o expoente do fator primo 13, seja: 00=0
O procedimento de extração consiste em mascarar os bits de ponderações fortes para recuperar o expoente do fator primo contido nos bits de ponderação fraca, depois em defasar o expoente compacto do número de bits recuperados para passar ao expoente do fator primo seguinte.
Assim em dimensão 15, existem 6 expoentes a extrair começando pelo expoente de 2.
A representação binária do expoente de 2 corresponde aos 4 bits de ponderação fraca de 18, seja 0 0 1 0 que corresponde a 2. Para recuperá-los, mascaram-se os bits de ponderação forte de 18 com 15 (marcado 18 & 15), o que eqüivale a:
2^4 - 1 = 1 1 1 1
Obtém-se eI2=18 & (2«4 -1) = 2, o que significa que 2 é o expoente a atribuir ao número primo 2.
Depois, defasa-se 18 de 4 bits para a direita, obtém-se: 000 0000 0001 = 1.
A representação binária do expoente de 3 corresponde aos 3 bits de ponderação fraca de 1, seja 0 0 1 (=1). Para recuperá-los, mascaram-se os bits de ponderação forte de 1 com 7 (marcado 1 & 7 e obtendo 23 - 1 = 1 1 1) .
Obtém-se e1/2 = 1 & (2«3- 1) = 1, o que significa que 1 é o expoente a atribuir ao número primo 3.
Depois, defasa-se 1 de 2 bits para a direita, obtém-se em seguida: 0000 0000 = 0 para todos os outros bits de ponderação forte.
Tem-se então que as potências de l=12 são:
- 2 para o número primo 2, e
- 1 para o número primo 3,
seja / = 12 = 2^2 x 3^1
* Limite superior para o denominador
Supõe-se aqui que, para cada fator primo, seu expoente no denominador de uma ordenação parcial f é inferior ou igual a seu expoente no numerador de t% . Tal é o caso se t' for estritamente positivo uma vez que se tem
<formula>formula see original document page 51</formula> Na prática, com a fórmula de Schalkwijk e se q > 1, o valor e'(n-l) é um limite superior do valor máximo β\ do expoente do denominador Pk(Pk ≤ {n-1)! se q > 1).
Basta então verificar a desigualdade e'(n-1)[<2b" , o que já é feito pelo processamento determinando o valor βi exposto acima.
Nos outros casos, poder-se-á buscar explicitamente β'i e calcular b'n graças ao máximo de e
No caso onde q = 1, compreender-se-á que uma única palavra-código de ordenação conhecida (t = 0) intervém no código de permutação e é então inútil a priori efetuar os cálculos de ordenação e as operações inversas correspondentes. No entanto, se não for desejado processar 15 à parte este caso particular, pode ser sempre previsto calcular o valor b'n pelo máximo de Bi e e^i^n] . A tabela 7 logo a seguir ilustra este caso para n=16.
<table>table see original document page 52</column></row><table>
Tabela 7: Cálculo do limite superior do numerador β^i e de (l ≤ i ≤ 6) para os códigos de permutação de dimensão 16 Descreve-se brevemente agora as capacidades de memórias requeridas para o armazenamento das decomposições de base.
Independentemente da solução escolhida para a representação das decomposições de base, o armazenamento das decomposições de base se efetua em tabelas e recorre-se então a um endereçamento destas tabelas quando das operações de codificação e de decodificação da ordenação. Ainda que a decomposição de 0 não seja possível (e, por outro lado, não utilizada), pode ser preferível armazenar expoentes "fictícios" para a decomposição de 0 (por exemplo 0 ou 1) , e isso, para simplificar o cálculo de endereço. A tabela 8 logo a seguir resume o tamanho de memória necessário para o armazenamento dos dados relativos às decomposições de base para as cinco soluções apresentadas para estes dois casos (armazenamento ou não da decomposição fictícia de 0).
<table>table see original document page 53</column></row><table>
Tabela 8: Memória necessária para o armazenamento das decomposições de base
Na quinta solução, levou-se em conta o armazenamento (+mnl) dos números de bits b'n . No entanto, na prática, mais que lê-los em uma memória, estes serão "cabeados rigidamente" (seu valor sendo fixo em um programa de cálculo sem ser declarado como variável) , como se verá nos modos de realização mais à frente. Pareceu então inútil armazená-los na prática.
A tabela 9 apresenta a memória necessária para o armazenamento dos dados relativos aos expoentes da decomposição destas cinco soluções para «max=8 e 15 (com armazenamento fictício de 0).
<table>table see original document page 54</column></row><table>
Tabela 9: Memória requerida para o armazenamento das decomposições de base para os códigos de permutação de dimensões 8 e 15
Descreve-se agora o armazenamento das potências de fatores primos.
Fora as decomposições de base, a presente invenção utiliza as potências dos fatores primos para calcular a ordenação parcial a partir de sua decomposição. Pode-se, a partir de uma tabela destes fatores primos, calcular suas potências em tempo real ("em linha"). Preferencialmente, as potências dos números primos que não 2 são pré-calculadas e armazenadas e apenas as potências de 2 são calculadas em tempo real. A tabela 10 a logo a seguir apresenta as potências de 3, 5 e 7 necessárias para um código de permutação de dimensão 8 (como utilizado no codificador AMR-WB+). A tabela IOb apresenta as potências de 3, 5, 7, 11 e 13 necessárias para os códigos de permutação de dimensão máxima 15 (como aqueles utilizados no codificador TDAC).
<table>table see original document page 55</column></row><table>
Tabela 10a: Potências dos fatores primos para os códigos de permutação de dimensão 8
<table>table see original document page 55</column></row><table>
Tabela 10b: Potências dos fatores primos para os códigos de permutação de dimensão 15. A variável Npfp designa aqui o número de potências de fatores primos a armazenar.
Aqui, ainda, poder-se-á apenas armazenar o número necessário de potências para cada fator primo. Na variante, se for preferido só dispor de uma única tabela de potências endereçável regularmente, pode ser previsto armazenar, para cada fator primo, tantos valores que o número de potências de p2 necessários (p2=3). Para as potências não utilizadas, pode-se, obviamente, utilizar um armazenamento de valores fictícios tais como 1 ou 0. Descreve-se agora o cálculo da ordenação de uma permutação para realizar uma codificação explorando a invenção.
Existem várias variantes de acordo com o jogo das decomposições de base escolhido e sua representação. Por preocupação de concisão, a exposição das realizações possíveis logo a seguir é limitada ao caso do modo de realização preferido para o jogo das decomposições de base, com decomposições dos fatoriais de l! e de l.
Logo a seguir, a solução de representação fragmentada dos expoentes com mnl expoentes por decomposição de base, que é o caso mais geral, é primeiro exposta. Variantes de representação fragmentada dos expoentes são, em seguida, descritas. Enfim, a solução de representação compacta dos expoentes das decomposições de base é exposta, assim como algumas de suas variantes. Parecerá, então, que a invenção se aplica perfeitamente a um processamento de codificação da ordenação de uma permutação.
O algoritmo de Schalkwijk é retomado logo a seguir, como exemplo de processamento de enumeração.
Representação fragmentada dos expoentes da decomposição
Seja η a dimensão máxima dos códigos de permutação utilizados, e mn! o número de fatores primos intervindo na decomposição da grandeza n!.
Descreve-se logo a seguir um primeiro modo de realização de uma codificação utilizando uma representação fragmentada dos expoentes da decomposição.
Codificação de acordo com um primeiro modo de realização Aqui, os expoentes das decomposições de base de / e l! são armazenados preferencialmente de acordo com a "quarta" solução da tabela 4d acima, com armazenamento fictício para l=0 em duas tabelas monodimensionais indicadas respectivamente como Dl e Dl! tendo mn,x(n +1) elementos. Como mencionado anteriormente, poderia se considerar também tabelas bidimensionais tendo mnl colunas e (n + 1) linhas. Os expoentes de l (respectivamente /!) sendo armazenados regularmente (cada um em mn, valores), as operações de leitura dos expoentes de uma decomposição de base necessitam de um cálculo de endereço na tabela D1 (respectivamente D1,). Para ler os expoentes da decomposição de l! (respectivamente l), deve-se apontar para o endereço (Ixmnl) da tabela Dn (respectivamente D1), e visar assim o endereço do expoente ej, (respectivamente e)) , o expoente ef, (respectivamente ef ) sendo no endereço seguinte (lxmn!+l) e mais geralmente o expoente e'n (respectivamente e^2l! ) sendo no endereço (l x m^n,+i-1). Como mencionado acima, em tabelas bidimensionais, o expoente e'n (ou e^i^l ) está no endereço ((l;(i-1)) (coluna (i-1) e linha l).
Deve-se notar que se não for previsto armazenamento fictício para 1=0, o cálculo de endereço na tabela D1 das η decomposições de base de 1(1 > 0) é: (l-1) x mn!.
Inicialização
• Inicializa-se em zero os mn, expoentes da decomposição intermediária de Pk (armazenados em uma tabela P tendo mnl elementos que é preferencialmente atualizada em cada posição, como se verá em referência à etapa C-3 logo a seguir). Assim, as instruções são as seguintes:
<formula>formula see original document page 58</formula>
Inicializa-se também em zero a ordenação t e as q ponderações W^d^k (armazenados em uma tabela w tendo q elementos que será atualizada em cada posição (etapa C-2 logo a seguir)). As instruções são as seguintes:
<formula>formula see original document page 58</formula>
Iterações no índice k
Refere-se à Figura 5 para prosseguir a iteração nas η posições (com um ciclo na variável k) . A letra "C" nas notações das etapas C-n da Figura 5 designa a palavra "codificação".
Na etapa C-1, lê-se a variável dk . A etapa C-2
consiste em uma atualização do elemento dk da tabela
<formula>formula see original document page 58</formula>
A etapa C-3 é uma atualização dos expoentes da decomposição de Pk (tabela P), com, em particular:
- uma leitura dos mnl expoentes
<formula>formula see original document page 58</formula>
da decomposição de base
<formula>formula see original document page 58</formula>
na tabela D1 a partir do endereço fnnlxw[dk] (etapa C-31) , e
uma atualização:
<formula>formula see original document page 58</formula>
para 1≤i≤mn! (etapa C-32).
Assim, para a implementação da etapa C-31, o primeiro expoente da decomposição de base ~w[dk] na tabela
D1, marcado
<formula>formula see original document page 58</formula>
está no endereço mn!x w[dk], o segundo, marcado
<formula>formula see original document page 59</formula>
no endereço
<formula>formula see original document page 59</formula>
e assim em seguida.
Mais geralmente, o expoente e'w[dt) estará no endereço
<formula>formula see original document page 59</formula>
Paralelamente, na etapa C-4, calcula-se Sk a
<formula>formula see original document page 59</formula>
partir da relação habitual
<formula>formula see original document page 59</formula>
A etapa C-5 é um teste sobre o valor de Sk. Se S^k é nulo (seta 0), o que implica que a ordenação parcial I^dk"K é nula (fórmula (7) anteriormente) e que a ordenação t não é modificada, o processamento prossegue pela etapa C-11 mais adiante. Senão (seta N com Sk Φ 0), o processamento prossegue pela etapa C-6, na qual lê-se os mnX expoentes e'i^S^k da decomposição de base Sk na tabela D1 no endereço mn!xSk .
Paralelamente, a etapa C-7 consiste em ler os mn] expoentes e(n-l-k)! da decomposição de base (n-1-k)! na tabela D1, no endereço mn, x(n-1-k). Será relevado que a etapa C-7 é efetuada se a soma Sk é não nula (saida N do teste C-5) de maneira a evitar a leitura inútil na tabela Dn se, de todas as formas, a ordenação parcial I^d^k"K for nula.
Na etapa C-8, os resultados das diferentes leituras das tabelas podem ser reagrupados para calcular primeiro os mn, expoentes da decomposição da ordenação parcial Ik" , de acordo com a relação:
<formula>formula see original document page 59</formula>
para
<formula>formula see original document page 59</formula>
Enfim, na etapa C-9, calcula-se a própria ordenação parcial I^d^k"k pela relação: <formula>formula see original document page 60</formula>
Lembre-se que o termo w[dk] é uma ponderação necessariamente inferior ou igual à dimensão máxima η do código de permutação considerado. Da mesma forma, a soma Sk de tais ponderações permanece inferior à dimensão máxima η e ele assim permanece, obviamente, para (n-1-k).
As decomposições de
<formula>formula see original document page 60</formula>
são bem repertoriadas nas tabelas de decomposições dos inteiros ou dos fatoriais de inteiros variando até a dimensão máxima η, tais como a tabela 4d. A partir da decomposição w[dk] repertoriada em uma tabela e da decomposição de Pk-1 determinada no ciclo precedente (&-1) e guardada em memória, a decomposição de Pk é determinada.
A titulo de exemplo puramente ilustrativo das etapas de cálculo de ordenação parcial da Figura 5, considera-se um código de permutação de dimensão n=8 e <7=4. Neste exemplo, os expoentes são armazenados em uma tabela bidimensional com quatro colunas e nove linhas, comportando então 36 elementos. Pode-se, então, extrair da tabela 4d dada acima onde se tem Pi = 2, 3, 5, 7 em colunas e l=0, . .., 8 em linhas.
Neste exemplo, supõe-se que, em uma posição precedente k=3, a tabela das ponderações w é {1, 1, 0, 3} e então P3= 1! 1 0! 3! = 6. A tabela P dos expoentes da decomposição de P3 (= 21x31x5°x7°) é então {1, 1, 0, 0}.
Na posição k=2, para a etapa C-1, supõe-se então que d2= 2 . Neste exemplo, na etapa C-2, atualiza-se o elemento w[2] incrementando por 1 (w[2] = 0 + 1 = 1) .
Na etapa C-31, lê-se os quatro expoentes da decomposição de 1 (= w[2]) , seja 0, 0, 0, 0 (ver na tabela 4d, 6a a 9a colunas e 3a linha l=1).
Depois (etapa C-32), atualiza-se a tabela P, obtém-se então P={1, 1, 0, 0}.
Na etapa C-4, calcula-se Sk: Sk= w[o]+w[l] = 1 + 1 = 2 . Sk não é nulo (teste C-5).
o Lê-se (etapa C-6) os quatro expoentes da decomposição de Sk (referindo-se sempre à tabela 4d, 6a a 9a colunas, mas 4a linha 1=2): para ρλ= 2 (6a coluna). O expoente é 1, e para p,= 3,5,7 (7a a 9a colunas), o expoente é nulo.
o Lê-se (etapa C-7), os quatro expoentes da decomposição de 5! (correspondendo a (h-1-&)!) referindo-se sempre à tabela 4d, mas esta vez às 2a a 5a colunas e 7a linha 1 = 5. Para Px=I (2a coluna), o expoente é 3. Para p2=3 (3a coluna), o expoente é 1 e para P7= 5 (4a coluna), o expoente também é 1. Em revanche, para p^= 7 (5a coluna), o expoente é nulo.
o Na etapa C-8, os quatro expoentes da decomposição da ordenação parcial Ik* são calculados: o para px = 2,
<formula>formula see original document page 61</formula>
o para p2=
<formula>formula see original document page 61</formula>
o para p3=
<formula>formula see original document page 61</formula>
o para ρ,=
<formula>formula see original document page 61</formula> Na etapa C-9, a ordenação parcial
<formula>formula see original document page 62</formula>
é calculada a partir dos expoentes de sua decomposição: 2^3 x 3^0x5^1x7^0=40.
Em referência novamente à Figura 5, a própria ordenação t global da permutação é determinada pela atualização (com adição da ordenação parcial Idk encontrada na etapa C-9) de acordo com a relação
<formula>formula see original document page 62</formula>
na etapa C-10.
A etapa C-Il visa, em seguida, à decrementação da variável k (k = k -1) e a etapa C-12 é um teste sobre o valor de k para prosseguir ou não o processamento. Assim, se k≥0 (seta O na saída do teste C-12), reitera-se as etapas do processamento a partir da primeira etapa C-1, com um valor de k decrementado de uma unidade. Senão (seta N na saída do teste C-12), o processamento é terminado na etapa C-13 final ("FIM").
Assim, compreender-se-á que a etapa C-9 acima calcula uma ordenação parcial a partir de sua decomposição determinada na etapa C-8, ela própria determinada a partir de três decomposições intermediárias:
- (n-1k)!
- Sk, e
" Pk-
A determinação de duas entre elas, e Sk, efetuada nas etapas C-6 e C-Ί, consiste em uma simples leitura nas respectivas tabelas das decomposições de base D1 e D1, . A determinação da terceira decomposição intermediária (aquela de Pk) pode também ser efetuada simplesmente a partir das q decomposições de base de w[d] lidas na tabela D1, de acordo com uma relação do tipo
<formula>formula see original document page 63</formula>
Variantes imediatas
A etapa C-3 apresenta uma variante mais vantajosa de determinação desta decomposição intermediária. A decomposição intermediária de Pk pode, na verdade, ser determinada a partir de uma decomposição de base lida na tabela D1 e de uma outra decomposição intermediária (aquela de Pm ) calculada para uma outra ordenação parcial (k=0), por exemplo, a ordenação parcial w^d^0 precedente na iteração de k. Mais geralmente, em uma variante da invenção, uma decomposição intermediária pode também se deduzir de pelo menos uma decomposição intermediária precedentemente determinada para pelo menos uma outra ordenação parcial.
Logo acima, efetuou-se o cálculo da ordenação por um ciclo da última posição (k = n-1) à primeira posição (k = 0). No entanto, a invenção se aplica também, obviamente, a um ciclo da primeira à última posição. Basta mudar a fase de inicialização e adaptar as etapas C-2 e C-3 e sua ordem. Para este fim, a tabela das ponderações w pode ser inicializada com as q ponderações W^. Depois, para d variando de 0 a q-l, lê-se os mn, expoentes da decomposição de na tabela Dn, para calcular por adição cumulativa os mM valores da tabela da decomposição intermediária (expoentes da decomposição de P0).
A etapa C-3 intervém então após a etapa C-10 e antes da etapa C-2. A decomposição intermediária de P é atualizada por subtração em P[i] do expoente e'w[dt) c^a decomposição de base de
<formula>formula see original document page 64</formula>
para
<formula>formula see original document page 64</formula>
Em seguida, a etapa C-2 pode ser conduzida decrementando de 1 o valor de. A etapa C-11 pode visar à incrementação da variável k de 1 e a etapa C-12 testa simplesmente se k=n.
Indica-se brevemente que, para os códigos de permutação de dimensão η variável, mais que efetuar m^max operações, pode ser preferível ler mn< na inicialização para só efetuar as operações mn! vezes.
Variantes gerais do primeiro modo de realização
Mais geralmente, a implementação representada na Figura 5 para uma codificação em relação a invenção admite numerosas variantes.
Assim, em uma primeira variante, cada decomposição de base (de 1 ou l!) contém também o número mn. A leitura do número mn(0 ≤ l ≤ n) apresenta vantagens. De fato, as etapas C-3 e C-6 a C-10 não são mais efetuadas mn! vezes cada uma, mas somente:
o mw[dk] vezes para a etapa C-3,
o mSk vezes para a etapa C-6 e para a adição
e{n-l-k)!
<formula>formula see original document page 64</formula>
etapa C-8, e
o
<formula>formula see original document page 64</formula>
vezes para as etapas C-7 e C-9 e para
a subtração
<formula>formula see original document page 64</formula>
da etapa C-8.
Se, adicionalmente, foram também armazenados os valores m,, só há que se efetuar:
o mw[dk] vezes a etapa C-3, e
o mSk vezes a etapa C-6 e a adição da etapa C-8. Em uma outra variante da codificação, utiliza-se adicionalmente o armazenamento dos expoentes da decomposição de base l de acordo com a terceira solução (tabela 4c acima) , a etapa C-3 pode ser efetuada para ] valores. Da mesma forma, a etapa C-6 é efetuada para m'Sk valores. Na etapa C-8, no lugar de prever m^^y adições e m(n-l-k)! subtrações, o número de subtrações a efetuar permanece m{n_x_ky , mas somente tn'Sk adições são necessárias. Em particular:
<formula>formula see original document page 65</formula>
para
<formula>formula see original document page 65</formula>
<formula>formula see original document page 65</formula> para
<formula>formula see original document page 65</formula>
Em uma terceira variante, no lugar de decompor uma ordenação parcial em três termos (dois no numerador e um no denominador), decompõe-se em dois termos dos quais um é um quociente. Assim, a ordenação parcial Idk" é decomposta em dois termos:
- a soma Sk
- e um quociente <formula>formula see original document page 65</formula>
Este quociente pode ser atualizado pela relação seguinte:
<formula>formula see original document page 65</formula>
Assim, mais que determinar a decomposição de Rk a partir das q + 1 decomposições de base (aquelas de (h-1-k)! e das q lidas na tabela D11), uma decomposição intermediária de Rk e é determinado a partir da decomposição intermediária de Rk+l e das decomposições de base de (n — l — k) e de w[dk] (essas duas decomposições sendo lidas na tabela D,), o que se escreve:
<formula>formula see original document page 66</formula> ·
Em comparação com as variantes precedentes, no lugar de determinar e armazenar a decomposição intermediária do denominador de Ikk (tabela P), determina e depois armazena a decomposição intermediária do quociente Rk (prevendo para este fim uma tabela R). Substitui-se a inicialização em zero da tabela P por aquela da tabela R dos expoentes a reportar. A etapa C-3 torna-se uma etapa simples de atualização da tabela R (com uma leitura dos expoentes das decomposições de base de (n-l-k) e w[dk])), o que se escreve:
<formula>formula see original document page 66</formula>
De acordo com a opção de armazenamento, esta atualização pode ser feita com mM adições e subtrações ou adições (respectivamente mW[dk]! subtrações), ou ainda -k) adições (respectivamente mw[d„] subtrações) , ou somente para os expoentes não nulos de w[dk] e (n-l-k):m(n-l-k) adições e
<formula>formula see original document page 66</formula>
subtrações. A etapa C-8 só comporta adições do tipo:
<formula>formula see original document page 66</formula> De acordo com a opção de armazenamento, contam-se então mn! adições ou mSk! adições, ou ainda mSt adições, ou somente para os expoentes não nulos de Sk:m'St adições.
Notar-se-á que esta relação Rk não é necessariamente inteira, o que significa que os expoentes R[i] podem ser negativos. Nesta variante, a decomposição dos fatoriais na codificação (então a tabela Dv ) não é mais útil, de sorte que um simples jogo de (n + 1) decomposições de base dos inteiros l(l ≤ n) pode ser utilizado armazenando apenas a tabela D1.
Representação compacta dos expoentes da decomposição
Descreve-se agora um segundo modo de realização de uma codificação, baseado em uma representação compacta dos expoentes da decomposição.
Os expoentes das decomposições de base são representados de forma compacta e não mais sob a forma fragmentada como descrito acima em referência ao primeiro modo de realização. Por fins de concisão, só se expõe o caso onde a representação compacta dos expoentes recai sobre uma única palavra. Estas palavras são então armazenadas como descrito acima, com armazenamento de uma palavra fictícia para l = 0 em duas tabelas indicadas respectivamente como D'1 e D',, com (" + 1) elementos. O cálculo do endereço nestas duas tabelas de uma palavra contendo os expoentes de uma decomposição de base é direto uma vez que, para ler a palavra da decomposição de l! (respectivamente l), basta apontar para o endereço l da tabela D'l! (respectivamente D'l) . Notar-se-á que sem armazenamento de uma palavra fictícia para 1=0, a palavra correspondendo a uma decomposição de base l (com l>0) está no endereço (l-1) na tabela D'l .
Codificação de acordo com um segundo modo de realização
Inicialização
• Inicializa-se em zero a palavra ep contendo a representação compacta dos mn] expoentes da decomposição intermediária de Pk:ep=0.
A palavra eP será atualizada em cada posição (etapa CC-3 logo a seguir).
• Como precedentemente, inicializa-se também no valor zero a ordenação t e as q ponderações wf armazenadas em uma tabela w tendo q elementos que será atualizada em cada posição (etapa CC-2 logo a seguir). As instruções correspondentes são:
o t = 0
o w[i]=0, 0 ≤ i < q
o k = n-1
Iterações nas η posições (ciclo em k)
Refere-se agora à Figura 6 para prosseguir as etapas principais da codificação em um segundo modo de realização. As letras "CC" nas notações das etapas CC-n da Figura 6 designam a palavra "codificação" com uma "representação compacta".
Na etapa CC-1, lê-se a variável dk . A etapa CC-2 consiste em uma atualização da variável
<formula>formula see original document page 68</formula> A etapa CC-3 é uma atualização da palavra ep com, em particular:
- na etapa CC-31, a leitura da palavra ew[dt] contendo a representação compacta dos expoentes da decomposição de w[dJ na tabela D\ depois,
- na etapa CC-32, a atualização propriamente dita da palavra ep
<formula>formula see original document page 69</formula>
Paralelamente, na etapa CC-4, calcula-se a soma
<formula>formula see original document page 69</formula>
A etapa seguinte CC-5 é um teste sobre o valor de Sk. Se a soma Sk é nula (seta Ν) , decrementa-se diretamente o índice k . Senão (seta O na saída do teste CC-5), o processamento prossegue pela leitura da palavra eSk contendo a representação compacta dos expoentes da decomposição de Sk na tabela D\ na etapa CC-6.
Paralelamente (e vantajosamente de acordo com o resultado do teste CC-5), lê-se a palavra e{n_x_k)[ contendo a representação compacta dos expoentes de e(η-1-k)! na tabela D'l! na etapa CC-7.
Na etapa CC-8, os resultados provenientes das diferentes etapas CC-3, CC-6, CC-7 são reagrupados para calcular a palavra ejdk contendo a representação compacta da
decomposição da ordenação parcial
<formula>formula see original document page 69</formula>
por duas operações simples (preferencialmente uma adição seguida de uma subtração):
<formula>formula see original document page 69</formula>
então
<formula>formula see original document page 69</formula> A etapa CC-9 visa à extração dos mn! expoentes e'ldk da decomposição da ordenação parcial e contidos na palavra ejdk , por defasagem apropriada dos bits da palavra como descrito precedentemente. Para este fim, é previsto um ciclo sobre um índice i variando de 1 a mM (inicialização CC-91 de i a 1, teste CC-93 sobre um valor de i e incrementação CC-94 desde que i não atinja o valor de mn!).
Aplica-se, então, sobre cada ciclo de i instruções CC-92 do tipo:
<formula>formula see original document page 70</formula>
Lembre-se que as notações "<<ô" e "»b" designam respectivamente uma defasagem à esquerda e uma defasagem à direita de b bits. Por outro lado, a notação "&" designa o operador lógico bit a bit "ET". A instrução i'l) consiste em recuperar os b'n bits de ponderação fraca e']dk. Na
prática, as máscaras correspondendo à instrução são cabeadas de forma rígida.
Em outros termos, aplica-se no início (para o índice de ciclo i igual a 1) uma máscara ((l«ò^)-l) dos bits de ponderação forte de maneira a só recuperar primeiro os b\ bits de ponderação fraca de ejdk dando o expoente e]/dk associado ao primeiro fator primo px.
Depois:
- defasa-se os bits de e.it de b\ "à direita" para recuperar os bits de ponderação mais forte dando os expoentes associados ao fator primo seguinte p2 (máscara
<formula>formula see original document page 70</formula>
dos bits de ponderação forte, - extrai-se então o expoente
<formula>formula see original document page 71</formula>
- depois, aplica-se uma defasagem à direita de
<formula>formula see original document page 71</formula>
bits, e assim por diante até i=mn!
A etapa seguinte CC-10 consiste em calcular a ordenação parcial
<formula>formula see original document page 71</formula>
como a seguir:
<formula>formula see original document page 71</formula>
Depois, adiciona-se a ordenação parcial
<formula>formula see original document page 71</formula>
à ordenação total
<formula>formula see original document page 71</formula>
na etapa CC-11).
O valor do índice k é decrementado na etapa seguinte CC-12 (k=k-l) e, antes de recomeçar as etapas CC- 4, CC-1, CC-7 e seguintes com este valor decrementado, verifica-se no teste CC-13 se o valor de k não atingiu -1(k<0), caso este em que o processamento é terminado
(etapa CC-14).
Assim, independentemente da representação das decomposições, a presente invenção permite calcular eficazmente ordenações parciais. A etapa CC-10 visa o cálculo de uma ordenação parcial a partir de sua decomposição determinada nas etapas precedentes CC-8 e CC- 9. Três decomposições intermediárias (termos (n-l-k)!, Sk e Pk) são utilizadas. A determinação de duas dentre elas (n-1-k)! e Sk) efetuadas nas etapas CC-6 e CC-7 consiste em uma simples leitura de sua representação compacta nas tabelas D'l, e D'l . A determinação da terceira decomposição intermediária (Pk) efetuada na etapa CC-3 necessita também de uma leitura da tabela D\ seguida de uma atualização da representação compacta desta decomposição intermediária por adição da representação compacta da decomposição de base que foi lida.
Como indicado precedentemente em referência ao primeiro modo de realização, o armazenamento dos valores ml! (0 ≤ l ≤ ή) permite reduzir a complexidade das etapas CC-9 e CC-10. O ciclo de extração dos expoentes da decomposição de uma ordenação parcial
<formula>formula see original document page 72</formula>
é efetuado m(n-1-k)! vezes no lugar de mn, vezes. Da mesma forma, a etapa CC-10 não comporta mais mny multiplicações, mas multiplicações.
Descreve-se agora a decodificação da ordenação de uma permutação explorando a invenção.
Existem, aqui ainda, diversas variantes de acordo com a solução de representação das decomposições de base (fragmentada ou compacta). Descreve-se logo a seguir um primeiro modo de realização da decodificação, homólogo do primeiro modo de realização descrito acima para a codificação utilizando a representação fragmentada das decomposições e seu armazenamento de acordo com a quarta solução relativa à tabela 4d dada mais acima. Restará aparente que a invenção se aplica perfeitamente a uma decodificação da ordenação de uma permutação tomando como exemplo o algoritmo de Schalkwijk.
Decodificação de acordo com um primeiro modo de realização
A decodificação utilizando uma representação fragmentada dos expoentes da decomposição começa preferencialmente por uma inicialização dos dados como se segue.
Inicialização • Inicializa-se a tabela dos valores w com as q ponderações W0 (w é atualizado para fim de ciclo em cada posição da etapa D-19 que será descrita logo a seguir). Uma instrução apropriada pode ser do tipo:
<formula>formula see original document page 73</formula>
• Calcula-se os mnl expoentes da decomposição do termo P0 (armazenados em uma tabela P tendo mn[ elementos também atualizados em cada posição para fim de ciclo em cada posição na etapa D-18 descrita logo a seguir) . As instruções apropriadas podem ser do tipo:
<formula>formula see original document page 73</formula>
o Ciclo de d = 0 a q-1
■ leitura dos mn, expoentes é^ da
decomposição de Na tabela Dl!
■ depois
<formula>formula see original document page 73</formula>
com 1≤i≤ mn!.
• Inicializa-se enfim k = 0
Refere-se agora à Figura 7 para prosseguir as etapas principais da decodificação de acordo com o primeiro modo de realização. A letra "D" nas notações das etapas D-n da Figura 7 designa a palavra "decodificação".
Iteração nas η posições (ciclo no índice k)
A primeira etapa D-I consiste em uma leitura dos mn, expoentes e[n-1-k)! da decomposição de [n-1-k)! na tabela Dl!.
A etapa seguinte D-2 fixa os valores dk = 0 e
<formula>formula see original document page 73</formula>
Procede-se em seguida à busca do primeiro valor dk do alfabeto tal que w[dk]‡0 . Prevê-se para este fim um teste D-3 verificando se w[dk] = 0, caso em que (seta 0) se incrementa o valor de dk(dk=dk+1) e se reitera o teste D-3 até encontrar um valor w[d k] não nulo. Se tal valor for encontrado (seta N para w[dk]‡0) , a etapa seguinte é um teste D-5 sobre o valor da ordenação t . Se a ordenação for nula (seta 0 na saida do teste D-5), a implementação das etapas seguintes é inútil até a atualização dos expoentes de Pk (etapa D-18) . Se a ordenação não for nula (seta N na saida do teste D-5), o processamento prossegue pelas etapas seguintes D-6 e D-7 nas quais se fixa respectivamente Sk= 0 e um valor intermediário
<formula>formula see original document page 74</formula>
A etapa seguinte D-8 é um cálculo de atualização da soma Sk =Sk + w[dk].
Ela é seguida pela leitura da tabela D1 (etapa D- 9) dos mn, expoentes e's da decomposição da soma encontrada Sk.
A etapa D-10 visa o cálculo dos mn! expoentes
<formula>formula see original document page 74</formula>
da decomposição da ordenação parcial, a partir da relação:
<formula>formula see original document page 74</formula>
com l≤l≤mn! . Os expoentes P[i], inicializados como descrito acima, são atualizados na etapa D-18 que será descrita mais adiante, no fim do ciclo corrente e para um ciclo seguinte.
A etapa D-Il visa ao cálculo da ordenação parcial:
<formula>formula see original document page 74</formula>
As três etapas seguintes visam a um teste sobre o valor da ordenação total t, comparando-o ao valor da ordenação parcial. Para isto, na etapa D-12, incrementa-se o valor de dk(dk=dk+1) e o teste D-13 é o seguinte:
<formula>formula see original document page 75</formula>
Se a desigualdade for verificada (seta O), reitera-se as etapas D-7 a D-13 com o novo valor de dk incrementado. Senão (seta Ν) , o processamento prossegue para a etapa D-14 de decrementação do valor de dk(dk-dk-1) para retornar ao valor de dk antes da etapa D-12. Para este valor de dk , a ordenação parcial Idk obtém o valor intermediário Ik precitado (etapa D- 15: Kk=Ik)- Em seguida, atualiza-se a ordenação t, a qual se torna t = t-Ik" (etapa D-16), e atualiza-se os expoentes de Pk (na tabela P) graças à leitura dos mnX expoentes e'w[di] da decomposição de w[dk] na tabela D1 (etapa D-17), seguida da atualização propriamente dita dos expoentes P[í] = P[i]- elw[dt] para l<i<mnl (etapa D-18) . Decrementa-se, em seguida, o valor de w[dk] ( =: etapa D-19) e incrementa-se aquela do índice k {k = k +1: etapa D-20) para preparar o ciclo seguinte.
Antes de realizar novo ciclo na primeira etapa D- 1, verifica-se que os η componentes não foram todos processados. Para isto, prevê-se o teste D-21 sobre o valor de k, comparando-o com n(k<n). Desde que o índice k não tenha atingido o valor η (seta O na saída do teste D-21), recomeça-se o processamento na etapa D-I para um valor seguinte de k. Senão (seta N na saída do teste D-21), o processamento é terminado na etapa de fim D-22.
Compreender-se-á que a etapa D-11 visa o cálculo de uma ordenação parcial utilizando sua decomposição determinada na etapa D-IO a partir de três decomposições intermediárias dos respectivos termos (n-1-k)!, Sk e Pk. As determinações de duas dentre elas ((n-1-k)! e Sk) efetuadas nas etapas D-I e D-9 consistem em uma simples leitura nas tabelas respectivas Dn e D1 . A determinação da terceira decomposição intermediária (Pk) efetuada na etapa D-18 se efetua também por uma leitura da tabela D1 (etapa D-17) seguida de uma atualização por expoentes desta decomposição intermediária por subtração dos expoentes da decomposição de base lida (etapa D-18). A inicialização descrita acima desta decomposição intermediária necessita de q leituras da tabela Dv seguida de uma atualização por expoentes desta decomposição intermediária por adição dos expoentes das q decomposições de base lidas.
Como para a codificação descrita acima, o processamento da Figura 7 admite variantes que permitem, no caso em questão, reduzir a complexidade de certas etapas.
Uma variante consistindo em utilizar os expoentes da relação Rk (como descrito precedentemente) é particularmente interessante. De fato, no processamento de decodificação descrito acima em referência à Figura 7, calcula-se para uma posição dada k, os expoentes e'jit para
vários valores de d . Para cada valor de d testado, as outras variantes necessitam para cada expoente de uma subtração e uma adição
<formula>formula see original document page 76</formula>
No entanto, a variante utilizando os expoentes da relação Rk só requer uma adição
<formula>formula see original document page 76</formula>
uma vez que somente a soma Sk e seus expoentes e'Sk variam em função de d para uma posição k dada.
Decodificação de acordo com um segundo modo de realização Descreve-se logo a seguir, em referência agora à Figura 8, um exemplo de realização de uma decodificação utilizando a representação compacta das decomposições.
Previamente, prevê-se uma inicialização dos dados como a seguir.
Inicialização
• Refere-se primeiro à tabela w tendo q elementos para determinar os termos
<formula>formula see original document page 77</formula>
para 0 ≤ i < q
• Calcula-se a palavra ep contendo a representação compacta dos mn] expoentes da decomposição de Pk. Para isto:
■ fixa-se eP=0
■ e prevê-se um ciclo de d = 0 a q — 1:
o com leitura da palavra
<formula>formula see original document page 77</formula>
contendo a representação compacta dos mnl expoentes de
<formula>formula see original document page 77</formula>
na tabela D'l!.
o e atualização de
<formula>formula see original document page 77</formula>
• fixa-se, em seguida, k=0.
Iteração nas η posições (ciclo em k)
As letras "DC" nas notações das etapas DC-n da Figura 8 designam a palavra "decodificação" com uma "representação compacta".
A etapa DC-1 consiste em ler a palavra e(n-1-k)! contendo a representação compacta dos mnl expoentes do termo (n-1-k)! na tabela D'l!.
As etapas DC-2 a DC-8 são similares às etapas D-2 a D-8 descritas acima em referência à Figura 7. Em revanche, na etapa DC-9, lê-se a palavra eSt contendo a representação compacta dos mn! expoentes da soma Sk na tabela D'l . Depois, na etapa DC-10, calcula-se a palavra contendo a representação compacta dos expoentes da ordenação parcial , preferencialmente como a seguir:
<formula>formula see original document page 78</formula>
depois
<formula>formula see original document page 78</formula>
A etapa geral DC-Il consiste globalmente em uma extração dos expoentes da ordenação parcial Ifk . Para este fim, prevê-se:
- um ciclo em i(0≤i≤ml!)(inicialização de i = 1 na etapa DC-11 e após a extração do expoente
<formula>formula see original document page 78</formula>
descrita logo a seguir (etapa DC-112), comparação (teste DC-113) do índice de ciclo i com o valor mn, , com incrementação do índice i (etapa DC-114) desde que o valor mn, não tenha sido atingido);
- extração do expoente
<formula>formula see original document page 78</formula>
(etapa DC-112) :
representado nos bits de ponderação fraca do expoente compacto
<formula>formula see original document page 78</formula>
por mascaramento dos bits de ponderação forte de edt pela máscara
<formula>formula see original document page 78</formula>
esse mascaramento sendo seguido de uma defasagem
à direita de b'n bits do expoente compacto
<formula>formula see original document page 78</formula>
:
<formula>formula see original document page 78</formula> Esta etapa geral DC-11 é similar à etapa geral CC-9 da Figura 6 para a codificação.
As etapas DC-12 a DC-17 são, quanto a elas, similares às etapas D-11 a D-16 descritas acima em referência à Figura 7 própria para a decodificação em representação fragmentada.
A atualização dos expoentes de Pk (tabela P) na etapa geral DC-18 se faz, em revanche, na etapa DC-181, lendo-se a palavra ew[dt] contendo a representação compacta dos mM expoentes de w[dk] na tabela D\ e a atualização propriamente dita dos expoentes de Pk (eP =eP ~ew[dt]) se efetua em seguida à etapa DC-182.
Em seguida, as etapas DC-19 a DC-22 são similares às etapas D-19 a D-22 da Figura 7 própria à decodif icação utilizando uma decomposição fragmentada.
Descreve-se agora as diferentes vantagens que oferecem as variantes expostas acima.
As variantes do primeiro modo de realização com representação fragmentada, utilizando as tabelas de mn (e/ou m, ou rrít), comportam menos operações de adições/subtrações que o modo de realização principal que só utiliza a tabela dos valores mM .
Neste caso, o ganho de complexidade é importante sobretudo para as últimas posições (isto é, quando m(n_ky, m'l ou ml, são bem inferiores a mn!).
No entanto, este ganho de complexidade se acompanha de um crescimento da complexidade das etapas de leitura em memória (etapas C-31, C-6 e C-7). Se o número de valores a ler for minimo, o cálculo de endereço é, em revanche, mais complicado. Um compromisso interessante consiste, então, em armazenar regularmente as decomposições de base (com mn{ expoentes) para facilitar o endereçamento das tabelas D1 e Dv e armazenar também os valores mn na tabela Dm para os (" + 1) elementos. É conveniente armazenar os valores Tnl para reduzir eficazmente o número de adições/subtrações. No entanto, esta medida se acompanha necessariamente de uma leitura dos valores mSt (respectivamente) , antes das etapas C-6 e D-9 (respectivamente C-3 e D-19) enquanto que o valor W(n-k) só deve ser lido no inicio de cada iteração em k .
Por outro lado, as vantagens trazidas pela representação compacta em comparação com a representação fragmentada são as seguintes:
- a etapa de atualização da tabela P não comporta mais agora que uma única adição (respectivamente subtração) à codificação (respectivamente à decodificação),
- o cálculo do expoente e di só necessita também de uma única adição e de uma única subtração,
- os cálculos de endereço para a leitura das palavras e K são diretos e só necessitam, para cada valor
K, de um único acesso e leitura de memória.
Por outro lado, a representação compacta necessita de uma extração dos expoentes da ordenação parcial
<formula>formula see original document page 80</formula>
contidos na palavra ejik (etapas CC-9 e DC-11) .
No entanto, esta operação não é necessariamente um inconveniente para o cálculo da ordenação parcial a partir de sua decomposição em fatores primos, como se verá logo a seguir. Descreve-se logo a seguir as vantagens de tais variantes para o cálculo da ordenação parcial a partir de sua decomposição em fatores primos.
A complexidade da etapa de cálculo do produto das potências dos fatores primos, em relação as etapas C-9 e CC-10 (respectivamente D-11 e DC-12) na codificação (respectivamente na decodificação) cresce de forma importante com o número de fatores, mesmo se ela permanece bem inferior à complexidade da divisão em relação a técnica anterior. Ou, na prática, muitos dos expoentes da decomposição de uma ordenação parcial são nulos e então as potências correspondentes são iguais a 1. Freqüentemente, todos os expoentes são nulos ou os primeiros expoentes somente não são nulos. É, então, útil poder detectar e só guardar as potências de expoentes não nulos. Na representação detalhada, esta detecção só pode se efetuar por mM testes ou m(n-lk)! testes (um por fator primo) .
Vantajosamente, a representação compacta permite testar com um único teste se todos os expoentes são nulos (se e dl = 0) e, neste caso, a ordenação t'= 1. Além disso, a detecção do bit de ponderação forte de e,, permite obter o índice do maior fator primo de expoente não nulo na ordenação t' e reduzir o número de repetições do ciclo da etapa CC-9 (respectivamente DC-11) na codificação (respectivamente na decodificação).
Deve-se notar, no entanto, que a detecção dos expoentes não nulos, em representação detalhada como em representação compacta, aumenta a complexidade. Se todos os expoentes são não nulos, a complexidade da multiplicação das potências dos fatores primos permanece a mesma e se acresce então a esta complexidade aquela do procedimento de detecção dos expoentes não nulos. Assim, em uma outra variante, a detecção dos expoentes nulos pode ser conduzida unicamente se o número de fatores primos se torna grande (k bem inferior a n) e que a complexidade da multiplicação de suas potências é superior à complexidade do procedimento de detecção. Para isto, diferentes ciclos de acordo com as posições podem ser previstos, mesmo se esta implementação se efetua em detrimento de um crescimento das linhas de instrução.
É também possivel combinar as representações fragmentada e compacta. Para as últimas posições (o valor mn sendo fraco), o cálculo das decomposições intermediárias necessita de poucas operações. Favorecer-se- á então a utilização de uma representação fragmentada que não necessite de extração dos expoentes de uma ordenação parcial. Em revanche, para as primeiras posições, favorecer-se-á mais a utilização de uma representação compacta.
Descreve-se agora alguns exemplos de realização em codificadores/decodificadores existentes.
Codificador 3GPP AMR-WB+
O codificador 3GPP AMR-WB+ (norma [3GPPTS26.304]) utiliza uma quantificação vetorial algébrica cujo dicionário é uma união dos códigos de permutação da rede de Gosset REg de dimensão 8.
A técnica TCX corresponde a uma codificação preditiva por transformada. Mais precisamente, trata-se de um método de codificação por transformada FFT aplicada após a filtragem de ponderação perceptual. Na norma [3GPPTS26.304], o espectro FFT obtido é dividido em sub- bandas (ou sub-vetores) de dimensão n=8 e estes sub-vetores são codificados separadamente. A quantificação dos sub- vetores utiliza a rede regular de pontos RE8. Os dicionários de quantificação de dimensão 8 são compostos de uma união de códigos de permutações do tipo I provenientes da rede de pontos RE8.
No codificador TCX de acordo com a norma [3GPPTS26.304] , cada código de permutação corresponde a um vetor lider sinalizado dado em dimensão n=8. 0 índice de quantificação de um ponto da rede RE8 é calculado por uma fórmula do tipo:
índice = deslocamento de cardinalidade + ordenação da permutação
A ordenação é calculada pela fórmula de Schalkwijk enquanto que o deslocamento de cardinalidade é tabulado. No entanto, estes líderes sinalizados são representados por intermédio de seus líderes absolutos a fim de otimizar o armazenamento e a busca nos códigos de permutação. Encontra-se a lista dos líderes absolutos associados na referência:
"Low-complexity multi-rate lattice vector quantization with application to wideband TCX speech coding at 32 kbits/s" por Ragor S., Bessette B., Lefebvre R., em Proc. ICASSP, vo. 1, maio 2004, pp. 501-4.
Para ilustrar as diferentes variantes da invenção, três exemplos de realização são apresentados logo a seguir. Os dois primeiros exemplos de realização dizem respeito ao cálculo da ordenação de uma permutação (codificação), um utilizando uma representação fragmentada das decomposições e a outra uma representação compacta.
Nestes exemplos de realização logo a seguir e nos anexos correspondentes, as tabelas ReP são indexadas de R[0] a R[m!,- 1] e de P[0] a p[mn!-1] (e não de 1 a mnl como descrito a título de exemplo acima), e isto, sem nenhuma incidência particular sobre o processamento para o cálculo da ordenação.
Primeiro exemplo de realização (codificação)
Neste modo de realização, utiliza-se uma representação fragmentada das decomposições de base.
Armazena-se seus expoentes em duas tabelas com 36 elementos (=(8+1)x4). Trata-se das tabelas dadas em anexo A-11 e indicadas como D1 [36] (contendo os expoentes das decomposições dos inteiros l(0<l<8), desta forma, com armazenamento de uma decomposição fictícia para 0) e Dn [36] (contendo os expoentes das decomposições de seus fatoriais) .
Armazena-se também as três tabelas das potências de 3, 5 e 7:
Pot3[4] = {1,3,9,27}, PotS[3] = {1,5,25}, Pot7[3] = {1,7,49}
Neste modo de realização, a decomposição de uma ordenação parcial é determinada a partir de duas decomposições intermediárias, uma sendo a decomposição de base do inteiro Sk e a outra sendo a decomposição intermediária do quociente:
Como indicado mais acima, mais que determinar a decomposição intermediária de Rk a partir de decomposições de base correspondendo às (q +1) decomposições de base de (7-k)! e
<formula>formula see original document page 84</formula>
determina-se esta decomposição intermediária a partir da decomposição intermediária de Rk+1 e das duas decomposições de base de (7-k) e de
<formula>formula see original document page 85</formula>
Os quatro expoentes desta decomposição intermediária são armazenados em uma tabela R .
<table>table see original document page 85</column></row><table>
Tabela 11: Máximo de mt ou mn para as decomposições dos termos de uma ordenação parcial na posição k e para os códigos de permutação de dimensão 8
A invenção explora o conhecimento de (7-k)! e dos máximos de m , e d em. indicados para cada posição na tabela 11 acima para não calcular os expoentes dos fatores primos de índices maiores do que estes limites.
0 processamento correspondente é dado em anexo A- 12. Nota-se que o ciclo nas posições é interrompido. Nota- se também que o expoente do fator primo Pi do quociente é armazenado no elemento i?D'-l] da tabela R com 4 elementos.
Segundo exemplo de realização (codificação)
Em uma variante com o codificador 3GPP AMR-WB+, as decomposições de base são representadas de forma compacta. Armazena-se as palavras contendo seus expoentes em duas tabelas com 9 elementos (=(8+1)). Referindo-se ao anexo A-21, a tabela D'l contém as palavras para as decomposições dos inteiros / (0 ≤l≤ 8) (então com o armazenamento fictício da decomposição para /=0) e a tabela Z>';, contém as palavras para as decomposições de seus fatoriais.
Armazena-se também as potências de 3, 5 e 7 em uma tabela Pot[ 12] com 12 elementos (com armazenamento fictício de 0 para as potências não utilizadas).
A decomposição de uma ordenação parcial é determinada a partir de três decomposições intermediárias, duas sendo as decomposições de base do inteiro Sk e do fatorial (7-k)\ e a terceira sendo uma decomposição intermediária do denominador da ordenação parcial:
<formula>formula see original document page 86</formula>
Como indicado precedentemente, mais que determinar a decomposição intermediária de Pk a partir das q decomposições de base de
<formula>formula see original document page 86</formula>
determina-se esta decomposição a partir da decomposição intermediária de Pm e da decomposição de base de w£(k) . A palavra compacta contendo os quatro expoentes desta decomposição intermediária é indicada como "eP" no anexo A-22. Além disso, nota-se "el" a palavra compacta contendo os quatro expoentes da decomposição de uma ordenação parcial.
Aqui ainda, explora-se o conhecimento de
<formula>formula see original document page 86</formula>
para extrair apenas
<formula>formula see original document page 86</formula>
expoentes da palavra compacta
representando a decomposição de uma ordenação parcial.
O processamento correspondente é o objeto do anexo A-22. Aqui ainda, o ciclo nas posições é interrompido.
Terceiro exemplo de realização (decodificação) O terceiro exemplo de realização trata da decodificação da ordenação de uma permutação, de codificação 3GPP AMR-WB+.
Utiliza-se, preferencialmente, uma representação fragmentada das decomposições de base como no primeiro exemplo de realização e uma decomposição da ordenação parcial de três termos como no segundo exemplo de realização. O ciclo nas posições não é, no entanto, interrompido.
Como indicado precedentemente, mais que determinar a decomposição intermediária de Pk a partir de decomposições de base, determina-se a partir de uma decomposição intermediária de Pk_x e da decomposição de base de wk" . Os quatro expoentes desta decomposição intermediária são armazenados em uma tabela P . Da mesma forma, a partir da decomposição intermediária de Pk e da decomposição de base de ('7-k)\, calcula-se uma outra decomposição intermediária (aquela do quociente) cujos expoentes são armazenados em uma tabela R .
O processamento correspondente é o objeto do anexo A-3. Nota-se que o expoente do fator primo pt do quociente (respectivamente do produto) é armazenado no elemento i?[í-1] (resp. P[/-l]) da tabela R (resp. P) de quatro elementos.
Assim, o primeiro exemplo logo anterior utiliza uma decomposição da ordenação parcial em dois termos (dos quais um quociente), os dois outros exemplos utilizam uma decomposição em três termos (dois para o numerador e um para o denominador). O modo para a decodificação só utiliza m8!(= 4) termos enquanto que os dois modos para a codificação utilizam um processamento separado das posições para explorar os mn ou m, termos que não são lidos, mas inscritos "rígidos" no algoritmo rompendo o ciclo nas 8 posições de um ponto de rede de Gosset.
Exemplo de realização para o codificador TDAC
Um último exemplo de realização refere-se ao codificador frequencial perceptual TDAC do Depositante utilizado para codificar sinais de áudio digitais amostrados a 16 kHz (banda larga), cujo princípio é descrito logo a seguir.
0 codificador TDAC utiliza uma quantificação vetorial estatística de dimensão e resolução variáveis de dimensão máxima 15.
No caso dos códigos de permutação da rede regular de pontos RE8 de dimensão 8, a invenção permite essencialmente reduzir a complexidade. Por outro lado, no caso do codificador TDAC, que utiliza códigos de permutações de dimensão superior a 12, a invenção se mostra muito vantajosa uma vez que ela permite não somente uma redução de complexidade, mas também uma realização do codificador em processadores em vírgula fixa cuja precisão máxima é limitada a inteiros de 32 bits não sinalizados.
Sem a invenção, uma realização desse tipo seria extremamente complexa.
0 princípio deste codificador é o seguinte.
Um sinal de áudio limitado em banda a 7 kHz e amostrado a 16 kHz é dividido em tramas de 320 amostras (20 ms). Uma transformada de cosseno discreta modificada (ou "MDCT") é aplicada nos blocos do sinal de entrada de 640 amostras com uma sobreposição de 50% (o que corresponde a uma renovação da análise MDCT em todos os 20 ms). Limita-se o espectro a 7225Hz fixando em zero os 31 últimos coeficientes (somente então os 289 primeiros coeficientes sendo diferentes de 0) . Uma curva de mascaramento é determinada a partir deste espectro e todos os coeficientes mascarados são colocados em zero. O espectro é dividido em 32 bandas de larguras desiguais. As eventuais bandas mascaradas são determinadas em função dos coeficientes transformados dos sinais. Para cada banda do espectro, a energia dos coeficientes MDCT é calculada (para avaliar fatores de escala). Os 32 fatores de escala constituem o envelope espectral do sinal que é, em seguida, quantificado, codificado e transmitido na trama. A alocação dinâmica dos bits se baseia em uma curva de mascaramento por banda calculada a partir da versão desquantifiçada da envolvente do espectro, de maneira a obter uma compatibilidade entre a alocação binária do codificador e do decodificador. Os coeficientes MDCT normalizados em cada banda são, em seguida, quantificados por quantificadores vetoriais utilizando dicionários sobrepostos em tamanho, os dicionários sendo compostos de uma união de códigos de permutação de tipo II. Finalmente, as informações sobre a tonalidade e a voz assim que o envelope espectral e os coeficientes codificados são multiplexados e transmitidos em trama.
0 exemplo de realização para o cálculo da ordenação de uma permutação (codificação) utiliza aqui uma representação compacta das decomposições. A dimensão dos códigos de permutação utilizada sendo variável, o ciclo nas posições não é interrompido. Este modo de realização ilustra um procedimento de detecção dos expoentes não nulos da decomposição de uma ordenação parcial.
Aqui, as decomposições de base são representadas de forma compacta. Armazena-se as palavras contendo seus expoentes em duas tabelas de dezesseis elementos (=(15+1)). No anexo B-1, a tabela D'l contém as palavras para as decomposições dos inteiros /(0 ≤ l ≤ 15) e a tabela D'l, contém as palavras para as decomposições de seus fatoriais.
Armazena-se também as potências de 3 em uma tabela com oito elementos (indicada como Pot3 ) e as potências de 5, 7, 11 e 13 em uma tabela (indicada como Pot ) com vinte elementos (com armazenamento fictício de 0 para as potências não utilizadas).
O processamento correspondente é retranscrito no anexo B-2.
Obviamente, a presente invenção não se limita às formas de realização descritas logo antes a título de exemplo; ela se estende a outras variantes.
Ao conhecimento da Depositante, a presente invenção consiste na primeira utilização das decomposições em potências de fatores primos nos códigos de permutação.
Esta utilização é, no entanto, particularmente vantajosa a partir do momento que cálculos de expressões combinatórias são previstos, como na quantificação vetorial com códigos de permutação. Assim, de maneira geral, a presente invenção visa esta utilização das decomposições em potências de fatores primos para qualquer expressão combinatória, mesmo diferente de uma ordenação de uma permutação, em codificação/decodificação por um ou mais códigos de permutação.
A presente invenção encontra uma aplicação vantajosa em codificação/decodificação de sinais de voz, por exemplo, em terminais de telefonia notadamente celular. No entanto, ela se aplica à codificação/decodificação de sinais de qualquer outro tipo, notadamente de sinais de imagem ou vídeo assim como em modulação codificada.
A presente invenção visa também um programa de computador destinado a ser armazenado em memória de um dispositivo de codificação/decodificação de sinais digitais, utilizando códigos de permutações. Este programa comporta então instruções para a implementação das etapas do processo em relação a invenção. Tipicamente, as Figuras 4 a 8 descritas acima podem corresponder a organogramas de algoritmos que pode comportar um programa deste tipo.
A presente invenção visa também um dispositivo de codificação/decodificação de sinais digitais, utilizando códigos de permutação e compreendendo, em referência à Figura 9:
- uma unidade de memória MEM para armazenar as instruções de um programa de computador do tipo precitado, assim como as representações pré-gravadas de decomposições de números inteiros escolhidos, e
- um módulo de cálculo PROC acessando esta unidade de memória MEM para a implementação do processo de acordo com a invenção.
Estes meios MEM, PROC podem ser previstos:
- para dar a ordenação t de uma permutação a partir do vetor-código y escolhido (setas em traços cheios da Figura 9):
em um módulo de indexação de um codificador de fonte ou
em um módulo de indexação de um decodificador de canal,
- ou para dar o vetor-código y a reconstruir a
partir da ordenação t de uma permutação (setas em traços pontilhados da Figura 9):
- em um módulo de decodificação de um decodificador de fonte ou
- em um módulo de codificação de um codificador de canal. Obviamente, as representações pré-gravadas na memória MEM podem estar sob a forma de conteúdos de endereços (representação fragmentada) ou sob a forma de palavras de bits (representação compacta).
ANEXOS
<formula>formula see original document page 92</formula>
Processamento das posições: Posição k=7:
<formula>formula see original document page 93</formula>
Posição k = 6:
<formula>formula see original document page 93</formula>
Posição k = 5:
<formula>formula see original document page 93</formula>
Posição k = 4 depois 3:
<table>table see original document page 93</column></row><table>
Posição k = 2 depois 1;
<table>table see original document page 93</column></row><table> <formula>formula see original document page 94</formula>
Inicialização:
<formula>formula see original document page 94</formula> <formula>formula see original document page 95</formula>
Processamento das posições:
• Posição k = 7:
o dl = d[7]; w[dl] = 1
• Posição k = 6:
o d = d[6]; w[d] = w[d] +1
o Se {d = dl), então eP = 1
senão se (d > dl) í = l
• Posição k = 5:
<formula>formula see original document page 95</formula>
o Teste se S > 0 ; se sim:
<formula>formula see original document page 95</formula>
• Posições k = 4 depois 3:
<formula>formula see original document page 95</formula>
o eP = eP
o 5 = 0; ciclo de j = 0 a d-1: S = S + w[y]
o Teste se S>0; se sim:
<formula>formula see original document page 95</formula>
• Posições k = 2 depois 1:
<formula>formula see original document page 95</formula> <formula>formula see original document page 96</formula>
• Posição k = 0:
<formula>formula see original document page 96</formula>
Inicialização:
<formula>formula see original document page 96</formula> Processamento das posições
<formula>formula see original document page 97</formula> Pot3[8] = {l, 3, 9, 27, 81, 243, 729, 2187}
Ροt[4*5]={1, 5, 25, 125, 625, 1, 7, 49, 343, O, 1, 11, 121, O, O, 1, 13, 169, O, 0}
B-2
Inicialização:
• t = 0
• w[i] = 0, 0 <i<q
• eP = 0
Processamento das posições:
• Posição k = η - 1:
<formula>formula see original document page 98</formula>
• Posição k = η - 2:
<formula>formula see original document page 98</formula>
• Posição k - n-3 a 0:
<formula>formula see original document page 98</formula> <formula>formula see original document page 99</formula>

Claims (10)

1. Processo para codificação/decodificação de sinais digitais, utilizando códigos de permutação envolvendo cálculo das expressões combinatórias, o processo é CARACTERIZADO pelo fato de que: - as expressões combinatórias são representadas por decomposições de potência de fator primo, e determinadas por uma leitura de memória de representações pré-gravadas de decomposições de números inteiros selecionados, e as representações pré-gravadas compreendem valores representativos dos expoentes, respectivamente armazenados correlacionados com valores representativos de números primos sucessivos, para cada um dos números inteiros selecionados.
2. Processo de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que as expressões combinatórias compreendem valores fatoriais /! de números inteiros /, e as representações pré-gravadas compreendem pelo menos representações de decomposições de valores fatoriais /!.
3. Processo de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que a representação pré-gravada de um número inteiro selecionado é armazenada em uma memória endereçável, e em que o endereçamento da memória provê uma sucessão de expoentes a serem designados para respectivos números primos para recompor o número inteiro selecionado.
4. Processo de acordo com a reivindicação 3, CARACTERIZADO pelo fato de que a representação pré-gravada de um número inteiro selecionado é armazenada na forma de uma sucessão de endereços, cada qual provendo, para um número primo, um expoente a ser designado para este número primo para recompor o número inteiro selecionado.
5. Processo de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que as representações pré- gravadas são armazenadas na forma de palavras compreendendo uma sucessão de grupos de bits, cada grupo possuindo: - uma ponderação dependente de um número primo, e um valor dependente de um expoente a ser associado com este número primo.
6. Processo de acordo com a reivindicação 5, CARACTERIZADO pelo fato de que as potências do fator primo são determinadas ao aplicar sucessivamente pelo menos uma máscara parcial para as palavras de bits, com deslocamentos sucessivos de acordo com as ponderações dos bits e leituras dos bits restantes.
7. Processo de acordo com a reivindicação 2, CARACTERIZADO pelo fato de que os códigos de permutação possuem uma dimensão máxima n, em que os números inteiros selecionados compreendem pelo menos: - os inteiros entre 1 e a dimensão máxima n, - o valor fatorial do número inteiro 0, - e, preferivelmente, os valores fatoriais dos inteiros entre Iea dimensão máxima η.
8. Processo de acordo com a reivindicação 7, CARACTERIZADO pelo fato de que os números inteiros selecionados também compreendem o valor 0.
9. Meio legível por computador destinado a ser armazenado na memória de um dispositivo de codificação/decodificação de sinais digitais, utilizando códigos de permutações, CARACTERIZADO pelo fato de que comporta instruções para a implementação das etapas do processo como definido na reivindicação 1.
10. Dispositivo para codificação/decodificação de sinais digitais usando códigos de permutação, CARACTERIZADO pelo fato de que compreende: - uma unidade de memória para armazenar as instruções de um meio legível por computador como definido na reivindicação 9 e representações pré-gravadas de decomposições de números inteiros selecionados, e - um módulo de cálculo acessando a unidade de memória para implementar o processo como definido na reivindicação 1.
BRPI0722375-7A 2006-02-17 2007-02-13 codificação/decodificação aperfeiçoadas de sinais digitais, em particular em quantificação vetorial com códigos de permutação BRPI0722375A2 (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR0601435A FR2897742A1 (fr) 2006-02-17 2006-02-17 Codage/decodage perfectionnes de signaux numeriques, en particulier en quantification vectorielle avec codes a permutation

Publications (1)

Publication Number Publication Date
BRPI0722375A2 true BRPI0722375A2 (pt) 2012-05-22

Family

ID=37665434

Family Applications (3)

Application Number Title Priority Date Filing Date
BRPI0707839-0A BRPI0707839A2 (pt) 2006-02-17 2007-02-13 codificaÇço/decodificaÇço aperfeiÇoadas de sinais digitais, em particular em quantificaÇço vetorial com càdigos de permutaÇço
BRPI0722374-9A BRPI0722374A2 (pt) 2006-02-17 2007-02-13 Codificação/decodificação aperfeiçoadas de sinais digitais, em particular em quantificação vetorial com códigos de permutação
BRPI0722375-7A BRPI0722375A2 (pt) 2006-02-17 2007-02-13 codificação/decodificação aperfeiçoadas de sinais digitais, em particular em quantificação vetorial com códigos de permutação

Family Applications Before (2)

Application Number Title Priority Date Filing Date
BRPI0707839-0A BRPI0707839A2 (pt) 2006-02-17 2007-02-13 codificaÇço/decodificaÇço aperfeiÇoadas de sinais digitais, em particular em quantificaÇço vetorial com càdigos de permutaÇço
BRPI0722374-9A BRPI0722374A2 (pt) 2006-02-17 2007-02-13 Codificação/decodificação aperfeiçoadas de sinais digitais, em particular em quantificação vetorial com códigos de permutação

Country Status (10)

Country Link
US (3) US7994944B2 (pt)
EP (3) EP2009800A3 (pt)
JP (3) JP4846809B2 (pt)
KR (3) KR101358070B1 (pt)
CN (3) CN101447792B (pt)
BR (3) BRPI0707839A2 (pt)
FR (1) FR2897742A1 (pt)
MX (1) MX2008010490A (pt)
RU (3) RU2437207C2 (pt)
WO (1) WO2007093730A2 (pt)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2461079C2 (ru) * 2008-02-15 2012-09-10 Нокиа Корпорейшн Упрощенная индексация и деиндексация векторов
US8079160B2 (en) * 2008-09-26 2011-12-20 Nike, Inc. Articles with retractable traction elements
CN101430881B (zh) 2008-11-10 2013-04-17 华为技术有限公司 一种编码、解码、编解码方法、编解码系统以及相关装置
US20100324913A1 (en) * 2009-06-18 2010-12-23 Jacek Piotr Stachurski Method and System for Block Adaptive Fractional-Bit Per Sample Encoding
US9240192B2 (en) 2010-07-06 2016-01-19 Panasonic Intellectual Property Corporation Of America Device and method for efficiently encoding quantization parameters of spectral coefficient coding
RU2497277C2 (ru) * 2010-07-29 2013-10-27 Российская Федерация, от имени которой выступает государственный заказчик-Государственная корпорация по атомной энергии "Росатом" Способ сжатия двоичных данных в виде структурированных информационных блоков
GB201320983D0 (en) * 2013-11-28 2014-01-15 Ibm Data encoding in solid-state storage apparatus
US9838700B2 (en) * 2014-11-27 2017-12-05 Nippon Telegraph And Telephone Corporation Encoding apparatus, decoding apparatus, and method and program for the same
SE543293C2 (en) 2015-04-17 2020-11-17 Kelicomp Ab Improved compression of a file
TWI581579B (zh) * 2015-12-30 2017-05-01 義守大學 通訊接收裝置、其訊號接收方法、訊號處理方法及訊號傳送方法
CN105680992B (zh) * 2016-01-26 2019-05-03 华中科技大学 一种通信信道编码方法及置换码集合产生器
CN107784621A (zh) * 2016-08-25 2018-03-09 苏州创新通用色谱仪器有限公司 一种液相色谱数据分块压缩方法
US10950251B2 (en) * 2018-03-05 2021-03-16 Dts, Inc. Coding of harmonic signals in transform-based audio codecs

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2441452C3 (de) * 1973-08-31 1980-01-17 Hitachi, Ltd., Tokio Anordnung zur Ultraschall-Nachrichtenübertragung
JPH0318820A (ja) * 1989-06-15 1991-01-28 Matsushita Electric Ind Co Ltd アクティブマトリックスアレイの駆動方法
SU1750061A1 (ru) * 1989-12-11 1992-07-23 Омский Институт Инженеров Железнодорожного Транспорта Устройство дл исправлени ошибок
JPH06266315A (ja) * 1993-03-17 1994-09-22 Fujitsu Ltd 液晶表示装置
FR2759806B1 (fr) * 1997-02-19 1999-04-23 Gemplus Card Int Systeme cryptographique comprenant un systeme de chiffrement et dechiffrement et un systeme de sequestre de cles, et les appareils et dispositifs associes
US5832443A (en) * 1997-02-25 1998-11-03 Alaris, Inc. Method and apparatus for adaptive audio compression and decompression
KR100373965B1 (ko) * 1998-08-17 2003-02-26 휴우즈 일렉트로닉스 코오포레이션 최적 성능을 갖는 터보 코드 인터리버
RU2199826C2 (ru) * 2000-09-25 2003-02-27 Государственное унитарное предприятие Специализированный центр программных систем "Спектр" Способ итеративного шифрования блоков цифровых данных
RU2222868C2 (ru) * 2001-12-26 2004-01-27 Федеральное государственное унитарное предприятие "Научно-исследовательский институт "Вектор" Способ итеративного шифрования блоков цифровых данных
CA2388358A1 (en) 2002-05-31 2003-11-30 Voiceage Corporation A method and device for multi-rate lattice vector quantization
CA2489526C (en) 2002-06-20 2012-03-20 Novalar Pharmaceuticals, Inc. Stabilized formulations of alpha adrenergic receptor antagonists and uses thereof
US7680670B2 (en) * 2004-01-30 2010-03-16 France Telecom Dimensional vector and variable resolution quantization

Also Published As

Publication number Publication date
CN101447792A (zh) 2009-06-03
US7973679B2 (en) 2011-07-05
FR2897742A1 (fr) 2007-08-24
JP4805365B2 (ja) 2011-11-02
EP2009800A3 (fr) 2013-06-19
JP4846809B2 (ja) 2011-12-28
RU2437207C2 (ru) 2011-12-20
RU2008139888A (ru) 2010-04-20
EP2009801A3 (fr) 2013-06-19
CN101385245B (zh) 2012-09-26
CN101385245A (zh) 2009-03-11
US20090207934A1 (en) 2009-08-20
RU2008139887A (ru) 2010-04-20
KR20090005084A (ko) 2009-01-12
RU2008137122A (ru) 2010-03-27
CN101447791A (zh) 2009-06-03
WO2007093730A2 (fr) 2007-08-23
CN101447791B (zh) 2012-11-28
US7994945B2 (en) 2011-08-09
WO2007093730A3 (fr) 2008-11-13
RU2494536C2 (ru) 2013-09-27
KR20090007294A (ko) 2009-01-16
BRPI0707839A2 (pt) 2011-05-10
US7994944B2 (en) 2011-08-09
US20100228551A1 (en) 2010-09-09
JP2009105947A (ja) 2009-05-14
CN101447792B (zh) 2012-10-10
EP2009801A2 (fr) 2008-12-31
MX2008010490A (es) 2008-11-27
BRPI0722374A2 (pt) 2012-05-22
JP2009527171A (ja) 2009-07-23
KR20090005083A (ko) 2009-01-12
KR101358070B1 (ko) 2014-02-06
US20090207933A1 (en) 2009-08-20
EP2009800A2 (fr) 2008-12-31
EP2002546A2 (fr) 2008-12-17
JP2009153157A (ja) 2009-07-09
JP4805364B2 (ja) 2011-11-02
KR101368478B1 (ko) 2014-03-06
RU2494537C2 (ru) 2013-09-27
KR101370019B1 (ko) 2014-03-14
EP2002546B1 (fr) 2020-04-01

Similar Documents

Publication Publication Date Title
BRPI0722375A2 (pt) codificação/decodificação aperfeiçoadas de sinais digitais, em particular em quantificação vetorial com códigos de permutação
US6662154B2 (en) Method and system for information signal coding using combinatorial and huffman codes
KR101152707B1 (ko) 다단계 양자화 방법 및 장치
KR101790463B1 (ko) 오디오/비디오 샘플 벡터의 피라미드 벡터 양자화 인덱싱 및 디인덱싱을 위한 방법 및 장치
BRPI0317652B1 (pt) Método e dispositivo para quantizar os parâmetros de predição linear na codificação do sinal do som a uma taxa de bit variável, e, método e dispositivo para dês-quantizar os parâmetros de predição linear na decodificação do sinal do som a uma taxa de bit variável
BR112013020700B1 (pt) Codificação e decodificação de posições de pulso de faixas de um sinal de áudio
Abut et al. Vector quantizer architectures for speech and image coding
Xie et al. Algebraic vector quantization of LSF parameters with low storage and computational complexity
JPS586341B2 (ja) 像圧縮装置のためのトリ−構造決定方法
Xiao et al. Efficient coding of LSP parameters using Compressed Sensing on Approximate KLT Domain
Garcia V et al. New fast and robust stochastic algorithm of two stage vector quantization for joint source-channel speech coding for any transmission channel

Legal Events

Date Code Title Description
B03A Publication of a patent application or of a certificate of addition of invention [chapter 3.1 patent gazette]
B08L Patent application lapsed because of non payment of annual fee [chapter 8.12 patent gazette]

Free format text: ARQUIVAMENTO DEFINITIVO

B08I Application fees: publication cancelled [chapter 8.9 patent gazette]

Free format text: ANULADA A PUBLICACAO CODIGO 8.12 NA RPI NO 2299 DE 27/01/2015 POR TER SIDO INDEVIDA.

B08F Application dismissed because of non-payment of annual fees [chapter 8.6 patent gazette]

Free format text: REFERENTE A 3A,5A,10A,11A,12A,13A E 14A ANUIDADES

B08K Patent lapsed as no evidence of payment of the annual fee has been furnished to inpi [chapter 8.11 patent gazette]

Free format text: REFERENTE AO DESPACHO 8.6 PUBLICADO NA RPI 2611 DE 19/01/2021.