Código Hadamard - Hadamard code

Código Hadamard
Nomeado após Jacques Hadamard
Classificação
Modelo Código de bloco linear
Comprimento do bloco
Comprimento da mensagem
Avaliar
Distância
Tamanho do alfabeto
Notação -código
Código Hadamard Aumentado
Nomeado após Jacques Hadamard
Classificação
Modelo Código de bloco linear
Comprimento do bloco
Comprimento da mensagem
Avaliar
Distância
Tamanho do alfabeto
Notação -código
Image
Matriz do código Hadamard Aumentado [32, 6, 16] para o código Reed-Muller (1, 5) da sonda espacial da NASA Mariner 9
Image
Operações XOR
Aqui, os campos brancos representam 0
e os campos vermelhos representam 1

O código Hadamard é um código de correção de erros com o nome de Jacques Hadamard que é usado para detecção e correção de erros ao transmitir mensagens em canais muito barulhentos ou não confiáveis. Em 1971, o código foi usado para transmitir fotos de Marte de volta à Terra da sonda espacial Mariner 9 da NASA . Por causa de suas propriedades matemáticas únicas, o código Hadamard não é apenas usado por engenheiros, mas também intensamente estudado em teoria da codificação , matemática e ciência da computação teórica . O código Hadamard é também conhecido sob os nomes de código Walsh , família Walsh , e código Walsh-Hadamard em reconhecimento do matemático americano Joseph Leonard Walsh .

O código Hadamard é um exemplo de código linear de comprimento sobre um alfabeto binário . Infelizmente, este termo é um tanto ambíguo, pois algumas referências assumem um comprimento de mensagem enquanto outras assumem um comprimento de mensagem de . Neste artigo, o primeiro caso é chamado de código Hadamard, enquanto o segundo é chamado de código Hadamard aumentado .

O código Hadamard é único no sentido de que cada palavra-código diferente de zero tem um peso Hamming de exatamente , o que implica que a distância do código também é . Na notação da teoria da codificação padrão para códigos de bloco , o código Hadamard é um código, ou seja, é um código linear sobre um alfabeto binário , tem comprimento de bloco , comprimento de mensagem (ou dimensão) e distância mínima . O comprimento do bloco é muito grande em comparação com o comprimento da mensagem, mas por outro lado, os erros podem ser corrigidos mesmo em condições extremamente ruidosas.

O código Hadamard aumentado é uma versão ligeiramente melhorada do código Hadamard; é um código e, portanto, tem uma taxa ligeiramente melhor enquanto mantém a distância relativa de , e é, portanto, preferido em aplicações práticas. Na teoria da comunicação, isso é simplesmente chamado de código Hadamard e é o mesmo que o código de Reed-Muller de primeira ordem sobre o alfabeto binário.

Normalmente, os códigos Hadamard são baseados na construção de matrizes Hadamard de Sylvester , mas o termo “código Hadamard” também é usado para se referir a códigos construídos a partir de matrizes Hadamard arbitrárias , que não são necessariamente do tipo Sylvester. Em geral, esse código não é linear. Esses códigos foram construídos pela primeira vez por Raj Chandra Bose e Sharadchandra Shankar Shrikhande em 1959. Se n é o tamanho da matriz de Hadamard, o código tem parâmetros , o que significa que é um código binário não necessariamente linear com 2 n palavras-chave de comprimento de bloco n e distância mínima n / 2. O esquema de construção e decodificação descrito abaixo se aplica a n geral , mas a propriedade de linearidade e a identificação com códigos de Reed-Muller requerem que n seja uma potência de 2 e que a matriz de Hadamard seja equivalente à matriz construída pelo método de Sylvester.

O código Hadamard é um código decodificável localmente , que fornece uma maneira de recuperar partes da mensagem original com alta probabilidade, olhando apenas para uma pequena fração da palavra recebida. Isso dá origem a aplicações na teoria da complexidade computacional e, particularmente, no projeto de provas verificáveis ​​probabilisticamente . Como a distância relativa do código Hadamard é 1/2, normalmente só se pode esperar recuperar de no máximo 1/4 de fração do erro. Usando a decodificação de lista , no entanto, é possível calcular uma lista curta de mensagens candidatas possíveis, desde que menos do que os bits na palavra recebida tenham sido corrompidos.

Na comunicação de acesso múltiplo por divisão de código (CDMA), o código Hadamard é conhecido como Código Walsh e é usado para definir canais de comunicação individuais . É comum na literatura CDMA referir-se a palavras-código como “códigos”. Cada usuário usará uma palavra-código diferente, ou “código”, para modular seu sinal. Como as palavras-código Walsh são matematicamente ortogonais , um sinal codificado por Walsh aparece como ruído aleatório para um terminal móvel compatível com CDMA , a menos que esse terminal use a mesma palavra-código usada para codificar o sinal de entrada .

História

Código Hadamard é o nome mais comumente usado para esse código na literatura. No entanto, no uso moderno, esses códigos de correção de erros são chamados de códigos de Walsh-Hadamard.

Há uma razão para isto:

Jacques Hadamard não inventou o código, mas definiu as matrizes de Hadamard por volta de 1893, muito antes do primeiro código de correção de erros , o código de Hamming , ser desenvolvido na década de 1940.

O código Hadamard é baseado em matrizes Hadamard, e embora existam muitas matrizes Hadamard diferentes que poderiam ser usadas aqui, normalmente apenas a construção de matrizes Hadamard de Sylvester é usada para obter as palavras-código do código Hadamard.

James Joseph Sylvester desenvolveu sua construção de matrizes de Hadamard em 1867, que na verdade antecede o trabalho de Hadamard em matrizes de Hadamard. Daí o nome código Hadamard ser contestado e às vezes o código é chamado de código Walsh , homenageando o matemático americano Joseph Leonard Walsh .

Um código Hadamard aumentado foi usado durante a missão Mariner 9 de 1971 para corrigir erros de transmissão de imagem. As palavras de dados usadas durante esta missão tinham 6 bits de comprimento, o que representava 64 valores de tons de cinza .

Por causa das limitações da qualidade do alinhamento do transmissor no momento (devido a problemas do Doppler Tracking Loop), o comprimento máximo de dados útil era de cerca de 30 bits. Em vez de usar um código de repetição , um código [32, 6, 16] Hadamard foi usado.

Erros de até 7 bits por palavra podem ser corrigidos usando este esquema. Comparado a um código de 5 repetições , as propriedades de correção de erros desse código Hadamard são muito melhores, mas sua taxa é comparável. O algoritmo de decodificação eficiente foi um fator importante na decisão de usar este código.

O circuito utilizado foi denominado "Máquina Verde". Ele empregou a transformada rápida de Fourier, que pode aumentar a velocidade de decodificação por um fator de três. Desde a década de 1990, o uso desse código por programas espaciais mais ou menos cessou, e a NASA Deep Space Network não oferece suporte a esse esquema de correção de erros para suas antenas maiores que 26 m.

Construções

Embora todos os códigos Hadamard sejam baseados em matrizes Hadamard, as construções diferem de maneiras sutis para diferentes campos científicos, autores e usos. Os engenheiros, que usam os códigos para transmissão de dados, e os teóricos da codificação , que analisam as propriedades extremas dos códigos, geralmente desejam que a taxa do código seja a mais alta possível, mesmo que isso signifique que a construção se torne matematicamente um pouco menos elegante.

Por outro lado, para muitas aplicações de códigos Hadamard na ciência da computação teórica , não é tão importante atingir a taxa ideal e, portanto, construções mais simples de códigos Hadamard são preferidas, uma vez que podem ser analisados ​​com mais elegância.

Construção usando produtos internos

Quando recebe uma mensagem binária de comprimento , o código Hadamard codifica a mensagem em uma palavra-código usando uma função de codificação. Esta função faz uso do produto interno de dois vetores , que é definido da seguinte maneira:

Então, a codificação Hadamard de é definida como a sequência de todos os produtos internos com :

Conforme mencionado acima, o código Hadamard aumentado é usado na prática, pois o código Hadamard em si é um desperdício. Isso ocorre porque, se o primeiro bit de for zero, então o produto interno não contém nenhuma informação sobre e, portanto, é impossível decodificar totalmente a partir dessas posições da palavra-código sozinha. Por outro lado, quando a palavra-código fica restrita às posições onde , ainda é possível decodificar totalmente . Portanto, faz sentido restringir o código Hadamard a essas posições, o que dá origem à codificação Hadamard aumentada de ; isto é ,.

Construção usando uma matriz geradora

O código Hadamard é um código linear e todos os códigos lineares podem ser gerados por uma matriz geradora . Esta é uma matriz que vale para todos , onde a mensagem é vista como um vetor linha e o produto vetor-matriz é entendido no espaço vetorial sobre o corpo finito . Em particular, uma maneira equivalente de escrever a definição do produto interno para o código Hadamard surge usando a matriz geradora cujas colunas consistem em todas as cadeias de comprimento , ou seja,

onde é o -ésimo vetor binário em ordem lexicográfica . Por exemplo, a matriz geradora para o código de dimensão Hadamard é:

A matriz é uma -matriz e dá origem ao operador linear .

A matriz geradora do código Hadamard aumentado é obtida restringindo a matriz às colunas cuja primeira entrada é um. Por exemplo, a matriz geradora para o código de dimensão Hadamard aumentado é:

Então é um mapeamento linear com .

De modo geral , a matriz geradora do código de Hadamard aumentado é uma matriz de verificação de paridade para o código de Hamming estendido de comprimento e dimensão , o que torna o código de Hadamard aumentado o código dual do código de Hamming estendido. Portanto, uma maneira alternativa de definir o código Hadamard é em termos de sua matriz de verificação de paridade: a matriz de verificação de paridade do código Hadamard é igual à matriz geradora do código de Hamming.

Construção usando matrizes gerais de Hadamard

Os códigos de Hadamard são obtidos a partir de um n -by- n matriz de Hadamard H . Em particular, os 2 N palavras de código do código são as linhas de H e as linhas de - H . Para obter um código sobre o alfabeto {0,1}, o mapeamento −1 ↦ 1, 1 ↦ 0, ou, equivalentemente, x  ↦ (1 -  x ) / 2, é aplicado aos elementos da matriz. Que a distância mínima do código é n / 2 decorre da propriedade definidora das matrizes de Hadamard, ou seja, que suas linhas são mutuamente ortogonais. Isso implica que duas linhas distintas de uma matriz de Hadamard diferem em exatamente n / 2 posições e, uma vez que a negação de uma linha não afeta a ortogonalidade, que qualquer linha de H difere de qualquer linha de - H em n / 2 posições também, exceto quando as linhas correspondem, caso em que diferem em n posições.

Para obter o código Hadamard aumentada acima com , a matriz de Hadamard escolhido H tem de ser do tipo Sylvester, o que dá origem a uma mensagem de comprimento .

Distância

A distância de um código é a distância de Hamming mínima entre quaisquer duas palavras-código distintas, ou seja, o número mínimo de posições nas quais duas palavras-código distintas diferem. Como o código Walsh-Hadamard é um código linear , a distância é igual ao peso mínimo de Hamming entre todas as suas palavras-código diferentes de zero. Todas as palavras-código diferentes de zero do código Walsh – Hadamard têm um peso de Hamming de exatamente pelo seguinte argumento.

Deixe ser uma mensagem diferente de zero. Então, o seguinte valor é exatamente igual à fração de posições na palavra-código que são iguais a um:

O fato de o último valor ser exatamente é chamado de princípio de subsum aleatório . Para ver que é verdade, assuma isso sem perda de generalidade . Então, quando condicionado pelos valores de , o evento é equivalente a para alguns dependendo de e . A probabilidade de que aconteça é exatamente . Assim, de fato, todas as palavras-código diferentes de zero do código Hadamard têm peso de Hamming relativo e, portanto, sua distância relativa é .

A distância relativa do código Hadamard aumentado também é , mas não tem mais a propriedade de que cada palavra-código diferente de zero tenha peso exatamente, pois o vetor todos s é uma palavra-código do código Hadamard aumentado. Isso ocorre porque o vetor codifica para . Além disso, sempre que for diferente de zero e não o vetor , o princípio do subsum aleatório se aplica novamente, e o peso relativo de é exatamente .

Decodificação local

Um código decodificável localmente é um código que permite que um único bit da mensagem original seja recuperado com alta probabilidade, olhando apenas para uma pequena parte da palavra recebida.

Um código é -query localmente decodable se um pouco mensagem, , podem ser recuperados através da verificação bits da palavra recebida. Mais formalmente, um código ,, é decodificável localmente, se houver um decodificador probabilístico,, tal que (Nota: representa a distância de Hamming entre os vetores e ) :

, implica que

Teorema 1: O código Walsh – Hadamard é decodificável localmente para todos .

Lema 1: Para todas as palavras de código, em um código de Walsh-Hadamard, , , em que representam os bits em posições e , respectivamente, e representa o bit na posição .

Prova do lema 1


Seja a palavra-código correspondente à mensagem .

Seja a matriz geradora de .

Por definição ,. A partir disso ,. Pela construção de , . Portanto, por substituição ,.

Prova do teorema 1


Para provar o teorema 1, vamos construir um algoritmo de decodificação e provar sua exatidão.

Algoritmo

Entrada: Palavra recebida

Para cada :

  1. Escolha uniformemente ao acaso.
  2. Escolha tal que , onde é o -ésimo vetor de base padrão e é o xor bit a bit de e .
  3. .

Resultado: Mensagem

Prova de correção

Para qualquer mensagem ,, e a palavra recebida , que difira de em no máximo uma fração de bits, pode ser decodificada com probabilidade pelo menos .

Por lema 1 ,. Uma vez que e são escolhidos uniformemente, a probabilidade é no máximo . Da mesma forma, a probabilidade de que seja no máximo . Pelo limite de união , a probabilidade de que ambos correspondam ou não aos bits correspondentes em é no máximo . Se e corresponderem a , então o lema 1 será aplicado e, portanto, o valor adequado de será calculado. Portanto, a probabilidade é decodificada corretamente é de pelo menos . Portanto, e para ser positivo ,.

Portanto, o código Walsh – Hadamard pode ser decodificado localmente para .

Otimalidade

Para k  ≤ 7, os códigos lineares de Hadamard se mostraram ótimos no sentido de distância mínima.

Veja também

Referências

Leitura adicional