fbpx
Wikipedia

Detección y corrección de errores

En matemáticas, informática y teoría de la información, la detección y corrección de errores es una importante práctica para el mantenimiento e integridad de los datos a través de diferentes procedimientos y dispositivos como medios de almacenamiento confiables.[1]​Se considera como precursor de este tipo de tecnologías el Acme Comodity and Phrase Code usado en los telegramas

Para limpiar los errores de transmisión introducidos por la atmósfera de la Tierra (izquierda), los científicos de Goddard aplicaron la corrección de errores Reed-Solomon (derecha), que se usa comúnmente en CD y DVD. Los errores típicos incluyen píxeles faltantes (blanco) y señales falsas (negro). La franja blanca indica un breve período en el que se pausó la transmisión.

Introducción

La comunicación entre varias computadoras produce continuamente un movimiento de datos, generalmente por canales no diseñados para este propósito (línea telefónica), y que introducen un ruido externo que produce errores en la transmisión.

Por lo tanto, debemos asegurarnos que si dicho movimiento causa errores, éstos puedan ser detectados. El método para detectar y corregir errores es incluir en los bloques de datos transmitidos bits adicionales denominados redundancia.

Se han desarrollado dos estrategias básicas para manejar los errores:

  • Incluir suficiente información redundante en cada bloque de datos para que se puedan detectar y corregir los bits erróneos. Se utilizan códigos de corrección de errores.
  • Incluir sólo la información redundante necesaria en cada bloque de datos para detectar los errores. En este caso el número de bits de redundancia es menor. Se utilizan códigos de detección de errores.

Si consideramos un bloque de datos formado por m bits de datos y r de redundancia, la longitud final del bloque será n, donde n = m + r.

Tipo de códigos detectores

Paridad simple (paridad horizontal)

Consiste en añadir un bit de más a la cadena que queremos enviar, y que nos indicará si el número de unos (bits puestos a 1) es par o es impar. Si es par incluiremos este bit con el valor = 0, y si no es así, lo incluiremos con valor = 1.

Ejemplo de generación de un bit de paridad simple: Queremos enviar la cadena “1110100”: 1º Contamos la cantidad de unos que hay: 4 unos 2º El número de unos es par por tanto añadimos un bit con valor = 0 3º La cadena enviada es 11101000 

El receptor ahora, repite la operación de contar la cantidad de “unos” que hay (menos el último bit) y si coincide, es que no ha habido error.

Problemas de este método:

Hay una alta probabilidad de que se cuelen casos en los que ha habido error, y que el error no sea detectado, como ocurre si se cambian dos números en la transmisión en vez de uno.

Un ejemplo de polinomio generador usado normalmente en las redes WAN es:  

Los cálculos que realiza el equipo transmisor para calcular su CRC (Ciclic redundancy Check) son:

  1. Añade tantos ceros por la derecha al mensaje original como el grado del polinomio generador
  2. Divide el mensaje con los ceros incluidos entre el polinomio generador
  3. El resto que se obtiene de la división se suma al mensaje con los ceros incluidos
  4. Se envía el resultado obtenido

Estas operaciones generalmente son incorporadas en el hardware para que pueda ser calculado con mayor rapidez, pero en la teoría se utilizan los polinomios para facilitar los cálculos.

Ejemplo de obtención del CRC: Datos: Mensaje codificado en binario: 1101001 Polinomio generador:   Operaciones: 1º Obtener el polinomio equivalente al mensaje:   2º Multiplicar el mensaje por   (añadir 4 ceros por la derecha):   3º Dividir en binario el mensaje por el polinomio generador y sacar el resto:   4º Concatenar el mensaje con el resto (en módulo 2 también):   5º Transmitir el mensaje 

El equipo receptor debe comprobar el código CRC para detectar si se han producido o no errores.

Ejemplo de los cálculos del receptor: 1º Mediante el protocolo correspondiente acuerdan el polinomio generador 2º Divide el código recibido entre el polinomio generador 3º Comprueba el resto de dicha operación 3.1 Si el resto es cero, no se han producido errores 3.2 Procesar el mensaje 3.1 Si el resto es distinto de cero, significa que se han producido errores 3.2 Reenviar el mensaje 3.2 Intentar corregir los errores mediante los códigos correctores 

