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., expansor regular, que es un grafo bipartito.=, dóndees el conjunto de vértices yes el conjunto de aristas y=y=, dóndeydenota conjuntos de vértices. Seasea el número de vértices en cada grupo, es decir ,. El conjunto de bordesser de tamaño=y cada borde entiene un punto final en ambosy.denota el conjunto de aristas que contienen.
Supongamos un orden en, por lo tanto, el ordenamiento se realizará en cada borde depor cada. Sea un campo finitoy por una palabra en, sea la subpalabra de la palabra que será indexada por. Sea esa palabra denotada por. El subconjunto de vérticesyinduce cada palabrauna partición ensubpalabras que no se superponen, dóndeabarca los elementos dePara construir un código, considere un subcódigo lineal, que es uncódigo, donde, el tamaño del alfabeto es. Para cualquier vértice, dejarser algún orden de lavértices deadyacente a. En este código, cada bitestá vinculado con un bordede.
Podemos definir el códigoser el conjunto de vectores binariosdede tal manera que, para cada vérticede,es una palabra clave de. En este caso, podemos considerar un caso especial cuando cada arista deestá adyacente a exactamentevértices de. Significa queyconforman, respectivamente, el conjunto de vértices y el conjunto de aristas degráfico regular.
Llamemos al códigoconstruido de esta manera comocódigo. Para un gráfico dadoy un código dado, hay varioscódigos ya que hay diferentes maneras de ordenar las aristas incidentes a un vértice dado, es decir,De hecho, nuestro códigoconstan de todas las palabras clave tales quea pesar deEl códigoes linealenya que se genera a partir de un subcódigo, que es lineal. El códigose define comopor cada.

En esta figura,Muestra el gráficoy código.
En matriz, dejares igual al segundo mayor valor propio de la matriz de adyacencia deAquí el mayor valor propio esSe hacen dos afirmaciones importantes:
Reivindicación 1
. Dejarsea la tasa de un código lineal construido a partir de un grafo bipartito cuyos nodos de dígitos tienen gradoy cuyos nodos de subcódigo tienen grado. Si un único código lineal con parámetrosy tasaestá asociado con cada uno de los nodos de subcódigo, entonces.
Prueba
Dejarsea la tasa del código lineal , que es igual a Que hayanodos de subcódigo en el grafo. Si el grado del subcódigo es, entonces el código debe tenerdígitos, ya que cada nodo de dígito está conectado adelaristas en el grafo. Cada nodo de subcódigo contribuyeecuaciones para la matriz de verificación de paridad para un total deEstas ecuaciones pueden no ser linealmente independientes. Por lo tanto,, Dado que el valor de, es decir, el nodo de dígitos de este grafo bipartito esy aquí, podemos escribirlo como:
Reivindicación 2
Sies un código lineal de tasalongitud del código del bloquey distancia relativa mínimay sies el grafo de incidencia de vértices de aristas de un– gráfico regular con el segundo valor propio más grande, luego el códigotiene tasa al menosy distancia relativa mínima al menos.
Prueba
Dejarser derivado de lagráfico regular. Entonces, el número de variables deesy el número de restricciones es. Según Alon-Chung, [ 4 ] sies un subconjunto de vértices dede tamaño, entonces el número de aristas contenidas en el subgrafo es inducido porenes como máximo.
Como resultado, cualquier conjunto deLas variables tendrán al menosrestricciones como vecinas. Por lo tanto, el número promedio de variables por restricción es :
Entonces si, luego una palabra de peso relativo , no puede ser una palabra clave deLa desigualdadestá satisfecho por. Por lo tanto,no puede tener una palabra clave distinta de cero de peso relativo o menos.
En matriz, podemos suponer queestá delimitado lejos de. Para esos valores deen el cuales primo impar, existen construcciones explícitas de secuencias de- grafos bipartitos regulares con un número arbitrariamente grande de vértices tales que cada grafoEn la secuencia hay un grafo de Ramanujan . Se llama grafo de Ramanujan porque satisface la desigualdad.En el gráfico se aprecian ciertas propiedades de expansión.como la separación entre los valores propiosy. Si el gráficoes el gráfico de Ramanujan, entonces esa expresión se convertiráeventualmente comose vuelve grande.
El algoritmo de Zemor
El algoritmo de decodificación iterativo que se muestra a continuación alterna entre los vértices.yeny corrige la palabra clave deeny luego cambia para corregir la palabra claveen. 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 nodosyse procesan. El procesamiento de vértices también se puede realizar en paralelo.
El decodificador :\mathbb {F} ^{d}\rightarrow C_{o}} representa un decodificador paraque se recupera correctamente con cualquier palabra clave con menos deerrores.
Algoritmo decodificador
Mensaje recibido : For to do // is the number of iterations { if ( is odd) // Here the algorithm will alternate between its two vertex sets. else Iteration : For every , let // Decoding to its nearest codeword. } Producción:
Explicación del algoritmo
Desdees bipartito, el conjuntode vértices induce la partición del conjunto de aristas=. El conjuntoinduce otra partición,=.
Dejarsea el vector recibido, y recordemos que. La primera iteración del algoritmo consiste en aplicar la decodificación completa para el código inducido porpor cada. Esto significa que para reemplazar, por cada, el vectorpor una de las palabras clave más cercanas de. Dado que los subconjuntos de aristasson disjuntos para, la decodificación de estos subvectores depuede hacerse en paralelo.
La iteración producirá un nuevo vector.. La siguiente iteración consiste en aplicar el procedimiento anterior apero conreemplazado por. En otras palabras, consiste en decodificar todos los subvectores inducidos por los vértices de. Las siguientes iteraciones repiten esos dos pasos alternativamente aplicando decodificación paralela a los subvectores inducidos por los vértices dey a los subvectores inducidos por los vértices de. Nota: [Siyes el grafo bipartito completo , entonceses un código de producto de[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,esEn general, el algoritmo anterior puede corregir una palabra clave cuyo peso de Hamming no sea mayor quepara valores deAquí, el algoritmo de decodificación se implementa como un circuito de tamañoy profundidadque devuelve la palabra clave dado que el vector de error tiene un peso menor que.
Teorema
Sies un grafo de Ramanujan de grado suficientemente alto, para cualquierEl algoritmo de decodificación puede corregirerrores, dondetiende a 0 cuandotiende a 0, enrondas (donde el grande-La notación oculta una dependencia de). Esto se puede implementar en tiempo lineal en un solo procesador; enLos 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 recibida. Se considera el conjunto de aristas que tiene un valor incorrecto durante la decodificación. Aquí por valor incorrecto, nos referimos aen cualquiera de los bits. Dejasea el valor inicial de la palabra clave,sean los valores después del primero, segundo . . .etapas de decodificación. Aquí,, y . Aquícorresponde a aquellos conjuntos de vértices que no pudieron decodificar con éxito su palabra clave en elronda. Del algoritmo anterior como número de vértices fallidos se corregirán en cada iteración. Podemos demostrar quees una secuencia decreciente. De hecho,. Como suponemos,, la ecuación anterior está en una secuencia geométrica decreciente . Entonces, cuando, más queSon necesarias rondas. Además,y si implementamos elronda entiempo, entonces el tiempo total de ejecución secuencial será lineal.
Desventajas del algoritmo de Zemor
- Es un proceso largo debido al número de iteraciones.en el algoritmo del decodificador toma es
- 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
- ↑ "Gilles Zémor" . www.math.u-bordeaux.fr . Consultado el 9 de abril de 2023 .
- ↑ 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.
- ↑ "Apuntes de clase" (PDF) . washington.edu . Consultado el 9 de abril de 2023 .
- ↑ 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 .
- ↑ "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 )
- Teoría de la codificación
- Detección y corrección de errores