Código Reed – Muller - Reed–Muller code

Código Reed-Muller RM (r, m)
Nomeado após Irving S. Reed e David E. Muller
Classificação
Modelo Código de bloco linear
Comprimento do bloco
Comprimento da mensagem
Avaliar
Distância
Tamanho do alfabeto
Notação -código

Os códigos Reed-Muller são códigos de correção de erros usados ​​em aplicações de comunicação sem fio, particularmente em comunicação de espaço profundo. Além disso, o padrão 5G proposto depende de códigos polares intimamente relacionados para correção de erros no canal de controle. Devido às suas propriedades teóricas e matemáticas favoráveis, os códigos de Reed-Muller também foram extensivamente estudados na ciência da computação teórica .

Os códigos Reed-Muller generalizam os códigos Reed-Solomon e o código Walsh-Hadamard . Códigos de Reed-Muller são códigos de bloco lineares que são localmente testável , localmente decodable e lista decodable . Essas propriedades as tornam particularmente úteis no projeto de provas verificáveis ​​probabilisticamente .

Os códigos Reed-Muller tradicionais são códigos binários, o que significa que as mensagens e palavras-código são sequências binárias. Quando r e m são inteiros com 0 ≤ rm , o código de Reed-Muller com parâmetros r e m é denotado como RM ( rm ). Quando solicitado a codificar uma mensagem que consiste em k bits, onde se mantém, o código RM ( rm ) produz uma palavra-código que consiste em 2 m bits.

Os códigos Reed-Muller são nomeados em homenagem a David E. Muller , que descobriu os códigos em 1954, e Irving S. Reed , que propôs o primeiro algoritmo de decodificação eficiente.

Descrição usando polinômios de baixo grau

Os códigos Reed-Muller podem ser descritos de várias maneiras diferentes (mas, em última análise, equivalentes). A descrição baseada em polinômios de baixo grau é bastante elegante e particularmente adequada para sua aplicação como códigos testáveis localmente e códigos decodificáveis ​​localmente .

Codificador

Um código de bloco pode ter uma ou mais funções de codificação que mapeiam mensagens para palavras-código . O código Reed-Muller RM ( r , m ) tem comprimento de mensagem e comprimento de bloco . Uma forma de definir uma codificação para este código é baseada na avaliação de polinômios multilineares com m variáveis ​​e grau total r . Cada polinômio multilinear sobre o campo finito com dois elementos pode ser escrito da seguinte forma:

O são as variáveis do polinômio, e os valores são os coeficientes do polinômio. Como existem exatamente coeficientes, a mensagem consiste em valores que podem ser usados ​​como esses coeficientes. Dessa forma, cada mensagem dá origem a um polinômio único em m variáveis. Para construir a palavra-código , o codificador avalia em todos os pontos de avaliação , onde interpreta a soma como módulo dois de adição para obter um bit . Ou seja, a função de codificação é definida via

O fato de a palavra-código ser suficiente para reconstruir com exclusividade decorre da

interpolação de Lagrange , que afirma que os coeficientes de um polinômio são determinados de forma única quando um número suficiente de pontos de avaliação é fornecido. Uma vez que e é válido para todas as mensagens , a função é um mapa linear . Portanto, o código Reed-Muller é um código linear .

Exemplo

Para o código RM ( 2 , 4 ) , os parâmetros são os seguintes:

Deixe ser a função de codificação que acabou de ser definida. Para codificar a string x = 1 1010 010101 de comprimento 11, o codificador primeiro constrói o polinômio em 4 variáveis:

Em seguida, ele avalia este polinômio em todos os 16 pontos de avaliação:
Como resultado, C (1 1010 010101) = 1111 1010 0101 0000 é válido.

Decodificador

Como já foi mencionado, a interpolação de Lagrange pode ser usada para recuperar com eficiência a mensagem de uma palavra-código. No entanto, um decodificador precisa funcionar mesmo se a palavra-código tiver sido corrompida em algumas posições, ou seja, quando a palavra recebida for diferente de qualquer palavra-código. Nesse caso, um procedimento de decodificação local pode ajudar.

Generalização para alfabetos maiores por meio de polinômios de baixo grau

