• Nenhum resultado encontrado

2.2 Códigos Corretores de Erro

2.2.3 Complexidade de Decodificação dos Códigos Convolucionais e Turbo

2.2.3.3 Complexidade do Algoritmo Max-Log-MAP

Nesta seção iremos detalhar os cálculos do algoritmo Max-Log-MAP que é uma variação do MAP e foi detalhado na Seção 2.2.2. O algoritmo Max-Log-MAP tem como objetivo simplificar os cálculos uma vez que utiliza uma versão logarítmica do MAP. Assim, não é preciso calcular exponenciais e as multiplicações e divisões são substituídas por adições e subtrações.

• Métricas de ramos - Γi(s0, s):

Para calcular as métricas dos ramos, o algoritmo Max-Log-MAP utiliza a Equação (2.72). Nesta equação são realizadas n + 1 multiplicações por ±1, mais uma multiplicação (por Lc), n adições

e uma divisão por 2. Como esta métrica é calculada para todos os ramos da treliça, então no total são realizadas (n + 2) 2k+m multiplicações, n2k+m adições e 2k+m divisões. A referência [22] tam-

bém mostra quais são as operações do algoritmo Max-Log-MAP, mas não considera a multiplicação pelo termo Lc. Porém, iremos considerar este termo por fazer parte da decodificação turbo e ser

considerada em outras referências sobre o assunto [10, 16]. • Métricas de estados - Ai(s):

O cálculo das métricas de estados é feito com base na Equação (2.69). Observando a equação, pode- mos ver que precisa ser realizada 1 adição - entre a métrica de estado anterior Ai−1(s0) e a métrica de

cada ramo Γi(s0, s) - para cada ramo da treliça. Assim, são 2k+madições para cada seção da treliça.

A referência [22] considera para este cálculo somente 2madições. Porém, como o valor da métrica de

ramo é diferente em cada ramo e a métrica de estado anterior também varia para cada estado, temos que considerar as 2k+m diferentes métricas e, consequentemente diferentes adições. Além desses

cálculos, é preciso fazer uma comparação entre as métricas acumuladas de cada estado e decidir pela maior. Isso implica em 2m operações de máximo com 2k argumentos ou 2k

− 1 2m = 2k+m

− 2m

operações de máximo com 2 argumentos para cada seção da treliça . • Métricas de estados - Bi−1(s0):

Cálculo Adi./Sub. Multiplicação Divisão max Γi(s0, s) n2k+m (n + 2) 2k+m 2k+m Ai(s) 2k+m 2k+m− 2m Bi−1(s0) 2k+m 2k+m− 2m L (ui|y) 2 × 2k+m+ 1 2k+m− 2 Total (n + 4) 2k+m+ 1 (n + 2) 2k+m 2k+m 3 × 2k+m− 2m+1− 2

Tabela 2.4: Número de Operações Matemáticas do Algoritmo Max-Log-MAP.

As métricas Bi−1(s0) são calculadas de maneira similar a Ai(s), mas agora no sentido contrário da

treliça. O cálculo de Bi−1(s0) é realizado como mostrado em (2.70) e usa as mesmas operações que

no cálculo de Ai(s). Ou seja, no total são 2k+m adições e 2k+m− 2m operações de máximo com 2

argumentos.

• LLR - L (ui|y):

O cálculo da LLR é feito utilizando a Equação (2.73). Para o cálculo de cada um dos 2k+m−1 termos

do numerador são realizadas 2 adições. Para o cálculo final do numerador são realizadas mais uma comparação (operação de máximo) com 2k+m−1argumentos, que pode ser substituída por 2k+m−1−1

operações de máximo com 2 argumentos. Os mesmos cálculos são repetidos para o denominador. Assim, para calcular o numerador e o denominador de (2.73) são realizadas 2 × 2k+m adições e

2k+m − 2 operações de máximo com 2 argumentos. O cálculo final da LLR ainda prevê mais 1

subtração. As operações que o algoritmo MAP utiliza podem ser vistas resumidamente na Tab. 2.4.

2.2.3.4 Complexidade do Algoritmo Log-MAP

