算法详解
目标:真实路径的分数占所有路径的分数总合比重最大
分数计算:Si = EmissionScore(发射分数) + TransitionScore(转移分数)
计算过程中删除最不可能的路径,降低计算复杂度。
复杂度
N个节点,每个节点有D个状态
暴力搜索复杂度:
O
(
D
N
)
O(D^N)
O(DN)
每个节点有D个状态,全部枚举就有 D N D^N DN种路径。
viterbi算法复杂度: O ( N D 2 ) O(ND^2) O(ND2)
相邻两个节点之间要计算 D ∗ D D*D D∗D次,可删除到当前节点各个状态的最不可能路径,这样的计算要进行 N − 1 N-1 N−1次,复杂度是 O ( ( N − 1 ) ∗ D 2 ) O((N-1)*D^2) O((N−1)∗D2),即 O ( N D 2 ) O(ND^2) O(ND2)