SlideShare a Scribd company logo
1 of 14
Download to read offline
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

More Related Content

What's hot

Discos e sistemas de arquivos em Linux
Discos e sistemas de arquivos em LinuxDiscos e sistemas de arquivos em Linux
Discos e sistemas de arquivos em LinuxFábio dos Reis
 
Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...
Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...
Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...Leinylson Fontinele
 
Exercícios Resolvidos: Área entre curvas
Exercícios Resolvidos: Área entre curvasExercícios Resolvidos: Área entre curvas
Exercícios Resolvidos: Área entre curvasDiego Oliveira
 
Introdução à Aprendizagem de Máquina
Introdução à Aprendizagem de MáquinaIntrodução à Aprendizagem de Máquina
Introdução à Aprendizagem de MáquinaFernando Palma
 
Número de nepper
Número de nepper Número de nepper
Número de nepper Joana Santos
 
Função Quadrática
Função QuadráticaFunção Quadrática
Função QuadráticaAab2507
 
Lógica e Matemática Computacional - Exercícios 03
Lógica e Matemática Computacional - Exercícios 03Lógica e Matemática Computacional - Exercícios 03
Lógica e Matemática Computacional - Exercícios 03thomasdacosta
 
Análise combinatória
Análise combinatóriaAnálise combinatória
Análise combinatóriabetencourt
 
Matemática básica radiciação equações
Matemática básica radiciação equaçõesMatemática básica radiciação equações
Matemática básica radiciação equaçõesAlessandro Lisboa
 
Análise Combinatória
Análise CombinatóriaAnálise Combinatória
Análise CombinatóriaNanda Freitas
 
Capítulo 1 introdução a comunicação de dados(1º unidade)
Capítulo 1   introdução a comunicação de dados(1º unidade)Capítulo 1   introdução a comunicação de dados(1º unidade)
Capítulo 1 introdução a comunicação de dados(1º unidade)Faculdade Mater Christi
 
Elementos de Matemática Básica - Equações e Inequações
Elementos de Matemática Básica - Equações e InequaçõesElementos de Matemática Básica - Equações e Inequações
Elementos de Matemática Básica - Equações e InequaçõesMilton Henrique do Couto Neto
 
Progressão aritmética e geométrica
Progressão aritmética e geométricaProgressão aritmética e geométrica
Progressão aritmética e geométricaGeisla Maia Gomes
 
Capítulo 6 e 8 comutação e multiplexação (3º unidade)
Capítulo 6 e 8   comutação e multiplexação (3º unidade)Capítulo 6 e 8   comutação e multiplexação (3º unidade)
Capítulo 6 e 8 comutação e multiplexação (3º unidade)Faculdade Mater Christi
 
SISTEMAS digitais SISTEMAS DE NUMERAÇÃO
SISTEMAS digitais SISTEMAS DE NUMERAÇÃOSISTEMAS digitais SISTEMAS DE NUMERAÇÃO
SISTEMAS digitais SISTEMAS DE NUMERAÇÃOCarlos Pereira
 
Capítulo 5 e 4 transmissão analógica e digital (2º unidade)
Capítulo 5 e 4   transmissão analógica e digital (2º unidade)Capítulo 5 e 4   transmissão analógica e digital (2º unidade)
Capítulo 5 e 4 transmissão analógica e digital (2º unidade)Faculdade Mater Christi
 
Equações do 1º grau ppt
Equações do 1º grau pptEquações do 1º grau ppt
Equações do 1º grau pptktorz
 

What's hot (20)

Aula inequacoes
Aula inequacoesAula inequacoes
Aula inequacoes
 
Discos e sistemas de arquivos em Linux
Discos e sistemas de arquivos em LinuxDiscos e sistemas de arquivos em Linux
Discos e sistemas de arquivos em Linux
 
Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...
Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...
Banco de Dados II Aula 05 - Modelagem de Dados (Normalização de dados e as fo...
 
Exercícios Resolvidos: Área entre curvas
Exercícios Resolvidos: Área entre curvasExercícios Resolvidos: Área entre curvas
Exercícios Resolvidos: Área entre curvas
 
Introdução à Aprendizagem de Máquina
Introdução à Aprendizagem de MáquinaIntrodução à Aprendizagem de Máquina
Introdução à Aprendizagem de Máquina
 
Recursividade
RecursividadeRecursividade
Recursividade
 
Número de nepper
Número de nepper Número de nepper
Número de nepper
 
Função Quadrática
Função QuadráticaFunção Quadrática
Função Quadrática
 
Lógica e Matemática Computacional - Exercícios 03
Lógica e Matemática Computacional - Exercícios 03Lógica e Matemática Computacional - Exercícios 03
Lógica e Matemática Computacional - Exercícios 03
 
Análise combinatória
Análise combinatóriaAnálise combinatória
Análise combinatória
 
Matemática básica radiciação equações
Matemática básica radiciação equaçõesMatemática básica radiciação equações
Matemática básica radiciação equações
 
Análise Combinatória
Análise CombinatóriaAnálise Combinatória
Análise Combinatória
 
Capítulo 1 introdução a comunicação de dados(1º unidade)
Capítulo 1   introdução a comunicação de dados(1º unidade)Capítulo 1   introdução a comunicação de dados(1º unidade)
Capítulo 1 introdução a comunicação de dados(1º unidade)
 
Elementos de Matemática Básica - Equações e Inequações
Elementos de Matemática Básica - Equações e InequaçõesElementos de Matemática Básica - Equações e Inequações
Elementos de Matemática Básica - Equações e Inequações
 
Progressão aritmética e geométrica
Progressão aritmética e geométricaProgressão aritmética e geométrica
Progressão aritmética e geométrica
 
Capítulo 6 e 8 comutação e multiplexação (3º unidade)
Capítulo 6 e 8   comutação e multiplexação (3º unidade)Capítulo 6 e 8   comutação e multiplexação (3º unidade)
Capítulo 6 e 8 comutação e multiplexação (3º unidade)
 
Funções
FunçõesFunções
Funções
 
SISTEMAS digitais SISTEMAS DE NUMERAÇÃO
SISTEMAS digitais SISTEMAS DE NUMERAÇÃOSISTEMAS digitais SISTEMAS DE NUMERAÇÃO
SISTEMAS digitais SISTEMAS DE NUMERAÇÃO
 
Capítulo 5 e 4 transmissão analógica e digital (2º unidade)
Capítulo 5 e 4   transmissão analógica e digital (2º unidade)Capítulo 5 e 4   transmissão analógica e digital (2º unidade)
Capítulo 5 e 4 transmissão analógica e digital (2º unidade)
 
Equações do 1º grau ppt
Equações do 1º grau pptEquações do 1º grau ppt
Equações do 1º grau ppt
 

Similar to 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
 

Similar to 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
 

More from 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
 

More from 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