Articulo de referencia

Algoritmo de decodificación de Zemor

En teoría de la codificación , el algoritmo de Zemor , diseñado y desarrollado por Gilles Zémor, [ 1 ] es un enfoque recursivo de baja complejidad para la construcción de código...

En teoría de la codificación , el algoritmo de Zemor , diseñado y desarrollado por Gilles Zémor, [ 1 ] es un enfoque recursivo de baja complejidad para la construcción de código. Es una mejora con respecto al algoritmo de Sipser y Spielman .

Zemor consideró una clase típica de códigos expansores construidos por Sipser-Spielman , donde el grafo subyacente es un grafo bipartito . Sipser y Spielman introdujeron una familia constructiva de códigos de error lineal asintóticamente buenos junto con un algoritmo paralelo simple que siempre eliminará una fracción constante de errores. El artículo se basa en las notas del curso del Dr. Venkatesan Guruswami [ 2 ].

Construcción de códigos

El algoritmo de Zemor se basa en un tipo de grafos expansores llamado grafo de Tanner . La construcción del código fue propuesta por primera vez por Tanner. [ 3 ] Los códigos se basan en la doble cobertura.d{\displaystyle d}, expansor regularGRAMO{\displaystyle G}, que es un grafo bipartito.GRAMO{\displaystyle G}=(V,mi){\displaystyle \left(V,E\right)}, dóndeV{\displaystyle V}es el conjunto de vértices ymi{\displaystyle E}es el conjunto de aristas yV{\displaystyle V}=A{\displaystyle A}{\displaystyle \cup }B{\displaystyle B}yA{\displaystyle A}{\displaystyle \cap }B{\displaystyle B}={\displaystyle \emptyset }, dóndeA{\displaystyle A}yB{\displaystyle B}denota conjuntos de vértices. Seanorte{\displaystyle n}sea ​​el número de vértices en cada grupo, es decir ,|A|=|B|=norte{\displaystyle |A|=|B|=n}. El conjunto de bordesmi{\displaystyle E}ser de tamañonorte{\displaystyle N}=norted{\displaystyle nd}y cada borde enmi{\displaystyle E}tiene un punto final en ambosA{\displaystyle A}yB{\displaystyle B}.mi(v){\displaystyle E(v)}denota el conjunto de aristas que contienenv{\displaystyle v}.

Supongamos un orden enV{\displaystyle V}, por lo tanto, el ordenamiento se realizará en cada borde demi(v){\displaystyle E(v)}por cadavV{\displaystyle v\in V}. Sea un campo finitoF=GRAMOF(2){\displaystyle \mathbb {F} =GF(2)}y por una palabra incógnita=(incógnitami),mimi{\displaystyle x=(x_{e}),e\en E}enFnorte{\displaystyle \mathbb {F} ^{N}}, sea la subpalabra de la palabra que será indexada pormi(v){\displaystyle E(v)}. Sea esa palabra denotada por(incógnita)v{\displaystyle (x)_{v}}. El subconjunto de vérticesA{\displaystyle A}yB{\displaystyle B}induce cada palabraincógnitaFnorte{\displaystyle x\in \mathbb {F} ^{N}}una partición ennorte{\displaystyle n}subpalabras que no se superponen(incógnita)vFd{\displaystyle \left(x\right)_{v}\in \mathbb {F} ^{d}}, dóndev{\displaystyle v}abarca los elementos deA{\displaystyle A}Para construir un códigodo{\displaystyle C}, considere un subcódigo linealdoo{\displaystyle C_{o}}, que es un[d,rod,δ]{\displaystyle [d,r_{o}d,\delta ]}código, dondeq{\displaystyle q}, el tamaño del alfabeto es2{\displaystyle 2}. Para cualquier vérticevV{\displaystyle v\in V}, dejarv(1),v(2),,v(d){\displaystyle v(1),v(2),\ldots,v(d)}ser algún orden de lad{\displaystyle d}vértices demi{\displaystyle E}adyacente av{\displaystyle v}. En este código, cada bitincógnitami{\displaystyle x_{e}}está vinculado con un bordemi{\displaystyle e}demi{\displaystyle E}.