En resumen, este método requiere de un polinomio generador que, elegido correctamente, puede llegar a detectar gran cantidad de errores:

  • Errores simples: todos
  • Errores dobles: todos
  • Errores en las posiciones impares de los bits: todos
  • Errores en ráfagas con una longitud menor que el grado del polinomio generador: todos
  • Otras ráfagas: un porcentaje elevado y cercano al 100%

Suma de comprobación

Es un método sencillo pero eficiente sólo con cadenas de palabras de una longitud pequeña, es por esto que se suele utilizar en cabeceras de tramas importantes u otras cadenas importantes y en combinación con otros métodos.

Funcionalidad: consiste en agrupar el mensaje a transmitir en cadenas de una longitud determinada L no muy grande, de por ejemplo 16 bits. Considerando a cada cadena como un número entero numerado según el sistema de numeración  . A continuación se suma el valor de todas las palabras en las que se divide el mensaje, y se añade el resultado al mensaje a transmitir, pero cambiado de signo.

Con esto, el receptor lo único que tiene que hacer es sumar todas las cadenas, y si el resultado es 0 no hay errores.

Ejemplo: Mensaje 101001110101 1º Acordar la longitud de cada cadena: 3 2º Acordar el sistema de numeración:   3º Dividir el mensaje: 101 001 110 101 4º Asociar cada cadena con un entero: 5 1 6 5 5º Sumar todos los valores y añadir el número cambiado de signo: -17 6º Enviar 5 1 6 5 -17 codificado en binario 
El receptor: 1º Suma todos los valores; si la suma es 0, procesa el mensaje; si no, se ha producido un error. 

Este método al ser más sencillo es óptimo para ser implementado en software ya que se puede alcanzar velocidades de cálculo similares a la implementación en hardware

Distancia de Hamming basada en comprobación

 
Hipercubo binario de dimensión cuatro.

Si queremos detectar d bit erróneos en una palabra de n bits, podemos añadir a cada palabra de n bits d+1 bits predeterminados al final, de forma que quede una palabra de n+d+1 bits con una distancia mínima de Hamming de d+1. De esta manera, si uno recibe una palabra de n+d+1 bits que no encaja con ninguna palabra del código (con una distancia de Hamming x <= d+1 la palabra no pertenece al código) detecta correctamente si es una palabra errónea. Aún más, d o menos errores nunca se convertirán en una palabra válida debido a que la distancia de Hamming entre cada palabra válida es de al menos d+1, y tales errores conducen solamente a las palabras inválidas que se detectan correctamente. Dado un conjunto de m*n bits, podemos detectar x <= d bits errores correctamente usando el mismo método en todas las palabras de n bits. De hecho, podemos detectar un máximo de m*d errores si todas las palabras de n bits son transmitidas con un máximo de d errores.

Ejemplo

Palabras a enviar:

  1. 000001
  2. 000001
  3. 000010

Codificadas con distancia mínima de Hamming = 2

000001 0000
000001 0011
000010 1100

Si las palabras recibidas tienen una distancia de Hamming < 2, son palabras incorrectas.

Lista de los métodos de corrección y detección de errores

Véase también

Referencias

  1. G. J. Simmons, "A survey of Information Authentication". Contemporary Cryptology, The science of information integrity, ed. GJ Simmons, IEEE Press, New York, (1992)

Enlaces externos

  • Otros códigos utilizados
  •   Datos: Q1062839