O algoritmo Log-MAP usa o mesmo conceito que o algoritmo Max-Log-MAP, ao empregar uma versão logarítmica do algoritmo MAP, substituindo, assim, as multiplicações e divisões por adições e subtrações, além de buscar eliminar cálculos de exponenciais tornando a decodificação menos com- plexa. A diferença entre os dois algoritmos é que no Log-MAP é inserido um termo de correção da aproximação feita no Max-Log-MAP. O algoritmo Max-Log-MAP usa a seguinte aproximação:

ln (ex1

+ ex2

) ∼= max (x1, x2) (2.78)

Essa aproximação faz com que o algoritmo Max-Log-MAP tenha uma perda de cerca de 0, 35 dB em relação ao MAP, conforme já discutido na Seção 2.2.2. O algoritmo Log-MAP usa o seguinte termo de correção para a aproximação:

ln (ex1

+ ex2

) = max (x1, x2) + ln 1 + e−|x1−x2|



Cálculo Adi./Sub. Multiplicação Divisão Max e Log Γi(s0, s) n2k+m (n + 2) 2k+m 2k+m Ai(s) 2k+m 2k+m− 2m Bi−1(s0) 2k+m 2k+m− 2m L (ui|y) 2k+m+1+ 1 2k+m− 2 Total (n + 4) 2k+m+ 1 (n + 2) 2k+m 2k+m 3 × 2k+m− 2m+1− 2

Tabela 2.5: Número de Operações Matemáticas do Algoritmo Log-MAP.

Todos os cálculos do algoritmo Log-MAP são os mesmos que os do algoritmo Max-Log-MAP, ex- ceto que agora para calcular ln (ex1 + ex2) é feita a operação definida em (2.79), ao invés da operação

max (x1, x2).

• Métricas de ramos - Γi(s0, s):

Da mesma maneira que feito pelo algoritmo Max-Log-MAP são realizadas (n + 2) 2k+m multiplica-

ções, n2k+madições e 2k+mdivisões.

• Métricas de estados - Ai(s):

De maneira similar ao que o algoritmo Max-Log-MAP faz, mas com o termo de correção, para calcular as métricas de estados são realizadas 2k+madições e 2k+m− 2m operações de máximo e de

logaritmo com 2 argumentos para cada seção da treliça. • Métricas de estados - Bi−1(s0):

As métricas Bi−1(s0) são calculadas da mesma maneira que Ai(s), porém no sentido contrário da

treliça. No total são 2k+madições e 2k+m− 2moperações de máximo e de logaritmo com 2 argumen-

tos.

• LLR - L (ui|y):

Para o cálculo da LLR são realizadas 2 × 2k+m adições e 2k+m − 2 operações de máximo e de

logaritmo com 2 argumentos. O cálculo final da LLR ainda prevê mais 1 subtração. As operações que o algoritmo Log-MAP faz podem ser vistas resumidamente na Tab. 2.5.

2.2.3.5 Comparativo entre a Complexidade dos Diferentes Algoritmos

A referência [22] elabora uma equação da complexidade dos algoritmos Max-Log-MAP e Log- MAP, que são os algoritmos mais utilizados em sistemas práticos por serem menos complexos em relação ao MAP. Além disso, também é feita uma comparação com a complexidade do algoritmo de

Algoritmo Complexidade Computacional Viterbi (2n + 2) 2k+m− 2m+1+ 6

MAP (2n + 17) 2k+m− 2m+1+ 20

Max-Log-MAP (2n + 13) 2k+m− 2m+2− 3

Log-MAP (2n + 37) 2k+m− 20 × 2m− 19

Tabela 2.6: Equações de Complexidade dos Algoritmos MAP, Max-Log-MAP, Log-MAP e Viterbi em Termos de Adições Equivalentes.

Viterbi. Para fazer a comparação entre a complexidade dos diferentes algoritmos, [22] mostra que as operações matemáticas e lógicas podem ser vistas como equivalentes a uma adição. Ou seja, todas as operações são normalizadas em relação ao número de ciclos de um DSP (Digital Signal Processor - Processador Digital de Sinais) para se fazer uma adição. Assim, temos as seguintes equivalências de adições:

• Adição/Subtração: 1 • Multiplicação: 1

• Máximo e Logaritmo (2 argumentos): 10 • max/min (2 argumentos): 2

• Divisão: 1 • Lookup table: 6 • Comparação: 1

Com base nesses números é possível determinar uma equação para a complexidade dos algoritmos MAP, Max-Log-MAP, Log-MAP e Viterbi em função somente do número de memórias e da taxa do codificador. Considerando o número de adições equivalentes de cada operação e as Tab. 2.2, 2.3, 2.4 e 2.5, temos as equações de complexidade de cada algoritmo, conforme mostra a Tab. 2.6. A tabela ilustra o número de cálculos feitos por cada algoritmo em uma seção da treliça, onde consideramos que as exponenciais e logaritmos realizados no algoritmo MAP podem ser calculados utilizando loo- kup tables, portanto com complexidade de 6 adições equivalentes.

Substituindo os valores de k, n e m para alguns decodificadores nas equações mostradas na Tab. 2.6 temos o número de adições equivalentes de cada algoritmo para decodificar uma seção da tre- liça. A Tab. 2.7 mostra o número de operações para os algoritmos citados considerando diferentes codificadores.

Codificador Viterbi MAP Max-Log-MAP Log-MAP

k/n=1/2, m = 2 46 181 117 229

k/n=1/3, m = 2 62 197 133 245

k/n=1/2, m = 3 86 341 237 477

k/n=1/3, m = 3 118 373 269 509

Tabela 2.7: Número de Operações Realizadas por Diferentes Algoritmos na Decodificação de um Intervalo da Treliça.

Podemos ver que a complexidade do algoritmo Log-MAP é maior do que do MAP em termos de adições equivalentes, pois a complexidade de se realizar as operações (max e log), corresponden- tes ao termo de correção do Log-MAP, é maior do que para se calcular exponenciais e logaritmos isoladamente.

A referência [22] mostra que o algoritmo Max-Log-MAP tem 2,5 vezes e o Log-MAP 5,5 vezes a complexidade do algoritmo de Viterbi para códigos com mais de 3 memórias e taxa 1/2. Porém,

essa complexidade é para o cálculo de uma única seção da treliça. Considerando a iteratividade da decodificação turbo e dois decodificadores concatenados em paralelo, a complexidade para os algoritmos Max-Log-MAP e Log-MAP é dada por [22]:

CM LM = 2, 5 × I × (2 × 2 mT) 2mV (2.80) e CLM = 5, 5 × I ×(2 × 2 mT) 2mV (2.81)

onde I é o número de iterações da decodificação turbo, mT é o número de memórias de cada deco-

dificador turbo e mV é o número de memórias do codificador convolucional que utiliza o algoritmo

de Viterbi na decodificação. Porém estas equações somente podem ser utilizadas para códigos de taxa1/2. Sendo assim, uma melhor comparação entre a complexidade dos diferentes algoritmos seria

através das equações mostradas na Tab. 2.6, mas levando em consideração o número de iterações e decodificadores do turbo.

Podemos ver que a complexidade de todos os algoritmos estão diretamente relacionados com o número de ramos na treliça 2k+m

. Nos capítulos seguintes iremos apresentar um método para redu- zir a complexidade da decodificação dos códigos convolucionais e turbo com base na eliminação de alguns ramos da treliça. A eliminação dos ramos se dá através da definição de limiares de confiabili- dade. São feitas abordagens diferentes para a decodificação dos códigos convolucional e turbo, mas o método é parecido para ambos os códigos. Iremos mostrar que o método funciona de forma efetiva para os algoritmos de Viterbi, MAP, Max-Log-MAP e Log-MAP.

Capítulo 3

Redução da Complexidade dos Códigos

Convolucionais

Conforme descrito na Seção 2.2.3.1, a decodificação dos códigos convolucionais utilizando o algoritmo de Viterbi necessita que sejam feitos muitos cálculos, conforme mostra a Tab. 2.2. A complexidade da decodificação depende do número de memórias e da taxa do codificador. Em sis- temas práticos, isso resulta em um grande processamento no decodificador, o que demanda tempo e também um grande consumo de energia dos dispositivos. Se alguns dos cálculos forem eliminados, consequentemente o tempo necessário para realizar a decodificação também irá diminuir. Assim, se reduz também o consumo de energia dos dispositivos.