Podemos definir el códigodo{\displaystyle C}ser el conjunto de vectores binariosincógnita=(incógnita1,incógnita2,,incógnitanorte){\displaystyle x=\left(x_{1},x_{2},\ldots ,x_{N}\right)}de{0,1}norte{\displaystyle \{0,1\}^{N}}de tal manera que, para cada vérticev{\displaystyle v}deV{\displaystyle V},(incógnitav(1),incógnitav(2),,incógnitav(d)){\displaystyle \left(x_{v(1)},x_{v(2)},\ldots ,x_{v(d)}\right)}es una palabra clave dedoo{\displaystyle C_{o}}. En este caso, podemos considerar un caso especial cuando cada arista demi{\displaystyle E}está adyacente a exactamente2{\displaystyle 2}vértices deV{\displaystyle V}. Significa queV{\displaystyle V}ymi{\displaystyle E}conforman, respectivamente, el conjunto de vértices y el conjunto de aristas ded{\displaystyle d}gráfico regularGRAMO{\displaystyle G}.

Llamemos al códigodo{\displaystyle C}construido de esta manera como(GRAMO,doo){\displaystyle \left(G,C_{o}\right)}código. Para un gráfico dadoGRAMO{\displaystyle G}y un código dadodoo{\displaystyle C_{o}}, hay varios(GRAMO,doo){\displaystyle \left(G,C_{o}\right)}códigos ya que hay diferentes maneras de ordenar las aristas incidentes a un vértice dadov{\displaystyle v}, es decir,v(1),v(2),,v(d){\displaystyle v(1),v(2),\ldots,v(d)}De hecho, nuestro códigodo{\displaystyle C}constan de todas las palabras clave tales queincógnitavdoo{\displaystyle x_{v}\in C_{o}}a pesar devA,B{\displaystyle v\in A,B}El códigodo{\displaystyle C}es lineal[norte,K,D]{\displaystyle [N,K,D]}enF{\displaystyle \mathbb {F} }ya que se genera a partir de un subcódigodoo{\displaystyle C_{o}}, que es lineal. El códigodo{\displaystyle C}se define comodo={doFnorte:(do)vdoo}{\displaystyle C=\{c\in \mathbb {F} ^{N}:(c)_{v}\in C_{o}\}}por cadavV{\displaystyle v\in V}.

A
Gráfico G y código C

En esta figura,(incógnita)v=(incógnitami1,incógnitami2,incógnitami3,incógnitami4)doo{\displaystyle (x)_{v}=\left(x_{e1},x_{e2},x_{e3},x_{e4}\right)\in C_{o}}Muestra el gráficoGRAMO{\displaystyle G}y códigodo{\displaystyle C}.

En matrizGRAMO{\displaystyle G}, dejarλ{\displaystyle \lambda }es igual al segundo mayor valor propio de la matriz de adyacencia deGRAMO{\displaystyle G}Aquí el mayor valor propio esd{\displaystyle d}Se hacen dos afirmaciones importantes:

Reivindicación 1

(Knorte)2ro1{\displaystyle \left({\dfrac {K}{N}}\right)\geq 2r_{o}-1}. DejarR{\displaystyle R}sea ​​la tasa de un código lineal construido a partir de un grafo bipartito cuyos nodos de dígitos tienen gradometro{\displaystyle m}y cuyos nodos de subcódigo tienen gradonorte{\displaystyle n}. Si un único código lineal con parámetros(norte,k){\displaystyle \left(n,k\right)}y tasar=(knorte){\displaystyle r=\left({\dfrac {k}{n}}\right)}está asociado con cada uno de los nodos de subcódigo, entoncesk1(1r)metro{\displaystyle k\geq 1-\left(1-r\right)m}.

Prueba

