算法导论----学习笔记011

本文详细介绍了维特比算法的工作原理及其应用流程。通过解析算法的每一步骤,包括初始化、递归计算以及路径回溯等,帮助读者理解如何利用该算法找出最有可能的隐含状态序列。

所谓的马尔科夫过程,就是该过程的当前状态仅由前一时刻的状态确定。用概率表达即为:

Viterbi算法的步骤为:

  1. 初始(t=0)

,对应各状态产生输出的概率;

  1. 接下来的各时间步上,

是在t时刻到达状态j时产生对应输出序列的概率,也是前面的前向变量;

  1. 结束:

状态序列回溯:

 

 输入:  观察空间  O=\{o_1,o_2,\dots,o_N\}, 
           状态  S=\{s_1,s_2,\dots,s_K\} , 
           观察序列   Y=\{y_1,y_2,\ldots, y_T\}  若在 t  时间观察值为  o_i  ,则  y_t==i ,
           大小为  K\cdot K  的转移矩阵  A ,  A_{ij}  为从状态  s_i  s_j  的转移概率,
           大小为  K\cdot N  的放射矩阵  B ,  B_{ij}  为状态  s_i  观察到  o_j  的概率, 
           初始概率数组  \pi  of size  K ,  \pi_i  x_1 ==  s_i  的概率, 
   输出: 最有可能的隐含状态序列  X=\{x_1,x_2,\ldots,x_T\} 
A01 function VITERBI( O, S,π,Y,A,B ) : X
A02     for each state si do
A03         T1[i,1]πi\cdotBiy_1
A04         T2[i,1]←0
A05     end for
A06     for i2,3,...,T do
A07         for each state sj do
A08             T1[j,i]\max_{k}{(T_1[k,i-1]\cdot A_{kj}\cdot B_{jy_i})} 
A09             T2[j,i]\arg\max_{k}{(T_1[k,i-1]\cdot A_{kj}\cdot B_{jy_i})} 
A10         end for
A11     end for
A12     zT\arg\max_{k}{(T_1[k,T])} 
A13     xT←szT
A14     for iT,T-1,...,2 do
A15         zi-1←T2[zi,i]
A16         xi-1szi-1
A17     end for
A18     return X
A19 end function

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值