Existem alguns trabalhos que buscam diminuir a complexidade de decodificação dos códigos convolucionais. Em [23] foi proposto um método que reduz em cerca de 30% a complexidade em relação a do algoritmo de Viterbi. Porém, esse método se aplica somente a um tipo específico de codificador, chamado de "duplamente complementar", que são codificadores que têm todas as suas saídas conectadas à primeira e última memória. A Fig. 2.4 ilusta um exemplo desse codificador. O método apresentado em [23] divide uma treliça com 2m estados em 2m−1treliças com 2 estados. Para

cada uma dessas treliças, se um estado tem uma métrica muito maior que a métrica do outro estado, então os ramos sobreviventes na treliça serão os que saem do estado com maior métrica. Assim, elimina-se os ramos que saem do estado com menor métrica.

Um outro método é apresentado em [24], onde o algoritmo de Viterbi é utilizado para identificar o vetor de erro ao invés da mensagem de informação. O método consiste em duas partes: na primeira são utilizadas algumas operações algébricas de maneira a determinar onde possíveis erros podem ter ocorrido na sequência recebida. Depois o algoritmo de Viterbi é aplicado somente nessas regiões para se tentar corrigir estes erros. Desta maneira, este método consegue reduzir a complexidade, porém somente é efetivo quando a sequência recebida tem poucos erros, ou seja, quando a razão sinal-ruído

(SNR) é alta. Podemos citar também outros trabalhos que visam a redução da complexidade na decodificação de códigos convolucionais como, por exemplo, [25] e [26].

Neste capítulo vamos apresentar um novo método para diminuir a complexidade de decodificação dos códigos convolucionais usando como referência o algoritmo de Viterbi, que foi detalhado na Seção 2.2.1.3. O método se baseia na eliminação de vários ramos da treliça de decodificação quando alguns bits são previamente decididos. Esses bits são decididos antes do processo de decodificação, quando as amostras recebidas são classificadas como confiáveis. Para classificar as amostras como confiáveis ou não, são definidos limiares de confiabilidade. O método será detalhado na seção a seguir.

3.1

Método para Redução da Complexidade de Decodificação

dos Códigos Convolucionais

De maneira simplificada, no transmissor de um sistema de comunicação sem fio, uma sequência de bits de informação é codificada de maneira a se ter a redundância necessária para que a maioria dos erros possa ser corrigida na decodificação. Após a codificação, os bits são modulados e transmitidos através de um canal de comunicação. O sinal que chega ao receptor é definido em (2.1), para um canal AWGN e em (2.7), para um canal com desvanecimento. Este sinal é demodulado e amostrado, obtendo-se assim uma sequência recebida y. A amostra recebida yi representa a i-ésima amostra da

sequência y, onde 1 ≤ i ≤N/r

c, em que N é o tamanho do bloco de bits de informação transmitido e

rc é a taxa do codificador convolucional.

Conforme comentado anteriormente, o método de redução de complexidade da decodificação se baseia no algoritmo de Viterbi e busca eliminar alguns ramos da treliça. A eliminação dos ramos se dá quando amostras do sinal recebido são classificadas como confiáveis, o que é feito quando uma amostra está dentro de uma das seguintes regiões de confiabilidade:

yi > +L, ou

yi 6 −L. (3.1)

Podemos ilustrar as regiões de confiabilidade definidas em (3.1), de acordo com a Fig. 3.1 [27]. Neste trabalho iremos considerar modulação binária onde os bits 0 e 1 são representados pelas amplitudes −1 e +1, respectivamente. Quando uma amostra é classificada como confiável tomamos uma decisão sobre este bit antes mesmo do processo de decodificação usando a seguinte regra:

0 +L -L Confiável Confiável Não confiável Não confiável yi

Figura 3.1: Regiões de Confiabilidade para Classificação das Amostras Recebidas.

• Se yi ≤ −L, então o bit ˆvi = −1;

• Se −L < yi < L, então o bit ˆvi não é previamente decidido, porque a sua amostra não é

confiável.

Assim, quando uma amostra recebida está dentro de uma região confiável, o seu bit codificado correspondente é decidido antes mesmo da decodificação, o que leva a uma redução da complexi- dade da decodificação. A ideia de se classificar as amostras funciona com base nas probabilida- des condicionais das amostras recebidas dado que foi transmitido um determinado bit, P (yi|vi),

o que pode ser melhor entendido observando-se a Fig. 3.2. Esta figura ilustra as PDFs condi- cionais P (yi|vi = −1) e P (yi|vi = +1) para um canal AWGN e um limiar L. A região hachu-

rada com linhas horizontais corresponde a P (yi ≥ +L|vi = +1) e a região hachurada com linhas

verticais correspondente a P (yi ≥ +L|vi = −1). Comparando as duas regiões podemos ver que

P (yi ≥ +L|vi = +1)  P (yi ≥ +L|vi = −1) para este limiar de confiabilidade L. Assim, se a

amostra recebida for maior que o limiar +L podemos tomar a decisão pelo bit ˆvi = +1, com uma

grande probabilidade de acerto. Similarmente, uma decisão pode ser tomada para a outra região de confiabilidade, correspondente ao bit ˆvi = −1.

O valor de cada probabilidade irá depender do limiar escolhido e da largura da gaussiana, ou seja, de seu desvio padrão. Para o canal de comunicação, o desvio padrão da gaussiana está ligado à relação sinal-ruído. Ou seja, quanto maior a potência do sinal em relação ao ruído, mais estreita será a gaussiana. Do mesmo modo, quanto menor a SNR, mais larga é a curva, o que pode fazer com que as duas áreas hachuradas tenham valores mais próximos, ocasionando um maior número de erros nesta decisão.

p(yi|vi= -1) -A +A +L y i 0 -L p(yi|vi= +1) P(yi≥+L|vi= +1) P(yi≥+L|vi= -1)

Figura 3.2: PDF das Probabilidades Condicionais.

Com base em (2.2) podemos calcular as probabilidades condicionais mostradas na Fig. 3.2. A P (yi ≥ +L|vi = +1) é dada por: P (yi ≥ +L|vi = +1) = ˆ ∞ +L 1 √ 2πσy exp −(y − my) 2 2σ2 y dy = ˆ ∞ +L 1 √ 2πσy exp −(y − A) 2 2σ2 y dy = Q L − A σy  (3.2)

onde my = +A é a média da gaussiana, σy é o desvio padrão e Q (x) é dado por:

Q (x) = ˆ ∞ x 1 √ 2π exp  −t 2 2  dt (3.3)

De maneira similar P (yi ≥ +L|vi = −1) é dada por:

P (yi ≥ +L|vi = −1) = Q

 L + A σy



(3.4) Somente para efeito de comparação, a Tab. 3.1 mostra os valores destas duas probabilidades para diferentes valores de L, onde definimos A = 1 e σy = 1. Podemos ver pelos valores da tabela que a

probabilidade P (yi ≥ +L|vi = +1) é sempre muito maior que P (yi ≥ +L|vi = −1) para os valores

de A, σy e L considerados. Quanto maior for L, maior será a razão entre as duas probabilidades, o

que significa uma maior chance de se tomar uma decisão prévia correta sobre o bit.

L 1 1,5 2 2,5 3 P (yi ≥ +L|vi = +1) 0, 5 0, 31 0, 16 0, 067 0, 023

P (yi ≥ +L|vi = −1) 0, 023 6, 2×10−3 1, 3×10−3 2, 3×10−4 3, 2×10−5 P(yi≥+L|vi=+1)

P(yi≥+L|vi=−1) 21, 98 49, 69 117, 53 287, 18 718, 32

Tabela 3.1: Valores das Probabilidades Condicionais para A = 1 e σy = 1 em Função de L.

podemos ver que definir um limiar para classificar as amostras recebidas e decidir previamente os bits é uma ideia interessante, pois a probabilidade de erro da decisão prévia é pequena se um valor apropridado de L for escolhido.