Usando polinômios de baixo grau sobre um campo finito de tamanho , é possível estender a definição dos códigos de Reed-Muller para alfabetos de tamanho . Let and be inteiros positivos, onde deve ser considerado maior que . Para codificar uma mensagem de largura , a mensagem é novamente interpretada como um polinômio variável de grau total no máximo e com coeficiente de . Esse polinômio de fato tem coeficientes. A codificação Reed-Muller de é a lista de todas as avaliações de todos . Assim, o comprimento do bloco é .

Descrição usando uma matriz geradora

Uma matriz geradora para um código Reed-Muller RM ( r , m ) de comprimento N = 2 m pode ser construída como segue. Vamos escrever o conjunto de todos os vetores binários m- dimensionais como:

Definimos no espaço N- dimensional os

vetores indicadores

em subconjuntos por:

junto com, também em , a operação binária

referido como produto de cunha (não deve ser confundido com o produto de cunha definido na álgebra externa). Aqui, e estão pontos em ( vetores binários N- dimensionais), e a operação é a multiplicação usual no campo .

é um espaço vetorial m- dimensional sobre o campo , então é possível escrever

Definimos no espaço N- dimensional os seguintes vetores com comprimento e

onde 1 ≤ i ≤ m e o H i são hiperplanos em (com dimensão m - 1 ):

A matriz geradora

O código Reed-Muller RM ( r , m ) de ordem r e comprimento N  = 2 m é o código gerado por v 0 e os produtos em cunha de até r de v i , 1 ≤ im (onde por convenção a produto de cunha de menos de um vetor é a identidade da operação). Em outras palavras, podemos construir uma matriz geradora para o código RM ( r , m ) , usando vetores e suas permutações de produto em cunha até r por vez , como as linhas da matriz geradora, onde 1 ≤ i km .

Exemplo 1

Seja m = 3. Então N = 8, e

e

O código RM (1,3) é gerado pelo conjunto

ou mais explicitamente pelas linhas da matriz:

Exemplo 2

O código RM (2,3) é gerado pelo conjunto:

ou mais explicitamente pelas linhas da matriz:

Propriedades

As seguintes propriedades são válidas:

  1. O conjunto de todos os produtos de cunha possíveis de até m da v i forma uma base para .
  2. O código RM ( r , m ) tem classificação
  3. RM ( r , m ) = RM ( r , m - 1) | RM ( r - 1, m - 1) onde '|' denota o produto de barra de dois códigos.
  4. RM ( r , m ) tem peso de Hamming mínimo de 2 m - r .

Prova

  1. Existem

    tais vetores e têm dimensão N, portanto, é suficiente verificar se os N vetores vão; equivalentemente, é suficiente verificar isso .

    Vamos x ser um vector binário de comprimento m , um elemento de X . Deixe ( x ) i denotar o i ésimo elemento de x . Definir

    onde 1 ≤ im .

    Então

    Expansão através da distributividade do produto em cunha dá . Então, uma vez que os vetores abrangem , temos .
  2. Por 1 , todos esses produtos de cunha devem ser linearmente independentes, então a classificação de RM ( r, m ) deve ser simplesmente o número de tais vetores.
  3. Omitido.
  4. Por indução.
    A RM (0,  m ) o código é o código de repetição de comprimento N  = 2 m e peso N = 2 m -0 = 2 m - r . Por 1 e tem peso 1 = 2 0 = 2 m - r .
    O produto da barra do artigo (teoria da codificação) fornece uma prova de que o peso do produto da barra dos dois códigos C 1 , C 2 é dado por
    Se 0 < r < m e se
    1. RM ( r , m  - 1) tem peso 2 m −1− r
    2. RM ( r  - 1, m  - 1) tem peso 2 m −1− ( r −1) = 2 m - r
    então o produto em barra tem peso

Decodificando códigos RM

Os códigos RM ( r , m ) podem ser decodificados usando a decodificação de lógica majoritária . A ideia básica da decodificação da lógica majoritária é construir várias somas de verificação para cada elemento de palavra de código recebido. Como cada uma das diferentes somas de verificação deve ter o mesmo valor (ou seja, o valor do peso do elemento da palavra da mensagem), podemos usar uma decodificação lógica majoritária para decifrar o valor do elemento da palavra da mensagem. Uma vez que cada ordem do polinômio é decodificada, a palavra recebida é modificada de acordo com a remoção das palavras de código correspondentes ponderadas pelas contribuições da mensagem decodificada, até o estágio atual. Portanto, para um código RM de ordem r , temos que decodificar iterativamente r + 1, vezes antes de chegarmos à palavra-código final recebida. Além disso, os valores dos bits de mensagem são calculados por meio desse esquema; finalmente, podemos calcular a palavra-código multiplicando a palavra da mensagem (recém-decodificada) pela matriz geradora.

