En teoría de la información , un código polar es un código de corrección de errores de bloques lineal . La construcción del código se basa en una concatenación recursiva múltiple de un código de núcleo corto que transforma el canal físico en canales externos virtuales. Cuando el número de recursiones se vuelve grande, los canales virtuales tienden a tener alta o baja confiabilidad (en otras palabras, se polarizan o se vuelven dispersos), y los bits de datos se asignan a los canales más confiables. Es el primer código con una construcción explícita que logra de manera demostrable la capacidad de canal para canales discretos, sin memoria y con entrada binaria simétrica (B-DMC) con dependencia polinómica de la brecha de capacidad. [1] Los códigos polares fueron desarrollados por Erdal Arikan , profesor de ingeniería eléctrica en la Universidad de Bilkent .
Cabe destacar que los códigos polares tienen una complejidad de codificación y decodificación modesta O ( n log n ) , lo que los hace atractivos para muchas aplicaciones. Además, la complejidad energética de codificación y decodificación de los códigos polares generalizados puede alcanzar los límites inferiores fundamentales para el consumo de energía de circuitos bidimensionales dentro de un factor O ( n ε polylog n ) para cualquier ε > 0 . [2]
Los códigos polares tienen algunas limitaciones cuando se utilizan en aplicaciones industriales. Principalmente, el diseño original de los códigos polares logra capacidad cuando los tamaños de bloque son asintóticamente grandes con un decodificador de cancelación sucesiva. Sin embargo, con los tamaños de bloque utilizados en la industria, el rendimiento de la cancelación sucesiva es deficiente en comparación con esquemas de codificación bien definidos e implementados, como el código de verificación de paridad de baja densidad (LDPC) y el código turbo . El rendimiento polar se puede mejorar con la decodificación de listas de cancelación sucesiva, pero su usabilidad en aplicaciones reales aún es cuestionable debido a las eficiencias de implementación muy deficientes causadas por el enfoque iterativo. [3]
En octubre de 2016, Huawei anunció que había alcanzado los 27 Gbit/s en pruebas de campo de 5G utilizando códigos polares para la codificación de canales. Las mejoras se han introducido de modo que el rendimiento del canal ahora casi ha cerrado la brecha con el límite de Shannon , que establece el estándar para la velocidad máxima para un ancho de banda determinado y un nivel de ruido determinado. [4]
En noviembre de 2016, el 3GPP acordó adoptar códigos polares para los canales de control eMBB (banda ancha móvil mejorada) para la interfaz 5G NR (nueva radio). En la misma reunión, el 3GPP acordó utilizar LDPC para el canal de datos correspondiente. [5]
En 2020, Arıkan introdujo un nuevo método de codificación polar denominado códigos convolucionales ajustados por polarización (PAC). En longitudes de bloque cortas, estos códigos superan tanto a los códigos convolucionales como a la decodificación de listas asistida por CRC de códigos polares convencionales. [6] [7]
Los decodificadores polares neuronales (NPD) [8] son un avance en la codificación de canales que combina redes neuronales (NN) con códigos polares, lo que proporciona una decodificación unificada para canales con o sin memoria, sin requerir un modelo de canal explícito. Utilizan cuatro redes neuronales para aproximar las funciones de la decodificación polar: la NN de incrustación (E), la NN de nodo de verificación (F), la NN de nodo de bit (G) y la NN de incrustación a LLR (H). Los pesos de estas NN se determinan estimando la información mutua de los canales sintéticos. Al final del entrenamiento, los pesos de los NPD son fijos y luego se pueden usar para la decodificación.
La complejidad computacional de los NPD está determinada por la parametrización de las redes neuronales, a diferencia de los decodificadores de enrejado de cancelación sucesiva (SC), [9] cuya complejidad está determinada por el modelo de canal y se utilizan típicamente para canales de estados finitos (FSC). La complejidad computacional de los NPD es , donde es el número de unidades ocultas en las redes neuronales, es la dimensión de la incrustación y es la longitud del bloque. Por el contrario, la complejidad computacional de los decodificadores de enrejado SC es , donde es el espacio de estados del modelo de canal.
Los NPD se pueden integrar en esquemas de decodificación SC [1] como la decodificación de lista SC y la decodificación SC asistida por CRC. [10] También son compatibles con distribuciones de entrada no uniformes e iid al integrarlas en el esquema Honda-Yamamoto. [11] Esta flexibilidad permite que los NPD se utilicen en varios escenarios de decodificación, mejorando el rendimiento de corrección de errores y manteniendo una complejidad computacional manejable.