SlideShare une entreprise Scribd logo
1  sur  14
Télécharger pour lire hors ligne
UFSM-CTISM



CÓDIGOS DE
HAMMING
              Comunicação de Dados
                    Aula-17
             CÓDIGOS DE HAMMING

                     Professor:
                 Andrei Piccinini Legg



                  Santa Maria, 2012
CÓDIGOS DE HAMMING

             Definição:
CÓDIGOS DE   Um código de Hamming adiciona um bloco de paridade a
HAMMING
             um bloco de dados, de forma a que, caso ocorram erros de
             transmissão, seja possível detectar ou corrigir erros do
             bloco transmitido.

                                 palavra código

                                                       c – no bits transmitidos
                                                       d – no bits de dados
                                                       p – no bits de paridade
                                 dados      paridade



             A implementação do codificador e do decodificador é muito
             simples, como se vai ver em seguida.
Ideia


             De todas as possíveis palavras de código, considerar como
CÓDIGOS DE
             válidas apenas algumas.
HAMMING
             Exemplo: 000,111

                                                            011
                                              001


                          PSfr    101                 111




                                              000           010


                                        100         110




             A distância mínima entre as palavras de código é de 3 bits
             (distância de Hamming).
             Se um bit for corrompido, o receptor detecta uma palavra de
             código inválida e pode recuperar o original escolhendo a
             palavra de código válida mais próxima.
Algebra Linear e Aritmética Modulo 2

             Aritmética modulo 2:
CÓDIGOS DE
             Adição = XOR Produto = AND
HAMMING

             Algebra linear:
             Seja A uma matriz n × m e x um vector de dimensão m.
             null(A), o espaço nulo de A, é o espaço gerado pelos
             vectores x que verificam Ax = 0.
             rank(A) é o no de linhas/colunas linearmente
             independentes. Temos que rank(null(A)) + rank(A) = m.

             Exemplo:
                                          0 1 1
                                   H=
                                          1 0 1
             rank(H) = 2;
             null(H) = 000,111, rank(null(H)) = 1;
             rank(H) + rank(null(H)) = 2 + 1 = 3.
Código de Hamming


             Um código de Hamming (c,d ) é formado da seguinte
CÓDIGOS DE   maneira:
HAMMING
             Constroi-se uma matriz H cujas colunas são formadas por
             todos os vetores não nulos de dimensão p = c − d .
             O código de Hamming consiste no espaço nulo da matriz
             H, i.e., as palavras de código verificam Hc = 0.
             Exemplo:
             Código (3,1) -> 1 bit dados + 2 bits redundância

                                         0 1 1
                                  H=
                                         1 0 1
             O espaço nulo de H é composto pelos vetores [000] e [111]
             (Verifique!)
Detecção de erros


             Como as palavras de código pertencem ao espaço nulo de
CÓDIGOS DE
HAMMING      H, é muito simples verificar se houve erro de transmissão:
             Basta verificar se a palavra recebida r pertence ao espaço
             nulo!
             Se Hr = 0, então r pertence ao espaço nulo → OK!
             Se Hr = 0, então r não pertence a null(H) → ERRO!
             Exemplo:
             Se c = 000 e r = 000, Hr = [00]′ → sem erros
             Se c = 000 e r = 001, Hr = [11]′ → erros detectados
             Se c = 000 e r = 101, Hr = [10]′ → erros detectados
             Se c = 000 e r = 111, Hr = [00]′ → sem erros
             Note que se existirem 3 erros é recebida uma palavra válida
             e não são detectados erros (não há milagres!)
Correção de erros



CÓDIGOS DE
HAMMING      Detecta-se um erro quando Hr = 0. Como se pode saber
             qual o erro que ocorreu?
             Suponhamos que ocorreu um erro na posição i.
             Usando um vector ei = [0 . . . 010 . . . 0] para representar a
             posição onde ocorre o erro, temos que r = c + ei . Então,
             Hr = H(c + ei ) = Hc + Hei = Hei .
             Mas Hei corresponde à i-ésima coluna de H.
             Portanto, calculando Hr e procurando em H, obtemos a
             posição i onde ocorreu o erro. Para o corrigir, basta
             invertê-lo.
Como escolher o número de bits de paridade?

             O número de colunas de H é igual a 2p − 1, que deve ser
             compatível com a dimensão do vector r . Então
CÓDIGOS DE
HAMMING
             d + p = 2p − 1
             Regra de Hamming
                                   d + p + 1 ≤ 2p

             Se a igualdade se verificar, diz-se que é um código
             perfeito.
             Os códigos de Hamming designam-se pelo par (c,d)
             Exemplos:
                               p   d     c   código
                               3   4    7     (7,4)
                               4   11   15   (15,11)
                               5   26   31   (31,26)
Exemplo: Código de Hamming (7,4)

             Palavras de código:
              0000 000 0100 101       1000 011        1100 110
CÓDIGOS DE
HAMMING       0001 111 0101 010       1001 100        1101 001
              0010 110 0110 011       1010 101        1110 000
              0011 001 0111 100       1011 010        1111 111

             Codificação:
             Pesquisar na tabela a palavra de código cujos 4 primeiros
             bits são os dos dados que se pretendem codificar.
             Adicionar a paridade correspondente.


                      1011          1011010            1010010             1011
              Fonte          Cod.             Canal               Decod.

                                                                 Hr = [100]′
Exemplo: Código de Hamming (7,4)

             Palavras de código:
              0000 000 0100 101      1000 011    1100 110
CÓDIGOS DE
HAMMING       0001 111 0101 010      1001 100    1101 001
              0010 110 0110 011      1010 101    1110 000
              0011 001 0111 100      1011 010    1111 111

             Codificação:
             Pesquisar na tabela a palavra de código cujos 4 primeiros
             bits são os dos dados que se pretendem codificar.
             Adicionar a paridade correspondente.


                                             
                                0 0 0 1 1 1 1
                           H = 0 1 1 0 0 1 1 
                                1 0 1 0 1 0 1
Desempenho dos códigos de Hamming


                                            d    2p − p − 1
CÓDIGOS DE   O Taxa de transmissão é: R =     =
HAMMING                                     c      2p − 1
             Aumentando o tamanho das palavras de código, é possível
             fazer R → 1.
             No entanto, a probabilidade de erro na decodificação
             também converge para 1:
             A probabilidade de a decodificação ser correta corresponde a
             haver até um erro numa palavra de comprimento c. Num canal
             binário simétrico com probabilidade de erro pe a probabilidade de
             decodificação correta de um código (c, d), é dada por:

                                (1 − pe )c + cpe (1 − pe )c−1

             cujo limite é zero quando c → ∞.
Desempenho dos códigos de Hamming

             Distância minima de uma código de Hamming
CÓDIGOS DE
             pode ser determinado através da matriz H ou com uma
HAMMING      analise das palavras código.
             Calculando a distância minima através da matriz H:
             A distancia mínima do código será determinada pelo numero
             mínimo de colunas da matriz H que devem ser somadas para se
             obter o vetor nulo.
             Exemplo:                                    
                                    0 0 0 1 1 1 1
                              H= 0 1 1 0 0 1 1 
                                    1 0 1 0 1 0 1
             A distancia mínima para o código cuja matriz H foi dada acima é
             3, porque são necessaria a soma de no mínimo 3 colunas para
             obtermos o vetor nulo.
Desempenho dos códigos de Hamming

             Distância minima de uma código de Hamming
CÓDIGOS DE
             pode ser determinado através da matriz H ou com uma
HAMMING      analise das palavras código.
             Calculando a distância minima através das palavras código:
             A distancia mínima do código será determinada pela menos
             distancia entre duas palavras código lembrando que o vetor nulo
             sempre corresponde a uma palavra código.
                         0000000 0100101 1000011 1100110
                         0001111 0101010 1001100 1101001
             Exemplo:
                         0010110 0110011 1010101 1110000
                         0011001 0111100 1011010 1111111
             Se calcularmos as distâncias entre todas as palavras código o
             menor valor obtido corresponde a distância minima para o
             código. Nesse exemplo igual a 3.
