Skip to main content

Table 2 The Viterbi decoding, forward and backward procedures.

From: Implementing EM and Viterbi algorithms for Hidden Markov Model in linear memory

Forward procedure

Backward procedure

Viterbi algorithm

α t (i) ≡ p (o1,..., o t |q t = S i , λ)

β t (i) ≡ p (ot + 1,..., o T |q t = S i , λ)

• Initially δ1(i) = π i b i (o1), ψ1(i) = 0 for 1 ≤ iN,

• Initially α1(i) = π i b i (o1) for 1 ≤ iN,

• Initially β T (i) = 1 for 1 ≤ iN,

δ t ( j ) = max 1 i N [ δ t 1 ( i ) a i , j ] b j ( o t ) , ψ t ( j ) = arg max 1 i N [ δ t 1 ( i ) a i , j ] MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaqbaeaabiqaaaqaaiabes7aKnaaBaaaleaacqWG0baDaeqaaOGaeiikaGIaemOAaOMaeiykaKIaeyypa0ZaaCbeaeaacyGGTbqBcqGGHbqycqGG4baEaSqaaiabigdaXiabgsMiJkabdMgaPjabgsMiJkabd6eaobqabaGccqGGBbWwcqaH0oazdaWgaaWcbaGaemiDaqNaeyOeI0IaeGymaedabeaakiabcIcaOiabdMgaPjabcMcaPiabdggaHnaaBaaaleaacqWGPbqAcqGGSaalcqWGQbGAaeqaaOGaeiyxa0LaemOyai2aaSbaaSqaaiabdQgaQbqabaGccqGGOaakcqWGVbWBdaWgaaWcbaGaemiDaqhabeaakiabcMcaPiabcYcaSaqaaiabeI8a5naaBaaaleaacqWG0baDaeqaaOGaeiikaGIaemOAaOMaeiykaKIaeyypa0ZaaCbeaeaacyGGHbqycqGGYbGCcqGGNbWzcyGGTbqBcqGGHbqycqGG4baEaSqaaiabigdaXiabgsMiJkabdMgaPjabgsMiJkabd6eaobqabaGccqGGBbWwcqaH0oazdaWgaaWcbaGaemiDaqNaeyOeI0IaeGymaedabeaakiabcIcaOiabdMgaPjabcMcaPiabdggaHnaaBaaaleaacqWGPbqAcqGGSaalcqWGQbGAaeqaaOGaeiyxa0faaaaa@7D7E@ for t = 2,..., T and 1 ≤ jN,

α t ( j ) = [ i = 1 N α t 1 ( i ) a i , j ] b j ( o t ) MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaeqySde2aaSbaaSqaaiabdsha0bqabaGccqGGOaakcqWGQbGAcqGGPaqkcqGH9aqpdaWadaqaamaaqadabaGaeqySde2aaSbaaSqaaiabdsha0jabgkHiTiabigdaXaqabaGccqGGOaakcqWGPbqAcqGGPaqkaSqaaiabdMgaPjabg2da9iabigdaXaqaaiabd6eaobqdcqGHris5aOGaemyyae2aaSbaaSqaaiabdMgaPjabcYcaSiabdQgaQbqabaaakiaawUfacaGLDbaacqWGIbGydaWgaaWcbaGaemOAaOgabeaakiabcIcaOiabd+gaVnaaBaaaleaacqWG0baDaeqaaOGaeiykaKcaaa@508D@ for t = 2, 3,..., T and 1 ≤ jN,

β t ( i ) = j = 1 N a i , j b j ( o t + 1 ) β t + 1 ( j ) MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaeqOSdi2aaSbaaSqaaiabdsha0bqabaGccqGGOaakcqWGPbqAcqGGPaqkcqGH9aqpdaaeWaqaaiabdggaHnaaBaaaleaacqWGPbqAcqGGSaalcqWGQbGAaeqaaOGaemOyai2aaSbaaSqaaiabdQgaQbqabaGccqGGOaakcqWGVbWBdaWgaaWcbaGaemiDaqNaey4kaSIaeGymaedabeaakiabcMcaPaWcbaGaemOAaOMaeyypa0JaeGymaedabaGaemOta4eaniabggHiLdGccqaHYoGydaWgaaWcbaGaemiDaqNaey4kaSIaeGymaedabeaakiabcIcaOiabdQgaQjabcMcaPaaa@5068@ for t = T - 1,..., 1 and 1 ≤ iN,

• Finally q T = arg max 1 i N [ δ T ( i ) ] , q t = ψ t + 1 ( q t + 1 ) MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaemyCae3aa0baaSqaaiabdsfaubqaaiabgEHiQaaakiabg2da9maaxababaGagiyyaeMaeiOCaiNaei4zaCMagiyBa0MaeiyyaeMaeiiEaGhaleaacqaIXaqmcqGHKjYOcqWGPbqAcqGHKjYOcqWGobGtaeqaaOGaei4waSLaeqiTdq2aaSbaaSqaaiabdsfaubqabaGccqGGOaakcqWGPbqAcqGGPaqkcqGGDbqxcqGGSaalcqWGXbqCdaqhaaWcbaGaemiDaqhabaGaey4fIOcaaOGaeyypa0JaeqiYdK3aaSbaaSqaaiabdsha0jabgUcaRiabigdaXaqabaGccqGGOaakcqWGXbqCdaqhaaWcbaGaemiDaqNaey4kaSIaeGymaedabaGaey4fIOcaaOGaeiykaKcaaa@5B3C@ for t = T - 1,..., 1 with optimal path Q = { q 1 , ... , q T } MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaemyuae1aaWbaaSqabeaacqGHxiIkaaGccqGH9aqpcqGG7bWEcqWGXbqCdaqhaaWcbaGaeGymaedabaGaey4fIOcaaOGaeiilaWIaeiOla4IaeiOla4IaeiOla4IaeiilaWIaemyCae3aa0baaSqaaiabdsfaubqaaiabgEHiQaaakiabc2ha9baa@3DDB@ .

• Finally p ( O | λ ) = i = 1 N α T ( i ) MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaemiCaaNaeiikaGIaem4ta8KaeiiFaWNaeq4UdWMaeiykaKIaeyypa0ZaaabmaeaacqaHXoqydaWgaaWcbaGaemivaqfabeaakiabcIcaOiabdMgaPjabcMcaPaWcbaGaemyAaKMaeyypa0JaeGymaedabaGaemOta4eaniabggHiLdaaaa@40DC@ is the sequence likelihood

• Finally p ( O | λ ) = i = 1 N π i b i ( o 1 ) β 1 ( i ) MathType@MTEF@5@5@+=feaafiart1ev1aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaemiCaaNaeiikaGIaem4ta8KaeiiFaWNaeq4UdWMaeiykaKIaeyypa0ZaaabmaeaacqaHapaCdaWgaaWcbaGaemyAaKgabeaakiabdkgaInaaBaaaleaacqWGPbqAaeqaaOGaeiikaGIaem4Ba82aaSbaaSqaaiabigdaXaqabaGccqGGPaqkcqaHYoGydaWgaaWcbaGaeGymaedabeaakiabcIcaOiabdMgaPjabcMcaPaWcbaGaemyAaKMaeyypa0JaeGymaedabaGaemOta4eaniabggHiLdaaaa@4B08@ .