⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 backward.c

📁 HMM的演示源程序
💻 C
字号:
#include <stdio.h>
#include "hmm.h"

void Backward(HMM *phmm, int T, int *O, double **beta, double *pprob)
{
   int     i, j;
   int     t;
   double sum;

   for (i = 1; i <= phmm->N; i++)
	beta[T][i] = 1.0;

   for (t = T - 1; t >= 1; t--)
   {
       for (i = 1; i <= phmm->N; i++)
       {
	    sum = 0.0;
	    for (j = 1; j <= phmm->N; j++)
		sum += phmm->A[i][j] * (phmm->B[j][O[t+1]])*beta[t+1][j];

	    beta[t][i] = sum;
	}
    }

    *pprob = 0.0;
    for (i = 1; i <= phmm->N; i++)
	*pprob += beta[1][i];
}

void BackwardWithScale(HMM *phmm, int T, int *O, double **beta, double *scale, double *pprob)
{
    int     i, j;
    int     t;   
    double sum;

    for (i = 1; i <= phmm->N; i++)
	beta[T][i] = 1.0/scale[T];

    for (t = T - 1; t >= 1; t--)
    {
	for (i = 1; i <= phmm->N; i++)
	{
	   sum = 0.0;
	   for (j = 1; j <= phmm->N; j++)
	       sum += phmm->A[i][j] * (phmm->B[j][O[t+1]])*beta[t+1][j];

	   beta[t][i] = sum/scale[t];
	 }
     }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -