Presentación Práctico 2

Download Report

Transcript Presentación Práctico 2

Slide 1

Práctico 2
Códigos Detectores y Correctores de
Errores


Slide 2

Introducción
• Una comunicación de datos consiste en la
transmisión de una secuencia de caracteres de
algún alfabeto finito A, desde una fuente a un
receptor a través de un canal de comunicación.
• Imperfecciones del canal, provocan que algunos
caracteres transmitidos sean incorrectamente
recibidos por el receptor. Por ello se introduce
redundancia en la información, las cuales permite
detectar, e incluso corregir los errores cuando el
mensaje recibido es descodificado.


Slide 3

Códigos
Sea un alfabeto binario A = {a1, a2, … ,aq}; Cada uno
de los elementos de A se denominan símbolos
del canal o del código.
El emisor compone los mensajes que se desea
enviar a partir de un conjunto finito de símbolos,
S = {s1, s2, … ,sM}, denominado alfabeto fuente, a
cada uno de los elementos si se denomina
símbolo fuente.
La tarea del codificador es transformar o codificar el
mensaje a símbolos del canal.


Slide 4

Códigos
Definición: Un código C para un alfabeto fuente
S y un alfabeto del canal A es una aplicación
inyectiva, C: S Aⁿ. La imagen de la aplicación
C se denomina conjunto de palabras código, y
sus elementos son las palabras código.
Un código sobre el alfabeto A = {0,1} se llama
código binario, si el alfabeto es A = {0,1,2} se
llama código ternario.


Slide 5

Códigos
Ejemplos:
1. El alfabeto fuente está formado por las
cadenas binarias de longitud siete. A cada
símbolo fuente la hacemos corresponder una
palabra binaria de longitud ocho donde los
siete primeros dígitos son los mismos que los
del símbolo fuente y el último es un cero o
un uno de forma que el número total de
dígitos uno en la palabra sea par. Este código
se denomina código control de paridad.


Slide 6

Códigos
Ejemplos:
2. El alfabeto fuente es {0,1} y a cada símbolo
fuente le asociamos la terna que consiste en
repetir dicho símbolo (0 000; 1 111). Este
código se denomina código de triple
repetición.


Slide 7

Código y Palabras del código
• El subconjunto de posibles mensajes transmitidos
se llama código y a los mensajes válidos que lo
forman los llamamos palabras del código o
códigos del vector.
Ejercicio a:
Los símbolos fuente son ternas de ceros y
unos, abc, y se codifican en cadenas binarias de
longitud seis, abcxyz, en la forma siguiente: el
número de unos en abx es par, el número de unos
en acy es par y el número de unos en bcz es par.
¿Cuáles son las palabras del código?


Slide 8

Distancia Hamming
• Es el número de posiciones en las que difieren dos
palabras.
• La distancia Hamming nos dice el número de cambios
necesarios para convertir la palabra código enviada
en la palabra efectivamente recibida.
Sea c una palabra código de longitud n transmitida a
través del canal y sea r la palabra recibida; si d(c,r) = λ,
diremos que se han producido λ errores.
Ejercicio b:
Calcular la distancia;
i- Si se transmite la palabra c=0001 y se recibe la
palabra r=0011.
ii- Si se transmite la palabra c=100110 y se recibe
la palabra r=110100.


Slide 9

Detección y Corrección de Errores
• El criterio para determinar si una palabra recibida
es correcta o no, es simple: si la palabra recibida
pertenece al conjunto de palabras código se
considera que es la palabra enviada “y”, en caso
contrario, que se ha producido un error durante
la transmisión.
• Si el error producido en la transmisión transforma
una palabra código en otra palabra código, el
decodificador supondrá que la palabra recibida es
correcta y el error pasará desapercibido.


Slide 10

