维特比算法背景:
安德鲁·维特比(Andrew J. Viterbi),CDMA之父,IEEE Fellow,高通公司创始人之一,高通首席科学家。他开发了卷积码编码的最大似然算法而享誉全球。1991年香农奖(Claude E. Shannon Award)获得者。
维特比算法由 安德鲁·维特比(Andrew Viterbi) 于1967年提出,用于在数字通信链路中解卷积以消除噪音。 此算法被广泛应用于 CDMA 和 GSM 数字蜂窝网络、拨号调制解调器、卫星、深空通信和 802.11 无线网络中解卷积码。维特比算法是一个特殊但应用最广的动态规划算法。利用动态规划,可以解决任何一个图中的最短路径问题。而维特比算法是针对一个特殊的图—篱笆网络(Lattice)的有向图最短路径问题而提出的。它之所以重要,是因为凡是使用隐含马尔可夫模型描述的问题都可以用它来解码,包括今天的数字通信、语音识别、机器翻译、拼音转汉字、分词等。
举一个例子,下图所示,假如需要找一条从S到E的最短路径,每段路径都有固定的长度,为了举例方便图中仅标出部分长度。最无脑的方法就是枚举出所有可能的路径并排序比较最终找出最短的路径。是否有时间复杂度更低的算法呢?Viterbi算法就是一种快速找出最优路径的算法。
边计算边删掉不可能是答案的路径,在最后剩下的路径中挑选最优路径,就是viterbi算法(维特比算法)的重点,因为后面我们再也不用考虑这些被删掉的路径了。
我们从开始S出发一列一列地算,首先是S—>A,仅凭该列三条连接还不能判断从那条线路出发的路径最短,因此我们继续往下看。S—>A—>B的路径共有9种可能,首先比较S—>A—>B1的三条路径如下图所示
经过 B1 的这三条路径中很容易找出最优的一条路径即 S—>A2—>B1,其他两条绝对不是最有路径中的路段,因为从 B1 出发往后继续走的路程概率是一样的,因此从 S—>A—>B1 的三条路径中除了最短那条外其余两条绝对不可能出现在全局最短路径中。这样就筛选掉了两条路径得到如下图的结果。
?注意上述?S—>A—>B 找候选路径中 A—>B 的连线方式是 An—>B1 的方式而不是 A1—>Bn 的方式,如下图所示。这里使用的是图 a 中的方式,而不是 b 中的方式,b的方式并不能确定最短的那个路段就是最可能的候选路径之一。
?S—>A—>B 其他两条最优候选路径如下图所示。
?同理,S—>A—>B—>C1 也有三条候选路径,从中选取最优候选路径的方式与前述类似,以此类推,直到最终剩下三条最有可能的候选路径,假设最终的结果如下图所示。每种颜色代表一种可能的路径,对比这三条路径即可找到全局最优解。
?这种寻找最优路径的方式就是Viterbi算法。
|