Desempenho dos códigos de Hamming

             capacidade de detecção
             o número de erros que podem ser detectados utilizando um
CÓDIGOS DE
HAMMING      código de Hamming dependerá da distancia minima (dMIN )
             do código utilizado. e o número máximo de erros
             detectados será dado por:

                          dMIN = ed + 1 ⇒ ed = dMIN − 1

             capacidade de correção
             o número de erros que podem ser corrigidos utilizando um
             código de Hamming também dependerá da distancia
             minima (dMIN ) do código utilizado. e o número máximo de
             erros corrigidos será dado por:

                                                  dMIN − 1
                          dMIN = 2ec + 1 ⇒ ec =
                                                     2

Contenu connexe

Tendances

Equações do 2ºgrau, Função Polinomial do 1º e 2º grau, Semelhanças, Segmentos...
Equações do 2ºgrau, Função Polinomial do 1º e 2º grau, Semelhanças, Segmentos...Equações do 2ºgrau, Função Polinomial do 1º e 2º grau, Semelhanças, Segmentos...
Equações do 2ºgrau, Função Polinomial do 1º e 2º grau, Semelhanças, Segmentos...Zaqueu Oliveira
 
Pilhas e Filas.ppt
Pilhas e Filas.pptPilhas e Filas.ppt
Pilhas e Filas.pptJoberthSilva
 
Aula 02 - Tipos de dados, Variáveis, Constantes e Operadores Aritméticos
Aula 02 - Tipos de dados, Variáveis, Constantes e Operadores AritméticosAula 02 - Tipos de dados, Variáveis, Constantes e Operadores Aritméticos
Aula 02 - Tipos de dados, Variáveis, Constantes e Operadores AritméticosMessias Batista
 
Introdução a Linguagem de Programação C
Introdução a Linguagem de Programação CIntrodução a Linguagem de Programação C
Introdução a Linguagem de Programação CGercélia Ramos
 
Arquitetura de Computadores: Assembly
Arquitetura de Computadores: AssemblyArquitetura de Computadores: Assembly
Arquitetura de Computadores: AssemblyElaine Cecília Gatto
 
Vjezba ii (ne)i nvertirajuci
Vjezba ii (ne)i nvertirajuciVjezba ii (ne)i nvertirajuci
Vjezba ii (ne)i nvertirajuciaddmir
 
Funções e suas propriedades analíticas
Funções e suas propriedades analíticasFunções e suas propriedades analíticas
Funções e suas propriedades analíticasCarlos Campani
 
Cabeamento Estruturado
Cabeamento EstruturadoCabeamento Estruturado
Cabeamento EstruturadoAnderson Zardo
 
Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)Ricardo Terra
 
Variáveis, constantes e tipos de dados
Variáveis, constantes e tipos de dadosVariáveis, constantes e tipos de dados
Variáveis, constantes e tipos de dadosBrunoSilvaSantana
 
Algoritmos e lp parte 4-vetores matrizes e registros
Algoritmos e lp parte 4-vetores matrizes e registrosAlgoritmos e lp parte 4-vetores matrizes e registros
Algoritmos e lp parte 4-vetores matrizes e registrosMauro Pereira
 
Aula 2 - transmissão digital: Modulação e Multiplexação
Aula 2 -  transmissão digital: Modulação e MultiplexaçãoAula 2 -  transmissão digital: Modulação e Multiplexação
Aula 2 - transmissão digital: Modulação e MultiplexaçãoLeandro Sausen
 
Aula sobre Condicionais ( if - else ) - Linguagem C
Aula sobre Condicionais ( if - else ) - Linguagem CAula sobre Condicionais ( if - else ) - Linguagem C
Aula sobre Condicionais ( if - else ) - Linguagem Cprofjr
 