DejarR{\displaystyle R}sea ​​la tasa del código lineal , que es igual aK/norte{\displaystyle K/N} Que hayaS{\displaystyle S}nodos de subcódigo en el grafo. Si el grado del subcódigo esnorte{\displaystyle n}, entonces el código debe tener(nortemetro)S{\displaystyle \left({\dfrac {n}{m}}\right)S}dígitos, ya que cada nodo de dígito está conectado ametro{\displaystyle m}del(norte)S{\displaystyle \left(n\right)S}aristas en el grafo. Cada nodo de subcódigo contribuye(nortek){\displaystyle (nk)}ecuaciones para la matriz de verificación de paridad para un total de(nortek)S{\displaystyle \left(nk\right)S}Estas ecuaciones pueden no ser linealmente independientes. Por lo tanto,(Knorte)((nortemetro)S(nortek)S(nortemetro)S){\displaystyle \left({\dfrac {K}{N}}\right)\geq \left({\dfrac {({\dfrac {n}{m}})S-(nk)S}{({\dfrac {n}{m}})S}}\right)}1metro(norteknorte){\displaystyle \geq 1-m\left({\dfrac {nk}{n}}\right)}1metro(1r){\displaystyle \geq 1-m\left(1-r\right)}, Dado que el valor demetro{\displaystyle m}, es decir, el nodo de dígitos de este grafo bipartito es2{\displaystyle 2}y aquír=ro{\displaystyle r=r_{o}}, podemos escribirlo como: (Knorte)2ro1{\displaystyle \left({\dfrac {K}{N}}\right)\geq 2r_{o}-1}

Reivindicación 2

Dnorte((δ(λd))(1(λd)))2{\displaystyle D\geq N\left({\dfrac {(\delta -({\dfrac {\lambda }{d}}))}{(1-({\dfrac {\lambda }{d}})}})\right)^{2}}
=norte(δ2O(λd)){\displaystyle =N\left(\delta ^{2}-O\left({\dfrac {\lambda }{d}}\right)\right)}(1){\displaystyle \rightarrow (1)}

SiS{\displaystyle S}es un código lineal de tasar{\displaystyle r}longitud del código del bloqued{\displaystyle d}y distancia relativa mínimaδ{\displaystyle \delta }y siB{\displaystyle B}es el grafo de incidencia de vértices de aristas de und{\displaystyle d}– gráfico regular con el segundo valor propio más grandeλ{\displaystyle \lambda }, luego el códigodo(B,S){\displaystyle C(B,S)}tiene tasa al menos2ro1{\displaystyle 2r_{o}-1}y distancia relativa mínima al menos((δ(λd)1(λd)))2{\displaystyle \left(\left({\dfrac {\delta -\left({\dfrac {\lambda }{d}}\right)}{1-\left({\dfrac {\lambda }{d}}\right)}}\right)\right)^{2}}.

Prueba

DejarB{\displaystyle B}ser derivado de lad{\displaystyle d}gráfico regularGRAMO{\displaystyle G}. Entonces, el número de variables dedo(B,S){\displaystyle C(B,S)}es(dnorte2){\displaystyle \left({\dfrac {dn}{2}}\right)}y el número de restricciones esnorte{\displaystyle n}. Según Alon-Chung, [ 4 ] siincógnita{\displaystyle X}es un subconjunto de vértices deGRAMO{\displaystyle G}de tamañoγnorte{\displaystyle \gamma n}, entonces el número de aristas contenidas en el subgrafo es inducido porincógnita{\displaystyle X}enGRAMO{\displaystyle G}es como máximo(dnorte2)(γ2+(λd)γ(1γ)){\displaystyle \left({\dfrac {dn}{2}}\right)\left(\gamma ^{2}+({\dfrac {\lambda }{d}})\gamma \left(1-\gamma \right)\right)}.

Como resultado, cualquier conjunto de(dnorte2)(γ2+(λd)γ(1γ)){\displaystyle \left({\dfrac {dn}{2}}\right)\left(\gamma ^{2}+\left({\dfrac {\lambda }{d}}\right)\gamma \left(1-\gamma \right)\right)}Las variables tendrán al menosγnorte{\displaystyle \gamma n}restricciones como vecinas. Por lo tanto, el número promedio de variables por restricción es  :((2norted2)(γ2+(λd)γ(1γ))γnorte){\displaystyle \left({\dfrac {({\dfrac {2nd}{2}})\left(\gamma ^{2}+({\dfrac {\lambda }{d}})\gamma \left(1-\gamma \right)\right)}{\gamma n}}\right)}=d(γ+(λd)(1γ)){\displaystyle =d\left(\gamma +({\dfrac {\lambda }{d}})\left(1-\gamma \right)\right)}(2){\displaystyle \rightarrow (2)}

