Вы находитесь на странице: 1из 23

1 CAPÍTULO 3 - CÓDIGOS PARA CANAIS

DE LEITURA DE b-SÍMBOLOS
Resumo - Canais de leitura de pares de sı́mbolos, no qual a saı́da do processo
de leitura são pares de sı́mbolos consecutivos, foram estudados recentemente
por Cassuto e Blaum. Esse novo paradigma é motivado pelas limitações do
processo de leitura de armazenamento de dados em alta densidade. Eles es-
tudaram correção de erros nesse novo paradigma, especificamente a relação
entre a distância mı́nima de Hamming de um código corretor de erros e a
distância mı́nima de pares, que é a distância mı́nima de Hamming entre ve-
tores pares de sı́mbolos derivados das palavras do código. Foi provado que
para um código cı́clico linear com distância mı́nima dH , a distância mı́nima
de Hamming correspondente é no mı́nimo dH +3 . Nesse artigo, mostraremos
que, para um código cı́clico linear dado com distância mı́nima de Hamming
dH , a distância mı́nima de pares é no mı́nimo dH + [dH /2]. Então descreve-
mos o algoritmo de decodificação, baseado em um decodificador de distância
limitado para os códigos cı́clicos, cuja capacidade de correção de erros de
pares de sı́mbolos reflete na distância mı́nima. Finalmente, consideramos o
caso onde a saı́da do canal de leitura é um número maior, b ≥ 3, de pares con-
secutivos, e fornecemos extensão de vários conceitos, resultados, e contrução
de códigos para essa configuração.

1.1 Introdução
A abordagem tradicional na teoria da informação para analisar canais rui-
dosos envolve a análise de uma mensagem em unidades de informação indi-
viduais, chamadas de sı́mbolos. Embora em muitos trabalhos seja estudada
a correlação de erros e a interferência entre os sı́mbolos, presume-se que o
processo de escrita e leitura seja executado em sı́mbolos individuais.
No entanto, em algumas das tecnologias de armazenamento emergentes
de hoje, bem como em algumas propostas para o futuro, isso não é mais
uma suposição precisa e os sı́mbolos só podem ser escritos e lidos em grupos
possivelmente sobrepostos. Isso nos leva a estudar um modelo, proposto
recentemente por Cassuto e Blaum [1], para canais cujas saı́das são pares de
sı́mbolos sobrepostos.
O rápido progresso nas tecnologias de armazenamento de dados de alta
densidade abriu o caminho para o armazenamento de alta capacidade com
preço reduzido. No entanto, como o tamanho de bit em altas densidades é
pequeno, é um desafio ler com êxito os bits individuais gravados no meio de
armazenamento; para mais detalhes, veja [1]. O modelo de canal de leitura

1
de par de sı́mbolos estudado em [1], e mais tarde por Cassuto e Litsyn em [2],
mimetiza o processo de leitura de tais tecnologias de armazenamento. Nesse
modelo, as saı́das produzidas por uma sequência de operações de leitura
são (possivelmente corrompidas) pares sobrepostos de sı́mbolos adjacentes,
chamados de sı́mbolos de leitura de pares. Por exemplo, se a sequência
gravada for (010), então, na ausência de qualquer ruı́do, a saı́da do canal de
leitura do par de sı́mbolos seria [(01), (10), (00)]. Nesse novo paradigma,
os erros não são mais erros de sı́mbolos individuais, mas sim erros de par
de sı́mbolos, em que, em um erro de par de sı́mbolos, pelo menos um dos
sı́mbolos é errôneo. A tarefa principal agora é combater esses erros de pares
de sı́mbolos projetando códigos com uma distância mı́nima grande de pares
de sı́mbolos.
Os resultados em [1] e [2] abordaram várias questões fundamentais sobre
a métrica para pares, bem como a construção e decodificação de códigos com
capacidade de correção de erros de pares. Limites longitudinais e assintóticos
em tamanhos de código também foram derivados. Estes foram estendidos em
[3] e [4], onde a construção de códigos separáveis de distância máxima para
a métrica de pares de sı́mbolos foi considerada, e em [5], onde os autores
estudaram a decodificação da sı́ndrome de códigos de pares de sı́mbolos. O
paradigma do canal de pares de sı́mbolos estudados nesses trabalhos anterio-
res pode ser generalizado para canais de leitura de sı́mbolo b, onde o resultado
de uma operação de leitura é uma sequência consecutiva de b > 2 sı́mbolos.
Em essência, recebemos bestimativas da mesma sequência armazenada. Esse
insight conecta o problema do par de sı́mbolos ao problema de reconstrução
da sequência, que foi introduzido pela primeira vez por Levenshtein [8] - [10].
Na reconstrução da sequência cenário, a mesma palavra de código é trans-
mitida através de múltiplos canais. Então, um decodificador recebe todas as
saı́das de canal, que são consideradas diferentes uma da outra, e gera uma es-
timativa da palavra de código transmitida. A motivação original não veio do
armazenamento de dados, mas de outros domı́nios, como biologia molecular
e quı́mica, onde a quantidade de redundância na informação é muito baixa e,
portanto, a única maneira de combater erros é transmitindo repetidamente
a mesma mensagem. No entanto, este modelo é muito relevante para as tec-
nologias avançadas de armazenamento mencionadas acima, bem como em
qualquer outro contexto onde as informações armazenadas são lidas várias
vezes. Além disso, notamos que o modelo proposto por Levenshtein foi recen-
temente estudado e generalizado, com aplicações para memórias associativas
[18].
No modelo de canal descrito por Levenshtein, todos os canais são (quase)
independentes um do outro, pois é garantido que as saı́das do canal são todas
diferentes. Assumindo que a mensagem transmitida c pertence a um código

2
com uma distância mı́nima de Hamming dH e o número de erros em cada
canal pode ser estritamente maior que [dH − 1/2], Levenshtein estudou o
número mı́nimo de canais necessários para construir um decodificador bem
sucedido. O valor correspondente para a métrica de Hamming (bem como
outras métricas de distância) foi estudado em [9]; extensões para métricas de
distância sobre permutações, por ex. [6], [7] e gráficos de erro [11] também
foram considerados. Recentemente, o problema análogo foi abordado para
o gráfico de Grassmann e permutações sob a distância τ de Kendall [20], e
um estudo teórico da informação motivado por aplicações relacionadas ao
sequenciamento de DNA foi realizado para um caso especial de um canal
com deleções [12], [13].
Mais especificamente, para a distância de Hamming, o seguinte resultado
foi provado em [9]. Suponha que a palavra transmitida pertença a um código
com uma distância mı́nima de Hamming dH e o número de erros, t, em cada
canal é maior que [dH − 1/2]. Então, para construir um decodificador bem
sucedido, o número de canais tem que ser maior que
t−[dH /2]   t−i  
X n − dH X dH
.
i=0
i k=i+dH −t
k

Por exemplo, se t = [dH − 1/2] + 1, ou seja, apenas mais um do que a


capacidade  de correção de erros, então o número de canais tem que ser pelo
2t
menos t +1. Note que se t > [dH − 1/2]+1 então este número é pelo menos
da ordem do comprimento da mensagem n. Este resultado decepcionante
é uma consequência dos erros arbitrários que podem ocorrer em todos os
canais. Na prática, especialmente para sistemas de armazenamento, podemos
aproveitar o fato de que os erros são mais restritos em número para melhorar
a capacidade de correção de erros.
No canal de leitura de par de sı́mbolos, existem de fato dois canais. Se a
informação armazenada é x = (x0 , ..., xn−1 ), então o correspondente vetor de
leitura de par de x é

π(x) = [(x0 , x1 ), (x1 , x2 ), ..., (xn−2 , xn−1 ), (xn−1 , x0 )],


e o objetivo é corrigir um grande número dos chamados erros de pares de
sı́mbolos. Com o alfabeto de sı́mbolo Σ, a distância do par, dp (x, y), entre
dois vetores de par de leitura x e y é a distância de Hamming sobre o alfabeto
de par de sı́mbolos (ΣxΣ) entre seus respectivos vetores de leitura de par,
isto é , dp (x, y) = dH (π(x), π(y)). Por conseguinte, a distância mı́nima entre
pares de um código C é definida como dp (C) = minx,y∈C,x6=y dp (x, y).
Em [1], foi mostrado que, para um código cı́clico linear com distância

3
mı́nima de Hamming dH , a distância mı́nima do par, dp , satisfaz dp > dH + 3.
Nossa principal contribuição é o resultado mais forte que

dp > dH + [dH /2].


De acordo com [1], isso permite a correção de [dH − 1/2] erros de pares de
sı́mbolos. Assim, em contraste com os resultados de Levenshtein em canais
independentes, no canal de leitura de par de sı́mbolos podemos corrigir um
grande número de erros de par de sı́mbolos. A fim de explorar essa garan-
tia potencialmente muito maior de distância de pares mı́nimos, construı́mos
explicitamente um decodificador, baseado em um decodificador de distância
limitada do código cı́clico linear dado, que pode corrigir um número de erros
de par de sı́mbolos até o raio de decodificação correspondente a este limite.
Em seguida, abordamos o paradigma geral dos canais que detectam al-
gum número determinado, b > 2, de sı́mbolos consecutivos em cada leitura.
Primeiro, alguns dos resultados do canal de leitura de par de sı́mbolos são
generalizados. Em seguida, estudamos as propriedades dos códigos para o
canal de leitura de b-sı́mbolo que é construı́do pela intercalação de códigos
de componente b. Finalmente, examinamos a b-distância de duas famı́lias es-
pecı́ficas de códigos, a saber, os livros de códigos Σn e os códigos de Hamming
cı́clicos lineares.
O resto do artigo está organizado da seguinte forma. Na Seção II, revi-
samos formalmente o canal de leitura do par de sı́mbolos e algumas de suas
propriedades básicas. Na Seção III, mostramos que códigos cı́clicos lineares
podem corrigir um grande número de erros de pares de sı́mbolos e, na Seção
IV, é dado um algoritmo de decodificação para tais códigos. A Seção V ge-
neraliza alguns dos resultados no canal de leitura de par de sı́mbolos para os
canais de leitura com b-sı́mbolo, onde b > 2. Finalmente, a Seção VI conclui
o artigo.

1.2 Propriedades

A = {0, 1} a não ser que seja dito o contrário.


VER ONDE ACRESCENTAR ISSO

4
Proposição 1.1. Para todo x, y ∈ An , dP (x, y) = ωP (x, y).
Demonstração. Note que para x, y ∈ An ,

dP (x, y) = dH (π(x), π(y)) = ωH (π(x) + π(y))


= ωH (π(x + y)) = ωP (x + y).

Do Teorema 2.1, se 0 < dH (C) < n então

dH (C) + 1 ≤ dP (C) ≤ 2dH (C).

Exemplo 1.1. Seja C = {(0, 0, 0), (1, 1, 0), (1, 0, 1), (0, 1, 1)}.
Então, o código de pares de sı́mbolos de C é

π(C) = {(00, 00, 00), (11, 10, 01), (10, 01, 11), (01, 11, 01)}.

A distância mı́nima de Hamming de C é dH = 2, enquanto a distância


mı́nima de pares de C é dP = 3.
Foi provado em [1] que se um código tem uma distância mı́nima de pa-
res dP então pode corrigir b dP2−1 c pares de sı́mbolos. Portanto, o objetivo
na construção de códigos para o canal de leitura de pares é alcançar uma
distância mı́nima de pares maior do que a distância mı́nima de Hamming.
Foi mostrado em [1] que a intercalação de dois códigos com a distância
mı́nima de Hamming dH gera um código com a mesma distância mı́nima
de Hamming, mas com uma distância mı́nima de pares 2dH . Esta construção
gera códigos com a maior distância mı́nima de pares possı́vel em relação á
distância mı́nima de Hamming dos códigos componentes. No entanto, não é
particulamente atraente, pois, em geral, a intercalação produz cpodigos que
sofrem de uma distância de Hamming fraca em relação ao seu comprimento
de palavra de código. Em [3] e [4], foram propostos códigos separáveis de
distância máxima para o canal de leitura de pares de sı́mbolos, e em [5], a
decodificação de códigos de pares de sı́mbolos por decodificação de sı́ndrome
foi estudada.
Ainda outra famı́lia interessante de códigos analisada em [1] é a classe
dos códigos cı́clicos lineares. Para tal código C, com distância mı́nima de
Hamming dH , foi provado que a distância mı́nima do par é pelo menos dH +
2. Usando o limite de Hastmann-Tzeng, este limite inferior foi melhorado
para dH + 3 quando o comprimento de um código é número primo. Nosso
objetivo principal na proxima seção é derivar uma limite inferior melhorado
na distância mı́nima de pares de códigos cı́clicos lineares.

5
1.3 A distância de pares de códigos cı́clicos
O objetivo dessa seção é mostrar que códigos cı́clicos lineares fornece uma
maior distância mı́nima de pares. Para isso, primeiro mostramos um método
de determinar o peso de pares de um vetor x. Um caracterização similar de
peso de pares foi provada em [1].
A observação chave é que se xi = 1, então dois sı́mbolos no par π(x), a
(i-1)-ésimo e i-ésimo sı́mbolo de pares será não nulo. É claro que a condição
xi−1 = 1 também causa o (i-1)-ésimo par de sı́mbolos não nulo. Assim, a me-
dida que incrementamos o ı́ndice i, podemos pensar na condição (x1 −1, xi ) =
(0, 1) contribuindo com dois novos sı́mbolos não nulos à π(x), enquanto que
a condição (xi−1 , xi ) = (1, 1) contribui com apenas um. Portanto para de-
terminar o peso de π(x), é necessário determinar o número de ocorrências
da sequência (xi−1 , xi ) = (0, 1) no vetor x, que mostraremos como fazer a
seguir.
Para x = (x0 , x1 , . . . , xn−1 ), definimos

x0 = (x0 + x1 , x1 + x2 , . . . , xn−1 + x0 ). (1)


O próximo Lema fornece uma caracterização do peso de pares de um
vetor x.
Lema 1.1. Para x ∈ An , ωP (x) = ωH (x) + ωH (x0 )/2.
Demonstração. Seja
S0 = {i; (xi , xi+1 ) 6= (0, 0) e xi = 1},
S1 = {i; (xi , xi+1 ) 6= (0, 0) e xi = 0}.
Assim, | S0 |= ωH (x), S0 ∩ S1 = ∅, e ωP (x) =| S0 | + | S1 | . Para todo
0 ≤ i ≤ n − 1, i ∈ S1 se, e somente se, xi = 0 e xi+1 = 1. Nesse caso,
x0i = xi + xi+1 = 1. Portanto, temos
| S1 |=| {i; xi = 0 e x0i = 1} | .
Note que para qualquer x ∈ An ,
| {i; xi = 0 e x0i = 1} |=| {i; xi = 1 e x0i = 1} |,
e a soma das cardinalidades desses dois conjuntos é ωH (x0 ). Assim, | S1 |=
ωH (x0 )
2
e
ωH (x0 )
ωP (x) =| S0 | + | S1 |= ωH (x) + .
2

6
Teorema 1.1. Seja C um código cı́clico linear de dimensão maior que 1.
Então,
dH (C)
dP (C) ≥ dH (C) + d e.
2
Demonstração. Seja x = (x0 , . . . , xn−1 ) uma palavra em C. Suponha que
x 6= 1. Como o código é cı́clico, (x1 , . . . , xn−1 , x0 ) ∈ C e assim

x0 = (x0 , . . . , xn−1 ) + (x1 , . . . , xn−1 , x0 ) ∈ C.

Note que o peso de x0 é par e como x 6= 1, temos x0 6= 0. Logo ωH (x0 ) ≥


2ddH (C)/2e. Além disso, ωH (x) ≥ dH (C). Assim,

dH (C)
ωP (x) = ωH (x) + ωH (x0 )/2 ≥ dH (C) + d e.
2
Agora, assuma que x = 1 é uma palavra do código C, nesse caso ωP (x) =
n. Vamos mostrar que se a dimensão de C é maior que um, então dH (C) ≤
b2n/3c. Isso implica que

dH (C)
dH (C) + d e ≤ b2n/3c + dn/3e = n = ωP (x).
2
Como a dimensão de C excede um, ele contém no mı́nimo três palavras
distintas não nulas. Escolha duas delas, x1 e x2 . Se fosse verdade que dH (C) >
b2n/3c, então isso significaria que ωH (x1 ), ω(x2 ) ≥ d2n/3e + 1, daı́

ωH (x1 + x2 ) ≤ 2n − (2.b2n/3c + 1) ≤ b2n/3c,

o que é uma contradição. Portanto, concluı́mos que dH (C) ≤ b2n/3c, com-


pletando a demonstração.

1.4 Decodificação
Pelo Teorema 1, concluı́mos que os códigos cı́clicos lineares tem uma distância
mı́nima de pares maior, permitindo assim a correção de um número maior
de erros. É, portanto interessante construir decodificadores eficientes para
esses códigos, que é o tópico desta seção. Primeiro, observe que, como esses
códigos são lineares, foi mostrado em [5] como uma versão modificada da
sı́ndrome da decodificação pode ser usada para corrigir erros de pares de
sı́mbolos dentro da capacidade de correção de erros dos códigos. No entanto,
como a decodificação da sı́ndrome sofre complexidade exponencial,
nosso objetivo é fornecer decodificadores mais eficientes, cuja complexidade
é da mesma ordem que os decodificadores clássicos para códigos cı́clicos.

7
Seja C um código linear cı́clico com distância mı́nima dH (C) = 2t + 1.
Suponha que haja um decodificador para C que possa corrigir até t erros.
Vamos mostras como usar esse decodificador no projeto de um decodificador
para o código π(C) que corrige até t0 = b 3t+1
2
c erros de pares de sı́mbolos .
Assuma que a dimensão de C seja maior que um. Essa condição implica,
de acordo com a prova do Teorema 1, que dH (C) ≤ b2n/3c; que é, 2t + 1 ≤
b2n/3c, ou
b2n/3c − 1
t≤b c < n/3.
2
É direto mostrar que t0 < n/2.
Definimos o decodificador como uma aplicação DC : An −→ C ∪
{F }, onde F denota as falhas do decodificador. Para uma palavra y ∈ An
escrevemos DC (y) = ĉ ∈ C∪{F }. Se c ∈ C é a palavra transmitida e dH (c, y) ≤
t, então ĉ = c. Entretanto, se dH (c, y) > t, então ou ĉ é uma palavra do código
diferente de c, cuja distância de Hamming da palavra recebida y é no máximo
t, isto é, dH (ĉ, y) ≤ t, ou ĉ = F , indicando que tal palavra não existe.
Agora introduziremos outro código que será usado no ”algoritmo”de de-
codificação de pares de sı́mbolos. O código de dupla repetição de C é o código
definido por
C2 = {(c, c); c ∈ C}.
Note que seu comprimento é 2n e sua distância de Hamming satisfaz
dH (C2 ) = 2dH (C). O código C2 pode corrigir até 2t erros e assumimos que ele
tem um decodificador DC2 : An × An −→ An ∪ {F }. Toda palavra em C2
consiste de duas palavras idênticas de C e daı́, por simplicidade de notação,
assumimos que quando (ĉ, ĉ) é uma palavra do código à uma distância de
no máximo 2t de uma palavra recebida (y1 , y2 ), o decodificador DC2 retorna
ĉ ∈ C. Adiamos o disign explı́cito do decodificador DC2 para o final da seção.
Considere uma palavra do código c ∈ C e seja π(c) ∈ π(C) seu vetor de
pares de sı́mbolos correspondente. Seja y ∈ π(c) + e a palavra recebida, onde
e ∈ (A × A)n é o vetor erro com peso ωH (e) ≤ t0 = b 3t+1 2
c. Vamos descrever
n n
um decodificador Dπ : (A, A) −→ {0, 1} que pode corrigir o erro e.
O vetor recebido tem a forma

y = ((y0,0 , y0,1 ), (y1,0 , y1,1 ), . . . , (yn−1,0 , yn−1,1 )).

Definimos três vetores relacionados:

8
yL = (y0,0 , . . . , yn−1,0 ),
yR = (y0,1 , . . . , yn−1,1 ),
yS = yL + yR
= (y0,0 + y0,1 , . . . , yn−1,0 + yn−1,1 ).

Como o vetor y sofre no máximo t0 pares de erros, cada um dos vetores


yL e yR tem no máximo t0 erros. Pode-se pensar em yL como uma versão
barulhenta de c = (c0 , c1 , . . . , cn−1 ), e yR como a versão barulhenta de um
deslocamento cı́clico à esquerda de c, (c1 , . . . , cn−1 , c0 ). Além disso, yL e o
(1)
deslocamento cı́clico à direita de yR , yR = (yn−1,1 , y0,1 , . . . , yn−2,1 ), pode ser
visto como duas versões barulhentas da palavra c. Além disso, o vetor yS tem
no máximo t0 erros com respeito à palavra código c0 = (c0 + c1 , . . . , cn−1 + c0 ).
No geral, a palavra c0 não determina unicamente o valor de c. Entretanto,
vamos mostrar agora que, nessa configuração, isso acontece. Esse resultado,
que usaremos no desenvolvimento do algoritmo de decodificação Dπ , é de-
monstrado no seguinte lema.

Lema 1.2. Na configuração do canal de leitura de pares de sı́mbolos descrita


acima, se a palavra do código c0 ∈ C é recuperada com sucesso, então podemos
determinar unicamente a palavra do código c.

Demonstração. Como a palavra c0 ∈ C é decodificada com sucesso, sabemos


o valor de

c0 = (c00 , c01 , . . . , c0n−1 ) = (c0 + c1 , c1 + c2 , . . . , cn−1 + c0 ).