detección, corrección, errores, matemáticas, informática, teoría, información, detección, corrección, errores, importante, práctica, para, mantenimiento, integridad, datos, través, diferentes, procedimientos, dispositivos, como, medios, almacenamiento, confiab. En matematicas informatica y teoria de la informacion la deteccion y correccion de errores es una importante practica para el mantenimiento e integridad de los datos a traves de diferentes procedimientos y dispositivos como medios de almacenamiento confiables 1 Se considera como precursor de este tipo de tecnologias el Acme Comodity and Phrase Code usado en los telegramasPara limpiar los errores de transmision introducidos por la atmosfera de la Tierra izquierda los cientificos de Goddard aplicaron la correccion de errores Reed Solomon derecha que se usa comunmente en CD y DVD Los errores tipicos incluyen pixeles faltantes blanco y senales falsas negro La franja blanca indica un breve periodo en el que se pauso la transmision Indice 1 Introduccion 2 Tipo de codigos detectores 2 1 Paridad simple paridad horizontal 2 2 Suma de comprobacion 2 3 Distancia de Hamming basada en comprobacion 2 3 1 Codificadas con distancia minima de Hamming 2 3 Lista de los metodos de correccion y deteccion de errores 4 Vease tambien 5 Referencias 6 Enlaces externosIntroduccion EditarLa comunicacion entre varias computadoras produce continuamente un movimiento de datos generalmente por canales no disenados para este proposito linea telefonica y que introducen un ruido externo que produce errores en la transmision Por lo tanto debemos asegurarnos que si dicho movimiento causa errores estos puedan ser detectados El metodo para detectar y corregir errores es incluir en los bloques de datos transmitidos bits adicionales denominados redundancia Se han desarrollado dos estrategias basicas para manejar los errores Incluir suficiente informacion redundante en cada bloque de datos para que se puedan detectar y corregir los bits erroneos Se utilizan codigos de correccion de errores Incluir solo la informacion redundante necesaria en cada bloque de datos para detectar los errores En este caso el numero de bits de redundancia es menor Se utilizan codigos de deteccion de errores Si consideramos un bloque de datos formado por m bits de datos y r de redundancia la longitud final del bloque sera n donde n m r Tipo de codigos detectores EditarParidad simple paridad horizontal Editar Consiste en anadir un bit de mas a la cadena que queremos enviar y que nos indicara si el numero de unos bits puestos a 1 es par o es impar Si es par incluiremos este bit con el valor 0 y si no es asi lo incluiremos con valor 1 Ejemplo de generacion de un bit de paridad simple Queremos enviar la cadena 1110100 1º Contamos la cantidad de unos que hay 4 unos 2º El numero de unos es par por tanto anadimos un bit con valor 0 3º La cadena enviada es 11101000 El receptor ahora repite la operacion de contar la cantidad de unos que hay menos el ultimo bit y si coincide es que no ha habido error Problemas de este metodo Hay una alta probabilidad de que se cuelen casos en los que ha habido error y que el error no sea detectado como ocurre si se cambian dos numeros en la transmision en vez de uno Un ejemplo de polinomio generador usado normalmente en las redes WAN es g x x 16 x 12 x 5 1 displaystyle g x x 16 x 12 x 5 1 Los calculos que realiza el equipo transmisor para calcular su CRC Ciclic redundancy Check son Anade tantos ceros por la derecha al mensaje original como el grado del polinomio generador Divide el mensaje con los ceros incluidos entre el polinomio generador El resto que se obtiene de la division se suma al mensaje con los ceros incluidos Se envia el resultado obtenidoEstas operaciones generalmente son incorporadas en el hardware para que pueda ser calculado con mayor rapidez pero en la teoria se utilizan los polinomios para facilitar los calculos Ejemplo de obtencion del CRC Datos Mensaje codificado en binario 1101001 Polinomio generador x 4 x 1 displaystyle x 4 x 1 Operaciones 1º Obtener el polinomio equivalente al mensaje x 6 x 5 x 3 1 displaystyle x 6 x 5 x 3 1 2º Multiplicar el mensaje por x 4 displaystyle x 4 anadir 4 ceros por la derecha x 10 x 9 x 7 x 4 displaystyle x 10 x 9 x 7 x 4 3º Dividir en binario el mensaje por el polinomio generador y sacar el resto x 2 1 displaystyle x 2 1 4º Concatenar el mensaje con el resto en modulo 2 tambien x 10 x 9 x 7 x 4 x 2 1 displaystyle x 10 x 9 x 7 x 4 x 2 1 5º Transmitir el mensaje El equipo receptor debe comprobar el codigo CRC para detectar si se han producido o no errores Ejemplo de los calculos del receptor 1º Mediante el protocolo correspondiente acuerdan el polinomio generador 2º Divide el codigo recibido entre el polinomio generador 3º Comprueba el resto de dicha operacion 3 1 Si el resto es cero no se han producido errores 3 2 Procesar el mensaje 3 1 Si el resto es distinto de cero significa que se han producido errores 3 2 Reenviar el mensaje 3 2 Intentar corregir los errores mediante los codigos correctores En resumen este metodo requiere de un polinomio generador que elegido correctamente puede llegar a detectar gran cantidad de errores Errores simples todos Errores dobles todos Errores en las posiciones impares de los bits todos Errores en rafagas con una longitud menor que el grado del polinomio generador todos Otras rafagas un porcentaje elevado y cercano al 100 Suma de comprobacion Editar Articulo principal Suma de verificacion Es un metodo sencillo pero eficiente solo con cadenas de palabras de una longitud pequena es por esto que se suele utilizar en cabeceras de tramas importantes u otras cadenas importantes y en combinacion con otros metodos Funcionalidad consiste en agrupar el mensaje a transmitir en cadenas de una longitud determinada L no muy grande de por ejemplo 16 bits Considerando a cada cadena como un numero entero numerado segun el sistema de numeracion 2 L 1 displaystyle 2 L 1 A continuacion se suma el valor de todas las palabras en las que se divide el mensaje y se anade el resultado al mensaje a transmitir pero cambiado de signo Con esto el receptor lo unico que tiene que hacer es sumar todas las cadenas y si el resultado es 0 no hay errores Ejemplo Mensaje 101001110101 1º Acordar la longitud de cada cadena 3 2º Acordar el sistema de numeracion 2 3 1 7 displaystyle 2 3 1 7 3º Dividir el mensaje 101 001 110 101 4º Asociar cada cadena con un entero 5 1 6 5 5º Sumar todos los valores y anadir el numero cambiado de signo 17 6º Enviar 5 1 6 5 17 codificado en binario El receptor 1º Suma todos los valores si la suma es 0 procesa el mensaje si no se ha producido un error Este metodo al ser mas sencillo es optimo para ser implementado en software ya que se puede alcanzar velocidades de calculo similares a la implementacion en hardware Distancia de Hamming basada en comprobacion Editar Hipercubo binario de dimension cuatro Si queremos detectar d bit erroneos en una palabra de n bits podemos anadir a cada palabra de n bits d 1 bits predeterminados al final de forma que quede una palabra de n d 1 bits con una distancia minima de Hamming de d 1 De esta manera si uno recibe una palabra de n d 1 bits que no encaja con ninguna palabra del codigo con una distancia de Hamming x lt d 1 la palabra no pertenece al codigo detecta correctamente si es una palabra erronea Aun mas d o menos errores nunca se convertiran en una palabra valida debido a que la distancia de Hamming entre cada palabra valida es de al menos d 1 y tales errores conducen solamente a las palabras invalidas que se detectan correctamente Dado un conjunto de m n bits podemos detectar x lt d bits errores correctamente usando el mismo metodo en todas las palabras de n bits De hecho podemos detectar un maximo de m d errores si todas las palabras de n bits son transmitidas con un maximo de d errores EjemploPalabras a enviar 000001 000001 000010Codificadas con distancia minima de Hamming 2 Editar 000001 0000 000001 0011 000010 1100Si las palabras recibidas tienen una distancia de Hamming lt 2 son palabras incorrectas Lista de los metodos de correccion y deteccion de errores EditarDigito verificador FEC Forward Error Correction Codigo Binario de Golay Codigo Hamming Bit de paridad Reed SolomonVease tambien EditarCorreccion de errores cuantica Recuperacion de datos Corrupcion de datos Automatic Repeat RequestReferencias Editar G J Simmons A survey of Information Authentication Contemporary Cryptology The science of information integrity ed GJ Simmons IEEE Press New York 1992 Enlaces externos EditarOtros codigos utilizados Datos Q1062839 Obtenido de https es wikipedia org w index php title Deteccion y correccion de errores amp oldid 131800125, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos