Articulo de referencia

Códigos en línea

En informática , los códigos en línea son un ejemplo de códigos de borrado sin tasa . Estos códigos pueden codificar un mensaje en varios símbolos, de modo que conocer cualquier...

En informática , los códigos en línea son un ejemplo de códigos de borrado sin tasa . Estos códigos pueden codificar un mensaje en varios símbolos, de modo que conocer cualquier fracción de ellos permite recuperar el mensaje original (con alta probabilidad). Los códigos sin tasa generan una cantidad arbitrariamente grande de símbolos que pueden transmitirse hasta que los receptores dispongan de suficientes.

Descripción general del uso de códigos en línea

El algoritmo de codificación en línea consta de varias fases. Primero, el mensaje se divide en n bloques de tamaño fijo. A continuación, la codificación externa es un código de borrado que produce bloques auxiliares que se añaden a los bloques de mensaje para formar un mensaje compuesto.

A partir de esto, la codificación interna genera bloques de verificación. Al recibir una cierta cantidad de bloques de verificación, se puede recuperar una fracción del mensaje compuesto. Una vez que se ha recuperado suficiente, se puede utilizar la decodificación externa para recuperar el mensaje original.

Discusión detallada

Los códigos en línea se parametrizan mediante el tamaño del bloque y dos escalares , q y ε . Los autores sugieren q = 3 y ε = 0,01. Estos parámetros establecen el equilibrio entre la complejidad y el rendimiento de la codificación. Un mensaje de n bloques puede recuperarse, con alta probabilidad , a partir de (1+3ε) n bloques de verificación. La probabilidad de fallo es (ε/2) q+1 .

Codificación externa

Se puede utilizar cualquier código de borrado como codificación externa, pero el autor de los códigos en línea sugiere lo siguiente.

Para cada bloque de mensaje, se eligen pseudoaleatoriamente q bloques auxiliares (de un total de 0,55 q ε n bloques auxiliares) para adjuntarlo. Cada bloque auxiliar es entonces el resultado de la operación XOR de todos los bloques de mensaje que se le han adjuntado.

Codificación interna

Un gráfico de los bloques de verificación recibidos en función del número de bloques de mensaje fijos para un mensaje de 10000 bloques.

La codificación interna toma el mensaje compuesto y genera una secuencia de bloques de verificación. Un bloque de verificación es el resultado de la operación XOR de todos los bloques del mensaje compuesto al que está adjunto.

El grado de un bloque de control es el número de bloques a los que está conectado. El grado se determina mediante el muestreo de una distribución aleatoria, p , que se define como:

F=ln(ϵ2/4)ln(1ϵ/2){\displaystyle F=\left\lceil {\frac {\ln(\epsilon ^{2}/4)}{\ln(1-\epsilon /2)}}\right\rceil }
pag1=11+1/F1+ϵ{\displaystyle p_{1}=1-{\frac {1+1/F}{1+\epsilon }}}
pagi=(1pag1)F(F1)i(i1){\displaystyle p_{i}={\frac {(1-p_{1})F}{(F-1)i(i-1)}}}para2iF{\displaystyle 2\leq i\leq F}

Una vez que se conoce el grado del bloque de verificación, los bloques del mensaje compuesto al que está adjunto se eligen de forma uniforme.

Descodificación

Obviamente, el decodificador de la etapa interna debe contener bloques de verificación que no puede decodificar actualmente . Un bloque de verificación solo se puede decodificar cuando se conocen todos los bloques a los que está conectado, excepto uno. El gráfico de la izquierda muestra el progreso de un decodificador interno. El eje x representa el número de bloques de verificación recibidos y la línea discontinua muestra el número de bloques de verificación que no se pueden utilizar. Este número aumenta casi linealmente al principio, ya que se reciben muchos bloques de verificación con grado > 1 que no se pueden utilizar. En cierto punto, algunos de los bloques de verificación se vuelven repentinamente utilizables, lo que permite resolver más bloques y, a su vez, habilitar más bloques de verificación. Muy rápidamente, se puede decodificar todo el archivo.

Como también muestra el gráfico, el decodificador interno tarda un poco en decodificar todo tras recibir n bloques de verificación. La codificación externa garantiza que algunos bloques que el decodificador interno no representen un problema, ya que el archivo se puede recuperar sin ellos.

  • Documento original
  • Códigos sin tasa de acceso y grandes descargas (Un artículo más accesible del mismo autor)
  • Artículos de Petar Maymounkov
  • Un proyecto Ruby alojado en RubyForge que contiene una biblioteca Ruby para programación en línea. Archivado el 3 de marzo de 2016 en Wayback Machine.