Articulo de referencia

Decodificación secuencial

Reconocida por John Wozencraft , la decodificación secuencial es una técnica de memoria limitada para decodificar códigos de árbol . Se utiliza principalmente como algoritmo de ...

Reconocida por John Wozencraft , la decodificación secuencial es una técnica de memoria limitada para decodificar códigos de árbol . Se utiliza principalmente como algoritmo de decodificación aproximada para códigos convolucionales de longitud restringida . Si bien este método puede no ser tan preciso como el algoritmo de Viterbi , permite ahorrar una cantidad considerable de memoria . Se empleó para decodificar un código convolucional en la misión Pioneer 9 de 1968 .

La decodificación secuencial explora el código del árbol de tal manera que se intente minimizar el coste computacional y los requisitos de memoria para almacenar el árbol.

Existe una variedad de enfoques de decodificación secuencial basados ​​en la elección de la métrica y el algoritmo. Las métricas incluyen:

  • Métrica de Fano
  • Métrica de Zigangirov
  • Métrica de Gallagher

Los algoritmos incluyen:

  • Algoritmo de pila
  • Algoritmo de Fano
  • Algoritmo Creeper

Métrica de Fano

Dado un árbol parcialmente explorado (representado por un conjunto de nodos que limitan la exploración), nos interesa saber cuál es el mejor nodo para continuar la exploración. La métrica de Fano (llamada así en honor a Robert Fano ) permite calcular cuál es el mejor nodo para seguir explorando. Esta métrica es óptima si no existen otras restricciones (por ejemplo, de memoria).

Para un canal binario simétrico (con probabilidad de error)pag{\displaystyle p}La métrica de Fano se puede derivar mediante el teorema de Bayes . Nos interesa seguir el camino más probable.PAGi{\displaystyle P_{i}}dado un estado explorado del árbolincógnita{\displaystyle X}y una secuencia recibidar{\displaystyle {\mathbf {r} }}. Usando el lenguaje de la probabilidad y el teorema de Bayes queremos elegir el máximo sobrei{\displaystyle i}de:

Pr(PAGi|incógnita,r)Pr(r|PAGi,incógnita)Pr(PAGi|incógnita){\displaystyle \Pr(P_{i}|X,{\mathbf {r} })\propto \Pr({\mathbf {r} }|P_{i},X)\Pr(P_{i}|X)}

A continuación, introducimos la siguiente notación:

  • norte{\displaystyle N}para representar la longitud máxima de transmisión en ramas
  • b{\displaystyle b}para representar el número de bits en una rama del código (el denominador de la tasa de código ,R{\displaystyle R}).
  • di{\displaystyle d_{i}}para representar el número de errores de bits en la rutaPAGi{\displaystyle P_{i}}(la distancia de Hamming entre las etiquetas de las ramas y la secuencia recibida)
  • nortei{\displaystyle n_{i}}ser la longitud dePAGi{\displaystyle P_{i}}en ramas.

Expresamos la probabilidadPr(r|PAGi,incógnita){\displaystyle \Pr({\mathbf {r} }|P_{i},X)}comopagdi(1pag)norteibdi2(nortenortei)b{\displaystyle p^{d_{i}}(1-p)^{n_{i}b-d_{i}}2^{-(N-n_{i})b}}(utilizando la probabilidad del canal simétrico binario para el primeronorteib{\displaystyle n_{i}b}bits seguidos de una distribución a priori uniforme sobre los bits restantes).

Expresamos lo anteriorPr(PAGi|incógnita){\displaystyle \Pr(P_{i}|X)}en términos del número de opciones de rama que se han elegido,nortei{\displaystyle n_{i}}y el número de ramas desde cada nodo,2Rb{\displaystyle 2^{Rb}}.

Por lo tanto:

Pr(PAGi|incógnita,r)pagdi(1pag)norteibdi2(nortenortei)b2norteiRbpagdi(1pag)norteibdi2norteib2norteiRb{\displaystyle {\begin{aligned}\Pr(P_{i}|X,{\mathbf {r} })&\propto p^{d_{i}}(1-p)^{n_{i}b-d_{i}}2^{-(N-n_{i})b}2^{-n_{i}Rb}\\&\propto p^{d_{i}}(1-p)^{n_{i}b-d_{i}}2^{n_{i}b}2^{-n_{i}Rb}\end{aligned}}}

Podemos maximizar de forma equivalente el logaritmo de esta probabilidad, es decir