O método proposto para diminuição da complexidade toma a decisão sobre alguns bits visando a eliminação de alguns ramos na treliça de decodificação. Este método se baseia em dois passos para a eliminação dos ramos.

Primeiro Passo para a Eliminação dos Ramos

Neste primeiro passo as amostras recebidas são classificadas como confiáveis ou não confiáveis. Uma vez que uma amostra seja classificada, podemos detalhar o funcionamento do método para redução de complexidade. O método é baseado no algoritmo de Viterbi, porém elimina o maior número possível de ramos na treliça de decodificação. Vamos explicar o primeiro passo do método observando a Fig. 3.3, que representa uma seção de treliça para um código de taxa rc = 1/2 e duas

memórias. Na Fig. 3.3 (a) temos um exemplo de uma seção da treliça com os bits codificados associados a cada transição. Logo abaixo da treliça estão representados os valores das amostras recebidas, y = [+1, 7 − 0.5]. Suponha que o par de limiares de confiabilidade seja L = ±1, 5, assim, as amostras yi ≤ −1, 5 e yi ≥ +1, 5 serão classificadas como confiáveis. No exemplo,

a primeira amostra é yi = 1, 7, ou seja, é confiável. Portanto, o bit associado a esta amostra é

previamente decidido assumindo valor ˆvi = +1 de acordo com a regra de decisão. Já a segunda

amostra é classificada como não-confiável, portanto ainda não se toma uma decisão sobre o segundo bit. Como já está decidido que o primeiro bit tem valor +1, então se mantém naquela seção da treliça somente os ramos que têm o primeiro bit +1, descartando da treliça todos os ramos em que o primeiro bit seja −1. A Fig. 3.3 (b) ilustra a seção da treliça sem os ramos que foram descartados.

Note que para cada amostra classificada como confiável, a metade dos ramos é eliminada da treliça. O exemplo da Fig. 3.3 mostra uma seção da treliça onde somente um bit foi previamente decidido. O primeiro passo do método consiste, então, em eliminar os ramos que não estão associados a bits previamente decididos.

00 01 10 11 -1-1 -1-1 +1+1 +1-1 +1-1 -1+1 +1+1 -1+1 +1,7 -0,5 L = 1,5 +1 x 00 01 10 11

(a) Seção da Treliça com Todos os Ra- mos. 00 01 10 11 +1+1 +1-1 +1-1 +1+1 +1,7 -0,5 L = 1,5 +1 x 00 01 10 11

(b) Seção da Treliça com Alguns Ramos Eliminados.

Figura 3.3: Eliminação de Ramos na Treliça com Base nos Limiares de Confiabilidade - Primeiro Passo.

Segundo Passo para a Eliminação dos Ramos

O segundo passo do método consiste em eliminar os ramos desconexos da treliça, o que permite eliminar alguns ramos mesmo quando nenhuma amostra é confiável em uma determinada seção da treliça. O segundo passo pode ser melhor entendido com base na observação de duas ou mais seções vizinhas. Em alguns casos, quando se elimina uma grande quantidade de ramos com base na classi- ficação das amostras, pode acontecer de nenhum ramo chegar até um estado na treliça. Se nenhum ramo chega a um estado, isto significa que o caminho sobrevivente de maior métrica não passará por aquele estado. Com isto, podemos também eliminar os ramos que saem desse estado. Isto pode ser melhor compreendido observando a Fig. 3.4.

Para analisar como o método proposto elimina alguns ramos na treliça, inclusive alguns nas seções passadas, iremos observar 3 seções na treliça. A Fig. 3.4 (a) mostra a treliça original com todos os ramos. Os valores "x" na parte de baixo da figura representam que nenhum bit foi decidido. Os valores +1 e −1 representam que os bits foram previamente decididos.

Supondo que na seção i − 1 os dois bits sejam previamente decididos por −1, ou seja, ˆvi−1 =

[−1 − 1], haverá a eliminação de alguns ramos nesta seção. A Fig. 3.4 (b) mostra os ramos elimi- nados na primeira seção da treliça para este caso. Note que há somente 2 ramos sobreviventes nesta seção e que a eliminação foi feita com base no primeiro passo do método de eliminação de ramos.

