Você está na página 1de 61

UNIVERSIDADE FEDERAL DE PERNAMBUCO

CENTRO DE TECNOLOGIA E GEOCIÊNCIAS


DEPARTAMENTO DE ELETRÔNICA E SISTEMAS

Implementação algorítmica de códigos


lineares para o canal aditivo com dois
usuários binários

Por

Maria de Lourdes Melo Guedes Alcoforado

Recife/PE
1999

1
UNIVERSIDADE FEDERAL DE PERNAMBUCO
CENTRO DE TECNOLOGIA E GEOCIÊNCIAS
DEPARTAMENTO DE ELETRÔNICA E SISTEMAS

Implementação algorítmica de códigos lineares para o


canal aditivo com dois usuários binários

Dissertação submetida à Coordenação do Mestrado em Engenharia Elétrica da


Universidade Federal de Pernambuco, para preenchimento parcial dos pré- requisitos
para obtenção do Título de Mestre em Engenharia Elétrica.

Autora: Maria de Lourdes Melo Guedes Alcoforado


Orientador: Prof. Dr. Valdemar Cardoso da Rocha Jr.

Dezembro de 1999
Implementação algorítimica de códigos lineares para o 2-BAC 3

Ao meu querido Pai,


que com sua grandeza me deu força e inspirou.
À minha adorável Mãe,
igualmente grande, que me facilita os
caminhos percorridos na vida.
Agradecimentos

Na elaboração desta dissertação, dificuldades surgiram, desânimos aconteceram e


além do ego, tive as presenças marcantes do Prof. Dr. Valdemar Cardoso da Rocha Jr., de
Christian Beurlem, de Francisco e dos meus irmãos e sobrinhos.
O primeiro, além de orientador, abriu clarões proporcionando-me fazer reflexões
judiciosas e profundas no desenvolvimento desta dissertação, mostrando seus
conhecimentos com simplicidade e demonstrando a grande figura humana que é.
Christian pacientemente aceitou ouvir exposições, obviamente apresentando críticas
bastante construtivas na utilização da linguagem computacional Visual basic.
Francisco renunciou horas de lazer que poderíamos ter desfrutado, em prol desta
dissertação.
Finalmente, cada um dos meus irmãos e sobrinhos, pessoas com quem pude e
poderei contar em quaisquer situações.
Implementação algorítimica de códigos lineares para o 2-BAC 5

Resumo

Nesta dissertação são abordados sistemas de comunicação de acesso múltiplo, isto é,


sistemas consistindo de um único receptor e de mais de um transmissor. Em particular, é
dada ênfase ao caso em que dois usuários binários transmitem em um canal aditivo, para
um único receptor.
Foram construídos vários códigos lineares para este modelo de canal a partir da
implementação de um algoritmo proposto na literatura, porém até então não implementado.
Este algoritmo fornece, para um dado código linear de um dos usuários, o código (não-
linear) de máxima cardinalidade para o outro usuário, especificando o seu dicionário.
Para a classe de códigos lineares fortemente ortogonais foi obtida uma expressão
analítica para o número total de palavras-código, a partir da decomposição do código
original numa seqüência equivalente finita de códigos de repetição concatenados.
O conceito de códigos fortemente ortogonais balanceados foi introduzido, e foi
verificado através de busca exaustiva para diversos valores dos parâmetros, que estes
códigos possuem a mais alta taxa de transmissão atingível com este tipo de construção.

.
Índice

1 Introdução ........................................................................................................................ 7
1.1 Canais de acesso múltiplo ......................................................................................... 8

1.2 Canal aditivo com dois usuários binários (2-BAC) .................................................. 8


2 Abordagens para canais de acesso múltiplo................................................................... 10
2.1 O modelo clássico ................................................................................................... 10

2.2 Sistemas de acesso múltiplo.................................................................................... 11

2.3 Acesso aleatório ...................................................................................................... 12


2.3.1 Sistema ALOHA .............................................................................................. 12

2.3.2 Algoritmos de resolução de colisões ................................................................ 13

2.4 Teoria da informação para canais de acesso múltiplo............................................. 15

2.5 Canal aditivo com dois usuários binários................................................................ 18


2.5.1 Decodibilidade única ........................................................................................ 20

2.5.2 Códigos lineares para o 2-BAC ........................................................................ 21

2.5.3 Algumas construções de códigos para o 2-BAC .............................................. 23


3 Fundamentos teóricos para a decodibilidade única de códigos lineares no 2-BAC ...... 25
3.1 Códigos binários lineares ........................................................................................ 27

3.2 Códigos binários lineares fortemente ortogonais .................................................... 34


4 Resultados experimentais............................................................................................... 40
4.1 Análise de códigos lineares fortemente ortogonais................................................. 47

4.2 Códigos de bloco lineares repetitivos ..................................................................... 53


5 Conclusões ..................................................................................................................... 57
5.1 Sugestões................................................................................................................. 58
1 Introdução

A origem da Teoria da Informação data de 1948 quando Claude E. Shannon publicou


dois artigos no Bell System Technical Journal, que ele intitulou Teoria Matemática das
Comunicações [16][17], desde então muitos outros pesquisadores dedicaram-se a estudar e
expandir esta teoria. O modelo clássico de um sistema de comunicações proposto por Shannon
representa sistemas de comunicação ponto-a-ponto, isto é, sistemas em que há apenas um
remetente enviando informações através de um canal ruidoso para um único destinatário.
Existem situações entretanto em que vários remetentes desejam se comunicar com um
único destinatário, é o caso por exemplo de várias estações de rádio na Terra, figura 1.1,
querendo se comunicar com um único satélite. Este sistema de comunicações é conhecido
como sistema de acesso múltiplo.

Figura 1.1: Várias estações de rádio na Terra em comunicação com um único satélite.

A Multiplexação no Domínio do Tempo (TDMA) e a Multiplexação no Domínio da


Freqüência (FDMA) são soluções tradicionais por divisão de canal, utilizadas para resolver o
problema de compartilhamento de canal, porém trazem as desvantagens de se um remetente
não tem nada a transmitir os recursos alocados a ele serem desperdiçados [31].
Uma outra classe de esquemas de acesso múltiplo é o de captura de canal, cuja
proposta principal é reduzir o tempo de transmissão para valores abaixo dos obtidos por divisão

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].

1.1 Canais de acesso múltiplo

Em 1964 Kautz e Singleton [21] apresentaram um modelo matemático de sistema de