diregistro2pag+(norteibdi)registro2(1pag)+norteibnorteiRb=di(registro2pag+1R)+(norteibdi)(registro2(1pag)+1R){\displaystyle {\begin{aligned}&d_{i}\log _{2}p+(n_{i}b-d_{i})\log _{2}(1-p)+n_{i}b-n_{i}Rb\\=&d_{i}(\log _{2}p+1-R)+(n_{i}b-d_{i})(\log _{2}(1-p)+1-R)\end{aligned}}}

Esta última expresión es la métrica de Fano. Lo importante es que tenemos dos términos: uno basado en el número de bits erróneos y otro basado en el número de bits correctos. Por lo tanto, podemos actualizar la métrica de Fano simplemente sumandoregistro2pag+1R{\displaystyle \log _{2}p+1-R}para cada bit que no coincide yregistro2(1pag)+1R{\displaystyle \log _{2}(1-p)+1-R}para cada bit coincidente.

Tasa de corte computacional

Para que la decodificación secuencial sea una buena opción de algoritmo de decodificación, el número de estados explorados debe permanecer pequeño (de lo contrario, un algoritmo que explore deliberadamente todos los estados, por ejemplo, el algoritmo de Viterbi , podría ser más adecuado). Para un nivel de ruido particular, existe una tasa de codificación máxima.R0{\displaystyle R_{0}}Se denomina tasa de corte computacional cuando existe un límite de retroceso finito . Para el canal binario simétrico:

R0=1registro2(1+2pag(1pag)){\displaystyle R_{0}=1-\log _{2}(1+2{\sqrt {p(1-p)}})}

Algoritmos

Algoritmo de pila

El algoritmo más sencillo de describir es el "algoritmo de pila" en el que el mejornorte{\displaystyle N}Se almacenan las rutas encontradas hasta el momento. La decodificación secuencial puede introducir un error adicional sobre la decodificación de Viterbi cuando la ruta correcta ha sido encontrada.norte{\displaystyle N}o rutas con puntuaciones más altas por encima de ella; en este punto, la mejor ruta se eliminará de la pila y ya no se tendrá en cuenta.

Algoritmo de Fano

El famoso algoritmo de Fano (que recibe su nombre de Robert Fano ) requiere muy poca memoria, por lo que resulta ideal para implementaciones en hardware. Este algoritmo explora el árbol hacia adelante y hacia atrás desde un único punto.

  1. El algoritmo de Fano es un algoritmo de decodificación secuencial que no requiere una pila.
  2. El algoritmo de Fano solo puede operar sobre un árbol de código porque no puede examinar la fusión de rutas.
  3. En cada etapa de decodificación, el algoritmo de Fano conserva la información relativa a tres rutas: la ruta actual, su ruta predecesora inmediata y una de sus rutas sucesoras.
  4. Basándose en esta información, el algoritmo de Fano puede pasar de la ruta actual a su ruta predecesora inmediata o a la ruta sucesora seleccionada; por lo tanto, no se requiere ninguna pila para poner en cola todas las rutas examinadas.
  5. El movimiento del algoritmo de Fano está guiado por un umbral dinámico T que es un múltiplo entero de un tamaño de paso fijo Δ.
  6. Solo se puede visitar a continuación la ruta cuya métrica de ruta sea igual o superior a T. Según el algoritmo, el proceso de búsqueda de palabras clave continúa avanzando a lo largo de una ruta de código, siempre que la métrica de Fano a lo largo de dicha ruta no disminuya.
  7. Una vez que todas las métricas de la ruta sucesora sean menores que T , el algoritmo retrocede a la ruta predecesora si la métrica de la ruta predecesora supera a T ; posteriormente, se realizará un examen de umbral en otra ruta sucesora de esta predecesora revisitada.
  8. En caso de que la métrica de la ruta predecesora también sea menor que T , el umbral T se reduce un paso para que el algoritmo no quede atrapado en la ruta actual.
  9. En el algoritmo de Fano, si se vuelve a recorrer una ruta, el umbral dinámico examinado en ese momento siempre es inferior al umbral dinámico momentáneo de la visita anterior, lo que garantiza que no se produzcan bucles en el algoritmo y que este pueda finalmente alcanzar un nodo terminal del árbol de código y detenerse.

Referencias

  • John Wozencraft y B. Reiffen, Decodificación secuencial , ISBN 0-262-23006-2
  • Rolf Johannesson y Kamil Sh. Zigangirov, Fundamentos de la codificación convolucional (capítulo 6), ISBN 0-470-27683-5
  • " Árboles de corrección ": simulador del proceso de corrección que utiliza una cola de prioridad para elegir el nodo de métrica máxima (llamado peso).