📄 backward.cpp
字号:
/*************向后算法***************/
//#include <iostream.h>
#include <iomanip.h>
#include <math.h>
#include "HMM.H"
void Backward(HMM *phmm,int T,int *O,double **beta)
{
double sum;
int i,j,k,t;
for(i=0;i<phmm->N;i++)
beta[T-1][i]=1.0;
for(t=T-2;t>=0;t--)
{
for(i=0;i<phmm->N;i++)
{
k=O[t+1];
sum=0.0;
for(j=0;j<phmm->N;j++)
sum+=(phmm->A[i][j])*(phmm->B[k][j])*beta[t+1][j];
beta[t][i]=sum;
}
}
}
void BackwardWithScale(HMM *phmm,int T,int *O,double *scale,double **beta)
{
int i,j,k,t;
double sum;
for(i=0;i<phmm->N;i++)
{
beta[T-1][i]=1.0/scale[T-1];
}
for(t=T-2;t>=0;t--)
{
k=O[t+1];
for(i=0;i<phmm->N;i++)
{
sum=0.0;
for(j=0;j<phmm->N;j++)
sum+=(phmm->A[i][j])*(phmm->B[k][j])*beta[t+1][j];
beta[t][i]=sum/scale[t];
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -