题目
对于隐马尔可夫模型(),设其观察值空间为 O=o_1,o_2,...,o_N,状态空间为: S=s_1,s_2,...,s_K,观测值序列为 Y=y_1,y_2,...,y_T。如果用维特比算法 (Viterbi algorithm) 进行解码,时间复杂为()。A. O(NK^2)B. O(N^2K)C. O(TK^2)D. O(T^2K)
对于隐马尔可夫模型(),设其观察值空间为 $O=\{o_1,o_2,\cdots,o_N\}$,状态空间为: $S=\{s_1,s_2,\cdots,s_K\}$,观测值序列为 $Y=\{y_1,y_2,\cdots,y_T\}$。如果用维特比算法 (Viterbi algorithm) 进行解码,时间复杂为()。
A. $O(NK^2)$
B. $O(N^2K)$
C. $O(TK^2)$
D. $O(T^2K)$
题目解答
答案
C. $O(TK^2)$
解析
本题考查隐马尔可夫模型中维特比算法的时间复杂度相关知识。解题思路是先明确维特比算法的主要步骤,再分析每个步骤的计算量,最后综合得出整个算法的时间复杂度。
维特比算法用于求解隐马尔可夫模型中给定观测序列时的最优状态序列,其主要步骤包括初始化、递推和回溯。下面详细分析每个步骤的时间复杂度:
- 初始化步骤:
- 初始化需要为每个状态计算初始概率与对应观测值的概率乘积。状态空间有 $K$ 个状态,对于每个状态,计算其初始概率与第一个观测值的概率乘积,这一步的计算量为 $O(K)$。
- 递推步骤:
- 递推步骤需要从第 $2$ 个时刻到第 $T$ 个时刻进行迭代。对于每个时刻 $t$($2\leq t\leq T$),对于每个状态 $s_j$($1\leq j\leq K$),需要计算从所有可能的前一状态 $s_i$($1\leq i\leq K$)转移到当前状态 $s_j$ 的概率,再乘以当前状态 $s_j$ 产生观测值 $y_t$ 的概率,然后取最大值。
- 对于每个时刻 $t$,计算每个状态 $s_j$ 的最优路径概率时,需要遍历 $K$ 个可能的前一状态 $s_i$,因此对于每个时刻 $t$ 的计算量为 $O(K^2)$。
- 由于需要进行 $T - 1$ 次这样的递推(从第 $2$ 个时刻到第 $T$ 个时刻),所以递推步骤的总计算量为 $O((T - 1)K^2)$,在时间复杂度分析中,忽略常数项,可近似为 $O(TK^2)$。
- 回溯步骤:
- 回溯步骤需要从最后一个时刻 $T$ 开始,根据记录的最优路径信息,依次回溯到第 $1$ 个时刻,确定最优状态序列。回溯过程需要遍历 $T$ 个时刻,每个时刻只需要进行常数时间的操作,因此回溯步骤的计算量为 $O(T)$。
综合以上三个步骤,初始化步骤的 $O(K)$ 和回溯步骤的 $O(T)$ 相对于递推步骤的 $O(TK^2)$ 来说,在时间复杂度分析中可以忽略不计。所以,维特比算法的时间复杂度主要由递推步骤决定,为 $O(TK^2)$。