Uma pista se a decodificação foi bem-sucedida é ter uma palavra recebida totalmente modificada em zero, no final da  decodificação de estágio ( r + 1) por meio da decodificação lógica majoritária. Esta técnica foi proposta por Irving S. Reed e é mais geral quando aplicada a outros códigos de geometria finita.

Descrição usando uma construção recursiva

Um código Reed-Muller RM ( r, m ) existe para quaisquer inteiros e . RM ( m , m ) é definido como o código universe ( ). RM (−1, m) é definido como o código trivial ( ). Os códigos RM restantes podem ser construídos a partir desses códigos elementares usando a construção de duplicação de comprimento

A partir desta construção, RM ( r, m ) é um código de bloco linear binário ( n , k , d ) com comprimento n  = 2 m , dimensão e distância mínima para . O código duplo para RM ( r, m ) é RM ( m - r -1, m ). Isso mostra que os códigos de repetição e SPC são duais, os códigos de Hamming biortogonais e estendidos são duais e que os códigos com k  =  n / 2 são autoduais.

Casos especiais de códigos Reed-Muller

Tabela de todos os códigos RM (r, m) para m≤5

Todos os códigos RM ( rm ) com tamanho de alfabeto 2 são exibidos aqui, anotados com a notação de teoria de codificação padrão [n, k, d] para códigos de bloco . O código RM ( rm ) é um código, ou seja, é um código linear sobre um alfabeto binário , possui comprimento de bloco , comprimento (ou dimensão) de mensagem k e distância mínima .

RM ( m, m )
( 2 m , 2 m , 1)
códigos do universo
RM (5,5)
(32,32,1)
RM (4,4)
(16,16,1)
RM ( m  - 1,  m )
(2 m , 2 m −1, 2)
Códigos SPC
RM (3,3)
(8,8,1)
RM (4,5)
(32,31,2)
RM (2,2)
(4,4,1)
RM (3,4)
(16,15,2)
RM ( m  - 2, m )
(2 m , 2 m - m −1, 4)
ramal Códigos de Hamming
RM (1,1)
(2,2,1)
RM (2,3)
(8,7,2)
RM (3,5)
(32,26,4)
RM (0,0)
(1,1,1)
RM (1,2)
(4,3,2)
RM (2,4)
(16,11,4)
RM (0,1)
(2,1,2)
RM (1,3)
(8,4,4)
RM (2,5)
(32,16,8)
códigos autoduais
RM (-1,0)
(1,0, )
RM (0,2)
(4,1,4)
RM (1,4)
(16,5,8)
RM (-1,1)
(2,0, )
RM (0,3)
(8,1,8)
RM (1,5)
(32,6,16)
RM (-1,2)
(4,0, )
RM (0,4)
(16,1,16)
RM (1, m )
(2 m , m +1, 2 m -1 )
Códigos hadamard puncionados
RM (-1,3)
(8,0, )
RM (0,5)
(32,1,32)
RM (-1,4)
(16,0, )
RM (0, m )
(2 m , 1, 2 m )
códigos de repetição
RM (-1,5)
(32,0, )
RM (-1, m )
(2 m , 0, ∞)
códigos triviais

Propriedades dos códigos RM (r, m) para r≤1 ou r≥m-1

  • Os códigos RM (0,  m ) são códigos de repetição de comprimento N  = 2 m , taxa e distância mínima .
  • Os códigos RM (1,  m ) são códigos de verificação de paridade de comprimento N  = 2 m , taxa e distância mínima .
  • Os códigos RM ( m  - 1,  m ) são códigos de verificação de paridade única de comprimento N  = 2 m , taxa e distância mínima .
  • Os códigos RM ( m  - 2,  m ) são a família de códigos de Hamming estendidos de comprimento N  = 2 m com distância mínima .

Referências

Leitura adicional

links externos