transmissão no qual mais de um remetente pode acessá-lo simultaneamente, com a saída deste
sendo a soma booleana dos sinais enviados pelos remetentes. Este conceito também é útil em
comunicações sobre o canal de acesso múltiplo onde a saída é o ou-lógico dos sinais enviados
pelos remetentes. Chien e Frazer [24] introduziram o conceito de superposição de códigos
utilizando a adição módulo 2. Estes códigos foram posteriormente considerados por Ericson e
Levenshtein [23]. O mecanismo de superposição de maior interesse ao longo desta dissertação
é a adição sobre os reais. Este modelo é chamado de canal aditivo com T usuários binários (T-
BAC). Será dada ênfase ao caso em que há apenas dois usuários (2-BAC).
Os modelos de transmissão citados acima são chamados, em geral, de canais de acesso
mútiplo com T usuários e podemos visualizá-lo como na figura 1.2.

ruído
X1
Remetente 1

X2 f '(x)
Remetente 2
Canal de Acesso f(x)
Múltiplo

Remetente T XT

Figura 1.2: Canal de acesso múltiplo com T usuários.

1.2 Canal aditivo com dois usuários binários (2-BAC)

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

0,5 1 (bits/símbolo) 1 R1 (bits/símbolo) 1 R1(bits/símbolo)


1

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.

O grande interesse dos pesquisadores é obter códigos unicamente decodificáveis para o


2-BAC com taxas de transmissão tão próximas à fronteira da região de capacidade quanto
possível.
Em 1994 Cabral [1] em sua dissertação de mestrado, determinou um algoritmo para, a
partir de um código C1 linear, produzir um código C2 com o maior número possível de
palavras-código. Em outras palavras, ele verificou que condições dois conjuntos de vetores
binários devem satisfazer para garantir sua decodibilidade única sobre o 2-BAC, dando ênfase
ao caso em que um dos conjuntos é um código de bloco linear. Cabral provou alguns teoremas
que permitem dividir a busca de vetores para C2 no espaço F n2 em buscas em subconjuntos de
menor cardinalidade e independentes entre si.
A presente dissertação dá continuidade ao trabalho acima mencionado e, em particular,
implementa o algoritmo de Cabral para obtenção de códigos unicamente decodificáveis no 2-
BAC, utilizando a linguagem computacional Visual basic [25].
Será feito uso de algumas estruturas algébricas, que têm se mostrado úteis no estudo de
códigos para o 2-BAC, como por exemplo operações sobre conjuntos envolvendo grupos,
subgrupos, classes laterais, espaços vetoriais, transformações lineares, dentre outras que
admitimos o leitor ter conhecimento [26] [27]. Utilizaremos também paralelamente algumas
propriedades de códigos lineares e do arranjo padrão [28].
2 Abordagens para canais de acesso múltiplo

2.1 O modelo clássico

Os sistemas representados pelo modelo clássico [16] consideram que há apenas um


remetente querendo se comunicar, através de um canal ruidoso, com apenas um receptor.
Shannon mostrou que, apesar da presença de ruído, o canal permitia a transmissão das
seqüências de símbolos com uma probabilidade de erro tão pequena quanto se queira, desde
que se escolhesse seqüências convenientemente e que a taxa de transmissão não ultrapassasse
um determinado valor dependente apenas do canal, denominado na ocasião por ele de
capacidade do canal. Este modelo de sistema de comunicações constitui-se das seguintes partes
principais:

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.

Codificador de fonte: Transforma a saída da fonte em uma seqüência de símbolos usualmente


binários, chamados de seqüência de informação u.

Codificador de canal: Transforma a seqüência de informação u em uma seqüência codificada


discreta v chamada palavra-código. Na maioria das vezes v é também uma seqüência binária.

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

Decodificador de canal: Transforma a seqüência recebida r em uma seqüência binária û,


chamada seqüência estimada.

Decodificador de fonte: Transforma a seqüência estimada û na saída estimada da fonte.

Destinatário: É a quem a mensagem é enviada.

Ruído: São todas as manifestações elétricas aleatórias e imprevisíveis de causas naturais,


impossíveis de se eliminar de qualquer sistema de comunicações.

Podemos visualizar este modelo de sistema de comunicações através da figura 2.1:

Codificador u Codificador v
Fonte de Fonte de Canal Modulador

ruído Canal

Decodificador û Decodificador r
Destinatário de fonte de Canal Demodulador

Figura 2.1: Diagrama de blocos do modelo clássico de um sistema de comunicações.

2.2 Sistemas de acesso múltiplo

Apesar do modelo clássico de um sistema de comunicações abranger um grande


número de situações reais, um modelo de comunicações de interesse prático é aquele em que
vários remetentes desejam se comunicar com um mesmo destinatário pelo uso simultâneo de
um mesmo canal de comunicações [1][2].
Multiplexação no Domínio do Tempo (TDMA) e Multiplexação no Domínio da
Frequência (FDMA) são esquemas de acesso múltiplo por divisão de canal [31]; isto é, eles
dividem um único canal em muitos canais menores, um para cada remetente. Estas divisões
podem ser fixas, ou elas podem ser ajustadas de acordo com as necessidades de cada remetente.
É como se existissem na realidade n canais distintos, onde n é o número total de subdivisões do
canal original. Cada canal neste caso pode ser estudado pelo modelo clássico ponto-a-ponto de
12 Capítulo 2. Abordagens para canais de acesso múltiplo

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.

2.3 Acesso aleatório

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.

2.3.1 Sistema ALOHA

Este sistema [2][3], projetado por Abramson e alguns colegas da Universidade do


Hawaii, foi o primeiro sistema de acesso aleatório que se tem conhecimento. No sistema
ALOHA os dados a serem transmitidos são agrupados em forma de pacotes de mesmo
comprimento. Podemos ter um grande número de fontes de informação idênticas, cada uma
com um remetente associado, gerando novas mensagens durante determinados intervalos de
tempo, através de uma variável de Poisson com média λ (pacotes/ intervalo de tempo).
Abramsom assumiu que um pacote é transmitido com sucesso se ele não se superpõe
(parcialmente ou completamente) a nenhum outro pacote. Além disto, imediatamente após a
transmissão do pacote o remetente é informado através de um canal de realimentação se houve
ou não sucesso na transmissão. Havendo superposição estes pacotes são retransmitidos também
seguindo uma variável aleatória de Poisson com média λr (pacotes/ intervalo de tempo).
Portanto, o número total de pacotes transmitidos por intervalo de tempo é λt = λr + λ .
A probabilidade de um pacote ser recebido com sucesso é a probabilidade deste não ser
transmitido em dois intervalos de tempo: o intervalo em que foi iniciada a transmissão de um
outro pacote e o intervalo em que houve fim na transmissão de algum outro pacote. Desta
forma, os pacotes recebidos com sucesso têm uma taxa de saída de τ = λt exp(-2λt) (pacotes/
intervalo de tempo). Podemos verificar que este valor é máximo quando λt = ½ (pacote/
intervalo de tempo) e portanto τ ≈ 0,184 (pacotes/intervalo de tempo).
Roberts [29] verificou que esta taxa de transmissão poderia ser dobrada se o tempo de
transmissão de cada pacote fosse um múltiplo inteiro de um intervalo de tempo. Surgiu então o
sistema ALOHA particionado no tempo. Desta forma temos que a taxa de saída com sucesso no
receptor é a fração do intervalo de tempo no qual exatamente um pacote é transmitido,
τ = λtexp(-λt) (pacotes/ intervalo de tempo). O máximo valor desta taxa de saída “τ” ocorrerá
Implementação algorítimica de códigos lineares para o 2-BAC 13

quando λt = 1 , portanto τ ≈ 0.368 (pacotes/intervalo de tempo). Podemos verificar esta função


graficamente na figura 2.2.

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.

2.3.2 Algoritmos de resolução de colisões

Devido à instabilidade do Sistema ALOHA, Capetanakis juntamente com Prof. R.


Gallager e independentemente os pesquisadores Soviéticos B. Tsybakov e V. Mikhailov
abordaram a resolução de colisões [2]. O modelo de canal assumido é igual ao do sistema
ALOHA particionado no tempo, com realimentação para os remetentes. O modelo de geração
de informação também é o mesmo que o do sistema ALOHA particionado no tempo, podendo
ter uma quantidade infinita de fontes de informação, cada uma com um remetente associado, de
14 Capítulo 2. Abordagens para canais de acesso múltiplo

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

“C” e “1” “NC”

Nível 1
“C”
Nível 2 S
Pilha “NC”

Nível S Contador dos níveis da pilha

Figura 2.3 : Algoritmo de pilha.

Seja Y o número de intervalos de tempo necessários para resolver a colisão inicial de X


remetentes. Uma grandeza de grande interesse é LN = E [ Y / X = N ], o número médio de
intervalos de tempo necessários para resolver a colisão de “N” transmissores. Verificamos que
L0 = L1 = 1, pois não existe colisão inicial. Podemos verificar também que:
L2 = 1 + ½ (L0 + L2) + ½ (L1 + L1 )
A probabilidade dos dois usuários permanecerem na caixa de envio é considerada ½ e a
probabilidade de um permanecer na caixa de envio e um ir para nível 1 da pilha também é ½.
Resolvendo para L2 temos L2 = 5.
Implementação algorítimica de códigos lineares para o 2-BAC 15

De uma maneira geral a solução satisfaz :

2,8810 < LN/ N + 1/N < 2,8867, N≥4

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).

2.4 Teoria da informação para canais de acesso múltiplo

Podemos definir formalmente canal de acesso múltiplo [1][9][13] como um modelo


matemático de transmissão no qual mais de um remetente pode acessá-lo simultaneamente,
com a saída deste canal sendo uma combinação dos sinais enviados pelos remetentes como
mostrado na figura 2.4.

ruído
X1
Remetente 1

X2
Remetente 2
Canal de Acesso f(x) f '(x)
Múltiplo

Remetente N XN

Figura 2.4: Sistema de comunicação de acesso múltiplo.

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

destes símbolos. O canal AND utiliza a função f(x) = Π i


xi com as entradas como símbolos
binários e a saída como produto sobre F2. Podemos visualizar algumas funções de combinação
na figura 2.5.

Canais de acesso múltiplo com


Entrada- Saída Discretas

Canal Real Canal de Canal XOR Canal AND Canal OR


Aditivo colisão (adição mod2) (multiplicativo) pulso on-off
f(x) = ∨ xi
f(x) =∑ x
i i
f(x) = xi, se só
1 usuário
f(x) =
i
xi ∑ f(x)= x
i i ∏onde ∨ é a
soma sobre os transmitir com operação
com soma
reais f(x) =c(colisão) produto sobre ou-lógico
sobre F2
se 2 ou mais os reais
transmitirem
Figura 2.5: Algumas funções de combinação utilizadas em sistemas 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

Figura 2.6: Canal de acesso múltiplo com dois usuários.

Em cada unidade de tempo, a fonte 1 envia símbolos xi pertencentes a um determinado


alfabeto X e a fonte 2 envia símbolos wi pertencentes a um determinado alfabeto W. A saída do
canal, dada através de uma determinada função de combinação dos símbolos de entrada, é
representada pelos símbolos yi pertencentes a um determinado alfabeto de saída Y .
Definimos os vetores x = (x1, .........., xn) e w = (w1, .........., wn) como as entradas dos
remetentes 1 e 2 respectivamente e y = (y1, .........., yn) como a saída do canal. Como o canal é
de tempo discreto e sem memória, com entradas e saídas pertencentes a alfabetos também
discretos, temos que a probabilidade condicional P(y|xw) representando a matriz de transição
do canal é:

P(y|xw) = Π i
P(yi|xiwi)
Implementação algorítimica de códigos lineares para o 2-BAC 17

Representamos por (C1,C2) um código de comprimento n para dois remetentes, onde o


código constituinte C1 tem M palavras { x1, x2 .........., xM } e o código constituinte C2 tem L
palavras {w1, w2 .........., wL }.
A taxa conjunta R do código (C1,C2) é dada por:

(ln M ) (ln L)
R = R1 + R2 = +
n n

Um importante resultado acerca destes canais é o teorema provado por Ahlswede e


Liao[13], enunciado a seguir.

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)

I(X;Y) I(X;Y|W) R1 (bits/símbolo)

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).

2.5 Canal aditivo com dois usuários binários

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

Figura 2.10: Canal aditivo com dois usuários binários.

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

Vamos verificar os dois modelos de canais mostrados na figura 2.11:

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

a) sem ruído b) com ruído


Figura 2.11: Canal aditivo com dois usuários binários; a) sem ruído ,b) com ruido.

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)

Figura 2.12: Região de capacidade para o 2-BAC.

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

2.5.1 Decodibilidade única

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

Para n = 2, é possível construir um par unicamente decodificável com C1 = {00,11 } e C2 =


log 2 log 3
{00, 01, 10 }. A taxa de transmissão para C1 e C2 é ( , ), que é um ponto dentro da
2 2
região de capacidade (figura 2.12). As possíveis saídas para o 2-BAC sem ruído são:

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}.

Onde a primeira linha representa as palavras-código de C1 , a primeira coluna


representa as palavras-código de C2 e as saídas são as somas símbolo a símbolo nos reais das
linhas com as colunas.
Implementação algorítimica de códigos lineares para o 2-BAC 21

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

portanto a taxa conjunta para este código será:

log(2 n − 1) + 1
R = R1 + R2 = que tende para 1, quando n → ∞
n

2.5.2 Códigos lineares para o 2-BAC

Vamos analisar o comportamento das taxas de transmissão quando ambos os códigos


constituintes C1 e C2 são lineares e quando apenas um dos dois códigos constituintes é linear.
Quando C1 e C2 forem códigos binários lineares com parâmetros (n,k1) e (n,k2)
respectivamente, para que (C1,C2) seja unicamente decodificável é preciso que eles não tenham
mais de uma palavra-código em comum. Para que isto ocorra temos que: k1+ k2 ≤ n [1] e
portanto,

log M 1 + log M 2 k1 + k 2
R = R1 + R2 = = ≤1
n n

onde, Mi é o número de palavras-código de Ci . Desta forma vemos que a taxa de transmissão


conjunta R não poderá ultrapassar 1 . Como mostra o gráfico da figura 2.14

R2 (bits/símbolo)

1 R1 (bits/símbolo)
Figura 2.14: Taxas atingíveis quando ambos os códigos constituintes são lineares.

Outro caso de interesse é o que apenas um dos códigos constituintes é linear.


22 Capítulo 2. Abordagens para canais de acesso múltiplo

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).

Códigos lineares para o 2-BAC possuem a desvantagem de não atingirem a capacidade


(log 3 − 1)
quando o código constituinte linear tiver taxa menor que , como decorre do teorema
log 3
abaixo provado por Weldon Jr [1][14].

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.
†

Podemos ilustrar este teorema através do gráfico abaixo:

R2 (bits/símbolo)

(log3-1)/log3

(log3-1)/log3 1 R1(bits/símbolo)

Figura 2.15: Taxas atingíveis quando um dos códigos constituintes é linear.

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

2.5.3 Algumas construções de códigos para o 2-BAC

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

Dmin= min {dH(x,y): x ∈ C1, y ∈ C2}

Dmáx= máx {dH(x,y): x ∈ C1, y ∈ C2}

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,

dH(x’,y’) = WH(x’⊕ y’) ≤ Dmáx

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

Portanto, máx{d1,d2} + Dmin > Dmáx


†
A construção acima pode ser aplicada a todos os códigos binários de peso constante
como os códigos obtidos das matrizes de Hadamard, Steiner Systems, códigos derivados dos
códigos Berlekamp-Justesen generalizados e códigos de Reed-Solomon [4].
Nosso interesse principal está no método de construção de códigos unicamente
decodificáveis para o 2-BAC, onde um dos códigos constituintes é linear, conforme veremos no
capítulo seguinte.
3 Fundamentos teóricos para a decodibilidade única de
códigos lineares no 2-BAC

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 é,

x = ( x1, x2, x3, ... xn )


w = ( w1, w2, w3, ... wn )

a saída para o 2-BAC será então,

y = ( x1 + w1, x2 + w2, x3 + w3 ... , xn + wn )

Definindo as operações de adição e multiplicação binários sobre n-uplas binárias como


as respectivas operações sobre F2, aplicadas componente a componente temos que,

25
26 Capítulo 3. Fundamentos teóricos para a decodibilidade única de códigos lineares no 2-BAC

x ⊕ w = ( x1⊕ w1, x2⊕ w2, x3 ⊕ w3, ... xn⊕ wn )


x . w = ( x1. w1, x2. w2, x3 . w3, ... xn. wn )

Podemos representar a saída do 2-BAC da seguinte forma, utilizando apenas operações


sobre o espaço vetorial das n-uplas sobre o Campo de Galois de ordem 2, isto é,

xi + wi = xi ⊕ wi + 2.xi.wi

onde, + , ⊕ , . , denotam respectivamente as operações de adição real, adição e multiplicação


binários.
Verificamos facilmente este fato a partir das tabelas abaixo.

+ 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.

Representaremos a saída do 2-BAC como um par de elementos binários, ou seja:

x + w ≈ ( x ⊕w , x.w )

A partir da expressão acima, juntamente com as tabelas anteriores, construímos uma


nova tabela representada na figura 3.2.

x+ w (x ⊕w , x . w )

0 (0,0)
1 (1,0)
2 (0,1)

Figura 3.2: Representação de saída do 2-BAC, como um par de elementos binários.

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

rearrumando os termos encontramos:

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 )

Resumindo o exposto acima, podemos enunciar o lema seguinte:

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 )

3.1 Códigos binários lineares

Se considerarmos C1 um código linear binário temos que, a soma de duas palavras-


código de C1 é uma terceira palavra-código em C1, portanto, x1⊕ x2 = x3 , onde x3 é um terceiro
elemento de C1. Assim, reescrevemos as equações acima da seguinte forma:
28 Capítulo 3. Fundamentos teóricos para a decodibilidade única de códigos lineares no 2-BAC

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:

Se considerarmos que os vetores (0000000, 1010101, 0110011, 1100110, 0001111, 1011010,


0111100, 1101001) são palavras-código de C1, então podemos ter o seguinte arranjo padrão:

0000000 1010101 0110011 1100110 0001111 1011010 0111100 1101001


0000001 1010100 0110010 1100111 0001110 1011011 0111101 1101000
0000010 1010111 0110001 1100100 0001101 1011000 0111110 1101011
0000011 1010110 0110000 1100101 0001100 1011001 0111111 1101010
0000100 1010001 0110111 1100010 0001011 1011110 0111000 1101101
0000101 1010000 0110110 1100011 0001010 1011111 0111001 1101100
0000110 1010011 0110101 1100000 0001001 1011100 0111010 1101111
0000111 1010010 0110100 1100001 0001000 1011101 0111011 1101110
0010000 1000101 0100011 1110110 0011111 1001010 0101100 1111001
0010001 1000100 0100010 1110111 0011110 1001011 0101101 1111000
0010010 1000111 0100001 1110100 0011101 1001000 0101110 1111011
0010011 1000110 0100000 1110101 0011100 1001001 0101111 1111010
0010100 1000001 0100111 1110010 0011011 1001110 0101000 1111101
0010101 1000000 0100110 1110011 0011010 1001111 0101001 1111100
0010110 1000011 0100101 1110000 0011001 1001100 0101010 1111111
0010111 1000010 0100100 1110001 0011000 1001101 0101011 1111110
Figura 3.4: Arranjo padrão esquemático.
Implementação algorítimica de códigos lineares para o 2-BAC 29

Se definirmos para o vetor w2 pertencente a F n2 o conjunto exclusão Z w2 consistindo


dos vetores w1 dados pela equação (3.1), onde tomamos o vetor x3 ∈ C1 não nulo e satisfazendo
a equação (3.2) para algum (x1 ⊕ w2) ∈ v ⊕C1 teremos o seguinte teorema.

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

= x3 . ( (x1 ⊕ xi ⊕ xi′ ) ⊕ xi′ ⊕ v )


= x3 . (x1′ ⊕ w2′ )

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

concluímos que S w' = S w2 .


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.

Vamos considerar w2 = 0000001

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.

Assim S v ⊕C1 = {1100110, 1011010, 0111100}


Agora que já conhecemos o conjunto S v ⊕C1 podemos expressar Z w2 da seguinte forma:

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

será composto de todos os vetores w1 que devem ser excluídos de C2.

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

Portanto w2 ∉ Z Av ⊕ C se, e somente se, Z w2 ∩ Av ⊕C1 = ∅.


1
†

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

0≤ i, j ≤ m-1, se tomarmos um código C2 tal que C2 = C 2 ∪ M, onde (C1 , C 2 ) é


' '
quaisquer
unicamente decodificável e C 2 ∩ (v⊕C1) = ∅ então, C 2 ∩ M = ∅ e (C1,C2) é unicamente
' '

decodificável.
†

Exemplo3.3:

Vamos encontrar o conjunto Z Av ⊕ C e Av ⊕C1 pertencente a classe lateral (v⊕C1), onde v =


1

0000001 no arranjo padrão da figura 3.4.


32 Capítulo 3. Fundamentos teóricos para a decodibilidade única de códigos lineares no 2-BAC

Sabemos do exemplo anterior que S v ⊕C1 = {1100110, 1011010, 0111100}


Escolhendo w2 = 0000001 então,
w1 = w2 ⊕ x3 ⇒ Z w2 = {1100111, 1011011, 0111101}
Escolhendo w2 = 1010100 então,
w1 = w2 ⊕ x3 ⇒ Z w2 = {0110010, 0001110, 1101000}
Desta forma ,
Z Av ⊕ C = {1100111, 1011011, 0111101, 0110010, 0001110, 1101000}
1

Av⊕C1 = {0000001, 1010100}

É possível gerar um espaço linear a partir de S v ⊕C1 consistindo no conjunto de todas as


possíveis combinações lineares de vetores de S v ⊕C1 , que denotaremos por ε v ⊕C . Como
1

S v⊕C1 ⊆ C1 e C1 é um espaço linear temos que ε v ⊕C1 é um subespaço de C1. Portanto ε v ⊕C é


1

subespaço de C1 gerado por S v ⊕C1 .

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

∀ w2 ∈ v⊕C1 , o que implica que Υ w2 ∈v ⊕C1


Ww2 ⊆ v⊕C1 . Por outro lado, como ε v⊕C1 é
subespaço de C1 , então 0 ∈ ε v ⊕C1 e portanto w2 ∈ Ww2 . Logo, v ⊕ C1 ⊆ Υ w2 ∈v ⊕C1
Ww2 , donde
concluímos que Υ w2
Ww2 = v⊕C1.
Ww2i e Ww2 j são duas classes laterais de ε v ⊕C1 em relação a F n2 e portanto são disjuntas,
completando assim a prova do teorema.
†

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

2-BAC, então o conjunto


L −1 L −1
Av⊕C1 = Υ (w2i ⊕ w2m ) ⊕ AWw2 =
i =0
m
Υ (w
i =0
2i ⊕ w2m ) ⊕ w ∈ v⊕C1 ; w ∈ Ww2 j ⊆ v⊕C1

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

v⊕C1 teremos encontrado todas as palavras-código de C2.


A partir da construção acima é possível atingir o máximo número de vetores
pertencentes a Av ⊕C1 , podemos ver a razão desta afirmação se supormos que M = { w20 , w21 ,
34 Capítulo 3. Fundamentos teóricos para a decodibilidade única de códigos lineares no 2-BAC

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.

3.2 Códigos binários lineares fortemente ortogonais

Cabral [1] lançou o conceito de códigos fortemente ortogonais. Iremos apresentar os


resultados matemáticos abaixo por questão de completude, pois os princípio a serem usados no
capítulo 4, seção 4.1,dependem desta teoria.

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)

Figura 3.6: Representação de matriz geradora de um código fortemente ortogonal.

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

00...1 0...0 0...0 ... 1...1 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

Escrevendo a equação (3.2) de outra forma temos:

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

Vamos considerar y2 = v, onde v é o líder de classe de uma classe lateral e vamos


encontrar todos estes líderes utilizando a matriz da figura 3.8 como matriz geradora.

0 (n-k)xk In-k

Figura 3.8: Matriz geradora dos líderes de classe.

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)

tem as “k” coordenadas mais à esquerda nulas, assim


x3. v (3.4)
também deverá ter, porém isto só acontecerá se ai ou bi = 0, então teremos:

∑ 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

Se somarmos as equações acima teremos:

x3’ .v ⊕ x3” . v = 0

(x3’ ⊕ x3”) . v = 0

x3’’’ . v = 0 , onde x3”’ ∈ C1

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 .
†

Sabe-se da álgebra [26][27]que se V e W são dois espaços vetoriais de dimensões n e


m, respectivamente e F: V → W uma transformação linear de V em W, então

dim Ker( F ) + dim F( V) = n,

onde n é a dimensão de V e Ker(F), denominado núcleo da transformação F, é o conjunto de


vetores v ∈ V tais que F(v) = 0

Vamos a partir de agora verificar qual a cardinalidade máxima do conjunto Av ⊕C1 .


Primeiramente é necessário descobrirmos qual a dimensão do Ker ( Tv ).

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 dim Ker (Tv) é o conjunto de vetores ci para os quais ci → Tv (ci ) = 0

dim Ker (Tv) + dimTv(C1) = dim C1

dim Ker (Tv) + dimTv(C1) = k

Como m é o número de linhas ci’s para as quais ci . v ≠ 0 e como Tv(C1) ≠ 0, são


linearmente independentes e portanto formam uma base para Tv(C1), temos que a dimTv(C1) =
m, assim:

dim Ker (Tv) + m = k

dim Ker (Tv) = k - m


†

Teorema 3.7: A cardinalidade máxima do conjunto Av⊕C1 é 2m.


Demonstração:
A demonstração é imediata, visto que:

⎪ C1⎪= [ C1 : S v ⊕C1 ] . ⎢ S v ⊕C1 ⎢

como, ⎢ S v ⊕C1 ⎢= ⎢Ker (Tv) ⎢ = 2k-m


38 Capítulo 3. Fundamentos teóricos para a decodibilidade única de códigos lineares no 2-BAC

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.
†

A partir do resultado anterior encontraremos a máxima cardinalidade para C2 de modo


que (C1,C2) seja unicamente decodificável e fortemente ortogonal. Para facilitar o entendimento
vamos representar um vetor x3 ∈ C1 como mostrado abaixo.

x3 = ( a1a2 ... ak a1a1 ... a1 a2a2 ... a2 ... akak ... ak 00... 0)

onde os k símbolos mais à esquerda representam a mensagem, e cada conjunto de ai’s, 1 ≤ i ≤ k,


é um vetor de comprimento li formado por vetores nulos ou com todos os símbolos 1’s.
Para obtermos semelhança com as palavras-código de C1 podemos dividir os líderes de
classe v em blocos vi, 1 ≤ i ≤ k+1, com os mesmos comprimentos li’s, isto é

v = ( 00 ... 0 v1 v2 ... vk vk+1 ) (3.5)

onde os k símbolos mais à esquerda do vetor v são nulos.


Analogamente podemos escrever ci da seguinte forma:

ci = ( 0...010...0 0l1 0l2 ... 1li ... 0lk 0lk+1 )

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

onde li é o comprimento do bloco vi.

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.

Corolário 3.4: A taxa de transmissão do código C2 é dada por

log(∑m =0 (2 m.N m )) + l k +1
k

R2 = (3.9)
k + ∑i =1 l m + l k +1
k

Um caso especial de códigos fortemente ortogonais é obtido fazendo lk+1 = 0 e li = l, 1 ≤


i ≤ k. Neste caso a expressão (3.8) torna-se

N m = (2 l − 1) m ( mk ) (3.10)

e a taxa de transmissão será

log(2 l +1 − 1)
R2 = (3.11)
l +1

A taxa do 2-BAC , R = R1 + R2 será

1 + log(2 l +1 − 1)
R= (3.12)
l +1
4 Resultados Experimentais

A partir dos resultados obtidos no capítulo 3 implementamos o algoritmo de Cabral


[1] em Visual basic (anexo A), o qual permite encontrar o conjunto de maior cardinalidade
de palavras-código para um código C2 a partir de um código linear C1 dado, de modo a
garantir a decodibilidade única. Temos a ressalva de que na nossa implementação não é
encontrado o subespaço ε v⊕C1 , assim não particionamos v⊕C1 em classes laterais Ww2 , por
não acharmos que desta forma há maior rapidez nos cálculos. De uma maneira geral
podemos resumir esta implementação da seguinte forma:

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.

6) Encontramos então as taxas de transmissão dos códigos C1 , C2 e do 2-BAC


respectivamente,
k
R1 = (4.1)
n

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

Podemos ilustrar os passos acima através do fluxograma seguinte:

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

todas as palavras-código pertencentes a C2.

É oportuno ilustrarmos as telas que são apresentadas no software implementado:


42 Capítulo 4. Resultados Experimentais

Ícone utilizado para alterar número


de linhas e colunas na matriz G

Ícone utilizado para cálculo do arranjo padrão

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.

Recalcula o arranjo padrão a partir de


palavras-código de C1 inseridas na primeira linha

Permite alterar o número de linhas e


colunas do arranjo padrão
Desfaz o arranjo padrão existente a partir
da matriz geradora da tela origem
Leva às palavras-código de C2

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:

A partir da matriz geradora:

1 0 0 0 0 1 1
G= 0 1 0 0 1 1 0
0 0 1 1 0 0 0

encontramos o conjunto de palavras-código de C1, isto é,


C1= {0000000, 0011000, 0111110, 1000011, 1011011, 1100101, 1111101}
44 Capítulo 4. Resultados Experimentais

construímos então o arranjo padrão de C1 em relação a F2n .

Figura 4.5: Arranjo padrão do exemplo 4.1.

Vamos encontrar para cada classe lateral o conjunto S v ⊕C1 :


- Para v = 0000001, S v ⊕C1 = {0011000, 0100110, 01111100}
- Para v = 0000010, S v ⊕C1 = {0011000, 1100101, 1111101, 1011011, 1000011, 0100110,
0111110}
- Para v = 0000011, S v ⊕C1 = {0011000, 0100110, 0111110}
- Para v = 0000100, S v ⊕C1 = {0011000, 1000011, 1011011}
- Para v = 0000101, S v ⊕C1 = {0011000}
- Para v = 0000110, S v ⊕C1 = {0011000, 1000011, 1011011}
- Para v = 0000111, S v ⊕C1 = {0011000}
- Para v = 0001000, S v ⊕C1 = {0100110, 1000011, 1100101}
- Para v = 0001001, S v ⊕C1 = {0100110}
- Para v = 0001010, S v ⊕C1 = {1100101, 1000011, 1011011, 0100110}
Implementação algorítimica de códigos lineares para o 2-BAC 45

- Para v = 0001011, S v ⊕C1 = {0100110}


- Para v = 0001100, S v ⊕C1 = {1000011}
- Para v = 0001101, S v ⊕C1 = ∅
- Para v = 0001110, S v ⊕C1 ={1000011}
- Para v = 0001111, S v ⊕C1 = ∅
Em seguida obtemos o conjunto Z v ⊕C1 :
- Para v = 0000001, Z v ⊕C1 = {0011001, 0100111, 0111111, 1000010, 11001000, 1111100}
- Para v = 0000010, Z v ⊕C1 = {0011010, 0100100, 0111100, 1000001, 1011001, 1100111,
1111111}
- Para v = 0000011, Z v ⊕C1 = {0011011, 0100101, 0111101, 1011000, 1100110, 1111110}
- Para v = 0000100, Z v ⊕C1 = {0011100, 0111010, 1000111, 1011111, 1100001, 1111001}
- Para v = 0000101, Z v ⊕C1 = {0011101, 0111011, 1011110, 1111000}
- Para v = 0000110, Z v ⊕C1 = {0011110, 0111000, 1000101, 1011101, 1100011, 1111011}
- Para v = 0000111, Z v ⊕C1 = {0011111, 0111001, 1011100, 1111010}
- Para v = 0001000, Z v ⊕C1 = {0101110, 0110110, 1001011, 1010011, 1101101, 1110101}
- Para v = 0001001, Z v ⊕C1 = {0101111, 0110111, 1101100, 1110100}
- Para v = 0001010, Z v ⊕C1 = {0101100, 0110100, 1001001, 1010001, 1101111, 1110111}
- Para v = 0001011, Z v ⊕C1 = {0101101, 0110101, 1101110, 1110110}
- Para v = 0001100, Z v ⊕C1 = {1001111, 1010111, 1101001, 1110001}
- Para v = 0001101, Z v ⊕C1 = ∅
- Para v = 0001110, Z v ⊕C1 = {1001101, 1010101, 1101011, 1110011}
- Para v = 0001111, Z v ⊕C1 = ∅
Calculamos agora os conjuntos Av⊕C1 para cada classe lateral:
-Para v = 0000001, Av ⊕C1 = {0000001, 1000010}
-Para v = 0000010, Av ⊕C1 = {0000010}
-Para v = 0000011, Av ⊕C1 = {0000011, 1000000}
-Para v = 0000100, Av ⊕C1 = {0000100, 0100010}
-Para v = 0000101, Av ⊕C1 = {0000101, 0100011, 1000110, 1100000}
-Para v = 0000110, Av ⊕C1 = {0000110, 0100000}
-Para v = 0000111, Av ⊕C1 = {0000111, 0100001, 1000100, 1100010}
-Para v = 0001000, Av ⊕C1 = {0001000, 0010000}
-Para v = 0001001, Av ⊕C1 = {0001001, 0010001, 1001010, 1010010}
-Para v = 0001010, Av ⊕C1 = {0001010, 0010010}
-Para v = 0001011, Av ⊕C1 = {0001011, 0010011, 1001000, 1010000}
46 Capítulo 4. Resultados Experimentais

-Para v = 0001100, Av ⊕C1 = {0001100, 0010100, 0101010, 0110010}


-Para v = 0001101, Av ⊕C1 = {0001101, 0010101, 0101011, 0110011, 1001110, 1010110,
1101000, 1110000}
-Para v = 0001110, Av ⊕C1 = {0001110, 0010110, 0101000, 0110000}
-Para v = 0001111, Av ⊕C1 = {0001111, 0010111, 0101001, 0110001, 1001100, 1010100,
1101010, 1110010}

Todas as palavras-código de C2 estão representadas abaixo na sua posição original do arranjo


padrão, incluindo a palavra-código que C2 pode ter em comum com C1, que neste caso é a
palavra toda nula.

Figura 4.6: Palavras-código encontradas para C2.

Vemos que k = 3, n = 7 e M = 54, assim as taxas de transmissão de C1, C2 e do 2-BAC


derivadas das equações (4.1), (4.2) e (4.3) serão respectivamente, R1 = 0,428; R2 = 0.822 e R =
R1 + R2 = 1,25.
Implementação algorítimica de códigos lineares para o 2-BAC 47

4.1 Análise de códigos lineares fortemente ortogonais

É conveniente representarmos a matriz geradora do código linear fortemente ortogonal


C1 na forma sistemática conforme é mostrado na figura 4.1.

K l1-1 l2 -1 lk-1 lk+1


10...0 1...1 0...0 ... 0...0 0...0
01...0 0...0 1...1 ... 0...0 0...0

0...01 0...0 0...0 ... 1...1 0...0

Figura 4.7: Matriz geradora de código linear fortemente ortogonal.

Outra forma de representação da matriz mostrada acima é obtida quando a retiramos da


forma sistemática agrupando todas as lj , 1≤ j ≤ k+1 colunas idênticas, inclusive as k colunas
mais à esquerda. Podemos visualizar esta representação através da figura 4.8.

l1 l2 lk lk+1
1...1 0...0 ... 0...0 0...0
0...0 1...1 ... 0...0 0...0

0...0 0...0 ... 1...1 0...0

Figura 4.8: Matriz geradora de código fortemente ortogonal com todas as lj colunas idênticas agrupadas.

Neste momento faz-se necessário apresentarmos uma construção já citada no capítulo 2,


para códigos unicamente decodificáveis.

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:

a) Considerando n=1 temos:


C1= {0, 1}
C2= {0}, |C2|= 1

b) Considerando n=2 podemos ver no capítulo 2 que:


C1= {00, 11}
C2= {00, 01,10}, |C2|= 3

c) Considerando n=3 temos:


C1= {000, 111}
C2= {000, 001, 010, 011, 100, 101, 110}, |C2|= 7
48 Capítulo 4. Resultados Experimentais

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

1 ... 1 0 ... 0 0 ... 0


G1 = 0 ... 0 G2 = 1 ... 1 ...... Gk+1= 0 ... 0
... ... ...
0 ... 0 0 ... 0 0 ... 0

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.

Vemos que as submatrizes geradoras Gi’s , 1≤ i ≤ k, são de um código de bloco linear


com parâmetros (1,lj) e cada uma delas gera duas palavras-código {0lj, 1lj}. Vamos chamar de
C1j, o código gerado pela matriz geradora Gj e C2j, o código encontrado com o máximo
número de palavras-código possível de modo a obtermos a decodibilidade única para o 2-BAC
(C1j,C2j). Queremos mostrar que o C2j encontrado através do algoritmo implementado é o
mesmo mostrado na construção 4.1 anterior. Este fato verifica-se porque, após obtermos as
duas palavras-código de C1j de comprimento lj, particionamos o conjunto das lj -uplas binárias
em classes laterais de C1j e verificamos que

S v ⊕ C1 j = {x3j ∈ C1j; x3j . ( x1j ⊕ w2j ) = 0, para algum x1j ∈ C1j}= ∅

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,

Z w2 j = { w2j ⊕ x3j ∈ v ⊕ C1j, ∀ x3j ∈ S v ⊕C1 j , x3j ≠ 0 } = ∅


pois não teremos o elemento x3j.
Desta forma não eliminaremos nenhum vetor das classes laterais e o código C2j será
formado por todas as lj -uplas contidas nas classes laterais juntamente com uma lj -upla que C2j
Implementação algorítimica de códigos lineares para o 2-BAC 49

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

Podemos sintetizar os resultados obtidos acima no seguinte teorema.

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

modo a obtermos o par (C1,C2) unicamente decodificável no 2-BAC.

Exemplo 4.2:

Consideremos a matriz geradora fortemente ortogonal para C1 abaixo, com l1 = 3, l2 = 2 e l3 =


1. Interessa-nos saber qual o número máximo de palavras-código que podemos obter para C2 de
modo a garantir a decodibilidade única de (C1,C2) no 2-BAC.

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

Utilizando a equação (4.1) temos que:


3
C 2 = ∏ (2 lj − 1) = (2l1-1).(2l2-1).(2l3-1) = (23-1).(22-1).(21-1) = 21
lj =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

Figura 4.10: Palavras-código obtidas para C2.

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

0...01 0...0 0...0 ... 1...1

com lj = l, 1≤ j ≤ k.

Uma propriedade interessante de códigos fortemente ortogonais balanceados é que


suas matrizes geradoras podem ser representadas de forma equivalente por matrizes
identidade dispostas lado a lado, conforme figura 4.11 , onde Ik é a matriz identidade de
dimensão k.
Implementação algorítimica de códigos lineares para o 2-BAC 51

Ik Ik ... Ik

a)

k k k k
10...0 10...0 10...0 ... 10...0
01...0 01...0 01...0 ... 01...0

0...01 0...01 0...01... 0...01


b)

Figura 4.11: a) e b) Representação de matrizes fortemente ortogonais balanceadas.

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

00...0 00...0 ... 11...1

Figura 4.12: Representação de matriz geradora fortemente ortogonal balanceada agrupando-se todas as
colunas idênticas.

Aplicando o teorema 4.1 para matrizes fortemente ortogonais balanceadas,


encontramos que,

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

Considerando a matriz geradora para um código linear C1 fortemente ortogonal balanceado


como abaixo, interessa-nos saber qual o número máximo de palavras-código para C2 de modo a
haver a decodibilidade única para o 2-BAC.

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.

Figura 4.13: Palavras-código encontradas para C2.

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

4.2 Códigos de bloco lineares repetitivos

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.

De acordo com a definição acima, as palavras-código de um código linear repetitivo


têm a seguinte representação.

k n-k
x1 = ...... 1 ....1 e

k n-k
x2 = ...... 0 .... 0
54 Capítulo 4. Resultados Experimentais

Exemplo 4.4:

O código C = {10111, 01111, 11000, 00000}, no qual n = 5 e k = 2, é um código linear


repetitivo pois além de linear, temos duas palavras-codigo com os n-k símbolos de paridade
“000” e duas palavras-código com os n-k símbolos de paridade “111” .

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:

1 0 0 ... 0 g00 g01 ...... g0,n-k-1


G= 0 1 0 ... 0 g10 g11 ...... g1,n-k-1

0 0 0 ... 1 gk-1,0 gk-1,1 ...... gk-1,n-k-1

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

Figura 4.14: Matriz geradora dos líderes de classe.

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

O conceito de códigos fortemente ortogonais balanceados foi introduzido, e foi verificado


através de busca exaustiva para diversos valores dos parâmetros, que estes códigos possuem a
mais alta taxa de transmissão atingível com a construção linear.
Também foi introduzido o conceito de códigos lineares repetitivos, para os quais foram
derivadas as expressões para o número de palavras-código de C2. São elas, 2n-k+1-2 ou 2n-k+1-1,
que são respectivamente os números de palavras-código de C2 quando a matriz geradora de C1
tem um número par de linhas com os n-k símbolos mais à direita todos 1’s ou um número
ímpar de linhas com os n-k símbolos mais à direita todos 1’s, respectivamente.

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)

Figura 5.1: Taxas atingíveis quando um dos códigos constituintes é sistemático .

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

[1] H. A. Cabral, Codificação para Canal de Acesso Múltiplo Síncrono, Dissertação de


mestrado, Departamento de Eletrônica e Sistemas, Universidade Federal de Pernambuco,
Recife, Brasil, 1994.

[2] J. L. Massey, “Some new approaches to random-access communications”, in


Performance’87 (Eds.P.J. Courtois and G. Latouche), Proc. 12 th IFIP WG 7.3 Int. Symp. in
Computer Performance Modelling. Amsterdam and New York: North Holland 1988, pp.551-
569.

[3] J. L. Massey , “Channel models for random-access systems”, in Performance Limits in


Communication Theory and Practice (Ed J.K. Skwirzynski), NATO Advanced Study Institute
Series E142. Dordrecht, The Netherlands: Kluwer Academic, 1988, pp. 391-402.

[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.

[13] R. G. Gallager, “A Perspective on Multiaccess Channels”, IEEE Trans. Inform. Theory,


Vol. IT-31, Number 2, 1985, pp.124-142.

[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,.

[19] J. Capetanakis, “ A protocol for resolving conflicts on ALOHA channels”, Abstracts of


Papers, IEEE Int. Symp. Info. Th., vol. IT-31, March 1985, pp. 176-184.

[20] B. S. Tsybakov and V. A . Mikhailov, “ Slotted multiaccess packet broadcasting feedback


channel”, Probl. Peredachi Inform., vol. 14, oct.dec.1978, pp. 32-59,.

[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.

[22] P. de Laval and S. Abdul-Jabbar, “ Decoding of superimposed codes in multiaccesss


communication, “ in Conf. Proc. On Area Comm, EUROCOM’88 ( Stockholm, Sweden, June
1998), pp. 154-157.

[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

[24] R. T. Chien and W. D. Frazer, “ No application of coding theory to document retrieval,”


IEEE Trans. Inform. Theory, vol. IT-12 , N°2, pp.92-96, 1966.

[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.

[30] V. C. da Rocha, Jr., Seminário sobre codificação para o 2-BAC, Departamento de


Eletrônica e Sistemas , Universidade Federal de Pernambuco, Recife, Brasil ,1995.

[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.

Você também pode gostar