Entonces sid(γ+(λd)(1γ))<γd{\displaystyle d\left(\gamma +({\dfrac {\lambda }{d}})\left(1-\gamma \right)\right)<\gamma d}, luego una palabra de peso relativo (γ2+(λd)γ(1γ)){\displaystyle \left(\gamma ^{2}+({\dfrac {\lambda }{d}})\gamma \left(1-\gamma \right)\right)}, no puede ser una palabra clave dedo(B,S){\displaystyle C(B,S)}La desigualdad(2){\displaystyle (2)}está satisfecho porγ<(1(λd)δ(λd)){\displaystyle \gamma <\left({\dfrac {1-({\dfrac {\lambda }{d}})}{\delta -({\dfrac {\lambda }{d}})}}\right)}. Por lo tanto,do(B,S){\displaystyle C(B,S)}no puede tener una palabra clave distinta de cero de peso relativo (δ(λd)1(λd))2{\displaystyle \left({\dfrac {\delta -({\dfrac {\lambda }{d}})}{1-({\dfrac {\lambda }{d}})}}\right)^{2}}o menos.

En matrizGRAMO{\displaystyle G}, podemos suponer queλ/d{\displaystyle \lambda /d}está delimitado lejos de1{\displaystyle 1}. Para esos valores ded{\displaystyle d}en el cuald1{\displaystyle d-1}es primo impar, existen construcciones explícitas de secuencias ded{\displaystyle d}- grafos bipartitos regulares con un número arbitrariamente grande de vértices tales que cada grafoGRAMO{\displaystyle G}En la secuencia hay un grafo de Ramanujan . Se llama grafo de Ramanujan porque satisface la desigualdad.λ(GRAMO)2d1{\displaystyle \lambda (G)\leq 2{\sqrt {d-1}}}En el gráfico se aprecian ciertas propiedades de expansión.GRAMO{\displaystyle G}como la separación entre los valores propiosd{\displaystyle d}yλ{\displaystyle \lambda }. Si el gráficoGRAMO{\displaystyle G}es el gráfico de Ramanujan, entonces esa expresión (1){\displaystyle (1)}se convertirá0{\displaystyle 0}eventualmente comod{\displaystyle d}se vuelve grande.

El algoritmo de Zemor

El algoritmo de decodificación iterativo que se muestra a continuación alterna entre los vértices.A{\displaystyle A}yB{\displaystyle B}enGRAMO{\displaystyle G}y corrige la palabra clave dedoo{\displaystyle C_{o}}enA{\displaystyle A}y luego cambia para corregir la palabra clavedoo{\displaystyle C_{o}}enB{\displaystyle B}. Aquí, las aristas asociadas con un vértice en un lado de un grafo no son incidentes a otros vértices en ese lado. De hecho, no importa en qué orden, el conjunto de nodosA{\displaystyle A}yB{\displaystyle B}se procesan. El procesamiento de vértices también se puede realizar en paralelo.

El decodificadorD:Fddoo{\displaystyle \mathbb {D} :\mathbb {F} ^{d}\rightarrow C_{o}} representa un decodificador paradoo{\displaystyle C_{o}}que se recupera correctamente con cualquier palabra clave con menos de(d2){\displaystyle \left({\dfrac {d}{2}}\right)}errores.

Algoritmo decodificador

Mensaje recibido  :w=(wmi),mimi{\displaystyle w=(w_{e}),e\in E}zw{\displaystyle z\leftarrow w} For t1{\displaystyle t\leftarrow 1} to m{\displaystyle m} do //m{\displaystyle m} is the number of iterations { if (t{\displaystyle t} is odd) // Here the algorithm will alternate between its two vertex sets. XA{\displaystyle X\leftarrow A} else XB{\displaystyle X\leftarrow B} Iteration t{\displaystyle t}: For every vX{\displaystyle v\in X}, let (z)vD((z)v){\displaystyle (z)_{v}\leftarrow \mathbb {D} ((z)_{v})} // Decoding zv{\displaystyle z_{v}} to its nearest codeword. } Producción:z{\displaystyle z}

Explicación del algoritmo

DesdeGRAMO{\displaystyle G}es bipartito, el conjuntoA{\displaystyle A}de vértices induce la partición del conjunto de aristasmi{\displaystyle E}=vAmiv{\displaystyle \cup _{v\in A}E_{v}}. El conjuntoB{\displaystyle B}induce otra partición,mi{\displaystyle E}=vBmiv{\displaystyle \cup _{v\in B}E_{v}}.

Dejarw{0,1}norte{\displaystyle w\in \{0,1\}^{N}}sea ​​el vector recibido, y recordemos quenorte=dnorte{\displaystyle N=dn}. La primera iteración del algoritmo consiste en aplicar la decodificación completa para el código inducido pormiv{\displaystyle E_{v}}por cadavA{\displaystyle v\in A}. Esto significa que para reemplazar, por cadavA{\displaystyle v\in A}, el vector(wv(1),wv(2),,wv(d)){\displaystyle \left(w_{v(1)},w_{v(2)},\ldots ,w_{v(d)}\right)}por una de las palabras clave más cercanas dedoo{\displaystyle C_{o}}. Dado que los subconjuntos de aristasmiv{\displaystyle E_{v}}son disjuntos paravA{\displaystyle v\in A}, la decodificación de estosnorte{\displaystyle n} subvectores dew{\displaystyle w}puede hacerse en paralelo.

La iteración producirá un nuevo vector.z{\displaystyle z}. La siguiente iteración consiste en aplicar el procedimiento anterior az{\displaystyle z}pero conA{\displaystyle A}reemplazado porB{\displaystyle B}. En otras palabras, consiste en decodificar todos los subvectores inducidos por los vértices deB{\displaystyle B}. Las siguientes iteraciones repiten esos dos pasos alternativamente aplicando decodificación paralela a los subvectores inducidos por los vértices deA{\displaystyle A}y a los subvectores inducidos por los vértices deB{\displaystyle B}. Nota: [Sid=norte{\displaystyle d=n}yGRAMO{\displaystyle G}es el grafo bipartito completo , entoncesdo{\displaystyle C}es un código de producto dedoo{\displaystyle C_{o}}[Con ello, y el algoritmo anterior se reduce a la decodificación iterativa natural y compleja de los códigos de producto].

Aquí, el número de iteraciones,metro{\displaystyle m}es((registronorte)registro(2α)){\displaystyle \left({\dfrac {(\log {n})}{\log(2-\alpha )}}\right)}En general, el algoritmo anterior puede corregir una palabra clave cuyo peso de Hamming no sea mayor que(12).αnorteδ((δ2)(λd))=((14).αnorte(δ2O(λd)){\displaystyle ({\dfrac {1}{2}}).\alpha N\delta \left(({\dfrac {\delta }{2}})-({\dfrac {\lambda }{d}})\right)=\left(({\dfrac {1}{4}}).\alpha N(\delta ^{2}-O({\dfrac {\lambda }{d}})\right)}para valores deα<1{\displaystyle \alpha <1}Aquí, el algoritmo de decodificación se implementa como un circuito de tamañoO(norteregistronorte){\displaystyle O(N\log {N})}y profundidadO(registronorte){\displaystyle O(\log {N})}que devuelve la palabra clave dado que el vector de error tiene un peso menor queαnorteδ2(1ϵ)/4{\displaystyle \alpha N\delta ^{2}(1-\epsilon )/4}.

Teorema

SiGRAMO{\displaystyle G}es un grafo de Ramanujan de grado suficientemente alto, para cualquierα<1{\displaystyle \alpha <1}El algoritmo de decodificación puede corregir(αδo24)(1ε)norte{\displaystyle ({\dfrac {\alpha \delta _{o}^{2}}{4}})(1-\varepsilon )N}errores, dondeε{\displaystyle \varepsilon }tiende a 0 cuandoλ/d{\displaystyle \lambda /d}tiende a 0, enO(registronorte){\displaystyle O(\log {n})}rondas (donde el grande-O{\displaystyle O}La notación oculta una dependencia deα{\displaystyle \alpha }). Esto se puede implementar en tiempo lineal en un solo procesador; ennorte{\displaystyle n}Los procesadores de cada ronda pueden implementarse en tiempo constante.

Prueba

Dado que el algoritmo de decodificación es insensible al valor de los bordes y por linealidad, podemos asumir que la palabra clave transmitida es un vector de ceros. Sea la palabra clave recibidaw{\displaystyle w}. Se considera el conjunto de aristas que tiene un valor incorrecto durante la decodificación. Aquí por valor incorrecto, nos referimos a1{\displaystyle 1}en cualquiera de los bits. Dejaw=w0{\displaystyle w=w^{0}}sea ​​el valor inicial de la palabra clave,w1,w2,,wt{\displaystyle w^{1},w^{2},\ldots ,w^{t}}sean los valores después del primero, segundo  .  .  .t{\displaystyle t}etapas de decodificación. Aquí,incógnitai=mimi|incógnitamii=1{\displaystyle X^{i}={e\in E|x_{e}^{i}=1}}, y Si=vVi|mivincógnitai+1¡={\displaystyle S^{i}={v\in V^{i}|E_{v}\cap X^{i+1}!=\emptyset }}. AquíSi{\displaystyle S^{i}}corresponde a aquellos conjuntos de vértices que no pudieron decodificar con éxito su palabra clave en elith{\displaystyle i^{th}}ronda. Del algoritmo anteriorS1<S0{\displaystyle S^{1}<S^{0}} como número de vértices fallidos se corregirán en cada iteración. Podemos demostrar queS0>S1>S2>{\displaystyle S^{0}>S^{1}>S^{2}>\cdots }es una secuencia decreciente. De hecho,|Si+1|<=(12α)|Si|{\displaystyle |S_{i+1}|<=({\dfrac {1}{2-\alpha }})|S_{i}|}. Como suponemos,α<1{\displaystyle \alpha <1}, la ecuación anterior está en una secuencia geométrica decreciente . Entonces, cuando|Si|<norte{\displaystyle |S_{i}|<n}, más quelogramo2αnorte{\displaystyle log_{2-\alpha }n}Son necesarias rondas. Además,|Si|=norte(1(2α)i)=O(norte){\displaystyle \sum |S_{i}|=n\sum ({\dfrac {1}{(2-\alpha )^{i}}})=O(n)}y si implementamos elith{\displaystyle i^{th}}ronda enO(|Si|){\displaystyle O(|S_{i}|)}tiempo, entonces el tiempo total de ejecución secuencial será lineal.

Desventajas del algoritmo de Zemor

  1. Es un proceso largo debido al número de iteraciones.metro{\displaystyle m}en el algoritmo del decodificador toma es[(registronorte)/(registro(2α))]{\displaystyle [(\log {n})/(\log(2-\alpha ))]}
  2. El algoritmo de decodificación de Zemor tiene dificultades para decodificar borraduras. Una forma detallada de cómo podemos mejorar el algoritmo es:

dado en. [ 5 ]

Véase también

Referencias

  1. "Gilles Zémor" . www.math.u-bordeaux.fr . Consultado el 9 de abril de 2023 .
  2. Guruswami, Venkatesan; Cary, Matt (27 de enero de 2003). "Clase 5" . CSE590G: Códigos y objetos pseudoaleatorios . Universidad de Washington. Archivado del original el 24 de febrero de 2014.
  3. "Apuntes de clase" (PDF) . washington.edu . Consultado el 9 de abril de 2023 .
  4. N. Alon ; FRK Chung (diciembre de 1988). "Construcción explícita de redes tolerantes de tamaño lineal". Matemáticas Discretas . 72 ( 1–3 ): 15–19 . CiteSeerX 10.1.1.300.7495 . doi : 10.1016/0012-365X(88)90189-6 . 
  5. "Copia archivada" . Archivado del original el 14 de septiembre de 2004. Recuperado el 1 de mayo de 2012 .{{cite web}}: CS1 mantenimiento: copia archivada como título ( enlace )
Obtenido de " https://en.wikipedia.org/w/index.php?title=Zemor%27s_decoding_algorithm&oldid=1356667532 "