Pi−1 0
A palavras c satisfaz ci = c0 + j=0 c . Assim, se definirmos c̃ = (c̃0 , . . . , c̃n−1 )
Pji−1 0
por c̃0 = 0 e para 1 ≤ i ≤ n−, c̃i = j=0 cj , então a palavra do código c é
igual à c̃ ou c̃ + 1, dependendo do valor de c0 . A distância entre yL e c é no
máximo t0 e dH (c, c + 1) = n. Recordando que t0 < n/2, temos

dH (yL , c + 1) = n − t0 > t0 .

Logo, se dH (yL , c̃) < dH (yL , c̃ + 1), então c = c̃; caso contrário, c = c̃ + 1.
Em ambos os casos, podemos recuperar a palavra do código c.
Por conveniência, denotamos a palavra do código c obtida da palavra c0
pelo método do Lema 2 como c0 ∗; Isso é, c0 ∗ = c.
O número de erros de pares no vetor y é no máximo t0 . Cada erro nos
pares de sı́mbolos corresponde à um ou dois bits nos pares de sı́mbolos. Seja

9
E1 o número de erros de pares de sı́mbolos de bit único e E2 o número de
pares de erros de bit duplo, onde E1 + E2 ≤ t0 , Então, o número de erros em
(1)
yS é E1 e o número de erros em (yL , yR ) é E1 + 2E2 .
O seguinte resultado também será útil na validação do algoritmo de de-
codificação de erros de pares de sı́mbolos.

Lema 1.3. Se c ∈ C, y = π(c) + e, e ωH (e) ≤ t0 , então DC (yS ) = c0 ou


(1)
DC2 ((yL , yR )) = c.

Demonstração. Se E1 ≤ t, então o decodificador DC (yS ) é bem sucedido.


Caso contrário, E1 ≥ t + 1 e E2 ≤ t0 − (t + 1), então o número de erros em
(1)
(yL , yR ) satisfaz
3t + 1
E1 + 2E2 ≤ t0 + t0 − (t + 1) = 2b c − (t + 1) ≤ 2t.
2
(1)
Isso implica que o decodificador DC2 ((yL , yR )) é bem sucedido.
Pelo Lema 3, DC e DC2 , é bem sucedido. Entretanto, não é óbvio qual
deles, e a principal tarefa do algoritmo ”subjascente”a aplicação do decodifi-
cador Dπ , que agora descrevemos, é identificar o decodificador bem sucedido.
Seja y um vetor recebido, a saı́da do decodificador Dπ (y) = ĉ é calculada
do seguinte modo:
Decodificador Dπ :
Passo 1: c1 = DC (yS ), e1 = dH (c1 , yS ).
(1) (1)
Passo 2: c2 = DC2 ((yL , yR )), e2 = dH ((c2 , c2 ), (yL , yR )).
Passo 3: Se c1 = F ou ωH (c1 ) é ı́mpar então ĉ = c2 .
Passo 4: Se e1 ≤ b t+2 2
c, então ĉ = c1 ∗ .
Passo 5: Se e1 > b 2 c, seja e1 = b t+2
t+2
2
c + a, (1 ≤ a ≤ d 2t e − 1)
a) Se e2 ≤ t0 + a então ĉ = c2 ,
b) Caso contrário, ĉ = c1 ∗ .
A corretabilidade do decodificador é provada no próximo Teorema.

Teorema 1.2. As saı́das do decodificador satisfazem Dπ (y) = ĉ = c.

Demonstração. De acordo com o Lema 3, no mı́nimo um dos dois decodifi-


cadores nos Passos 1 e 2 são bem sucedidos. Passos 3-5 ajudam a determinar
qual dos dois decodificadores funcionam.
Passo 3: Como yS é uma versão barulhenta da palavra c0 , a operação de
decofificação no Passo 1 tenta decodificar c0 , que tem peso par. Se c1 = F ou
o peso de Hamming de c1 for ı́mpar, então esta operação de decodificação ne-
cessariamente falhará, implicando que a operação de decodificação na Etapa

10
2 foi bem sucedida. Se chegarmos aos Passos 4 e 5, então ωH (c1 ) deve ser
par.
Passo 4: Agora mostraremos que se e1 ≤ b t+2 2
c, então E1 ≤ b t+2
2
c, e
portanto a operação de decodificação no Passo 1 foi bem sucedida. Para
ver isso, primeiro observe que a distância mı́nima de Hamming do código C
é 2t + 1. Se houver uma correção incorreta no Passo 1, a palavra yS será
corrigida incorretamente para alguma palavra do código de peso par. O peso
do vetor de erro encontrado no Passo 1, e1 , é no máximo b t+2 2
c. Como a
distância de Hamming mı́nima do código C é 2t + 1, o número E1 de erros
em yS satisfaz
t+2 3t
E1 ≥ 2t + 2 − b c = d e + 1 > t0 ,
2 2
contradizendo o fato do número de erros em yS ser no máximo t0 . Assim, a
condição em e1 implica que a decodificação c1 = DC (yS ) = c0 é bem sucedida,
e pelo Lema 2, podemos concluir que

ĉ = c1 ∗ = c0 ∗ = c.

Passo 5: Resta verificar o caso em que e1 > b t+2


2
c. Como e1 ≤ t, podemos
t+2 t
escrever e1 = b 2 c + a, onde 1 ≤ a ≤ d 2 e − 1.
Assuma que o decodificador do Passo 2 falhe. Então, de acordo com o
Lema 3, o decodificador c1 = DC (yS ) é bem sucedido, implicando que
t+2
E1 = e1 = b c + a.
2
Então o valor de E2 satisfaz
 
t+2 3t + 1 t+2
E2 ≤ t0 − b c+a =b c−b c − a ≤ t − a.
2 2 2
(1)
O número total de erros em (yL , yR ) é
5t + 1
E1 + 2E2 ≤ t0 + t − a = b c − a.
2
(1)
Como o decodificador DC2 ((yL , YR )) falha e a distância mı́nima de C2 é
4t + 2, segue que o peso do vetor erro no Passo 2, e2 , deve satisfazer

 
5t + 1
e2 ≥ 4t + 2 − (E1 + 2E2 ) ≥ 4t + 2 − b c−a
2
3t + 1
≥ b c + a + 1 = t0 + a + 1.
2
11
Logo, concluı́mos que se e2 ≤ t0 + a, então o decodificador do Passo 2
deve funcionar.
Como altenativa, suponha que a decodificação na Etapa 1 falhe. Como
no Passo 4, isso significa que o números de erros E1 em yS é no mı́nimo
 
t+2 3t
E1 ≥ 2t + 2 − b c + a = d e − (a − 1).
2 2
Como E1 + E2 ≤ t0 , segue que E2 satisfaz 0 ≤ E2 ≤ a − 1, e E1 + 2E2 , o
(1)
número total de erros em (yL , yR ), satisfaz

t0 − (a − 1) ≤ E1 + 2E2 = (E1 + E2 ) + E2 ≤ t0 + a − 1.
(1)
Logo, a operação de decodificação DC2 ((yL , yR )) é bem sucedida, e

t0 − (a − 1) ≤ e2 ≤ t0 + a − 1.

Assim, se e2 > t0 + a, então o decodificador no Passo 1 deve ser bem


sucedido. Isso completa a explicação das atribuições em a) e b) no Passo
5.
Vamos demonstrar o algoritmo de decodificação no seguinte exemplo.
Exemplo 1.2. Nesse exemplo escolhemos o código BCH C, cı́clico, binário,
de comprimento 15 e corretor de erros triplos, então dH (C) = 7, dP (C) =
7+d 27 e = 11, t = 3, e t0 = 5. Logo o código pode corrigir até 5 pares de erros.
Assuma a palavra armazenada como a palavra com todas as coordenadas
nulas 0.
Seja y o vetor recebido

y = (00, 11, 10, 00, 00, 00, 11, 00, 10, 00, 00, 11, 00, 00, 00).

Então,

yL = (0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0),
yR = (0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0),
yS = (0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0),

e
(1)
yR = (0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0).
No Passo 1 de algoritmo de decodificação calculamos

c1 = DC (yS ), e1 = dH (c1 , yS ).

12
Como yS sofre 2 erros e o decodificador DC pode decodificar no máximo
três erros, temos c1 = 0 e e1 = 2. No Passo 2 calculamos
(1) (1)
c2 = DC2 ((yL , yR )), e2 = dH ((c2 , c2 ), (yL , yR )).
(1)
A palavra (yL , yR ) sofreu oito erros e como o decodificador C2 tem distância
mı́nima 14, o decodificador DC2 pode corrigir até seis erros. Logo, a saı́da c2
é igual à F , indicando que não existe uma palavra de distância no máximo
(1)
seis de (yL , yR ), ou à alguma palavra c2 tal que e2 = 6. A condição no Passo
3 falha, mas a condição no Passo 4 é satisfeita pois e1 = 2 = b 3+2 2
c = 2.
Portanto, concluı́mos que o decodificador no Passo 1 é bem sucedido e po-
demos decodificar a palavra com ĉ = 0∗ = 0. Note que a operação 0∗ pode
resultar em 0 ou 1, mas podemos eliminar a palavra 1 pois sua distância da
palavra recebida é muito grande.
Como outro exemplo, considere o vetor recebido y dado por

y = (10, 00, 01, 00, 10, 00, 00, 00, 00, 10, 00, 00, 00, 10, 00),

com vetores associados

yL = (1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0),
yR = (0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
yS = (1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0),
(1)
yR = (0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0).

A palavra yS sofreu cinco erros, então no Passo 1 a palavra decodificada c1


ou é o sı́mbolo falho F ou alguma palavra de peso sete ou oito com distância
igual a dois ou três de yS , respectivamente. Vamos assumir para esse exemplo
que c1 é uma palavra de peso oito e e1 = 3.
(1)
A palavra de entrada (yL , yR ) sofreu cinco erros; portanto, no Passo 2
(1)
a operação de decodificador DC2 ((yL , yR )) será bem sucedido, então c2 = 0
e e2 = 5. Agora, as condições dos Passos 3 e 4 não são satisfeitas, então
o Passo 5 vai determinar qual decodificador vai funcionar. Primeiramente,
vemos que a = 1 e então e2 = 5 < 5 + 1 = t0 + a. Assim, a condição no Passo
5 a) é satisfeita e concluı́mos que o segundo decodificador é bem sucedido, isto
é, ĉ = 0.
Para completar a apresentação do decodificador, retornamos para a cons-
trução do decodificador DC2 . Esse decodificador recebe dois vetores, y1 =
(y1,0 , . . . , y1,n−1 ) e y2 = (y2,0 , . . . , y2,n−1 ). Cada um deles é uma versão baru-
lhenta de alguma palavra c ∈ C, e o objetivo é corrigir o total de 2t erros

13
nos dois vetores. Definimos o vetor ỹ = (y˜0 , . . . , ỹn−1 ) tal que para todo
0 ≤ i ≤ n − 1, ỹi = y1,i se y1,i = y2,i , e caso contrário ỹi =? para indicar um
exclusão. Se o número de erros em ỹ é τ e o número de exclusões é ρ, então
temos 2τ + ρ ≤ 2t = d(C) − 1, que está dentro da capacidade de correção
de erros e exclusões de C. Ficamos apenas com o problema de definir um
decodificador que corrige erros e exclusões para códigos cı́clicos. Para isso,
referimos [14],[16]. Alternativamente, podemos tratar o código C2 como um
código ”contatenado”, onde o código interno é simplesmente um código de
repetição de comprimento dois. Uma técnica geral para decodificar códigos
concatenados é descrita em [15, cap12].
Um erro de pares de sı́mbolos pode alterar o valor de um único bit ou
de ambos em um par de sı́mbolos. No entanto, o conhecimento sobre o
número máximo de erros de pares de sı́mbolos de cada tipo pode ser conhecido
antecipadamente. Por exemplo, um erro de pares de sı́mbolos que corrompe
apenas um bit pode ser o resultado de um bit que foi gravado erroneamente
na mı́dea, enquanto um erro de dois bits pode ser resultado de um ruı́do de
leitura. Assim, consideramos códigos que destinguem entre esses dois tipos
de erros. Especı́ficamente, dizemos que um código é um (t1 , t2 ) código de
correção de erros de pares de sı́mbolos se puder corrigir até t1 erros de pares
de sı́mbolos de bit único e até t2 erros de pares de bit duplo.
Nossa discussão de (t1 , t2 ) código de correção de erros de pares de sı́mbolos
usa como ponto de partida um código linear cı́clico C com distância mı́nima
de Hamming dH (C) e um decodificador DC . O próximo teorema fornece uma
condição em dH (C) que implica que o código C é um (t1 , t2 ) código de correção
de erros de pares de sı́mbolos.
Teorema 1.3. Um código cı́clico linear C de comprimento n e distância
mı́nima dH (C) é um (t1 , t2 ) código de correção de erros de pares de sı́mbolos
se
dH (C) ≥ min{t1 + 2t2 + 1, 2t1 + 1},
e t1 + t2 < n/2.
Demonstração. Examinaremos duas abordagens diferentes para corrigir tais
erros.
1. A primeira abordagem usa o decodificador DC2 do código de dupla
repetição de C, como introduzido anteriormente nessa seção. Esse de-
codificador vai precisar corrigir t1 + 2t2 erros e assim
dH (C2 ) = 2dH (C) ≥ 2(t1 + 2t2 ) + 1,
ou
dH (C) ≥ t1 + 2t2 + 1.

14
2. A segunda abordagem usa o decodificador DC que aplicamos no vetor
yS , também descrito anteriormente. Esse decodificador deve corrigir
t1 erros e assim dH (C) = 2t1 + 1. Note que de acordo com o Lema
2, a condiçao t1 + t2 < n/2 garante o recuperação total da palavra
armazenada c baseada na decodificação de c0 .

Concluı́mos que se a condição na afirmação do Teorema é satisfeita, po-


demos escolher qualquer um dessas abordagens como base para um decodi-
ficador bem sucedido.
Do Teorema 3, concluı́mos que sabendo os valores de t1 e t2 simplifica
significantemente a operação do decodificador desde que sabemos qual dos
dois decodificadores usar para corrigir os pares de erros. No entanto, esse
conhecimento pode reduzir o limite inferior na distância mı́nima de Hamming
necessária do código C, e portanto a redundância de código necessária. Para
ver isto, assuma que construı́mos um (t1 , t2 ) código de correção de pares de
sı́mbolos usando um código linear cı́clico C que corrige t1 + t2 pares de erros.
Então, de acordo com o Teorema 1, sua distância mı́nima de Hamming dH (C)
deve satisfazer

dH (C)
dH (C) + d e ≥ 2(t1 + t2 ) + 1. (2)
2
Por outro lado, de acordo com o Teorema 3, dH (C) deve ser maior ou
igual ao min{t1 + 2t2 + 1, 2t1 + 1}. É simples verificar que para quaisquer dois
inteiros não negativos t1 e t2 , este limite inferior em dH (C) não é maior que
o limite inferior em dH (C) implicado por 2.
Para concluir a discussão dessa seção, notemos que o decodificador Dπ
apresentado usa dois decodificadores: o primeiro é DC para o código C e
o segundo é DC2 para o código C2 . Como não há nenhum requisito es-
pecı́fico para esses decodificadores além da capacidade de correção de er-
ros e eliminação, podemos usar qualquer um dos decodificadores existentes
para códigos cı́clicos. Portanto, a complexidade do decodificador Dπ será da
mesma ordem que os melhores decodificadores para códigos cı́clicos. Isto pro-
porciona uma melhora significativa no decodificador do tipo sı́ndrome para
códigos lineares, que foi dado em [5].
Finalmente, notamos que uma abordagem de decodificação semelhante à
discutida acima foi apresentada em [17]. O objetivo em [17] era usar códigos
linear cı́clicos binários corretores de erros para detectar e corrigir múltiplas
erros binários cujo peso total é limitado. O design do decodificador possui

15
a mesma propriedade que, em um código cı́clico linear, se c é uma palavra-
código, então c0 também é. Assim, a decodificação de pelo menos c e c0 deve
ser bem sucedida.
Na próxima seção, estendemos alguns dos nossos resultados no canal de
leitura de pares de sı́mbolos para os canais de leitura de b-sı́mbolos, com
b ≥ 3.

1.5 Extensão para canais de leitura de b-sı́mbolos


Nessa seção estudamos os canais de leitura de b-sı́mbolos, 3 ≤ b < n, onde
b sı́mbolos são detectados em cada operação de leitura. Primeiramente, de-
finimos formalmente o modelo de canal de leitura de b-sı́mbolos. Provamos
alguma de suas propriedades básicas, ao longo das linhas do modelo de canal
de leitura de pares de sı́mbolos e da distância de pares de sı́mbolos. Em se-
guida, nos voltamos para as construções de códigos para o canal de leitura de
b-sı́mbolos. Generalizando os resultados em [1], analisamos as propriedades
de distância de b-sı́mbolos dos códigos obtidos pela intercalação dos compo-
nentes de b códigos, e então descrevemos um algoritmo de decodificação que
decodifica até o raio de decodificação. Finalmente, estudamos as proprieda-
des do sı́mbolo b de duas famı́lias especı́ficas de códigos, a saber, os códigos
correspondentes a todo espaço de palavras de código, An , e os códigos de
Hamming cı́clicos lineares de comprimento n = 2m − 1, m ≥ 3.

1.5.1 Propriedades Básicas


Definição 1.1. Para b ≥ 3, os vetores de b-sı́mbolos correspondentes ao
vetor x = (x0 , x1 , . . . , xn−1 ) ∈ An é definido como
n
πb (x) = [(x0 , . . . , xb−1 ), . . . , (xn−1 , x0 , . . . , xb−2 )] ∈ Ab .

Nos referimos aos elementos de πb (x) com b-sı́mbolos.


Definição 1.2. A distância de b-sı́mbolos entre x e y, denotada por
db (x, y), é definida como

db (x, y) = dH (πb (x), πb (y)).

Por simplicidade, nos referimos à essa distância como b-distância. Simi-


larmente, definimos o b-peso de um vetor x com ωb (x) = ωH (πb (x)). Como
foi o caso para distância de pares, é fácil verificar que db (x, y) = ωb (x + y),
para todos x, y. Por conveniência de notação, se o i-ésimo sı́mbolo πb (x)i de
πb (x) não é a b-tupla zero, escreveremos πb (x)i 6= 0.
A seguinte proposição é uma generalização natural da Proposição 2.

16
Proposição 1.2. Seja x ∈ An ser tal que 0 < ωH (x) ≤ n − (b − 1). Então,

ωH (x) + b − 1 ≤ ωb (x) ≤ b.ωH (x).

Demonstração. Seja S = {i; xi 6= 0}, então | S |= ωH (x). Como todo


sı́mbolo xi aparece em b coordenadas de πb (x), o número de b-sı́mbolos não
nulos em πb (x) é no máximo | S | .b = ωH (x).b, implicando no limite superior
ωb (x) ≤ b.ωH (x).
Para provar o limite inferior, consideraremos dois casos. Primeiro, assuma
que x não possui um conjunto com b ou mais zeros consecutivos. Então, para
cada ı́ndice i, temos πb (x)i 6= 0, e assim ωb (x) = n. O que implica que

ωH (x) + b − 1 ≤ n − (b − 1) + (b − 1) = n = ωb (x).

Agora, considere o caso em que x contém uma sequência de no mı́nimo b


consecutivos zeros. Como, por hipótese, ωH (x) > 0, podemos encontrar um
ı́ndice k tal que xk = xk+1 = . . . = xk+b−1 = 0, e xk+b = 1. Assim, para todo
k + 1 ≤ i ≤ k + b − 1, temos πb (x)i 6= 0. Além disso, para todo i tal que
xi = 1, temos também que πb (x)i 6= 0. Segue que

ωb (x) ≥ ωH (x) + b − 1.

Nosso próximo objetivo é generalizar adequadamente o Lema 1, dando


uma caracterização útil de ωb (x) para b ≥ 3 arbitrário. Para fazer isso,
introduziremos para todo x ∈ An um vetor auxiliar x̂ ∈ An , obtido a partir de
x invertendo toda seqência de b−2, ou menos, zeros consecutivos em x. Isto é,
definimos x̂ como segue. Se (xi , xi+1 , . . . , xi+k , xi+k+1 ) = (1, 0, . . . , 0, 1) para
algum 0 ≤ i ≤ n − 1 e k ≤ b − 2, então x̂ = 1 − xj = 1 para i + 1 ≤ j ≤ i + k.
Para todos os outros valores de j, x̂j = xj .

Exemplo 1.3. Assuma b = 4 e seja x = (0, 1, 1, 0, 0, 0, 1, 0). Então

x̂ = (1, 1, 1, 0, 0, 0, 1, 1).

Note que a sequência de zeros consecutivos começam na posição 3 e tem


comprimento b − 1 = 3, assim esses zeros não mudam em x̂, enquanto que
a sequência de zeros ciclicamente consecutivos começa na posição 7 e tem
comprimento 2 < b − 1 = 3, e portanto esses são os zeros que mudam.

Agora, nós afirmamos e provamos a generalização do Lema 1.

17
Lema 1.4. Para quaisquer x ∈ An e inteiro b ≥ 3,
ωH (x̂0 )
ωb (x) = ωH (x̂) + (b − 1). .
2
Demonstração. Vamos mostrar primeiro que ωb (x) = ωb (x̂). As únicas posições
j para o qual πb (x)j e πb (x̂)j se diferem são as que πb (x)j = (xj , . . . , xj+b−1 )
contém um bit nulo em uma sequência de comprimento k + 2 da forma
(xi , xi+1 , . . . , xi+k , xi+k+1 ) = (1, 0, . . . , 0, 1)
onde k ≤ b − 2. Os bits nulos xi+1 , . . . , xi+k aparecem no j-ésimo sı́mbolo
de πb (x) para i − b + 2 ≤ j ≤ i + k. Entretanto, como xi = xi+k+1 = 1,
nessa faixa de valores de j, vemos que ambos πb (x)j 6= 0 e πb (x̂)j 6= 0. Para
todas as outras posições j, os bits correspondentes de πb (x)j e πb (x̂)j são os
mesmos e então πb (x)j 6= 0 se, e somente se, πb (x̂)j 6= 0.
Agora, vamos determinar o valor de ωb (x̂), fazendo uso do fato que qual-
quer sequência de zeros consecutivos em x̂ tem comprimento no mı́nimo b−1.
Seja

S0 = {i; πb (x̂)i 6= 0, x̂i = 1},


S1 = {i; πb (x̂)i 6= 0, x̂i = 0, x̂i+1 = 1},
..
.
Sb−2 = {i; πb (x̂)i 6= 0, x̂i = . . . = x̂i+b−3 = 0, x̂i+b−2 = 1},
Sb−1 = {i; πb (x̂)i 6= 0, x̂i == . . . = x̂i+b−2 = 0, x̂i+b−1 = 1},

Claramente, ωH (x̂) =| S0 | e, como Sj ∩ Sl = ∅, para todo 0 ≤ j < l ≤


b − 1, também temos
b−1
X
ωb (x̂) =| ∪b−1
i=0 Si |= | Si | .
i=0

Agora, vamos mostrar que para todo 2 ≤ l ≤ b − 1, | S1 |=| Sl | . Se


i ∈ S1 então (x̂i , x̂i+1 ) = (0, 1). Como não existe sequência de menos que
b − 1 zeros consecutivos, temos
(x̂i−(b−2) , . . . , x̂i , x̂i+1 ) = (0, . . . , 0, 1).
e assim i − (l − 1) ∈ Sl . Logo, | Sl |≥| S1 | . Para a inequação oposta, note
se i ∈ Sl , l ≥ 1, então
(x̂i , x̂i+1 ), . . . , x̂i+l−1 , x̂i+l ) = (0, . . . , 0, 1).

18
Assim, (x̂i+l−1 , x̂i+l ) = (0, 1), então i + l − 1 ∈ S1 , implicando que | S1 |≥|
Sl | . logo, | S1 |=| Sl | para todo 2 ≤ l ≤ b − 1. Lembre-se que o vetor x̂0 foi
definido como em (1) para ser o vetor
x̂0 = (x̂0 + x̂1 , . . . , x̂n−1 + x̂0 ),
ωH (x̂0 )
e portanto, como na prova do Lema 1, | S1 |= 2
então concluı́mos que
b−1
X ωH (x̂0 )
ωb (x̂) = | Si |= ωH (x̂) + (b − 1). .
i=0
2

Exemplo 1.4. Assuma b = 4 e seja x = (1, 0, 0, 0, 1, 0, 0, 1).


Então ωH (x) = 3,
π4 (x) = [1000, 0001, 0010, 0100, 1001, 0011, 0110, 1100],
e, assim, ω4 (x) = 8. É fácil verificar que as inequações da Proposição 3 são
satisfeitas.
Vemos também que
x̂ = [1, 0, 0, 0, 1, 1, 1, 1]
e
x̂0 = [1, 0, 0, 1, 0, 0, 0, 0],
então ωH (x̂) = 5 e ωH (x̂0 ) = 2. A relação no Lema 4 é claramente satisfeita.
Em analogia a definição de códigos de pares de sı́mbolos, definimos o
código de leitura de b-sı́mbolo de um código C sobre A como πb (C) = {πb (c); c ∈
C} sobre Ab . Referindo a Proposição 3, vemos que 0 < dH (C) ≤ n − (b − 1),
então

dH (C) + b − 1 ≤ db (C) ≤ b.dH (C). (3)


Um erro de b-sı́mbolo no i-ésimo sı́mbolo de πb (c) modifica na mı́nimo um
de b sı́mbolos no vetor πb (c)i = (xi , . . . , xb+i−1 ). Usando o mesmo raciocı́nio
da prova da Proposição 3 em [1], vemos que um código C pode corrigir qual-
quer t erros de b-sı́mbolos se db (C) ≥ 2t + 1.
Na próxima seção, vamos estudar a b-distância de um código ”interca-
lado”. Notamos que uma extenção do Teorema 1 não é direta de derivar
nesse caso. Ou seja, se c é uma palavra de um código linear cı́clico C, então
os vetores ĉ e ĉ0 não pertencem necessáriamente ao código C, e assim não é
possı́vel usar o Lema 4 para chegar a um limite na b-distância mı́nima de um
código cı́clico binário.

19
1.5.2 Construção de códigos por intercalação
O esquema de intercalação estudado em [1] gera códigos C que satisfazem
dP (C) = 2dH (C). Vamos mostrar como essa construção pode ser generalizada
para b ≥ 3 arbitrário, então geramos códigos que satisfazem db (C) = b.dH (C).
Esse resultado também mostra que o limite superior na b-distância mı́nima
indicada em 3 é mantida. A notação padrão de (n, M, d) será usado para
denotar os parâmetros de um código binário de comprimento n, tamanho M
Qb−1 de b códigos C0 , . . . , Cb−1 , onde para
e distância mı́nima d. Dada uma coleção
0 ≤ i ≤ b − 1 o código C é um (bn, i=0 Mi , min0≤i≤b−1 {di }) código definido
como segue:

C = {(c0,0 , . . . , cb−1,0 , c0,1 , . . . , cb−1,1 , . . . , c0,n−1 , . . . , cb−1,n−1 );


ci = (ci,0 , . . . , ci,n−1 ) ∈ Ci , para 0 ≤ i ≤ b − 1}. (4)

Teorema 1.4. Seja C0 , . . . , Cb−1 um conjunto de b códigos binários com res-


pectivos parâmetros (n, Mi , di ), para 0 ≤ i ≤ b−1. Então o código intercalado
C definido em (4) satisfaz

db (C) = b.dH (C) = b.min0≤i≤b−1 {di }.

Demonstração. Toda palavra c ∈ C tem a forma

c = (c0,0 , . . . , cb−1,0 , c0,1 , . . . , cb−1,1 , . . . , c0,n−1 , . . . , cb−1,n−1 ),

obtido intercalando palavras

ci = (ci,0 , . . . , ci,n−1 ) ∈ C, 0 ≤ i ≤ b − 1.

Se c 6= 0, então ci 6= 0 para algum 0 ≤ i ≤ b − 1. Os sı́mbolos em ci são


separados por no mı́nimo b posições de um pro outro em c e, assim, existem
no mı́nimo b.ωH (ci ) sı́mbolos em πb (c) que não são nulos. Isso é,

ωb (c) ≥ b.ωH (ci ) ≥ b.min0≤i≤b−1 {di } = b.dH (C).

A inequação contrária segue do fato de que existe um palavra c ∈ C tal


que ωH (c) = dH (C) e, de acordo com a Proposição 3,

ωb (c) ≤ b.ωH (c) = b.dH (C).

Concluı́mos que db (C) = b.dH (C), como afirmado.

20
De acordo com a observação no final da seção anterior, O Teorema 4
implica que o código intercalado C pode corrigir qualquer (bdb (C) − 1)/2c
erros de b-sı́mbolos. Agora, descreveremos um algoritmo para C que alcança
o raio de decodificação.
Para um vetor c = (c0 , . . . , cn−1 ) definimos o vetor de comprimento bn

(c)b = (c0 , . . . , c0 , . . . , cn−1 , . . . , cn−1 )

obtido repetindo b vezes cada bit em c. Agora, para cada componente do


código Ci , 0 ≤ i ≤ b − 1, do código intercalado C, seja (Ci )b o código de
comprimento bn
(Ci )b = {(c)b ; c ∈ Ci }.
Se Ci é um (n, Mi , di ) código, então (Ci )b é um (bn, Mi , bdi ) código. As-
sumimos que o código Ci tem um decodificador de distância limitada Di que
corrige erros de peso até o raio de decodificação. Como o código (Ci )b pode
ser interpretado com uma concatenação de um código externo Ci e um código
de b repetições, podemos também assumir que (Ci )b tem um decodificador
(Di )b que pode corrigir até b bdi2−1 c erros; para mais detalhes na construção
do decodificador (Di )b apartir do decodificador Di , novamente referimos o
leitor a [15, Ch. 12].
Assumimos que a palavra armazenada c ∈ C é

c = (c0,0 , . . . , cb−1,0 , c0,1 , . . . , cb−1,1 , . . . , c0,n−1 , . . . , cb−1,n−1 ),

onde ci = (ci,0 , ci,1 , . . . , ci,n−1 ) ∈ Ci para todo 0 ≤ i ≤ b − 1. Seja πb (C) o


vetor de leitura de b-sı́mbolo de c, e seja y o vetor recebido de comprimento
bn. Representamos y como

y = (y0 , . . . , ybn−1 )

onde yj = (yj,0 , . . . , yj,b−1 ), para 0 ≤ j ≤ bn − 1, assumimos que

dH (y, πb (c)) ≤ b(db (C) − 1)/2c.

Se indexarmos a posição do bit em c de 0 à bn − 1, o bit ci,j em c fica na


posição (jb + i), para 0 ≤ i ≤ b − 1, 0 ≤ j ≤ n − 1. Cada bit ci,j é lido b
vezes, correspondendo aos componentes yjb+i−(b−1),b−1 , . . . , yjb+i−1,1 , e yjb+i,0 ,
respectivamente.
Em seguida, combinamos essas estimativas de ci,j em um vetor binário
y i,j para 0 ≤ i ≤ b − 1, 0 ≤ j ≤ n − 1, onde

y i,j = (y jb+i−(b−1),b−1 , . . . , y jb+i−1,1 , y jb+i,0 ).

21
Finalmente, o vetor y, tratado como um vetor binário, é particionado nos
seguintes b vetores, cada um com comprimento bn bits,

y i = (y i,0 , y i,1 , . . . , y i,n−1 ),

para 0 ≤ i ≤ b − 1.

Lema 1.5. Para 0 ≤ i ≤ b − 1,

dH (y i , (ci )b ) ≤ b(db (C) − 1)/2c

onde dH denota a distância de Hamming sobre o alfabeto binário A.

Demonstração. Primeiro, note que, para 0 ≤ i ≤ b − 1, todo y i é uma versão


barulhenta da palavra

(ci )b = (ci,0 , . . . , ci,0 , . . . , ci,n−1 , . . . , ci,n−1 ) ∈ (Ci )b .

Além disso, todo erro de b-sı́mbolo em y pode mudar no máximo um dos


bits em todo y i e então a distância binária de Hamming entre (ci )b e y i é no
máximo b(db (C) − 1)/2c, que é,

dH (y i , (ci )b ) ≤ b(db (C) − 1)/2c.

Finalmente, do Teorema 4, temos

b(db (C) − 1)/2c = b(b.dH (C) − 1)/2c ≤ b(b.di − 1)/2c,

para todo i com 1 ≤ i ≤ b, assim o decodificador (Di )b pode decodificar com


sucesso a palavra y i . Então, para 0 ≤ i ≤ b − 1, a palavra ci é decodificada
com sucesso e, portanto, a palavra c também é.

1.5.3 Códigos com distância mı́nima de Hamming pequena


Nessa seção estudamos a b-distância mı́nima de duas classes especiais de
códigos. A primeira classe corresponde a aos livros de códigos ”completos”An
e a segunda aos códigos de Hamming lineares cı́clicos. Dado um vetor de com-
primento n sobre Ab , o decodificador majoritário gera para cada b-sı́mbolo
o maior valor entre seus b bits constituintes, ou ? se b é par e o número de
zeros e uns é igual. O lema seguinte fornece a b-distância mı́nima do código
An e prova que o decodificador majoritário pode ser usado para decodificar
até o raio de decodificação da b-distância.

22
Lema 1.6. Seja C = An . Para todo b ≥ 3, a b-distância mı́nima satisfaz
db (C) = b e o decodificador majoritário pode corrigir b b−1
2
c b-sı́mbolos de
erros.

Demonstração. Assuma x um vetor não nulo, e seja x̂ como definido na


seção II. Então x̂ 6= 0 e assim ωH (x̂) ≥ 1. Se x 6= 1, então ωH (x̂0 ) ≥ 2. Pelo
Lema 4 temos ωb (x) ≥ 1 + (b − 1). 22 = b. Se x = 1, então ωb (x) = n, e a
inequação é válida pelo fato de b < n. Concluı́mos que db (C) = b observando
que as palavras do código em πb (C), correspondem com o vetor de leitura de
b-sı́mbolos de uma palavra de peso um em C, tem b-peso b.
Se existem b b−12
c erros de sı́mbolos na versão recebida de πb (x), então para
todo 0 ≤ i ≤ n − 1, o bit xi do vetor x está errado em no máximo b b−1 2
c dos
b-sı́mbolos que fornecem uma estimativa desse bit. Assim, o decodificador
majoritário pode ser usado para recuperar todo bit xi e, portanto, o vetor
x.
O lema seguinte considera a b-distância de um código linear cı́clico de
Hamming, dando uma generalização do resultado em [1].

Lema 1.7. Se C é um código linear cı́clico de Hamming de comprimento


n = 2m − 1 e b + 2 ≤ m, então db (C) = 2b + 1.

Demonstração. Seja x ∈ C uma palavra não nula. Primeiro mostraremos que


ωb (x̂) ≥ 2b + 1. Claramente, ωH (x̂) ≥ ωH (x) ≥ 3. Assuma que x̂ 6= 1, então
ωH (x̂0 ) é um inteiro par positivo. Se ωH (x̂0 ) ≥ 4, então de acordo com o
Lema 4, temos ωb (x) ≥ 3 + (b − 1). 24 = 2b + 1. Se ωH (x̂0 ) = 2, então x̂ contém
um única sequência de consecutivos uns, cujo comprimento l deve satisfazer
l ≥ m. De outra forma, se l < m, as entradas não nulas da palavra x pode ser
restrita para no máximo m − 1 localizações. Se g(x) é um polinômio gerador
de grau m do código, isso significaria que existe um polinômio não nulo de
grau no máximo m − 1 que é um múltiplo de g(x), o que é impossı́vel. Assim,
pelo Lema 4 temos ωb (x̂) ≥ m + (b − 1). 22 = m + b − 1 ≥ 2b + 1. Finalmente,
notamos que se x̂ = 1, então ωb (x̂) = n ≥ 2b + 1 para b ≥ 3 e m ≥ b + 2.
Para mostrar que db (C) = 2b + 1, observe que C contém um palavra x de
peso três com dois uns consecutivos. Para tal palavra, o b-peso é exatamente
2b + 1.

23

Вам также может понравиться