维特比乍法是一个特殊但应用最广的动态规划算法,可以解决任何一个图中的最短路径问题。
这个算法是针对一个特殊的图——篱笆网络的有向图的最短路径提出的。
这个算法之所以重要,是因为凡是使用隐含马尔科夫模型描述的问题都可以用它来解码,包括今天 的数字通信,语音识别,拼音转汉字,分词等。
算法基础:
1、如果要概率最大的路径 P(或者说最短路径)经过某个点 x22,那个这条路径上从起始点到 x22 的这段子路径Q一定是S到 x22 之间的最短路径。否则,用S到x22的最短路径R代替Q,便构成了一条比P更短的路径,这显然是矛盾的。
2、从S到E的路径必定经过第 i 时刻的某个状态,假定第 i 时刻有 k 个状态, 那么如果记录了从 S 到第 i 个状态的所有 k 个节点的最短路,最终的最短路径必经过其中的一条。这样,在任何时刻,演只要考虑非常有限条最短路径即可。
3、结合上述两点,假定当我们从状态 i 进入状态 i+1 时,从 S 到状态 i 上各个节点的最短路径已经找到,并且记录在这些节点上,那么在计算从起点 S 到第 i+1 状态的最短路径时,只要考虑从 S 到当前一个状态所有的 k 个节点的最短路径,以及从这 k 个节点到 xi+1, j 的距离即可。