Podemos notar que, devido à eliminação de alguns ramos na seção i − 1, nenhum ramo chega aos estados (01) e (11) na seção i. Isso significa que o caminho de maior métrica na treliça não passa

00 01 10 11 -1 -1 +1 +1 +1 +1 -1 -1 -1 +1 +1 -1 +1 -1 -1 +1 00 01 10 11 x x x x x x -1 -1 +1 +1 +1 +1 -1 -1 -1 +1 +1 -1 +1 -1 -1 +1 -1 -1 +1 +1 +1 +1 -1 -1 -1 +1 +1 -1 +1 -1 -1 +1 i - 1 i i + 1

(a) Treliça original.

00 01 10 11 -1 -1 +1 +1 +1 +1 -1 -1 -1 +1 +1 -1 +1 -1 -1 +1 00 01 10 11 -1 -1 x x x x -1 -1 +1 +1 +1 +1 -1 -1 -1 +1 +1 -1 +1 -1 -1 +1 -1 -1 -1 -1 i - 1 i i + 1

(b) Eliminação de Ramos na Seção i − 1 com Base no Primeiro Passo do Método.

00 01 10 11 -1 -1 +1 +1 -1 +1 +1 -1 00 01 10 11 -1 -1 x x x x -1 -1 +1 +1 +1 +1 -1 -1 -1 +1 +1 -1 +1 -1 -1 +1 -1 -1 -1 -1 i - 1 i i + 1

(c) Eliminação de Ramos Desconexos na Seção i (Segundo Passo). 00 01 10 11 -1 -1 00 01 10 11 -1 -1 -1 -1 x x -1 -1 +1 +1 +1 +1 -1 -1 -1 +1 +1 -1 +1 -1 -1 +1 -1 -1 -1 -1 i - 1 i i + 1

(d) Eliminação de Ramos na Seção i com Base no Primeiro Passo do Método.

00 01 10 11 -1 -1 00 01 10 11 -1 -1 -1 -1 x x -1 -1 +1 +1 +1 +1 -1 -1 -1 +1 +1 -1 +1 -1 -1 +1 -1 -1 i - 1 i i + 1

(e) Eliminação de Ramos Desconexos na Seção i − 1 (Segundo Passo). 00 01 10 11 -1 -1 00 01 10 11 -1 -1 -1 -1 x x -1 -1 +1 +1 -1 -1 i - 1 i i + 1

(f) Eliminação de Ramos Desconexos na Seção i + 1 (Segundo Passo). 00 01 10 11 -1 -1 00 01 10 11 -1 -1 -1 -1 +1 -1 -1 -1 +1 +1 -1 -1 i - 1 i i + 1

(g) A Seção i+1 Tem 2 Bits Previamente Decididos, mas Nenhum Ramo Adicional é Eliminado.

por esses estados. Assim, podemos eliminar os ramos que saem desses dois estados. A Fig. 3.4 (c) mostra os ramos desconexos eliminados da seção i, mesmo que nenhum bit tenha sido previamente decidido nesta seção.

Agora vamos continuar a análise da treliça e observar a seção i. Considerando que mais uma vez haja a decisão prévia por bits −1, ou seja, ˆvi = [−1 − 1], temos mais ramos eliminados e a

treliça resultante é mostrada na Fig. 3.4 (d). Podemos observar que na seção i há somente um ramo sobrevivente. Na seção anterior (i − 1), o ramo entre os estados (01) e (10) ficou desconexo, portanto ele também é eliminado, conforme mostra a Fig. 3.4 (e). Assim, o método proposto também volta uma seção na treliça para eliminar alguns ramos desconexos. Além do ramo desconexo na seção i−1, há também ramos desconexos na seção i + 1, que também são eliminados. A Fig. 3.4 (f) mostra a treliça após a eliminação dos ramos desconexos nas seções i − 1 e i + 1. Mesmo que nenhum bit seja previamente decidido na seção i + 1, alguns ramos podem ser eliminados devido à desconexão