Capítulo 10 detecção e correção de erros
Capítulo 10   detecção e correção de errosCapítulo 10   detecção e correção de erros
Capítulo 10 detecção e correção de errosFaculdade Mater Christi
 

Tendances (20)

Equações do 2ºgrau, Função Polinomial do 1º e 2º grau, Semelhanças, Segmentos...
Equações do 2ºgrau, Função Polinomial do 1º e 2º grau, Semelhanças, Segmentos...Equações do 2ºgrau, Função Polinomial do 1º e 2º grau, Semelhanças, Segmentos...
Equações do 2ºgrau, Função Polinomial do 1º e 2º grau, Semelhanças, Segmentos...
 
Árvores de Decisão
Árvores de Decisão Árvores de Decisão
Árvores de Decisão
 
Pilhas e Filas.ppt
Pilhas e Filas.pptPilhas e Filas.ppt
Pilhas e Filas.ppt
 
Integrando Python e JavaScript
Integrando Python e JavaScriptIntegrando Python e JavaScript
Integrando Python e JavaScript
 
Flip Flops Parte 1
Flip Flops Parte 1Flip Flops Parte 1
Flip Flops Parte 1
 
Aula 02 - Tipos de dados, Variáveis, Constantes e Operadores Aritméticos
Aula 02 - Tipos de dados, Variáveis, Constantes e Operadores AritméticosAula 02 - Tipos de dados, Variáveis, Constantes e Operadores Aritméticos
Aula 02 - Tipos de dados, Variáveis, Constantes e Operadores Aritméticos
 
Introdução a Linguagem de Programação C
Introdução a Linguagem de Programação CIntrodução a Linguagem de Programação C
Introdução a Linguagem de Programação C
 
Arquitetura de Computadores: Assembly
Arquitetura de Computadores: AssemblyArquitetura de Computadores: Assembly
Arquitetura de Computadores: Assembly
 
Vjezba ii (ne)i nvertirajuci
Vjezba ii (ne)i nvertirajuciVjezba ii (ne)i nvertirajuci
Vjezba ii (ne)i nvertirajuci
 
Funções e suas propriedades analíticas
Funções e suas propriedades analíticasFunções e suas propriedades analíticas
Funções e suas propriedades analíticas
 
Aes
AesAes
Aes
 
Cabeamento Estruturado
Cabeamento EstruturadoCabeamento Estruturado
Cabeamento Estruturado
 
Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Comunicação de dados
Comunicação de dadosComunicação de dados
Comunicação de dados
 
Variáveis, constantes e tipos de dados
Variáveis, constantes e tipos de dadosVariáveis, constantes e tipos de dados
Variáveis, constantes e tipos de dados
 
Algoritmos e lp parte 4-vetores matrizes e registros
Algoritmos e lp parte 4-vetores matrizes e registrosAlgoritmos e lp parte 4-vetores matrizes e registros
Algoritmos e lp parte 4-vetores matrizes e registros
 
Aula 2 - transmissão digital: Modulação e Multiplexação
Aula 2 -  transmissão digital: Modulação e MultiplexaçãoAula 2 -  transmissão digital: Modulação e Multiplexação
Aula 2 - transmissão digital: Modulação e Multiplexação
 
Aula sobre Condicionais ( if - else ) - Linguagem C
Aula sobre Condicionais ( if - else ) - Linguagem CAula sobre Condicionais ( if - else ) - Linguagem C
Aula sobre Condicionais ( if - else ) - Linguagem C
 
Capítulo 10 detecção e correção de erros
Capítulo 10   detecção e correção de errosCapítulo 10   detecção e correção de erros
Capítulo 10 detecção e correção de erros
 

Similaire à Códigos de hamming

codigos de detecao e correcao de erros_manuela
codigos de detecao e correcao de erros_manuelacodigos de detecao e correcao de erros_manuela
codigos de detecao e correcao de erros_manuelaChristian-life Cl
 
Códigos de Detecção.pptx
Códigos de Detecção.pptxCódigos de Detecção.pptx
Códigos de Detecção.pptxriodurval
 
Códigos Convolucionais (sequenciais)
Códigos Convolucionais (sequenciais)Códigos Convolucionais (sequenciais)
Códigos Convolucionais (sequenciais)Mauro Tapajós
 
Sessão 6 codificadores estatísticos
Sessão 6 codificadores estatísticosSessão 6 codificadores estatísticos
Sessão 6 codificadores estatísticosPedro De Almeida
 
Sistema Hexadecimal de numeração
Sistema Hexadecimal de numeraçãoSistema Hexadecimal de numeração
Sistema Hexadecimal de numeraçãoFábio dos Reis
 
Aula 11- Algoritmos e Programação.pptx
Aula 11- Algoritmos e Programação.pptxAula 11- Algoritmos e Programação.pptx
Aula 11- Algoritmos e Programação.pptxLemosManuel
 
Sessao 9 Capacidade de canal e Introdução a Codificação de canal
Sessao 9 Capacidade de canal e Introdução a Codificação de canalSessao 9 Capacidade de canal e Introdução a Codificação de canal
Sessao 9 Capacidade de canal e Introdução a Codificação de canalPedro De Almeida
 
FORTRAN 90 - Representacao numeroscomputador
FORTRAN 90 - Representacao numeroscomputadorFORTRAN 90 - Representacao numeroscomputador
FORTRAN 90 - Representacao numeroscomputadorDafmet Ufpel
 
Sessao 5 Redundância e introdução à codificação de fonte
Sessao 5 Redundância e introdução à codificação de fonteSessao 5 Redundância e introdução à codificação de fonte
Sessao 5 Redundância e introdução à codificação de fontePedro De Almeida
 

Similaire à Códigos de hamming (12)

Tk codigos erros_manuela
Tk codigos erros_manuelaTk codigos erros_manuela
Tk codigos erros_manuela
 
codigos de detecao e correcao de erros_manuela
codigos de detecao e correcao de erros_manuelacodigos de detecao e correcao de erros_manuela
codigos de detecao e correcao de erros_manuela
 
Códigos de Detecção.pptx
Códigos de Detecção.pptxCódigos de Detecção.pptx
Códigos de Detecção.pptx
 
Códigos Convolucionais (sequenciais)
Códigos Convolucionais (sequenciais)Códigos Convolucionais (sequenciais)
Códigos Convolucionais (sequenciais)
 
APDS- Apresentaçao.pptx
APDS- Apresentaçao.pptxAPDS- Apresentaçao.pptx
APDS- Apresentaçao.pptx
 
Sessão 6 codificadores estatísticos
Sessão 6 codificadores estatísticosSessão 6 codificadores estatísticos
Sessão 6 codificadores estatísticos
 
Sistema Hexadecimal de numeração
Sistema Hexadecimal de numeraçãoSistema Hexadecimal de numeração
Sistema Hexadecimal de numeração
 
Aula 11- Algoritmos e Programação.pptx
Aula 11- Algoritmos e Programação.pptxAula 11- Algoritmos e Programação.pptx
Aula 11- Algoritmos e Programação.pptx
 
Sessao 9 Capacidade de canal e Introdução a Codificação de canal
Sessao 9 Capacidade de canal e Introdução a Codificação de canalSessao 9 Capacidade de canal e Introdução a Codificação de canal
Sessao 9 Capacidade de canal e Introdução a Codificação de canal
 
FORTRAN 90 - Representacao numeroscomputador
FORTRAN 90 - Representacao numeroscomputadorFORTRAN 90 - Representacao numeroscomputador
FORTRAN 90 - Representacao numeroscomputador
 
Sessao 5 Redundância e introdução à codificação de fonte
Sessao 5 Redundância e introdução à codificação de fonteSessao 5 Redundância e introdução à codificação de fonte
Sessao 5 Redundância e introdução à codificação de fonte
 
03 bases numericas
03   bases numericas03   bases numericas
03 bases numericas
 

Plus de PAULO Moreira

5 estruturas de controle
5 estruturas de controle5 estruturas de controle
5 estruturas de controlePAULO Moreira
 
