ALGORITMO DE CORRECCION Y DETECCION DE ERRORES INTRODUCCION La comunicación en entr tre e va vari rias as computadoras pr prod oduc uce e co cont ntinu inuam amen ente te un movimiento movim iento de datos datos,, gener generalmen almente te por canales no dis diseña eñados dos par para a es este te 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 redundancia.. Se han desarrollado dos estrategias básicas para manejar los errores: Incluir suficiente información redundante en cada bloque de datos para que códigos gos de se puedan detectar y corregir los bits erróneos. Se utilizan códi 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.
TIPOS DE 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 inclu incluiremo iremos s este bit con el valor = 0, y si no es así, lo incluiremos 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 1110100
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.
Paridad cruzada (paridad horizontal-vert horizontal-vertical) ical)
Para mejorar un poco el método anterior, se realiza una paridad que afecte tanto a los bits de cada cadena o palabra como a un conjunto de todos ellos. Siem Si empr pre e se ut util iliz izan an ca cade dena nas s re rela lati tiva vame ment nte e co cort rtas as pa para ra ev evit itar ar qu que e se cuelen muchos errores. Para ver más claro este método, se suelen agrupar los bits en una matriz de N filas por K columnas, luego se realizan todas las paridades horizontales porr el mé po méto todo do an ante terio rior, r, y po porr úl últi timo mo,, se ha hace ce las mi mism sma a op oper erac ació ión n de calcular el número de unos, pero ahora de cada columna. La probabilidad de encontrar un solo error es la misma, pero en cambio, la probabilidad de encontrar un número par errores ya no es cero, como en el caso anterior. Aun así, existen todavía una gran cantidad de errores no detectables Un ejemplo de paridad cruzada (o de código geométrico) 1º Tenemos este código para transmitir: 1100101111010110010111010110 2º Agrupamos el código en cada una de las palabras, formando una matriz de N x K: 1100101 1110101 1001011 1010110 3º Añadimos los bits de paridad horizontal: 1100101 1110101 1001011 1010110
0 1 0 0
4º Añadimos los bits de paridad vertical: 1100101 1110101 1001011 1010110
0 1 0 0
0001101 1
Una vez creada la matriz, podemos enviar ésta por filas, o por columnas. Enviando Envia ndo las palabra palabras s por colum columnas nas aumentamos aumentamos la posib posibilidad ilidad de corre corregir gir una palabra que haya sufrido un error de ráfaga (errores que afectan a varios var ios bit bits s con consec secutiv utivos, os, deb debido idos s a cau causas sas gen genera eralme lmente nte ele electr ctróni ónicas cas,, como chispazos, y que harían que se perdiera toda una palabra completa).
Códigos de redundancia cíclica también llamados CRC Intent Inte ntan ando do me mejo jora rarr los có códig digos os qu que e só sólo lo co cont ntro rola lan n la pa pari rida dad d de bi bit, t, apar ap arec ecen en lo los s có códig digos os cí cícl clic icos os.. Estos códigos utilizan la aritmética modular para detectar una mayor cantidad de errores, se usan operaciones en módulo 2 y las sumas y restas se realizan sin acarreo (convirtiéndose en operaciones de tipo Or-Exclusivo o XOR). XOR). Además, para facilitar los cálculos se trabaja, aunque sólo teóricamente, con polinomios polinomios.. La finalidad de este método es crear una parte de redundancia la cual se añade al final del código a transmitir (como en los métodos de
paridad) que siendo la más pequeña posible, detecte el mayor número de errores que sea posible. Pero además de esto, debe ser un método sistemático sistemático,, es decir, que con un mismo código a transmitir (y un mismo polino polinomio mio gene generador rador)) se genere siempre el mismo código final. El polinomio generador : es un polinomio elegido previamente y que tiene como propiedad minimizar la redundancia. Suele tener una longitud de 16 bits, para mensajes de 128 bytes, lo que indica que la eficiencia es buena. Ya que sólo incrementa la longitud en un aproximado 1,6%. (16bits / (128bytes * 8bitsporbyte )) * 100 = 1,5625
Un eje jem mplo de polinomio generador x ) = x 16 + x 12 + x 5 + 1 redes WAN es: g( x
usado
normalm lme ente
en
las la s
Los cálculos que realiza el equipo transmisor para calcular su CRC son: Añade tantos ceros por la derecha al mensaje original como el grado del polinomio generador Divi Di vide de el me mens nsaj aje e co con n lo los s ce cero ros s in incl clui uido dos s en entr tre e el po poli lino nomi mio o generador El resto que se obtiene de la división se suma al mensaje con los ceros incluidos 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: x 4 + x + 1 Operaciones: 1º Obtener el polinomio equivalente al mensaje: x 6 + x 5 + x 3 + 1 2º 10
x
Mult Multip ipli lica car r el 9 7 + x + x + x 4
mens mensaj aje e
por por
x 4
(aña (añadi dir r
4
cero ceros s
por por
la
derec erecha ha): ):
3º Dividir en binario el mensaje por el polinomio generador y sacar el resto: x 2 + 1
4º
Concatenar
el
mensaje
con
el
resto
(en
módulo
2
también):
x 10 + x 9 + x 7 + x 4 + x 2 + 1
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 longit ud pequeña, es por esto que se suele utilizar utilizar en cabeceras de tramas impo im port rtan ante tes s u ot otra ras s ca cade dena nas s im impo port rtan ante tes s y en co comb mbin inac ació ión n co con n ot otro ros s métodos. Funcionalidad: consiste en agrupar el mensaje a transmitir en cadenas de una un a lo long ngit itud ud de dete term rmina inada da L no mu muy y gra grand nde, e, de po porr ej ejem empl plo o 16 bi bits ts.. Considerando a cada cadena como un número entero numerado según el sistema de numeración 2L − 1. 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: 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 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 procesa el mensaje; mensaje; si no, se ha producido un error.
Este mé Est méto todo do al se serr má más s se senc ncil illo lo es óp ópti timo mo pa para ra se serr im impl plem emen enta tado do en software ya que se puede alcanzar velocidades velocidades de cálculo similares similares a la implementación en hardware.
Distancia de Hamming basada en comprobación
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 qu e qu qued ede e un una a pa pala labr bra a de n+ n+d+ d+1 1 bi bits ts co con n un una a dis distan tancia cia mín mínima ima de Hamming de d+1. De esta manera, si uno recibe una palabra de n+d+1 bits que qu e no en enca caja ja co con n ni ning ngun una a pa pala labr bra a de dell có códig digo o (c (con on un una a di dist stan anci cia a de Ham Ha mmin ing g x <= d+ d+1 1 la pa pala labr bra a no pe pert rte ene nec ce al cód ódig igo) o) de dettec ecta ta correc cor rectam tament ente e si es una palabra palabra err erróne ónea. a. Aún más, d o men menos os err errore ores s 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 sola lam mente a la las s pala lab bras inválid ida as que se detectan correctamente. Dado un conjunto de m*n bits, podemos detectar x <= d bits errores correctament correctamente e usand usando o el mism mismo o méto método do en todas las palab palabras ras 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: 000001 000001 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.
ALGORITMO DE
CHECKSUM
DE INTERNET
La idea en la que se basa la suma de chequeo de Internet es muy sencilla: se suman todas las palabras de 16 bits que conforman el mensaje y se
transmite, junto con el mensaje, el resultado de dicha suma (este resultado reci re cibe be el no nomb mbre re de checksum). Al ll lleg egar ar el me mens nsaj aje e a su de dest stin ino, o, el receptor realiza el mismo cálculo sobre los datos recibidos y compara el resultado con el checksum recibido. Si cualquiera de los datos transmitidos, incluyendo el mismo checksum, esta corrupto, el resultado no concordará y el receptor sabrá que ha ocurrido un error. El checksum se realiza de la siguiente manera: los datos que serán procesados (el mensaje) son acomodados como una secuencias de enteros de 16 bits. Estos enteros se suman utilizando aritmética complemento a uno para 16 bits y, para generar el checksum, se toma el complemento a uno para 16 bits del resultado.
En arit aritmét mética ica com comple plemen mento to a uno uno,, un ent entero ero ne negat gativo ivo -x se repre representa senta como el complemento de x ; es decir, cada bit de x es invertido. Cuando los núme nú mero ros s se ad adic icion ionan an,, si se ob obti tien ene e un ac acar arre reo o (carry ) en el bit más significativo, se debe incrementar el resultado. Por ejemplo, sumemos -5 y -3 en aritmética complemento a uno con enteros de 4 bits. En este caso +5 se representaría con con 0101 y -5 con 1010; +3 se representaría representaría con 0011 y -3 con 1100. Al sumar 1010 y 1100, ignorando el acarreo (carry ) que queda en el bit más significativo, tendremos como resultado 0110. En la aritmética complemento a uno, cuando una operación genera un acarreo ( carry ) en el bit más significativo, se debe incrementar el resultado; es decir que 0110 se convie con vierte rte en 011 0111, 1, que es la rep repres resent entaci ación ón com comple pleme mento nto a uno de -8 (obtenido de invertir los bits 1000). El us uso o de dell al algo gori ritm tmo o de checksum de In Inte tern rnet et en lo los s he head ader ers s de lo los s protocolos se puede resumir en tres pasos simples. Los octetos octetos ady adyace acente ntes s que se de deben ben ver verifi ificar car con al sum suma a de che cheque queo o deben ser acomodados para formar enteros de 16 bits, luego se calcula la suma complemento a uno de estos enteros (de 16 bits) Para generar el checksum, el campo de checksum del header del PDU que será transmitido es puesto en cero, luego la suma complemento a uno es calculada sobre los octetos correspondientes y el complemento a uno de esta suma se coloca en el campo de checksum. Para revisar el chec checksum ksum,, la suma es calculada sobre los mism mismo o octe octetos, tos, incluyendo el campo de checsum. Si el resultado es 16 bits con valor 1 (-0 en aritmética complemento a uno), el chequeo es correcto. Como un ej Como ejem empl plo o se senc ncil illo lo de dell cá cálc lcul ulo o de dell checksum sup supong ongamo amos s que tenemos tres "palabras" de 16 bits 0110011001100110 0101010101010101 0000111100001111 La suma de las dos primeras palabras sería: 0110011001100110 0101010101010101 1011101110111011
Adicionando ahora la tercera "palabra" al resultado anterior tenemos 1011101110111011 0000111100001111 1100101011001010 La suma complemento a uno se obtiene convirtiendo todos los ceros en unos y todos los unos en ceros. De esta forma la suma complemento a uno de 11 1100 0010 1010 1011 1100 0010 1010 10 se serí ría a 00 0011 1101 0101 0100 0011 1101 0101 01.. Qu Que e vend ve ndrí ría a a serr se el checksum. Al llegar al receptor las cuatro palabra de 16 bits, incluyendo el checksum son sumados y el resultado debe ser 1111111111111111. Si uno de los bits es cero, un error ha sido detectado. Dependie Depen diendo ndo del pro protoc tocolo olo,, se deb deben en se selec leccio cionar nar cie cierto rtos s cam campos pos de los header hea ders s par para a rea realiz lizar ar los cál cálcul culos os del checksum. En IP el ch chec ecks ksum um se calcul cal cula a sól sólo o sob sobre re los oct octeto etos s que componen componen el hea header der del datagram datagrama a (RFC791 RFC791), ), en UDP (RFC768 ( RFC768)) se calcula calcula so sobre bre un se seudo udo-he -heade aderr , el hea header der UDP y los datos que transporta UDP y en TCP (RFC793 ( RFC793)) se hace un cálculo similar simil ar que en UDP. Si desea conocer los detal detalles les del cácu cáculo lo del checksum checksum puede ver los siguientes ejemplos. Cál culo del campo Cálculo camp o de chec checksum ksum en el head header er de IP Cálculo Cál culo del campo de checksum checksu m en el header head er de UDP Cálculo Cál culo del campo de checksum checksu m en el head header er de TCP Computing ting the Intern Internet et Checks Checksum um, di El RFC1071 RFC1071,, Compu disc scut ute e mé méto todo dos s pa para ra calcular de manera eficiente el checksum de Internet que se utiliza en los protocolos IP, UDP y TCP. La si sig gui uie ent nte e ru ruttin ina a es una im impl plem eme ent ntac ació ión n di dire rec cta de dell al algo gori rittmo de checksum de Intern rne et. El argument nto o cantid ida ad trae la lo lon ngitud del buffer medido en unidades de 16 bits. La rutina asume que buffer ha sido rellenado de ceros (0) para que se ajuste a un tamaño múltiplo de 16 bits.
u_short checksum (u_short *buffer, int cantidad) { register u_long suma = 0; while (cantidad--) { suma += *buffer++; if (suma & 0xFFFF0000) { /* hubo acarreo, se debe incrementar el resultado */ suma &= 0xFFFF; suma++; } } return ~(suma & 0xFFFF); }
Este código asegu asegura ra que el cálcu cálculo lo utiliz utiliza a aritm aritmética ética complemento complemento a uno, antes que aritmética aritmética complemento complemento a dos que es la utiliz utilizada ada por la mayoría de máq máquin uinas. as. Obs Observ erve e el if den dentro tro del cic ciclo lo whi while. le. Si ex exist iste e un aca acarreo rreo (carry ) al final de la suma de 16 bits, entonces se incrementa suma.
Al uti utiliza lizarr est este e checksum, se ag agre rega gan n 16 bit bits s al me mens nsaj aje e or origi igina nall co como mo código cód igo de de detec tecció ción n de err errore ores, s, per pero o est esta a no es una téc técnic nica a fue fuerte rte de dete de tecc cció ión n de er erro rore res. s. ¿p ¿por or qu qué? é? Po Porr ej ejem empl plo, o, si un una a pa pare reja ja de bi bits ts individuales, uno de los cuales incrementa una palabra de 16 bits, de las que conforman el mensaje, en cierta cantidad y el otro bit decrementa otra palabra de 16 bits en la misma cantidad, al realizar la suma de chequeo no será detectado el error. La razón por la cual un algoritmo como éste es utilizado, aunque tenga una protección débil contra errores, es simple: este algoritmo es fácil de implementar en software (el algoritmo de CRC utilizado en los pro protoc tocolo olos s de la cap capa a de enlace, enlace, como Ethernet Ethernet y Tok Token en Ring se implementan en el hardware de las tarjetas de red). Además la experiencia observada en ARPANET sugirió que un checksum er era a ad adec ecua uado do:: este checksum es la última línea de defensa en los protocolos de TCP/IP pues pu es la gr gran an ma mayo yoría ría de er erro rore res s so son n de desc scub ubie iert rtos os po porr alg algor orit itmo mos s de detección de errores más fuertes, tales como los CRCs utilizados en la capa de enlace (capa 2 del modelo OSI).
VITERBI DECODIFICADOR algo gori ritm tmo o de Vi Vite terb rbii es una progra El al programació mación n dinám dinámica ica algoritmo para encontrar la más probable secuencia de estados ocultos - llamada la ruta de Vi Vite terb rbii - que se tra traduc duce e en una se secue cuenci ncia a de eve evento ntos s obs observ ervado ados, s, especialmente en el contexto de las fuentes de información de Markov , y, en general, los mod modelo elos s ocu oculto ltos s de Mar Markov kov . El algoritmo de avance es un algoritmo estrechamente relacionados para calcular la probabilidad de una secuencia de hechos observados. Estos algoritmos pertenecen al reino de la teoría de la probabilidad .
El algoritmo realiza una serie de supuestos:
En primer lugar, tanto en los hechos observados y los eventos ocultos debe estar en una secuencia . La secuencia es a menudo temporal, es decir, para el momento del suceso.
En se segu gund ndo o lu luga gar, r, es esta tas s do dos s se secu cuen enci cias as de debe ben n se serr alineados : un ejemplo de un hecho observado debe corresponder exactamente a una instancia de un evento oculto.
En tercer lugar, la computación en la secuencia oculta más probable (que conduce a un estado en particular), hasta un cierto punto t debe depender sólo en el caso observado en el punto t , y la secuencia más probable es que conduce a ese estado en el punto t - 1.
Estos supuestos supuestos se satis satisface facen n en un mode modelo lo ocult oculto o de Markov de prime primerr orden. Los términos "camino Viterbi" y "algoritmo de Viterbi" se aplican también a los relacionados con algoritmos de programación dinámica que descubre la explicación más probable para una observación. Por ejemplo, en el anális análisis is estadístico de un alg algorit oritmo mo de pro progra gramac mación ión din dinámi ámica ca se pue puede de uti utiliz lizar ar para descubrir el contexto único sin más probable derivación (análisis) de una cadena, que es a veces llamado el "Viterbi analizar". El algo algoritmo ritmo de Vite Viterbi rbi fue concebido por Andrew Viter Viterbi bi en 1967 como un algoritmo de decodificación de códigos convolucionales más ruidosos los
enlaces de comun enlaces comunicació icación n digita digital.Par l.Para a más detalles sobre la histo historia ria de la [1] evoluc evo lución ión del alg algorit oritmo mo ve verr Da Davi vid d Fo Forn rney ey art artícu ículo lo 's. El al algo gori ritm tmo o ha encont enc ontrad rado o una apl aplica icació ción n uni univer versal sal en la des descod codifi ificac cación ión de los códigos convolucionales utilizados tanto en CDMA y GSM ce celu lula larr digi di gita tal, l, dialup mó móde dems ms,, sa saté téli lite tes, s, en el fo fond ndo o -e -esp spac acio io de la las s co comu muni nica caci cion ones es,, y 802.11 LA LAN N in inal alá ámbr bric icas as.. Ah Ahor ora a es ta tam mbi bién én de us uso o ge gene nera rall en el reco re cono noci cimi mien ento to de vo voz z , de dete tecc cció ión n de pa pala labr bras as cl clav ave e , la li ling ngüí üíst stic ica a computacional y bioinformática . Por ejemplo, en la voz a texto (r (rec econ onoc ocim imie ient nto o de vo voz) z),, la se seña ñall ac acús ústic tica a se co cons nside idera ra co como mo la secuencia de los eventos observados, y una cadena de texto es considerado como co mo la "c "cau ausa sa oc ocul ulta ta"" de la se seña ñall ac acús ústi tica ca.. El al algo gori ritm tmo o de Vi Vite terb rbii encuentra la cadena más probable del texto dado la l a señal acústica.
Información general Los sup supues uestos tos enu enume merad rados os ant anteri eriorm orment ente e pue pueden den se serr ela elabor borado ados s de la sigu si guie ient nte e ma mane nera ra.. El al algo gori ritm tmo o de Vi Vitter erbi bi op oper era a en un una a má máqu quin ina a de estados su supo posi sici ción ón.. Es de deci cir, r, en cu cual alqu quie ierr mo mome ment nto o el si sist stem ema a qu que e se modela está en uno de un número finito de estados. Mientras que varias secuencias de estados (caminos) puede conducir a un estado determinado, por lo menos uno de ellos es un camino más probable para ese estado, llamada la "ruta de los sobrevivientes". Esta es una premisa fundamental del algoritmo porque el algoritmo examina todos los posibles caminos que conducen a un estado y sólo mantener la más probable. De esta manera el algor alg oritm itmo o no ti tien ene e qu que e re real aliz izar ar un se segu guim imie ient nto o de to todo dos s los ca cami mino nos s posibles, sólo uno por estado. Un se segun gundo do su supue puesto sto fun fundam dament ental al es que una tra transi nsició ción n de un est estado ado anterior a un nuevo estado se caracteriza por un incremento métricas, por lo gen genera erall un núm número ero.. Est Esta a tra transi nsició ción n se cal calcul cula a a par partir tir del eve evento nto.. El supuesto de tercera clave es que los sucesos se acumulan más de un camino cam ino en cie cierto rto sen sentid tido, o, hab habitu itualm alment ente e adic adicion ional. al. Así que el qui quid d del algoritm algo ritmo o es man manten tener er un núm número ero par para a cad cada a est estado ado.. Cua Cuando ndo ocu ocurre rre un evento, el algoritmo analiza avanzar hacia un nuevo conjunto de estados mediante la combinación de la métrica de un estado anterior es posible con la mé métr tric ica a in incr crem emen enta tale les s de la tr tran ansi sici ción ón,, de debi bido do al ev even ento to y el elig ige e lo mejo me jor. r. La mé métr tric ica a in incr crem emen enta tall as asoc ocia iado do a un ev even ento to de depe pend nde e de la posibil pos ibilidad idad de tra transi nsició ción n de desde sde el est estado ado ant anteri erior or al nue nuevo vo Est Estado ado.. Po Porr ejemplo, en comunicaciones de datos, es posible que sólo transmiten la mitad de los símbolos de un estado con números impares y la otra mitad de un estado de pares. Además, en muchos casos, el gráfico de transición de estado no está totalmente conectado. Un ejemplo sencillo es un coche que tien ti ene e tr tres es es esta tado dos s - ad adel elan ante te,, de dete tene nerr y re reve vert rtir ir - y no se le pe perm rmit ite e experimentar una transición de avance a retroceso sin entrar en el estado de parada. Después de calcular las combinaciones de métricas adicionales y el estado métricas, sólo los mejores sobreviven y todos los otros caminos se descar des cartan tan.. Hay mod modifi ificac cacion iones es en el alg algori oritmo tmo bás básico ico que per permit miten en una búsqueda hacia adelante, además de la una hacia atrás se describe aquí.
La historia de ruta debe ser almacenada. En algunos casos, el historial de búsqueda es completa, porque la máquina del Estado en el codificador se inicia en un estado conocido y no hay memoria suficiente para guardar todos los caminos. En otros casos, una solución de programación debe ser enco en cont ntra rado do po porr los re recu curs rsos os li limi mita tado dos: s: un ej ejem empl plo o es la co codi difi fica caci ción ón conv co nvol oluc ucio iona nal, l, do dond nde e el de deco codif dific icad ador or de debe be tr trun unca carr la hi hist stor oria ia,, a un una a prof pr ofu und ndid ida ad suf ufic icie ient nte e pa para ra man antten ene er el re rend ndim imie ient nto o a un ni niv vel ace ac ept pta abl ble. e. Au Aun nqu que e el al algo gori ritm tmo o de Vi Vitter erbi bi es muy ef efic icie ient nte e y ha hay y modifi mod ificac cacion iones es que red reduce ucen n la car carga ga com comput putaci aciona onal, l, los req requis uisito itos s de memoria tienden a permanecer constantes.
Algoritmo Supongamos que tenemos un modelo oculto de Markov (HMM) con los estados Y , las proba probabilida bilidades des inicia iniciales les π i de es esta tarr en el es esta tado do i , y las probabili probabilidad dades es de transición una i , j de la transición del estado i al estado j . Decir que observamos las salidas salidas . La secu secuencia encia de esta estados dos más proba probable ble que han producido las observaciones está dado por las relaciones de recurrencia:
Aquí V t , k es la probabilidad de la secuencia de estado más probable responsable de la primera t + 1 observaciones (se añade una indexación, ya comenzó a 0) que tiene k como su estado final. El camino Viterbi puede ser recuperada por el ahorro punteros que recordar que el estado y se utilizó en la segunda ecuación. Vamos Ptr ( k , t ) es la función que devuelve el valor de y utiliza para calcular V t , k si t > 0 , o k si t = 0 . Entonces:
La complejidad de este algoritmo es
.
BIBLIOGRAFIA http://webcache.googleusercontent.com/search? q=cache:NZFj0TDPLd4J:es.wikipedia.org/wiki/Correcci %C3%B3n_de_errores_hacia_adelante+algoritmo+de+correcion+de+datos &cd=2&hl=es&ct=clnk&gl=pe http://es.wikipedia.org/wiki/Detecci%C3%B3n_y_correcci %C3%B3n_de_errores http://www.arcesio.net/checksum/check http://www.arcesio.ne t/checksum/checksuminternet.html suminternet.html http://en.wikipedia.org/wiki/Viterbi_decoder http://en.wikipedia.org/wiki/Viterbi_algorithm