Detección y Corrección de Errores
• Se debe establecer un criterio para sustituir las
palabras incorrectas recibidas por palabras código, este
proceso se denomina descodificación. El criterio
utilizado en el proceso de descodificación se denomina
descodificación por distancia mínima.
Consiste:
– Sustituir la palabra recibida r por la palabra código c’,
siendo ésta la palabra código cuya distancia Hamming a la
palabra r sea lo mas pequeña posible.
– Si para alguna palabra r hubiese dos o más palabras código
con la misma distancia:
• Asignar a la palabra r una de las posibles palabras código de forma
arbitraria (descodificación completa).
• No asignarle ninguna y notificar que se ha producido un error no
corregible (descodificación incompleta).


Slide 11

Detección y Corrección de Errores
• Ejercicio c: Utilizando el código de triple
repetición se recibe la palabra r=101 que no
es correcta, ¿cómo se descodifica r?

Además de la longitud y el tamaño de un código
bloque C hay un tercer parámetro de gran
importancia, la distancia mínima, que nos
permite conocer el número de errores que el
código puede detectar o corregir. Se denota
d(C), es la menor de las distancias entre dos
palabras código distintas cualesquiera.


Slide 12

Detección y Corrección de Errores
• Un código bloque C detecta λ errores si, y sólo
si, su distancia mínima es mayor que λ.
• Un código bloque C corrige λ errores si, y sólo
si, su distancia mínima es mayor que 2λ.


Slide 13

Códigos Lineales


Slide 14

Códigos Lineales
Un (n,k) código lineal sobre un alfabeto del
canal, con n≥k, es una aplicación lineal
inyectiva. La imagen de la aplicación C es un
subespacio vectorial de dimensión k,
denominado subespacio código. Sus
elementos se denominan palabras o vectores
códigos.


Slide 15

Codificación en códigos lineales
La Matriz generadora de un (n,k) código lineal C,
G, es la matriz asociada a la aplicación lineal C
respecto a las bases canónicas de ambos
espacios. Es una matriz de n filas y k
columnas, cuyas columnas son las palabras
código correspondientes a los k vectores de la
base canónica.


Slide 16

Codificación en códigos lineales
Ejercicio d: considerando el código lineal
binario C: (Z2)4 → (Z2)7 definido por C(u1, u2,
u3, u4) = (u1 + u3,u1,u2,u2 + u3,u2 + u3 +
u4,u4,u1 + u2 + u4). Determinar los
parámetros del código y calcular su matriz
generadora.


Slide 17

Codificación en códigos lineales
Los códigos lineales utilizan la matriz generadora
para la codificación. De esta manera no es
necesario mantener en memoria todas las
correspondencias entre símbolo fuente y
palabra código, es suficiente tener la matriz
generadora del código.
Si G es dicha matriz y u = (u1,u2,u3,…,uk), es un
símbolo fuente, para calcular la palabra código
correspondiente basta calcular G*utranspuesto .


Slide 18

Codificación en códigos lineales
Ejercicio e: Considerando el (7,4) código lineal
binario C con matriz generadora,
1110
1011
1001
G=
1000
1100
1010
1101
Calcular la palabra código correspondiente al
símbolo fuente u= 1010.


Slide 19

Decodificación en códigos lineales
Estudiaremos a continuación cómo aprovechar la
estructura lineal de los códigos para corregir los
errores producidos en la transmisión.
Para ello introducimos una nueva matriz asociada a
un código lineal, la matriz control de paridad.
• Sea C un (n,k) código lineal. Una matriz H, es
matriz control de paridad para el código C si
H*vлt =(0), para todo vector código v de C.
• La matriz control de paridad nos ayuda a detectar
si una palabra recibida pertenece al código o no.


Slide 20

Decodificación en códigos lineales
Para calcular la matriz control de paridad de un
(n,k) código lineal C con matriz generadora G
podemos seguir el siguiente método:
– Calcular una matriz H de (n-k)x n y rango (n-k) tal que
H*G=(0).
Lo que supone resolver un sistema de k ecuaciones
lineales homogéneas con n incógnitas y tomar (nk) soluciones linealmente independientes.


Slide 21

Decodificación en códigos lineales
Ejercicio f: Calcular una matriz de control de
paridad para el (7,4) código lineal binario C
cuya matriz generadora es G.
1010
1000
0100
G= 0110
0111
0001
1101


Slide 22

Decodificación en códigos lineales
Síndrome: Se define el síndrome de un vector v
como el vector sin(v) = v*Hлt
Un vector v es un vector código si, y sólo si, su
síndrome es el vector cero, en consecuencia el
proceso de detección de errores en los códigos
lineales se simplifica, recibido un vector r se
calcula su síndrome, sin(r); si es nulo, la
transmisión se considera correcta; caso contrario,
se ha producido un error en la transmisión. Se
elimina de esta forma la necesidad de comparar
la palabra recibida con cada una de las palabras
código.


Slide 23

Decodificación en códigos lineales
Síndrome:
– El número de posibles síndromes es p n-k.

– El proceso de descodificación mediante la
tabla de síndrome es el siguiente.
• Recibido el vector r, se calcula su síndrome,
sin(r) = r*Hлt. Si no es nulo, se localiza dicho vector en
la segunda columna de la tabla. Se considera que el
representante a dicho síndrome, es el error cometido.
Se descodifica el vector r como el
vector código c = r+representante.


Slide 24

Decodificación en códigos lineales
Ejercicio g: sea C el código lineal binario de triple
paridad. Una matriz control de paridad H para
C es:
110100
H= 1 0 1 0 1 0
011001
A- obtener la tabla de síndromes.
B- decodificar el vector recibido r= 101000.
C- obtener el vector código transmitido c.


Slide 25

Decodificación en códigos lineales
Ejercicio h: Dada la matriz de control

10100
H= 10010
11001
Mediante lenguaje natural:
I.
Determinar la matriz generatriz G.
II. Determinar el código C.
III. Descodificar las palabras “y” recibidas para determinar las
palabras “x” originales.
y = 0 1 0 1 1; y = 1 0 1 1 0; y = 1 1 1 0 0
IV. Con distancia d=3, calcular el máximo número de errores que el
código puede detectar, y el máximo número de errores que el
código puede corregir.


Slide 26

Códigos Hamming
• Los códigos Hamming son una familia de códigos
lineales correctores de errores simples y con un
sencillo algoritmo de descodificación.
• Un código lineal binario que tenga a H como
matriz control de paridad se denomina código de
Hamming binario, denotado por H(m,2).
• La longitud de un código de Hamming binario
H(m,2) es n = (2 elevado a la m) – 1, su dimensión
es k = (2 elevado a la m) – m – 1.
• Los representantes de la tabla de síndromes son
exactamente los n+1 vectores de peso menor o
igual a 1.


Slide 27

Códigos Hamming
• El código de Hamming H(3,2) es un (7,4)
código lineal binario que tiene por matriz
control de parida la matriz.
0001111
H= 0110011
1010101


Slide 28

Códigos Hamming
Algoritmo de Descodificación:
Recibido un vector r, se calcula su síndrome, sin
(r)= rHt. Si sin(r) = 0, el vector r se considera el
vector código transmitido. Si sin(r)≠0, se
supone que se ha producido un error simple;
sin(r) indica en binario, la posición errónea. Se
corrige el error sin más que modificar el valor
del dígito en dicha posición.


Slide 29

Códigos Hamming
Ejercicio a:
Utilizando el código de Hamming H(3,2).
A- realizar el proceso de descodificación sabiendo
que se ha recibido el vector r=0110001.
B- Corregir el error para obtener el vector código c.


Slide 30

Códigos Hamming
Ejercicio b: Dada la matriz generadora:
|g1| | 1 0 0 0 1 0 1 |
|g2| | 0 1 0 0 1 1 1 |
G = |g3| = | 0 0 1 0 1 1 0 |
|g4| | 0 0 0 1 0 1 1 |

I. Codifique las siguientes palabras: 1101 y 1000.
II. Determinar la matriz de control H.
III. Determinar si la palabra recibida 1101001, es
válida.