3.2 introdução a linguagem java
3.2 introdução a linguagem java3.2 introdução a linguagem java
3.2 introdução a linguagem javaPAULO Moreira
 
3.1 introdução a linguagem java
3.1 introdução a linguagem java3.1 introdução a linguagem java
3.1 introdução a linguagem javaPAULO Moreira
 
2.1 introdução a oo
2.1 introdução a oo2.1 introdução a oo
2.1 introdução a ooPAULO Moreira
 
Classe integer-float-byte-short-long-double
Classe integer-float-byte-short-long-doubleClasse integer-float-byte-short-long-double
Classe integer-float-byte-short-long-doublePAULO Moreira
 
Trabalho de empreendedorismo
Trabalho de empreendedorismoTrabalho de empreendedorismo
Trabalho de empreendedorismoPAULO Moreira
 
Seminário de empreendedorismo
Seminário de empreendedorismoSeminário de empreendedorismo
Seminário de empreendedorismoPAULO Moreira
 
5. as regras de ouro do bilionário carlos slim
5. as regras de ouro do bilionário carlos slim5. as regras de ouro do bilionário carlos slim
5. as regras de ouro do bilionário carlos slimPAULO Moreira
 
8. marca cria cerveja e refrigerante solúvel para praticantes de esportes ao ...
8. marca cria cerveja e refrigerante solúvel para praticantes de esportes ao ...8. marca cria cerveja e refrigerante solúvel para praticantes de esportes ao ...
8. marca cria cerveja e refrigerante solúvel para praticantes de esportes ao ...PAULO Moreira
 
Interrupções e interconexões
Interrupções e interconexõesInterrupções e interconexões
Interrupções e interconexõesPAULO Moreira
 

Plus de PAULO Moreira (20)

Metodos
MetodosMetodos
Metodos
 
5 estruturas de controle
5 estruturas de controle5 estruturas de controle
5 estruturas de controle
 
3.2 introdução a linguagem java
3.2 introdução a linguagem java3.2 introdução a linguagem java
3.2 introdução a linguagem java
 
3.1 introdução a linguagem java
3.1 introdução a linguagem java3.1 introdução a linguagem java
3.1 introdução a linguagem java
 
2.1 introdução a oo
2.1 introdução a oo2.1 introdução a oo
2.1 introdução a oo
 
1. apresentação
1. apresentação1. apresentação
1. apresentação
 
String
StringString
String
 
Showinputdialog
ShowinputdialogShowinputdialog
Showinputdialog
 
Math
MathMath
Math
 
Joptionpane
JoptionpaneJoptionpane
Joptionpane
 
Classe integer-float-byte-short-long-double
Classe integer-float-byte-short-long-doubleClasse integer-float-byte-short-long-double
Classe integer-float-byte-short-long-double
 
Negociação
NegociaçãoNegociação
Negociação
 
Trabalho de empreendedorismo
Trabalho de empreendedorismoTrabalho de empreendedorismo
Trabalho de empreendedorismo
 
Seminário de empreendedorismo
Seminário de empreendedorismoSeminário de empreendedorismo
Seminário de empreendedorismo
 
7. ecologia
7. ecologia7. ecologia
7. ecologia
 
6. conjuntura
6. conjuntura6. conjuntura
6. conjuntura
 
5. as regras de ouro do bilionário carlos slim
5. as regras de ouro do bilionário carlos slim5. as regras de ouro do bilionário carlos slim
5. as regras de ouro do bilionário carlos slim
 
8. marca cria cerveja e refrigerante solúvel para praticantes de esportes ao ...
8. marca cria cerveja e refrigerante solúvel para praticantes de esportes ao ...8. marca cria cerveja e refrigerante solúvel para praticantes de esportes ao ...
8. marca cria cerveja e refrigerante solúvel para praticantes de esportes ao ...
 
Empreendedorismo
EmpreendedorismoEmpreendedorismo
Empreendedorismo
 
Interrupções e interconexões
Interrupções e interconexõesInterrupções e interconexões
Interrupções e interconexões
 

Códigos de hamming

  • 1. UFSM-CTISM CÓDIGOS DE HAMMING Comunicação de Dados Aula-17 CÓDIGOS DE HAMMING Professor: Andrei Piccinini Legg Santa Maria, 2012
  • 2. CÓDIGOS DE HAMMING Definição: CÓDIGOS DE Um código de Hamming adiciona um bloco de paridade a HAMMING um bloco de dados, de forma a que, caso ocorram erros de transmissão, seja possível detectar ou corrigir erros do bloco transmitido. palavra código c – no bits transmitidos d – no bits de dados p – no bits de paridade dados paridade A implementação do codificador e do decodificador é muito simples, como se vai ver em seguida.
  • 3. Ideia De todas as possíveis palavras de código, considerar como CÓDIGOS DE válidas apenas algumas. HAMMING Exemplo: 000,111 011 001 PSfr 101 111 000 010 100 110 A distância mínima entre as palavras de código é de 3 bits (distância de Hamming). Se um bit for corrompido, o receptor detecta uma palavra de código inválida e pode recuperar o original escolhendo a palavra de código válida mais próxima.
  • 4. Algebra Linear e Aritmética Modulo 2 Aritmética modulo 2: CÓDIGOS DE Adição = XOR Produto = AND HAMMING Algebra linear: Seja A uma matriz n × m e x um vector de dimensão m. null(A), o espaço nulo de A, é o espaço gerado pelos vectores x que verificam Ax = 0. rank(A) é o no de linhas/colunas linearmente independentes. Temos que rank(null(A)) + rank(A) = m. Exemplo: 0 1 1 H= 1 0 1 rank(H) = 2; null(H) = 000,111, rank(null(H)) = 1; rank(H) + rank(null(H)) = 2 + 1 = 3.
  • 5. Código de Hamming Um código de Hamming (c,d ) é formado da seguinte CÓDIGOS DE maneira: HAMMING Constroi-se uma matriz H cujas colunas são formadas por todos os vetores não nulos de dimensão p = c − d . O código de Hamming consiste no espaço nulo da matriz H, i.e., as palavras de código verificam Hc = 0. Exemplo: Código (3,1) -> 1 bit dados + 2 bits redundância 0 1 1 H= 1 0 1 O espaço nulo de H é composto pelos vetores [000] e [111] (Verifique!)
  • 6. Detecção de erros Como as palavras de código pertencem ao espaço nulo de CÓDIGOS DE HAMMING H, é muito simples verificar se houve erro de transmissão: Basta verificar se a palavra recebida r pertence ao espaço nulo! Se Hr = 0, então r pertence ao espaço nulo → OK! Se Hr = 0, então r não pertence a null(H) → ERRO! Exemplo: Se c = 000 e r = 000, Hr = [00]′ → sem erros Se c = 000 e r = 001, Hr = [11]′ → erros detectados Se c = 000 e r = 101, Hr = [10]′ → erros detectados Se c = 000 e r = 111, Hr = [00]′ → sem erros Note que se existirem 3 erros é recebida uma palavra válida e não são detectados erros (não há milagres!)
  • 7. Correção de erros CÓDIGOS DE HAMMING Detecta-se um erro quando Hr = 0. Como se pode saber qual o erro que ocorreu? Suponhamos que ocorreu um erro na posição i. Usando um vector ei = [0 . . . 010 . . . 0] para representar a posição onde ocorre o erro, temos que r = c + ei . Então, Hr = H(c + ei ) = Hc + Hei = Hei . Mas Hei corresponde à i-ésima coluna de H. Portanto, calculando Hr e procurando em H, obtemos a posição i onde ocorreu o erro. Para o corrigir, basta invertê-lo.
  • 8. Como escolher o número de bits de paridade? O número de colunas de H é igual a 2p − 1, que deve ser compatível com a dimensão do vector r . Então CÓDIGOS DE HAMMING d + p = 2p − 1 Regra de Hamming d + p + 1 ≤ 2p Se a igualdade se verificar, diz-se que é um código perfeito. Os códigos de Hamming designam-se pelo par (c,d) Exemplos: p d c código 3 4 7 (7,4) 4 11 15 (15,11) 5 26 31 (31,26)
  • 9. Exemplo: Código de Hamming (7,4) Palavras de código: 0000 000 0100 101 1000 011 1100 110 CÓDIGOS DE HAMMING 0001 111 0101 010 1001 100 1101 001 0010 110 0110 011 1010 101 1110 000 0011 001 0111 100 1011 010 1111 111 Codificação: Pesquisar na tabela a palavra de código cujos 4 primeiros bits são os dos dados que se pretendem codificar. Adicionar a paridade correspondente. 1011 1011010 1010010 1011 Fonte Cod. Canal Decod. Hr = [100]′
  • 10. Exemplo: Código de Hamming (7,4) Palavras de código: 0000 000 0100 101 1000 011 1100 110 CÓDIGOS DE HAMMING 0001 111 0101 010 1001 100 1101 001 0010 110 0110 011 1010 101 1110 000 0011 001 0111 100 1011 010 1111 111 Codificação: Pesquisar na tabela a palavra de código cujos 4 primeiros bits são os dos dados que se pretendem codificar. Adicionar a paridade correspondente.   0 0 0 1 1 1 1 H = 0 1 1 0 0 1 1  1 0 1 0 1 0 1
  • 11. Desempenho dos códigos de Hamming d 2p − p − 1 CÓDIGOS DE O Taxa de transmissão é: R = = HAMMING c 2p − 1 Aumentando o tamanho das palavras de código, é possível fazer R → 1. No entanto, a probabilidade de erro na decodificação também converge para 1: A probabilidade de a decodificação ser correta corresponde a haver até um erro numa palavra de comprimento c. Num canal binário simétrico com probabilidade de erro pe a probabilidade de decodificação correta de um código (c, d), é dada por: (1 − pe )c + cpe (1 − pe )c−1 cujo limite é zero quando c → ∞.
  • 12. Desempenho dos códigos de Hamming Distância minima de uma código de Hamming CÓDIGOS DE pode ser determinado através da matriz H ou com uma HAMMING analise das palavras código. Calculando a distância minima através da matriz H: A distancia mínima do código será determinada pelo numero mínimo de colunas da matriz H que devem ser somadas para se obter o vetor nulo. Exemplo:   0 0 0 1 1 1 1 H= 0 1 1 0 0 1 1  1 0 1 0 1 0 1 A distancia mínima para o código cuja matriz H foi dada acima é 3, porque são necessaria a soma de no mínimo 3 colunas para obtermos o vetor nulo.
  • 13. Desempenho dos códigos de Hamming Distância minima de uma código de Hamming CÓDIGOS DE pode ser determinado através da matriz H ou com uma HAMMING analise das palavras código. Calculando a distância minima através das palavras código: A distancia mínima do código será determinada pela menos distancia entre duas palavras código lembrando que o vetor nulo sempre corresponde a uma palavra código. 0000000 0100101 1000011 1100110 0001111 0101010 1001100 1101001 Exemplo: 0010110 0110011 1010101 1110000 0011001 0111100 1011010 1111111 Se calcularmos as distâncias entre todas as palavras código o menor valor obtido corresponde a distância minima para o código. Nesse exemplo igual a 3.
  • 14. Desempenho dos códigos de Hamming capacidade de detecção o número de erros que podem ser detectados utilizando um CÓDIGOS DE HAMMING código de Hamming dependerá da distancia minima (dMIN ) do código utilizado. e o número máximo de erros detectados será dado por: dMIN = ed + 1 ⇒ ed = dMIN − 1 capacidade de correção o número de erros que podem ser corrigidos utilizando um código de Hamming também dependerá da distancia minima (dMIN ) do código utilizado. e o número máximo de erros corrigidos será dado por: dMIN − 1 dMIN = 2ec + 1 ⇒ ec = 2