而Viterbi演算法按離起始點的距離迭代。以上圖為例,Viterbi演算法依次考察:A1, (B1, B2), (C1, C2), D1。離起始點距離越遠,迭代次序越靠後。
對於HMM模型,無論是Dijsktra演算法,還是Viterbi演算法,都能夠求出最優序列。那麼為什麼HMM演算法一般使用Viterbi演算法,而不是Dijsktra演算法?
Dijsktra演算法的時間複雜度分析可以參考《演算法導論》關於Dijsktra演算法一節。這裡直接用結論,如果不使用斐波那契堆,Dijsktra演算法的複雜度為 。其中 ,因此,複雜度為