Escolar Documentos
Profissional Documentos
Cultura Documentos
Por
Recife/PE
1999
1
UNIVERSIDADE FEDERAL DE PERNAMBUCO
CENTRO DE TECNOLOGIA E GEOCIÊNCIAS
DEPARTAMENTO DE ELETRÔNICA E SISTEMAS
Dezembro de 1999
Implementação algorítimica de códigos lineares para o 2-BAC 3
Resumo
.
Índice
1 Introdução ........................................................................................................................ 7
1.1 Canais de acesso múltiplo ......................................................................................... 8
Figura 1.1: Várias estações de rádio na Terra em comunicação com um único satélite.
7
8 Capítulo 1. Introdução
de canal. Nesta abordagem, o remetente pode usar o canal em sua plena capacidade no instante
em que desejar, como se este fosse exclusivamente seu. É o caso do sistema ALOHA projetado
por Abramson [18] na Universidade do Hawaii e do algoritmo de pilha projetado por
Capetanakis [19], então estudante de doutorado juntamente com o Prof. R. Gallager e,
independentemente por dois pesquisadores soviéticos B. Tsybakov e V. Mikhailov [20].
ruído
X1
Remetente 1
X2 f '(x)
Remetente 2
Canal de Acesso f(x)
Múltiplo
Remetente T XT
No capítulo 2 ,seção 2.5.2, são analisadas as regiões de capacidade para o canal aditivo
com dois usuários binários, inclusive nos casos especiais em que ambos os remetentes enviam
palavras-código de códigos de blocos lineares, bem como no caso em que apenas um dos
Implementação algorítimica de códigos lineares para o 2-BAC 9
remetentes envia palavras-código de um código de bloco linear, conforme vemos nas regiões
hachuradas na figura1.3.
R2 (bits/símbolo)
R2 (bits/símbolo)
R2 (bits/símbolo)
1 1 1
0,5
a) b) c)
Figura 1.3: a) Região de capacidade para o 2-BAC; b) Taxas atingíveis quando ambos os códigos
constituintes são lineares; c) Taxas atingíveis quando um dos códigos constituintes é linear.
Fonte de informação: É a produtora de mensagens e pode ser uma pessoa ou uma máquina.
Pode ser uma forma de onda contínua ou uma seqüência de símbolos discretos.
Modulador: Transforma cada símbolo de saída do codificador de canal em uma forma de onda
de duração T segundos.
Canal: Meio através do qual trafegam as ondas portadoras das informações geradas pela fonte
para o destinatário final. Nele está incluído uma fonte de ruído aleatório que afeta o sinal
durante a transmissão.
Demodulador: Processa cada forma de onda recebida de duração T segundos e produz uma
saída que pode ser discreta ou contínua. A saída do demodulador é a seqüência recebida r.
10
Implementação algorítimica de códigos lineares para o 2-BAC 11
Codificador u Codificador v
Fonte de Fonte de Canal Modulador
ruído Canal
Decodificador û Decodificador r
Destinatário de fonte de Canal Demodulador
Shannon, descrito acima. A desvantagem destes esquemas é que se um usuário não tem nada a
transmitir, os recursos alocados a ele são desperdiçados.
Uma segunda classe de esquemas de acesso múltiplo é a chamada captura de canal, na
qual o remetente pode usar o canal em sua plena capacidade no instante em que desejar, como
se este fosse exclusivamente seu.
A técnica de acesso aleatório [2] pode ser definida como um esquema de acesso
múltiplo do tipo captura de canal, no qual pode acontecer de dois ou mais remetentes tentarem
utilizar o canal ao mesmo tempo. A proposta do acesso aleatório é reduzir o tempo entre o
momento em que o remetente envia a informação e o momento em que ele consegue transmitir
esta informação com sucesso através do canal.
Figura 2.2: Gráfico da taxa de saída τ em função do número total de pacotes transmitidos por intervalo
de tempo λt no sistema ALOHA particionado.
Observamos que a situação de equilíbrio ocorre quando o número de pacotes que estão
entrando e saindo do sistema têm a mesma taxa, isto é: τ = λ.
Suponha que a taxa de transmissão λ satisfaz λ < e-1, como mostrado na figura 2.2. Se
o equilíbrio prevalece, então a taxa de tráfego λt satisfaz λt = λt1. Esta taxa é um valor médio e
flutuará sobre esta média. Se a taxa de tráfego move-se um pouco acima de λt1 a saída real
aumenta um pouco em torno de λ. Portanto pacotes deixam o sistema mais rápido do que eles
chegam, o que faz com que a taxa de tráfego real volte para λt1. Portanto o ponto (τ ,λt) = (λ ,
λt1) é um ponto de estabilidade condicional. Isto é, ele é estável sob pequenas flutuações. Mas
se uma grande flutuação faz com que a taxa de tráfego real vá para λt2 então a saída real vai a
valores abaixo de λ, portanto pacotes saem com uma velocidade menor do que eles entram, o
que causa um aumento na velocidade do tráfego. O sistema então não retornará mais para o
ponto de equilíbrio (λ , λt1 ) , seguindo então para o ponto (τ , λt ) = (0 ,∞ ). Observamos que o
Sistema ALOHA é simples, porém é muito susceptível à instabilidade.
modo que o número de pacotes gerados em cada intervalo de tempo é uma variável aleatória de
Poisson com média λ.
Neste protocolo, algum tempo depois de enviados os pacotes, todos os remententes
simultaneamente saberão se o seu pacote envolvido na colisão foi recebido com sucesso.
Citamos como exemplo o algoritmo de pilha, Figura 2.3, que é simples de implementar.
Quando envolvido em uma colisão, um remetente necessita apenas gerar uma variável aleatória
binária (“0”ou “1”). Suponha que a saída da pilha está vazia (S = 0), que a porta de acesso
está aberta e que um número “X” de remetentes enviam pacotes num determinado intervalo de
tempo. Assumimos então que houve colisão (“C”) no intervalo de tempo considerado. Se o
valor gerado pelo remetente é “0” então ele permanece na caixa de envio ; Isto significa que ele
novamente vai transmitir no próximo intervalo de tempo; Caso contrário o pacote vai para o
nível “1”da pilha. Agora S = 1. A regra geral é: Se “C”, então S ← S + 1, vemos portanto que
cerca de X/2 dos remetentes colididos retornarão para a caixa de envio enquanto o restante irá
para a pilha. Nós assumimos que a porta de acesso permanece fechada no momento da colisão
inicial até que os remetentes tenham a informação de que todos os pacotes foram transmitidos
com sucesso. Este processo ocorre até que nenhuma colisão mais ocorra (“NC”), o que
significa que apenas “1” ou nenhum remetente está na caixa de envio. O remetente que estava
no nível “1” da pilha então volta para a caixa de envio e a pilha é reduzida de 1. A regra geral
é: Se “NC” e S > 0, então S ← S - 1, o processo então continua até que S = 0. Neste momento a
colisão está resolvida.
Porta de Remetente
“C” e “0” Caixa de envio
acesso
Nível 1
“C”
Nível 2 S
Pilha “NC”
Isto significa que cerca de 2,89 intervalos de tempo serão requeridos para “servir” a
cada um dos pacotes envolvidos em uma colisão. Isto significa que o algoritmo será estável
apenas se:
λ ≤ 1 / 2.8867 ≈ 0.346 ( pacotes/ intervalo de tempo)
Podemos também citar o caso em que ao invés de apenas dois valores aleatórios
“0”ou “1” o remetente possa gerar três valores aleatórios. A máxima saída estável neste caso
terá valor λ = 0.401 ( pacotes/ intervalo de tempo).
ruído
X1
Remetente 1
X2
Remetente 2
Canal de Acesso f(x) f '(x)
Múltiplo
Remetente N XN
Exemplos de situações deste tipo são a transmissão de vários canais de voz através de
um único cabo coaxial em uma rede telefônica, a transmissão de vários programas de televisão
via satélite e a troca de mensagens e informações entre um computador central e seus vários
terminais em uma rede de computadores.
Diversas funções de combinação f(x) já foram estudadas para este modelo de canal,
sendo a mais comum a que considera o canal real aditivo, no qual as entradas são números
reais e a saída é a soma real destes números, isto é f(x) = Σi xi . O canal XOR ( adição mod 2)
utiliza a função f(x) = Σi xi na qual as entradas são símbolos binários e a saída é a soma (mod2)
16 Capítulo 2. Abordagens para canais de acesso múltiplo
Um determinado tipo de canal que será de grande interesse nosso é o canal de acesso
múltiplo com dois usuários [2][5][6][8][13][14], ilustrado na figura 2.6.
(x1,...........xn)
fonte 1 codificador 1
(y1,...........yn)
Canal
P(y|xw) decodificador
(w1,...........wn)
fonte 2 codificador 2
P(y|xw) = Π i
P(yi|xiwi)
Implementação algorítimica de códigos lineares para o 2-BAC 17
(ln M ) (ln L)
R = R1 + R2 = +
n n
Teorema 2.1: As taxas de transmissão possíveis R para o tipo de canal representado acima é a
região convexa sobre o conjunto dos pares das taxas de transmissão (R1 ,R2) satisfazendo as
seguintes desigualdades :
R1 + R2 ≤ I( XW ;Y )
0 ≤ R1 ≤ I (X ; Y|W)
0≤ R2 ≤ I (W; Y|X)
onde I(A;B) denota a informação mútua e I(A;B|C) denota a informação mútua condicionada
entre as variáveis A, B e C.
Ilustramos o teorema acima através dos gráficos das figuras 2.7, 2.8 e 2.9.
R2 (bits/símbolo)
I(W;Y|X)
I(W;Y)
Figura 2.7: Região de capacidade para o canal de acesso múltiplo com dois usuários.
R2 (bits/símbolo)
I(W;Y|X)
I(W;Y)
I(X;Y|W) R1(bits/símbolo)
Figura 2.8: Região de capacidade para o canal de acesso múltiplo com dois usuários quando I(X;Y)=0.
18 Capítulo 2. Abordagens para canais de acesso múltiplo
R2 (bits/símbolo)
I(W;Y)
I(X;Y) R1(bits/símbolo)
Figura 2.9: Região de Capacidade para o canal de acesso múltiplo com dois usuários quando I(X;Y) =
I(X;Y|W).
O mais simples canal de acesso múltiplo é o canal aditivo com dois usuários binários (2-
BAC) [1][2][5][6][7][8] mostrado na figura 2.10.
(x1,...........xn)
fonte 1 codificador 1
(y1,...........yn)
Canal aditivo
com dois decodificador
(w1,...........wn)
usuários binários
fonte 2 codificador 2
Neste sistema dois remetentes geograficamente separados tentam enviar dados binários
através de um mesmo canal de comunicações. A função de combinação utilizada neste canal é
a soma sobre os reais. Desta forma cada remetente tem como alfabeto de entrada o conjunto
F2 = {0,1}. A entrada do canal consiste de duplas binárias xi , wi e a saída yi = xi +wi , será
símbolos do alfabeto {0, 1, 2}. O remetente 1 envia palavras-código de um código de bloco C1;
o remetente 2 envia palavras-código de um código de bloco C2. Consideramos que:
• Os dois remetentes estão na mesma freqüência.
• Os dois remetentes transmitem ao mesmo tempo.
• Os dois remetentes utilizam códigos binários de mesmo comprimento n.
• É mantido sincronismo na transmissão dos símbolos das palavras.
• Existe um único decodificador.
• Os dois usuários escolhem independentemente as respectivas palavras-código a serem
transmitidas.
Implementação algorítimica de códigos lineares para o 2-BAC 19
xi wi yi xi wi yi
x 00 0 x 00 0
y y
01 01
1 1
w w
10 10
11 2 11 2
O modelo de canal da figura 2.11 a) é chamado canal aditivo com dois usuários
binários sem ruído. Neste modelo, se os dois símbolos transmitidos pelos dois remetentes são
“0′s”, um “0” é transmitido pelo canal para o receptor. Se os dois símbolos transmitidos pelos
dois remetentes são “1′s” , um “2” é transmitido pelo canal para o receptor. A região de
capacidade para este tipo de canal foi estudada na seção anterior e está representada na figura
2.12.
R2 (bits/símbolo)
0,5
0,5 1 1
(bits/símbolo)
Se os remetentes transmitem dados com taxas de transmissão (R1,R2) com estes pontos
dentro da região de capacidade do canal, os codificadores e o decodificador existem e cada
remetente pode se comunicar com o receptor com probabilidade de erro pequena.
O segundo modelo de canal mostrado na figura 2.11 b) é um Canal aditivo com dois
usuários binários com ruído. Para este tipo de canal nós dizemos que ocorre um único erro de
transmissão se há uma das seguintes transições: 1) A transição de um par de entrada (0,0) para
o símbolo de saída “1”; 2) A transição do par de entrada (1,1) para o símbolo de saída “1”; a
transição de quaisquer um dos dois pares de entrada (0,1) ou (1,0) para quaisquer um dos dois
símbolos de saída “0” ou “2”. Nos dizemos que dois erros ocorreram se a transição é do par de
20 Capítulo 2. Abordagens para canais de acesso múltiplo
entrada (0,0) para o símbolo de saída “2” ou do par de entrada (1,1) para o símbolo de saída
“0”.
Para ambos os modelos de canal considerados acima, as duas palavras-código
transmitidas pelos dois codificadores são combinadas em um único vetor y com símbolos do
alfabeto {0,1,2}. Ao término da recepção o vetor y recebido será decodificado em duas
palavras-código C1 e C2.
Sejam M e L o número de palavras-código no código C1 e o número de palavras-código no
código C2, respectivamente.Seja n o comprimento de ambos os códigos. Então as taxas de
transmissão para C1 e C2 são respectivamente:
(ln M ) (ln L)
R1 = R2 =
n n
Nosso interesse no canal aditivo com dois usuários binários é construir um par de
códigos C1 e C2 de modo que:
1) O decodificador seja capaz de decodificar o vetor y recebido, sem ambigüidade nas duas
palavras-código que foram transmitidas pelos remetentes “1” e “2”. Isto é, se para quaisquer x1 ,
x2 ∈ C1 e w1 , w2 ∈ C2 tais que x1 ≠ x2 e w1 ≠ w2 então x1 + w1 ≠ x2 + w2.
2) As taxas de transmissão (R1,R2) de C1 e C2 respectivamente estejam em um ponto dentro da
região de capacidade e tão próximas à fronteira quanto possível.
Um par de códigos (C1,C2) que possui a propriedade 1) acima é dito ser unicamente
decodificável.
Exemplo2.1
C1
00 11
00 00 11
C2 01 01 02
10 10 21
Figura 2.13: Saídas possíveis do 2-BAC quando C1= {00,11} e C2 = {00, 01, 10}.
Observando a tabela da figura 2.13 verificamos que o vetor y pode ser decodificado sem
ambigüidade em duas palavras-código, uma em C1 e a outra em C2 .
Este código, que será de grande interesse no capítulo 4, pode ser generalizado para n>2,
simplesmente tomando C1 como {0n1n } onde 0n(1n) representa a n-upla binária com todos os
elementos 0(1) e C2 como o conjunto de todas as n-uplas binárias com exceção de 1n. As taxas
de transmissão de C1 e C2 são respectivamente,
log 2 log(2 n − 1)
R1 = e R2 =
n n
log(2 n − 1) + 1
R = R1 + R2 = que tende para 1, quando n → ∞
n
log M 1 + log M 2 k1 + k 2
R = R1 + R2 = = ≤1
n n
R2 (bits/símbolo)
1 R1 (bits/símbolo)
Figura 2.14: Taxas atingíveis quando ambos os códigos constituintes são lineares.
Definição 2.1: Um código (C1,C2) de comprimento n para o 2-BAC é dito ser um código linear
se um dos códigos constituintes for um código linear de parâmetros (n,k).
Teorema 2.2: Seja C1 um código constituinte linear com parâmetros (n,k1) então a região de
capacidade para um par (C1,C2) unicamente decodificável é limitada superiormente por:
(R1,R2) ≤ ( k1/n , ( 1-k1/n )log3 ).
Demonstração:
Como o código C1 é linear podemos listar todas as suas palavras-código uma abaixo da outra e
formarmos uma matriz com a propriedade que as k1 primeiras colunas listem todas as 2k1 k1-
uplas possíveis. Para cada palavra-código enviada por C2 teremos portanto uma em C1 de modo
que os k1 primeiros símbolos sejam complemento das palavras de C2 e portanto teremos M2
palavras-código de saída com os k1 primeiros símbolos todos 1. As outras ( n- k1) posições
poderão ter os símbolos {0, 1, 2}. Portanto C2 poderá Ter no máximo 3n-k1 palavras-código, ou
seja
log 3n − k1 k
M2 ≤ 3n-k1 e R2 ≤ = (1- 1 )log3
n n
concluindo a prova do teorema.
R2 (bits/símbolo)
(log3-1)/log3
(log3-1)/log3 1 R1(bits/símbolo)
Rocha [30] observou que na demonstração do teorema 2.1 não é feito uso da linearidade
de C1 e, portanto, o resultado é válido quando C1 é apenas um código sistemático podendo ser
não linear.
Implementação algorítimica de códigos lineares para o 2-BAC 23
Podemos citar uma série de trabalhos cuja finalidade é a construção de códigos para o
2-BAC, por exemplo [4][6][10].
Kasami e Lin [6] apresentaram um método para construção de pares de códigos δ-
decodificáveis. Dois códigos binários C1 e C2 são δ-decodificáveis (δ > 0) se e somente se, para
quaisquer dois pares distintos de n-uplas (x,w) e (x’,w’) em C1 x C2, dL(x + w, x’ + w’) ≥ δ . Um
par C1 e C2 é unicamente decodificável quando ele é 1-decodificável. Em publicação posterior
Kasami e Lin [7] apresentaram um esquema para decodificação de códigos δ-decodificáveis
para o 2-BAC com ruído, levando em conta a linearidade e corrigindo no máximo ⎣(δ-1)/2⎦
erros de transmissão, onde ⎣(δ-1)/2 ⎦ denota o maior inteiro igual ou menor que (δ-1)/2.
Ahswede e Balakirsky [10] em recente publicação , apresentaram um método de
construção de códigos binários unicamente decodificáveis (C1,C2) para o 2-BAC, de
comprimento tn, onde t e n são inteiros fixos , onde nem C1 nem C2 é linear.
Rocha e Massey [4] estabeleceram condições suficientes para determinação de
códigos binários unicamente decodificáveis (C1,C2) de peso constante para o 2-BAC, com ruído
e sem ruído , obtendo a decodibilidade única como veremos através do teorema 2.3 abaixo.
Teorema 2.3: Sejam C1 e C2 códigos de blocos binários com comprimento n, com distâncias
mínimas de Hamming d1 e d2, respectivamente. Sejam
então máx{d1,d2} + Dmin > Dmáx é uma condição suficiente para o par (C1,C2) ser unicamente
decodificável no 2-BAC.
Demonstração:
Suponha, contrariando a hipótese, que x + y = x’ + y’ , onde x ∈ C1, x’∈ C1, y ∈ C2 , y’∈ C2; e
x≠ x’ . Segue que,
mas também,
dH(x,x’) + dH(x,y’) = WH(x’⊕ y’) ≤ Dmáx
porque x difere de x’ou y’ (mas não de ambos) apenas nos componentes onde x’⊕y’ contém um
“1”.
Como dH(x,x’) ≥ d1 e dH(x,y’) ≥ Dmin, nós temos
d1 + Dmin ≤ Dmáx
Similarmente temos,
24 Capítulo 2. Abordagens para canais de acesso múltiplo
D2 + Dmin ≤ Dmáx
Cabral [1], em sua dissertação de mestrado, estabeleceu que condições dois conjuntos
de vetores binários devem satisfazer para garantir sua decodibilidade única sobre o 2-BAC. Ele
deu ênfase ao caso em que um dos conjuntos é um código de bloco linear de comprimento n ,
tentando determinar qual o maior conjunto de palavras-código para o segundo código, de modo
a ainda haver a decodibilidade única. Em outras palavras, Cabral determinou as condições para
que um código (C1,C2) seja unicamente decodificável considerando C1 um código linear. Ele
utilizou o conceito de classes laterais, e a partir disto criou um algoritmo para busca de
palavras-código pertencentes a C2 em cada classe lateral. Estas buscas são feitas de forma
independente, isto é, classe lateral a classe lateral. Ele provou alguns teoremas que permitem
dividir a busca de vetores para C2 no espaço F n2 em buscas através de subconjuntos menores e
independentes entre si.
No 2-BAC cada remetente tem como alfabeto de entrada o conjunto F2 = {0,1}, de
forma que a entrada do canal consiste de duplas binárias (x, w), com x e w pertencentes a F2. A
saída y do canal sem ruído é a soma real entre os elementos do par (x, w) portanto, y = (x+w).
Consideremos uma extensão para o modelo 2-BAC. Neste caso cada entrada é uma n-
upla binária, que nesta dissertação será representada em negrito, onde a coordenada i, i = 1, ...,
n, representa a i-ésima entrada do usuário correspondente, isto é,
25
26 Capítulo 3. Fundamentos teóricos para a decodibilidade única de códigos lineares no 2-BAC
xi + wi = xi ⊕ wi + 2.xi.wi
+ 0 1 ⊕ 0 1 . 0 1
0 0 1 0 0 1 0 0 0
1 1 2 1 1 0 1 0 1
a) b) c)
Figura 3.1: a) Possíveis saídas para o 2-BAC; b) Tabela para operação de adição em F2; c) Tabela para
operação de multiplicação em F2.
x + w ≈ ( x ⊕w , x.w )
x+ w (x ⊕w , x . w )
0 (0,0)
1 (1,0)
2 (0,1)
Esta tabela só tem significado prático porque para cada valor resultante do 2- BAC,
temos um par distinto para as operações de adição e multiplicação sobre F n2 . Esta forma de
representação nos é útil pois assim conseguimos representar as entradas e saídas do 2-BAC
como elementos de F n2 .
Chamaremos as n-uplas binárias de vetores, enquanto as respectivas coordenadas serão
denominadas escalares.
Implementação algorítimica de códigos lineares para o 2-BAC 27
Podemos relembrar do capítulo 2, seção 2.5.1, que para haver decodibilidade única
temos que para quaisquer vetores x1, x2 ∈ C1 e w1, w2 ∈ C2 tais que x1 ≠ x2 e w1 ≠ w2,
x1 + w1 ≠ x2 + w2
portanto, para que não ocorra a decodibilidade única teremos que ter
x1 + w1 = x2 + w2 , ou de forma análoga:
x1 ⊕ w1 = x2 ⊕ w2
x1 . w1 = x2 . w2
w1 = (x1 ⊕ x2 ) ⊕ w2
x1 . (x1 ⊕ x2 ⊕ w2) = x2 . w2
w1 = (x1 ⊕ x2 ) ⊕ w2
x1 . x1 ⊕ x1 . x2 ⊕ x1 . w2 = x2 . w2
w1 = (x1 ⊕ x2 ) ⊕ w2
0 = x1 . x1 ⊕ x1 . x2 ⊕ x1 . w2 ⊕ x2 . w2
w1 = (x1 ⊕ x2 ) ⊕ w2
0 = x1 . (x1 ⊕ x2 ) ⊕ w2 ( x1 ⊕ x2 )
w1 = (x1 ⊕ x2 ) ⊕ w2
0 = (x1 ⊕ x2 ) . ( x1 ⊕ w2 )
Lema 3.1: Um código (C1,C2) para o 2-BAC é unicamente decodificável se, e somente se, não
existirem dois pares de vetores (x1,w1 ) e (x2 ,w2 ) ∈ C1 x C2 satisfazendo ambas as equações:
w1 = (x1 ⊕ x2 ) ⊕ w2
0 = (x1 ⊕ x2 ) . ( x1 ⊕ w2 )
w1 = (x1 ⊕ x2 ) ⊕ w2 (3.1)
0 = x3 . ( x1 ⊕ w2 ) (3.2)
Podemos particionar o conjunto das n-uplas binárias em classes laterais de C1, isto é,
arranjamos todos os 2k vetores de C1 em linha, um ao lado do outro, iniciando com o vetor
nulo, 0 =(000 ... 0 ). Abaixo do vetor nulo colocamos qualquer uma das 2n – 2k n-uplas que
não esteja representada na primeira linha, somamos módulo 2 esta n-upla com cada palavra-
código de C1 e colocamos o resultado na segunda linha. A terceira linha inicia com uma n-upla
que não esteja representada nas duas linhas anteriores e de forma análoga ao que fizemos na
segunda linha, somamos módulo 2 este vetor com cada palavra-código de C1 e colocamos os
resultados na terceira linha. Este raciocínio é mantido até que tenhamos representado todas as
2n n-uplas. Considerando que C1 possui 2k palavras-código, o arranjo padrão terá um total de 2k
colunas e 2n-k linhas. Ilustramos o arranjo padrão na figura 3.3.
0 x1 x2 x3 ... x 2 k −1
v1 x1 ⊕ v1 x2 ⊕ v1 x3 ⊕ v1 ... x 2 k −1 ⊕ v1
v2 x1 ⊕ v2 x2 ⊕ v2 x3 ⊕ v2 ... x 2 k −1 ⊕ v2
v3 x1 ⊕ v3 x2 ⊕ v3 x3 ⊕ v3 ... x 2 k −1 ⊕ v3
. . . . .
. . . . .
. . . . .
v 2 n −k −1 x1 ⊕ v 2 n −k −1 x2 ⊕ v 2 n −k −1 x3 ⊕ v 2 n −k −1 ... x 2 k −1 ⊕ v 2 n −k −1
Figura 3.3: Representação esquemática do arranjo padrão.
Exemplo 3.1:
Teorema 3.1: Seja (C1,C2) um código linear para o 2-BAC. (C1,C2) será unicamente
decodificável se, e somente se, o código C2 não tiver nenhum elemento em comum com o
conjunto Z w2 , para qualquer vetor w2 ∈ C2 . Além disto, para um vetor w2 fixo, Z w2 é o
conjunto com o maior número de vetores com esta propriedade, e se w2 pertence à classe lateral
v⊕C1 então Z w2 ⊂ v⊕C1.
Definição 3.1: Av⊕C1 é o conjunto associado à classe lateral v⊕C1 consistindo dos vetores
desta classe lateral pertencentes ao código constituinte C2 do par (C1,C2), unicamente
decodificável para o 2-BAC.
O código C2 pode ser escrito como a união dos conjuntos disjuntos Av⊕C1 para todas as
classes laterais v⊕C1 que compõem a partição de F n2 em relação a C1.
Corolário 3.1: Seja (C1,C2) um código linear unicamente decodificável para o 2-BAC e seja
Av⊕C1 o conjunto de vetores de C2 pertencentes à classe lateral v⊕C1 . Então Z w2 ⊆ v ⊕ C1 e
Z w2 ∩ C2 = Z w2 ∩ Av⊕C1 = ∅, para cada w2 ∈ Av⊕C1 .
Demonstração:
Como (C1,C2) é unicamente decodificável e cada w2 ∈ v⊕C1, então pelo teorema 3.1
Z w2 ⊆ v ⊕ C1 e Z w2 ∩ C2 = ∅ . Como Av ⊕C1 ⊆ C2 então Z w2 ∩ Av ⊕C1 ⊆ Z w2 ∩ C2 e
portanto, Z w2 ∩ Av⊕C1 = ∅.
Vemos pelo que foi exposto anteriormente que podemos escolher os vetores w2 ∈
v⊕C1 para o conjunto Av ⊕C1 sem nos preocuparmos com um possível comprometimento na
construção dos conjuntos Av⊕C1 para outra classe lateral qualquer. A busca de palavras-código
para C2 será feita portanto de modo independente para cada classe lateral.
Definição 3.2: Consideremos S w2 = {x3 ∈ C1; x3 . (x1 ⊕w2) = 0, para algum x1 ∈ C1} ⊆ C1,
onde w2 = v ⊕ xi ∈ v⊕C1. Este conjunto não depende do vetor w2, pois ele é invariante para cada
classe lateral como demostraremos abaixo.
Lema 3.2: Para quaisquer vetores w2 e w2’ ∈ v⊕C1 temos que S w' = S w2 .
2
Demonstração:
Para cada w2 e w2′ ∈ C2 em v⊕C1 existem xi e xi′ ∈ C1 tais que w2 = xi ⊕ v e w2′ = xi′ ⊕ v,
então:
x3 . ( x1 ⊕ w2 ) = x3 . ( x1 ⊕ (xi ⊕ v ))
30 Capítulo 3. Fundamentos teóricos para a decodibilidade única de códigos lineares no 2-BAC
onde, x1′ e x1 ∈ C1. Logo se x3 ∈ S w2 significa que existe (x1 ⊕w2) ∈ v ⊕ C1 tal que
x3 . (x1 ⊕ w2) = x3 . (x1′ ⊕ w2′ ) = 0 e portanto, como x1′∈ C1 , x3 ∈ S w' , ou seja, S w2 ⊆ S w' .
2 2
Trocando os papéis de w2 e w2′ e repetindo o raciocínio acima encontramos que S w' ⊆ S w2 onde
2
Chamaremos o conjunto S w' = S w2 = S v ⊕C1 pois ele é invariante para cada classe lateral
2
v⊕C1.
Exemplo 3.2:
Vamos encontrar o conjunto S v ⊕C1 , da classe lateral cujo líder de classe é o vetor (0000001) do
arranjo padrão apresentado na figura 3.4.
x1 x1 ⊕ w2 x3
0000000 0000001 1100110 /1011010 / 0111100
0110011 1010100 -
1010101 0110010 -
1100110 1100111 -
0001111 0001110 -
1011010 1011011 -
0111100 0111101 -
1101001 1101000 -
Figura 3.5: Tabela com valores de x3.
Z w2 = { w2 ⊕ x3 ∈ v ⊕ C1, ∀ x3 ∈ S v⊕C1 , x3 ≠ 0 }
Considerando x3 ∈ S v ⊕C1 o conjunto de todos os vetores x3 ∈ C1 tal que x3 . (x1 ⊕ w2) = 0 para
algum x1 ∈ C1. Assim, se w2 ∈ C2 então pelo teorema 3.1 e corolário 3.1 devemos ter
Z w2 ∩ C2 = Z w2 ∩ Av⊕C1 = ∅. Além disto, se Av ⊕C1 = { w20 , w21 , w2 2 , ..., w2m −1 } então o
conjunto:
m −1
Z Av ⊕ C =
1
ΥZ
i =0
w2 i ⊆ v⊕C1
Implementação algorítimica de códigos lineares para o 2-BAC 31
Lema 3.3: Sejam w2 e w2' dois vetores pertencentes à classe lateral v⊕C1. Então w2' ∈ Z w2 ,
se, e somente se, w2 ∈ Z w ' .
2
Demonstração:
Vamos supor que w2' ∈ Z w2 . Existe x3 ∈ S v ⊕C1 tal que w2' = w2 ⊕ x3, daí w2 = w2' ⊕ x3 e
portanto , w2 ∈ Z w ' . Invertendo os papéis de w2 e w2' encontraremos que se w2 ∈ Z w '
2 2
então w2' ∈ Z w2 .
Corolário 3.2: Seja w2 um vetor de uma classe lateral v⊕C1. Então dizer que w2 ∉ Z Av ⊕ C é
1
equivalente a dizer que Z Av ⊕ C não contém nenhum elemento de Av⊕C1 , ou seja, Z w2 ∩ Av⊕C1 =
1
∅.
Demonstração:
Temos que w2 ∉ Z Av ⊕ C se, e somente se, que w2 ∉ Z w2 , para 0 ≤ i ≤ m-1. Mas, pelo lema
1 i
3.3 , w2 ∉ Z w2 , se, e somente se, w2i ∉ Z W2 , ou seja, se, e somente se, Z W2 ∩ Av⊕C1 = ∅.
i
O corolário 3.2 facilita a busca de vetores para C2, pois vemos que não é possível um
vetor w2 ∈ v⊕C1 , que ainda não tenha sido escolhido para C2 nem excluído pelos que já foram
escolhidos anteriormente.
Lema 3.4: Seja C1 um código de bloco binário linear e M = { w20 , w21 , w2 2 , ..., w2m −1 } um
subconjunto da classe lateral v⊕C1 . Então existirá um código C2 tal que M ⊆ C2 e (C1, C2) é
unicamente decodificável se, e somente se, w2i ∉ Z w2 , ∀i, j = 0, 1, ..., m-1.
j
Demonstração:
Vamos supor que (C1, C2) é um código binário linear unicamente decodificável para o 2-BAC
tal que M ⊆ C2 . Então w2i ∈ C2 e pelo teorema 3.1 temos que w2i ∉ Z w2 , quaisquer que
j
sejam 0≤ i, j ≤ m-1. Considerando que o conjunto M tem a propriedade que w2i ∉ Z w2 , para
j
decodificável.
Exemplo3.3:
Exemplo 3.4:
Considerando
S v⊕C1 = {1100110, 1011010, 0111100}
fazendo as combinações lineares temos que:
ε v ⊕C1 = {0000000, 1100110, 1011010, 0111100}
Vamos dividir uma classe lateral v⊕C1 em subconjuntos disjuntos entre si. Podemos
observar que ε v ⊕C1 é subespaço de C1 e por conseguinte de F n2 definindo uma partição deste
último.
Teorema 3.2: Seja v⊕C1 uma classe lateral de C1 em relação a F n2 e seja ε v ⊕C1 ⊆ C1 o
subespaço de dimensão l ≤ k , onde k é a dimensão de C1, gerado pelo conjunto S v ⊕C1 associado
a esta classe. ε v ⊕C1 define uma partição de F n2 tal que para w2 ∈ v⊕C1 a classe lateral
w2 ⊕ ε v ⊕C1 = Ww2 está contida em v⊕C1. Além disso, temos:
L −1
ΥW
i =0
w2 i = v⊕C1,
onde L = 2k-l é o número de classes distintas Ww2 , com Ww2 ∩ Ww2 = ∅ para i ≠ j.
i i j
Demonstração:
Vamos ver primeiramente que o conjunto Ww2 está contido inteiramente em v⊕C1. Para isso,
suponha um vetor w ∈ Ww2 e um vetor e ∈ ε v⊕C1 . Por definição podemos escrever w = w2 ⊕ e .
Como w2 é um vetor de v⊕C1 podemos escrevê-lo como w2 = v ⊕ xi , onde xi ∈ C1 daí, w = w2
⊕ e = (v ⊕ xi ) ⊕ e = v ⊕ (xi ⊕ e) ∈ v ⊕ C1 pois C1 é linear. Portanto, Ww2 ⊆ v⊕C1 ,
Implementação algorítimica de códigos lineares para o 2-BAC 33
Teorema 3.3: Seja v⊕C1 uma classe lateral de C1 em relação a F n2 e seja Ww2 uma classe lateral
de ε v ⊕C1 em relação a F n2 . Então se w ∈ Ww2 temos Z w ⊆ Ww2 . Além disto , se Ww ' ≠ Ww2 ,
2
Z w ∩ Ww ' = ∅.
2
Demonstração:
Como Ww2 é uma classe lateral de ε v ⊕C1 em relação a F n2 existe um vetor u ∈ ε v ⊕C1 tal que w
= w2 ⊕ u . Pela definição 3.2 qualquer vetor z ∈ Z w pode ser escrito como z = w ⊕ xi =
w2 ⊕ (u ⊕ xi) para algum xi ∈ S v ⊕C1 ⊆ ε v ⊕C1 . Como ε v ⊕C1 é um subespaço, u ⊕ xi ∈ ε v ⊕C1 e
portanto z ∈ Ww2 . Além disso como Ww2 ∩ Ww ' ≠ ∅, e como Z w ⊆ Ww2 , então Z w ∩ Ww ' =
2 2
∅.
Lema 3.5: Sejam Ww2 , 0 ≤ i ≤ L-1, as L classe laterais distintas de ε v ⊕C1 com relação a F n2
i
contidas na classe lateral v ⊕C1 de C1 com relação a F n2 . Se AWw for um conjunto de vetores w
2m
∈ Ww2 pertencentes a C2 tal que (C1,C2) é um código linear unicamente decodificável para o
m
está incluído em um código C 2' tal que (C1, C 2' ) também é um código linear unicamente
decodificável. Esta demonstração pode ser vista em [1].
A partir dos resultados anteriores, Cabral [1] construiu um algoritmo em que, para cada
classe lateral, é encontrado o conjunto S v ⊕C1 e a partir de uma combinação linear destes é
encontrado o subespaço ε v ⊕C1 .Particionamos então v⊕C1 em classes laterais Ww2 , em cada
classe lateral encontramos o conjunto AW de vetores pertencentes ao código C2. Uma vez
w
2
encontrado todos os AW teremos o conjunto Av ⊕C1 . Fazendo o mesmo para cada classe lateral
w
2
w2 2 , ..., w2m −1 } é o conjunto Av⊕C1 com o maior número de vetores em uma classe lateral
v⊕C1, que podem pertencer a C2. Deve-se portanto escolher o elemento w2 j para pertencer ao
conjunto Av ⊕C1 .O teorema abaixo utiliza o máximo conjunto Av ⊕C1 .
Teorema 3.4: A cardinalidade máxima do conjunto Av⊕C1 é dada pelo produto entre o índice
[C1: ε v ⊕C1 ] de C1 em relação ao seu subespaço vetorial ( portanto subgrupo) ε v ⊕C1 e a
cardinalidade do maior conjunto AWv determinado no algoritmo citado acima.
Definição 3.3: Um código C1 linear binário, tendo sua matriz geradora G na forma sistemática
é definido como fortemente ortogonal se para a i-ésima linha de G, denominada ci, e
considerando-a como vetor em F2n tivermos:
ci . cj = 0
∀i, j = 1, 2, ..., k.
Da definição acima verificamos facilmente que as colunas da matriz geradora podem ter
apenas um componente não nulo, isto é, cada coluna contém k símbolos com no máximo um
símbolo tendo o valor 1.
Vamos considerar a matriz geradora de um código fortemente ortogonal na forma
sistemática tendo a seguinte representação:
Ik Akx(n-k)
onde, Ik é a matriz identidade e Akx( n-k) é a matriz formada por n-k colunas, onde cada
coluna contém apenas um elemento não nulo.
O número máximo de colunas distintas é k +1. Podemos agrupar as n-k colunas de
Akx(n-k) em conjuntos de colunas idênticas para simplificar o entendimento conforme figura 3.7.
k l1 l2 lk lk+1
10...0 1...1 0...0 ... 0...0 0...0
01...0 0...0 1...1 ... 0...0 0...0
Figura 3.7: Representação na forma sistemática de matriz geradora de código linear fortemente ortogonal.
Implementação algorítimica de códigos lineares para o 2-BAC 35
O código (C1,C2) para o 2-BAC será considerado um código linear fortemente ortogonal
se C1 além de linear for fortemente ortogonal.
Sabemos também que para cada vetor xi ∈ C1, existe uma combinação linear única dos
vetores ci’s resultando em xi . Se cm estiver nesta combinação linear então xi terá valores não
nulos nas mesmas coordenadas de cm , independente de quais outros vetores ci’s, com 1 ≤ i ≤ k,
i ≠ m, estejam na combinação.
Sabemos que para um código (C1,C2) linear ser unicamente decodificável não podem
existir dois pares de vetores (x1,w1), (x3, w2) ∈ C1 X C2 satisfazendo ambas as equações:
w1 = (x1 ⊕ x2 ) ⊕ w2 (3.1)
0 = x3 . ( x1 ⊕ w2 ) (3.2)
Como x1 e x3 ∈ C1 , eles são combinações lineares dos vetores formados pelas linhas da
Matriz G, isto é:
k
x3 = a1.c1 + a2.c2 + a3.c3 + .... + ak.ck = ∑ a .c
i =1
i i
k
x1 = b1.c1 + b2.c2 + b3.c3 + .... + bk.ck = ∑ b .c
j =1
j j
0 = x3 . x1 ⊕ x3 . y2
k k
0= ∑ ai .ci .
i =1
∑ b .c
j =1
j j ⊕ x3 . y2
k k
0= ∑∑ a .b .c c
j =1 i =1
i j i j ⊕ x3. y2
Mas pela definição de códigos fortemente ortogonais, verificamos facilmente que ci.cj =
0 se i ≠ j, assim a equação torna-se:
k
0= ∑ a .b .c
i =1
i i i ⊕ x3. y2
0 (n-k)xk In-k
Esta matriz gera um espaço complementar de C1. Sabemos que todos os xi’s que
pertencem a C1 , possuem as k coordenadas mais à esquerda diferentes de 0 com exceção do
36 Capítulo 3. Fundamentos teóricos para a decodibilidade única de códigos lineares no 2-BAC
vetor nulo. Os líderes de classe por sua vez gerados pela matriz acima terão todas as k
coordenadas mais à esquerda iguais a 0, portanto podemos defini-los desta forma pois o único
vetor com as k primeiras coordenadas nulas numa classe lateral será o líder de classe.
k
0= ∑ a .b .c
i =1
i i i ⊕ x3. v
sabemos que,
k
∑ a .b .c
i =1
i i i (3.3)
∑ a .b .c
i =1
i i i = 0 e assim segue que,
x3. v = 0
Teremos então que S v ⊕C1 será formado por todas as palavras-código de C1 que
satisfazem a equação acima.
Vamos considerar x3’, x3” ∈ C1 e satisfazendo a equação (3.4), vemos que:
x3’ . v = 0
x3” . v = 0
x3’ .v ⊕ x3” . v = 0
(x3’ ⊕ x3”) . v = 0
Assim concluímos que S v ⊕C1 é subespaço de C1, desta forma ele é o próprio ε v ⊕C1 .
Portanto, provamos o seguinte teorema.
Teorema 3.5: Seja C1 um código linear fortemente ortogonal sobre F2. Então o conjunto S v ⊕C1
definido anteriormente é o subespaço vetorial igual a ε v⊕C1 .
Corolário 3.3: Nas condições do teorema acima temos que S v ⊕C1 = ε v⊕C1 e portanto a máxima
cardinalidade para o conjunto Av⊕C1 é dada pelo índice [ C1 : S v ⊕C1 ] de C1 em relação a S v ⊕C1
Demonstração:
Implementação algorítimica de códigos lineares para o 2-BAC 37
Segue do teorema 3.4 e do fato que a cardinalidade do maior conjunto AWv é “1”, pois o único
vetor que não poderá ser usado para eliminar palavras-código para C2 é o vetor nulo, assim
particionando v⊕C1 em classes laterais de ε v⊕C1 teremos apenas o líder de classe pertencente a
AWv .
Teorema 3.6: Seja C1 um código linear fortemente ortogonal de parâmetros (n,k) com matriz
geradora G e sejam c1, c2, ..., ck as k linhas desta matriz. Denotando por m o número de linhas
ci’s para as quais ci . v ≠ 0 e considerando
Tv : C1 → F2n
ci → ci . v
então [ C1 : S v ⊕C1 ] = 2m
Como a máxima cardinalidade para o conjunto Av⊕C1 é dada por [ C1 : S v ⊕C1 ] temos que a
máxima cardinalidade de Av ⊕C1 é 2m.
x3 = ( a1a2 ... ak a1a1 ... a1 a2a2 ... a2 ... akak ... ak 00... 0)
onde 0li e 1li representam as l-uplas com todas as coordenadas 0 ou 1 respectivamente e a k-upla
inicial tem o 1 na i-ésima posição.
Vemos que,
ci . v = ( 0k 0l1 0l2 ... vi ... 0lk0lk+1 ) (3.6)
Lema 3.6: Seja C1 um código fortemente ortogonal e seja v um líder de classe como
representado em (3.5) com apenas m blocos vi , 1 ≤ i ≤ k não nulos. A máxima cardinalidade do
conjunto Av ⊕C1 é 2m .
Demonstração:
Para Tv(ci) ≠ 0 , o bloco vi não pode ser nulo, pode-se observar este fato em (3.6). Portanto, se o
líder de classe v tiver apenas os m blocos vi1 , vi2 , ... vim , 1 ≤ ij ≤ k, 1 ≤ j ≤ m, não nulos, então
Tv(ci) ≠ 0 , se i = l1,l2,... lm
Tv(ci) = 0 , caso contrário
Então o máximo número de vetores que podem pertencer a C2 é 2m.
Teorema 3.8: Seja C1 um código fortemente ortogonal. A máxima cardinalidade para o código
C2 de modo que (C1,C2) seja unicamente decodificável é
Implementação algorítimica de códigos lineares para o 2-BAC 39
k
2 l k +1 . ( ∑2
m =0
m
.N m ) (3.7)
onde Nm é o número de classes laterais distintas cujos líderes v têm exatamente m dos k blocos
vi’s não nulos.
k k k
∑∑ ∑ (2 − 1).(2 i2 − 1)...(2 im − 1)
li1 l l
Nm = ... (3.8)
i1 =1 i2 = i1 +1 im =im −1 +1
A demonstração do teorema 3.8 poderá ser encontrada em [1], porém no capítulo 4, seção 4.1 é
dada uma nova abordagem aos códigos lineares fortemente ortogonais, onde demonstramos de
forma bastante concisa e simples o resultado deste teorema.
log(∑m =0 (2 m.N m )) + l k +1
k
R2 = (3.9)
k + ∑i =1 l m + l k +1
k
N m = (2 l − 1) m ( mk ) (3.10)
log(2 l +1 − 1)
R2 = (3.11)
l +1
1 + log(2 l +1 − 1)
R= (3.12)
l +1
4 Resultados Experimentais
1) É solicitada a matriz geradora de C1, com k linhas e n colunas, e a partir desta são obtidas
todas as palavras-código de C1.
2) Particionamos o conjunto das n-uplas binárias em classes laterais de C1, isto é, construímos
o arranjo padrão segundo C1 .
3) Para cada classe lateral obtemos o conjunto S v ⊕C1 = {x3 ∈ C1; x3 .(x1 ⊕ w2 ) = 0, para x1 ∈
C1} ⊆ C1.
m −1
4) Tendo o conjunto S v ⊕C1 estamos em condições de encontrar o conjunto Z v ⊕C1 = Υ Z w2 ⊆
i
i =0
v⊕C1, para cada classe lateral, onde Z w2 = {w2 ⊕ x3 ∈ v⊕C1, ∀x3 ∈ S v ⊕C1 , x3 ≠0 }.
i
5) Podemos então obter o conjunto Av ⊕C1 , formado por todas as palavras-código pertencentes
a C2 em uma determinada classe lateral. O conjunto formado pelos Av⊕C1 ’s de todas as
classes laterais e uma palavra-código em comum com C1 será o próprio C2. Denotaremos
por M o número de palavras-código de C2.
40
Implementação algorítimica de códigos lineares para o 2-BAC 41
log M
R2 = (4.2)
n
k + log M
R = R1 + R2 = (4.3)
n
Início
Matriz Geradora
de C1
Arranjo padrão
Classe lateral
i← 0
Svi ⊕C1
Zvi ⊕C1
i ← i +1
2 n− k −1
Avi ⊕C1
ΥA vi⊕C1
i =0
Não
i = 2 n-k-1?
Sim
Fim
Figura 4.1: Fluxograma simplificado, no qual são encontradas as palavras-código de C2 contidas nas
classe laterais.
2 n − k −1
Unindo-se um vetor pertencente a C1 com o conjunto ΥA
i =1
vi ⊕ C1 teremos encontrado
Figura 4.2: Nesta tela o usuário do software modifica o número de linhas (k) e o número de colunas (n)
da matriz geradora do código C1, bem como insere a própria matriz.
Figura 4.3: Tela em que é mostrado o arranjo padrão calculado. Nesta tela temos a opção de ao invés de
utilizarmos os dados da matriz geradora inserida na tela da figura 4.2, modificarmos o número de linhas e
colunas do arranjo padrão e inserirmos as palavras-código de C1 diretamente, recalculando então o arranjo
padrão.
Implementação algorítimica de códigos lineares para o 2-BAC 43
Figura 4.4: A tela acima mostra as palavras-código calculadas para C2, bem como o número de palavras do
dicionário e as taxas de transmissão R1 , R2 , R1+R2, além do número de palavras-código resultantes por
coluna. Ilustramos esta tela com um exemplo para visualização dos dados. É importante observar que na
primeira linha o único vetor que pertence ao código C2 é o vetor nulo.
Figura 4.4: Tela que ilustra todas as palavras código possíveis para o 2-BAC.
Exemplo 4.1:
1 0 0 0 0 1 1
G= 0 1 0 0 1 1 0
0 0 1 1 0 0 0
l1 l2 lk lk+1
1...1 0...0 ... 0...0 0...0
0...0 1...1 ... 0...0 0...0
Figura 4.8: Matriz geradora de código fortemente ortogonal com todas as lj colunas idênticas agrupadas.
Construção 4.1: Seja C1 = {0n,1n} e seja C2 constituído por todas as n-uplas exceto 1n.
Podemos verificar que este código é unicamente decodificável pois todos os elementos de C2
são distintos e todos os elementos para o 2-BAC serão da seguinte forma {0n + c2j} ou {1n +
c2j}, onde c2j são os elementos do código C2, donde podemos ver que {0n + c2j}∩ {1n + c2j } =
∅.
Exemplo 4.2:
d) Considerando n= 4 temos:
C1= {0000, 1111}
C2= {0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011, 1100, 1101,
1110, }, |C2|= 15
Vemos que para este tipo de código o número total de palavras-código obtida para C2 é
|C2| = (2n – 1) e o número de palavras-código de C1 é |C1| = 2.
Analisando a matriz da figura 4.8 vemos que podemos representá-la como sendo
formada por k+1 matrizes geradoras, que a partir de agora serão chamadas de submatrizes, isto
é,
l1 l2 lk+1
G= G1 G2 ... Gk+1
a)
Onde,
l1 l2 lk+1
b)
Figura 4.9 : a)Representação da matriz fortemente ortogonal sendo formada por k+1 submatrizes
G1 ,G2 ,..., Gk+1, b) Representação das submatrizes G1 ,G2 ,..., Gk+1.
para cada classe lateral. Onde os vetores que possuem os índices j são lj-uplas formadas a partir
l
do arranjo padrão de C1j em relação a F2 j . Assim,
poderá ter em comum com o código C1j .Assim o código C2j será formado por todas as lj -uplas
com exceção de uma que pertença a C1j . Isto quer dizer que o número de palavras-código para
o código C2j será exatamente | C2j | = 2lj –1, 1≤ j ≤ k.
Vamos a partir de agora analisar a submatriz geradora Gk+1. Vemos que ela gera um
código cujo vetor nulo é sua única palavra-código, o código C2,k+1 portanto pode ter qualquer
uma das lk+1-uplas como palavras-código, incluindo o vetor nulo. Portanto o máximo ⎜C2,k+1⎜é
2 lk +1 .
Como temos as k+1 submatrizes lado a lado, formando a matriz geradora G, as
palavras-código de C2 resultam da concatenação das palavras-código de C2j e portanto o
máximo número de palavras-código pertencentes ao código C2 será:
k
C 2 = ∏ (2 lj − 1) .2 lk +1 (4.1)
lj =1
Teorema 4.1: A partir do código binário linear fortemente ortogonal C1, encontramos um
k
código C2, de máxima cardinalidade, contendo C 2 = ∏ (2 lj − 1) . 2 lk +1 palavras- código, de
lj =1
Exemplo 4.2:
1 0 0 1 1 0 1 1 1 0 0 0
G= 0 1 0 0 0 1 ou de forma equivalente G’ = 0 0 0 1 1 0
0 0 1 0 0 0 0 0 0 0 0 1
Assim C2 terá um total de 21 palavras-código, que podem ser vistas na tela da figura 4.10
construída a partir do algoritmo implementado.
50 Capítulo 4. Resultados Experimentais
Definição 4.1: Seja C1 um código de bloco linear sobre F2 de parâmetros (n,k), com matriz
geradora G na forma sistemática. Denominando a i-ésima linha da matriz G por ci e
considerando-as como vetores em F2n , dizemos que C1 é um código fortemente ortogonal
balanceado se ci . cj = 0, ∀i,j=1,2,...k, com i≠j; e cuja matriz geradora tem a seguinte
representação:
k l1-1 l2 -1 lk-1
10...0 1...1 0...0 ... 0...0
01...0 0...0 1...1 ... 0...0
com lj = l, 1≤ j ≤ k.
Ik Ik ... Ik
a)
k k k k
10...0 10...0 10...0 ... 10...0
01...0 01...0 01...0 ... 01...0
Este fato ocorre pois, supondo a matriz geradora como na figura 4.7, podemos construir uma
nova matriz geradora equivalente G’ agrupando k colunas distintas, formando matrizes
identidade, conforme mostrado na fig 4.11 a) e b). A matriz G’ gera um código C1’ equivalente
a C1 no sentido de que um é obtido do outro através de uma permutação de coordenadas.
A outra forma de construção para estes códigos é obtida quando o retiramos da forma
sistemática agrupando todas as colunas idênticas, inclusive as que fazem parte da primeira
matriz identidade. Podemos visualizar esta representação através da figura 4.12.
k k k
11...1 00...0 ... 00...0
00...0 11...1 ... 00...0
Figura 4.12: Representação de matriz geradora fortemente ortogonal balanceada agrupando-se todas as
colunas idênticas.
k
C2 = C2 j = (2 l − 1) k (4.2)
pois cada palavra-código de C2 será formada pela combinação das (2l –1) palavras-código de
todos os C2j’s, 1≤ j ≤ k.
Neste caso temos que,
log(2 l − 1) k k
R2 = = log(2 l − 1) (4.3)
n n
k k
R = R1 + R2 = + log(2 l − 1) (4.4)
n n
52 Capítulo 4. Resultados Experimentais
Exemplo 4.3
1 0 0 1 0 0 1 1 0 0 0 0
G= 0 1 0 0 1 0 ou de forma equivalente G’ = 0 0 1 1 0 0
0 0 1 0 0 1 0 0 0 0 1 1
Neste caso, temos que k = 3 e l = 2, assim, teremos da equação (4.2) que |C2| = (2 l − 1) k = 27.
Utilizando o algoritmo implementado encontramos a seguinte tabela formada por todas as
palavras-código encontradas para C2. Vemos que o número total de palavras-código de C2
obtido é 27.
A importância dos códigos balanceados, advém do fato que através de busca exaustiva,
para diversos valores dos parâmetros, verificamos que estes códigos possuem a mais alta taxa
de transmissão atingível com a construção linear.
Consideremos n o comprimento das palavras-código de C1 , k a dimensão do código C1,
M o número de palavras-código de C2, R1 a taxa de transmissão de C1, R2 a taxa de transmissão
de C2 e R a taxa de transmissão do 2-BAC . Encontramos todas as matrizes geradoras possíveis
para alguns valores de n e k . Utilizamos então o algoritmo implementado acima para obtenção
das palavras-código de C2. Apresentamos os resultados nas tabelas seguintes:
Implementação algorítimica de códigos lineares para o 2-BAC 53
n=4ek=2
Total de Matrizes M R2 R1 R
3 4 0,5 0,5 1
9 6 0,646 0,5 1,146
2 7 0,702 0,5 1,202
2 9 0,792 0,5 1,292
n=6ek=2
Total de Matrizes M R2 R1 R
5 16 0,667 0,333 1,000
38 24 0,764 0,333 1,097
40 28 0,801 0,333 1,134
17 30 0,818 0,333 1,151
2 31 0,826 0,333 1,159
60 36 0,862 0,333 1,195
68 42 0,899 0,333 1,232
8 45 0,915 0,333 1,248
12 46 0,921 0,333 1,254
6 49 0,936 0,333 1,269
Um outro caso de interesse é aquele em que a matriz geradora do código C1, apesar de
não ser necessariamente fortemente ortogonal, nos permite calcular o número de palavras-
código pertencentes a C2.
Definição 4.2: Códigos de bloco lineares repetitivos (n,k) são aqueles que possuem metade do
número de palavras-código com os n-k símbolos de paridade todos iguais a 0 e o restante das
palavras-código com os n-k símbolos de paridade todos iguais a 1.
k n-k
x1 = ...... 1 ....1 e
k n-k
x2 = ...... 0 .... 0
54 Capítulo 4. Resultados Experimentais
Exemplo 4.4:
Da definição 4.2 decorre que a matriz geradora de um código de bloco linear repetitivo
(n, k) na forma sistemática tem a seguinte forma:
ou
1 0 0 ... 0 g0
G= 0 1 0 ... 0 g1
0 0 0 ... 1 gk-1
onde gi , 0≤ i ≤ k-1 pode ter apenas uma das seguintes representações gi = (11... 1) ou gi = (00...
0).
Representemos por u = (u0, u1,u2,... uk-1) uma mensagem a ser codificada, cuja palavra-
código correspondente é v = (v0, v1, v2,... vn-1) = (u0, u1,u2,... uk-1).G. Os componentes de v são
portanto,
vi = uj , 0 ≤ i ≤ k-1
vk+j = u0.g0j + u1.g1j + ... uk-1.gk-1j , 0≤ j ≤ n-k-1
Podemos representar vk+j = ul0 + ul1 + ... + ul m-1 , onde uli, 0≤ i ≤ m-1, é o símbolo da
mensagem que foi multiplicado por algum gi ≠ 0, 0 ≤ i ≤ k-1. Como temos, a soma dos
símbolos de 2m-1-uplas distintas e como metade destas 2m-1-uplas distintas possuem peso par e o
restante peso ímpar, temos que a metade das palavras-código possuem os “n-k” símbolos de
paridade todos 1’s e a outra metade todos 0’s.
Nosso interesse é que a partir da matriz geradora de C1 , um código linear repetitivo,
possamos obter o máximo número de palavras-código de imediato para C2 de modo a termos o
2-BAC unicamente decodificável. O próximo lema estabelece que o conjunto S v ⊕C1 é formado
por todas as palavras-código pertencentes a C1, cujo produto com qualquer vetor da classe
lateral cujo lider é v resulte no vetor nulo.
Lema 4.1: Sejam ai , 1≤ i ≤ k , todos os vetores de uma determinada classe lateral, cujo líder
de classe é v , então S v ⊕C1 = {x3 ∈ C1; x3 . ai = 0, para ai ∈ classe lateral cujo líder de classe é
v} ⊆ C1.
Demonstração:
Sabemos do lema 3.2 que para quaisquer vetores w2 e w2’ ∈ v⊕C1 temos que S w' = S w2 =
2
S v ⊕C1 , onde S v ⊕C1 = {x3 ∈ C1; x3 .(x1 ⊕ w2 ) = 0, para x1 ∈ C1} ⊆ C1. Se escolhermos w2 = v,
Implementação algorítimica de códigos lineares para o 2-BAC 55
teremos que S v ⊕C1 = {x3 ∈ C1; x3 .(x1 ⊕ v ) = 0, para x1 ∈ C1} ⊆ C1, mas (x1 ⊕ v ) para todos os
x1 ∈ C1 serão os vetores ai , 1 ≤ i ≤ k . Assim S v ⊕C1 = {x3 ∈ C1; x3 . ai = 0, para ai ∈ classe
lateral cujo líder de classe é v} ⊆ C1.
Teorema 4.2: O número máximo possível de 2n-k+1-2 palavras-código é obtido para C2 quando
C1 é um código linear repetitivo tendo sua matriz geradora (kxn) possuindo um número par de
linhas em que os “n-k” últimos símbolos são 1’s.
Demonstração:
Vamos particionar F n2 em classes laterais de C1, utilizando os líderes de classe como um espaço
complementar a C1. Isto é, os líderes de classe devem ser formados pelas combinações lineares
das linhas da matriz representada abaixo.
0 (n-k)xk In-k
Assim os 2n-k líderes de classe terão os k primeiros símbolos nulos e os n-k símbolos restantes
serão uma das 2n-k-uplas. Sabemos do lema 4.1 que o conjunto S v ⊕C1 = {x3 ∈ C1; x3 . ai = 0,
para ai ∈ classe lateral cujo líder de classe é v} ⊆ C1, isto é, S v ⊕C1 é formado por todos os
vetores de C1 que multiplicados com cada um dos vetores da classe lateral cujo líder é v, resulta
no vetor nulo. Analisando todas as classes laterais, com exceção daquela cujo líder possui todos
os n-k símbolos iguais a 1, verificamos que todos os vetores pertencentes a ela têm em todos os
n-k símbolos finais pelo menos um símbolo 1. S v ⊕C1 , portanto é formado por todos os vetores
que possuam os n-k símbolos finais 0, com exceção do vetor todo nulo. Como temos 2k-1
vetores em C1 com os n-k símbolos de paridade nulos, conforme vimos no lema 4.4, nós
eliminaremos a partir do v = w2 escolhido 2k-1-1 vetores de cada classe lateral. A partir de um
segundo vetor escolhido para pertencer a C2, eliminaremos mais 2k-1-1 vetores de cada classe
lateral. Assim nós já teremos eliminado 2k-2 vetores de cada classe, isto é, ⎢ Z v ⊕C1 ⎢= 2k-2 .
Teremos então 2 palavras-código de C2 por linha, ou ⎢ Av⊕C1 ⎢= 2, com exceção da linha cujo
líder de classe é o vetor (0...01...1), pois esta é formada por vetores que são complementares
aos vetores de C1. Assim o S v ⊕C1 neste caso, é o próprio C1 com exceção do vetor nulo e a
partir do líder escolhido para fazer parte de C2 eliminamos todos os outros. Neste caso portanto
C2 terá um total de 2n-k+1-2 palavras-código.
Teorema 4.3: O número máximo possível de 2n-k+1-1 palavras-código é obtido para C2 quando
C1 é um código de bloco linear repetitivo tendo sua matriz geradora possuindo um número
ímpar de linhas em que os n-k últimos símbolos são 1’s .
Demonstração:
A demonstração para este caso segue idêntica a anterior com exceção da análise feita à classe
lateral cujo líder de classe é o vetor (0...01...1). Esta classe lateral, diferentemente do caso
56 Capítulo 4. Resultados Experimentais
anterior não é formada por vetores complementares aos de C1 e a análise é idêntica à feita para
todas as outras classes laterais do arranjo padrão. Esta classe lateral como as outras terá um
total de 2 palavras-código. Desta forma C2 terá 2n-k+1-1 palavras-código.
5 Conclusões
O canal aditivo com dois usuários binários vem sendo estudado há vários anos e em
várias partes do mundo por pesquisadores. Neste trabalho tivemos oportunidade de fazer a
implementação computacional de um algoritmo proposto na literatura, mas até então não
implementado, na linguagem Visual basic para obtenção de um código C2 de máxima
cardinalidade a partir de um código linear C1 e assim obtermos código linear unicamente
decodificável para o 2-BAC.
A partir dos resultados experimentais encontrados nesta implementação verificamos que
a matriz geradora de um código fortemente ortogonal pode ser analisada como uma série de
matrizes concatenadas e assim obtivemos uma expressão bastante concisa do número de
palavras-código para o 2-BAC nestes casos, conforme podemos verificar abaixo:
k
C 2 = ∏ (2 lj − 1) . 2lk+1
lj =1
57
58 Referências Bibliográficas
5.1 Sugestões
Vemos a partir da figura 5.1 que a classe de códigos lineares para o 2-BAC estudada não
possui taxas que atinjam a região de capacidade. Isto é, as taxas atingíveis estão contidas na
região hachurada mostrada na referida figura .
R2 (bits/símbolo)
(log3-1)/log3
(log3-1)/log3 1 R1(bits/símbolo)
Rocha [30] observou que os resultados de Weldon [14] para o 2-BAC são válidos
também no caso em que ambos os códigos são não-lineares, sendo um deles sistemático, e
conjecturou que a região não-hachurada da figura 5.1 não pode ser atingida com códigos
unicamente decodificáveis. Dito de outro modo, pela conjectura de Rocha a região não-
hachurada da figura 5.1 não pode ser atingida com probabilidade de erro igual a zero.
Ahlswede e Balakirsky [10], propuseram recentemente uma classe de códigos
unicamente decodificáveis para o 2-BAC, não lineares e não sistemáticos. As taxas de
transmissão destes códigos, apesar de serem maiores do que as taxas propostas por outras
construções anteriores estão dentro da região de taxas atingíveis para códigos binários lineares.
Podemos concluir, portanto, que a construção de códigos lineares para o 2-BAC é
importante na medida em que alcança probabilidade de erro zero. Para alcançar taxas de
transmissão mais elevadas propomos para trabalhos futuros o estudo de uma classe de códigos ,
não necessariamente unicamente decodificáveis, mas com a probabilidade de erro na
decodificação tão pequena quanto se queira, com taxas de transmissão o mais próximo possível
da região de capacidade para o 2-BAC.
Implementação algorítimica de códigos lineares para o 2-BAC 59
Referências Bibliográficas
[4] V. C. da Rocha, Jr. and J. L. Massey, “A new approach to the design of codes for the binary
adder channel” in Cryptography and Coding III (Ed. M.J. Ganley ), IMA Conf. Series, New
Series Number 45. Oxford: Clarendon Press, 1993, pp. 179-185.
[5] T. Kasami and Shu Lin, “Coding for a Multiple-access Channel”, IEEE Trans. Inform.
Theory, Vol. IT-22, Number 2, march 1976, pp. 129-137.
[6] T. Kasami and Shu Lin, “Bounds on the achievable rates of Block Coding for a Memoryless
Multiple-access Channel” IEEE Trans. Inform. Theory , Vol. IT-24, Number 2, march 1978,
pp. 187-197.
[7] T. Kasami and Shu Lin, “Decoding of Linear δ-Decodable Codes for a Multiple-access
Channel” IEEE Trans. Inform. Theory , Vol. IT-24, Number 5, september1978, pp. 633-635.
[8] M. A. Deaett and J.K. Wolf, “Some Very Simple Codes for the Nonsynchronized Two-User
Multiple-access Adder Channell with Binary inputs”, IEEE Trans. Inform. Theory , Vol. IT-24,
Number 5, september1978, pp. 635-636.
60 Referências Bibliográficas
[9] P. Z. Fan, M. Darnell and B. Honary, “Superimposed Codes for the Multiacess Binary
Adder Channel”, IEEE Trans. Inform. Theory , Vol. 41, Number 4, July 1995, pp. 1178-1182.
[10] R. Ahlswede and V. B. Balakirsky, “Construction of Uniquely Decodable Codes for the
Two-User Binary adder Channel”, IEEE Trans. Inform. Theory , Vol. 45, Number 1,January
1999, pp.326-33.
[11] H.A. Cabral and V. C. da Rocha, Jr., “Linear Code Construction for the 2-User Binary
Adder Channel”, IEEE Int. Symp. on Info. Theory, Whistler, Canada, 1995, pp. 497.
[12]H.A. Cabral and V. C. da Rocha, Jr., “Coding for the 2-User Binary Adder Channel”,
Relatório de pesquisa, Grupo de Pesquisa em Comunicações- CODEC, Universidade Federal
de Pernambuco, 1995.
[14] E. J. Weldon, Jr., “Coding for a Multiple-access Channel”, Information and Control 36,
1978, pp. 256-274.
[15] N. Abramson, Information Theory and Coding, Stanford University, McGraw-Hill Book
Company, 1963.
[16] Claude E. Shannon, “ A mathematical theory of communication,” Bell Syst. Tech. Journal,
vol. 27, Jul 1948, pp.379-423.
[17] Claude E. Shannon, “ A mathematical theory of communication,” Bell Syst. Tech. Journal,
vol. 27, oct 1948, pp. 623-656,.
[18] N. Abramson, “ The ALOHA system- Another alternative for computer communications”,
Proc. Fall Joint Computer Conf., AFIPS Press, vol. 37, 1970, pp. 281-285,.
[21] W. H. Kautz and R. C. Singleton, “ Nonrandom binary superimposed codes,” IEEE Trans.
Inform. Theory, vol. IT-10, N° 4, 1964, pp. 363-377.
[23] T. Ericson and V. Levenshtein, “Superimposed codes in Hamming space,” in IEEE Int.
Symp. On Information Theory, vol. IT-12, 1966, pp. 92-96.
Implementação algorítimica de códigos lineares para o 2-BAC 61
[25] Halvorson Michael, Microsoft Visual basic 5 passo a passo, Editora Afiliada, 1997.
[26] Howard Anton and Chris Rorres, Elementary Linear Algebra with Applications. New
York: John Wiley & Sons, 1987.
[27] I.N. Herstein, Topics in algebra. New York: Blaisdell Publishing Company, 1964.
[28] Shu Lin, Daniel costello, Error Control Coding: Fundamentals and Applications,
Prentice-Hall Computer applications in electrical Engineering series, 1983.
[29] L. G. Roberts, “ALOHA packet system with and whithout slots and capture”, Comp.
Comm. Ver., vol 5, pp. 28-42, april 1975.
[31] J. G. Proakis, Digital Communication, Editora Mc Graw Hill, inc., New York, 3a edição,
1995.
[32] G. Kachatrian, Code construction for the two user binary adder channel. Seminário de
pesquisa, Departamento de Eletrônica e Sistemas, Universidade Federal de Pernambuco,
Recife, Brasil, 1992.