1、简介

  维特比算法是一个特殊但应用最广的动态规划算法,它是针对篱笆网络的有向图(Lattice)的最短路径问题而提出的。凡是使用隐含马尔可夫模型描述的问题都可以用维特比算法来解码,包括今天的数字通信、语音识别、机器翻译、拼音转汉字、分词等。
2、维特比算法的基础

(1)如果概率最大的路径P(或叫最短路径)经过某个点,比如下图中的X22,那么这条路径上从起始点S到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所有的k个结点的最短路径,以及从这k个节点到Xi+1,j的距离即可。
3、维特比算法总结

(1)从点S出发,对于第一个状态X1的各个节点,不妨假定有n1个,计算出S到它们的距离d(S,X1i),其中X1i代表任意状态1的节点。因为只有一步,所以这些距离都是S到它们各自的最短距离。

(2)对于第二个状态X2的所有节点,要计算出从S到它们的最短距离。对于特点的节点X2i,从S到它的路径可以经过状态1的n1中任何一个节点X1i,对应的路径长度就是d(S,X2i) = d(S,X1i) + d(X1i,X2i)。由于j有n1种可能性,我们要一一计算,找出最小值。即:

d(S,X2i) = minI=1,n1 d(S,X1i) + d(X1i,X2i)

这样对于第二个状态的每个节点,需要n1次乘法计算。假定这个状态有n2个节

点,把S这些节点的距离都算一遍,就有O(n1·n2)次计算。

(3)接下来,类似地按照上述方法从第二个状态走到第三个状态,一直走到最后一个状态,就得到了整个网格从头到尾的最短路径。每一步计算的复杂度都和相邻两个状态Si和Si+1各自的节点数目ni,ni+1的乘积成正比,即O(ni·ni+1)

(4)假设这个隐含马尔可夫链中节点最多的状态有D个节点,也就是说整个网格的宽度为D,那么任何一步的复杂度不超过O(D2),由于网格长度是N,所以整个维特比算法的复杂度是O(N·D2)。

每个时刻有K个状态,每个状态需要遍历K个数才能得到,最终有T个时刻,时间复杂度和观察值序列和状态空间有关,和观察值空间无关。

维特比算法Viterbi Algorithm相关推荐

  1. HMM——维特比算法(Viterbi algorithm)

    1. 前言 维特比算法针对HMM第三个问题,即解码或者预测问题,寻找最可能的隐藏状态序列: 对于一个特殊的隐马尔可夫模型(HMM)及一个相应的观察序列,找到生成此序列最可能的隐藏状态序列. 也就是说给 ...

  2. 语音识别学习日志 2019-7-17 语音识别基础知识准备6 {维特比算法(Viterbi Algorithm)}

    HMM 维特比算法(Viterbi Algorithm)详细解释参考:http://www.52nlp.cn/hmm-learn-best-practices-six-viterbi-algorith ...

  3. 维特比算法(Viterbi)

    维特比算法 (Viterbi algorithm) 是机器学习中应用非常广泛的动态规划算法,在求解隐马尔科夫.条件随机场的预测以及seq2seq模型概率计算等问题中均用到了该算法.实际上,维特比算法不 ...

  4. 维特比算法(viterbi)原理以及简单实现

    维特比算法 看一下维基百科的解释,维特比算法(Viterbi algorithm)是一种动态规划算法.它用于寻找最有可能产生观测事件序列的维特比路径--隐含状态序列,特别是在马尔可夫信息源上下文和隐马 ...

  5. C语言维特比算法,viterbi维特比算法

    维特比算法:使用动态规划,找出最短路径 以下以图的形式来解释: 图的节点按列组织,每列的节点数量可以不一样,每一列的节点只能和相邻列的节点相连,不能跨列相连,节点之间有着不同的距离,距离的值就不在图上 ...

  6. em算法怎么对应原有分类_[PRML]序列数据 HMM维特比算法及扩展

    序列数据相关文章:1.马尔可夫模型2.隐马尔可夫模型简介3.HMM最大似然4.HMM前向后向算法5.HMM和积算法与尺度因子 1 维特比算法 在隐马尔可夫模型的许多应用中,潜变量有一些有意义的解释,因 ...

  7. 隐马尔科夫模型(HMMs)之五:维特比算法及前向后向算法

    维特比算法(Viterbi Algorithm) 找到可能性最大的隐藏序列 通常我们都有一个特定的HMM,然后根据一个可观察序列去找到最可能生成这个可观察序列的隐藏序列. 1.穷举搜索 我们可以在下图 ...

  8. 机器学习:维特比算法(Viterbi Algorithm)

    一.维特比算法(Viterbi Algorithm)讲解方式01:篱笆网络(Lattice)的最短路径问题 已知下图的篱笆网络,每个节点之间的数字表示相邻节点之间的距离,举个例子来说,如果我走,这个距 ...

  9. 基于维特比算法的概率路径

    简介: 维特比算法(Vieterbi algorithm)是一种动态规划算法,探索出很多预测天气的方法,这种基于经验的预测方式,是一种基于历史数据的概率模型. 思想 维特比算法的思想是假设某一个数据的 ...

最新文章

  1. 谁在引领中国制造?中国智能制造发展解析
  2. 三级网络技术刷题笔记
  3. Centos下通过SMTP发送邮件失败解决
  4. 【django轻量级框架】使用支付宝支付接口(沙箱)
  5. 《剑指offer》-- 链表中倒数第k个节点、反转链表、合并两个排序的链表
  6. 面试题: 数据库 真实面试题已看1 操作语句 存储过程 挺好 sql语句练习 有用
  7. 大咖开讲:一小时学会.NET MVC开发的那些事儿
  8. matlab gui教程 计算器,matlab gui编写的计算器程序
  9. mysql alter atafter_MySQL 常用操作
  10. 01-04 Linux常用命令-网络相关
  11. UEditor DIY笔记
  12. 成功的人都很会控制自己的情绪
  13. [cocos2d-x]动作+场景切换
  14. oid 值 内存使用_JVM:对Java内存模型的理解,你还停留在面试阶段吗?
  15. tpx色卡电子版_潘通色卡电子版Pantone TPX(新175色)
  16. 安卓原生页面与react-native页面相互跳转实现
  17. linux网络配置文件,Linux下一块网卡设置多个IP地址
  18. powershell快捷键_Windows10 PowerShell快捷键大全
  19. 连接Janusgraph时报Unable to determine Elasticsearch server version. Default to FIVE.异常
  20. Ubuntu使用sudo apt-get upgrade升级软件出现问题后的处理

热门文章

  1. 【设计模式】第三章 单例模式
  2. 力扣190.颠倒二进制数
  3. Django学习之Cookie和Session
  4. selenium与python自动化测试模拟登录百度
  5. UI自动化测试POM设计之-maven工程
  6. 另一种思路比较2个日期是否相等的方式
  7. linux+PATH
  8. 程序员为什么越老越贬值的厉害?
  9. Python 远程开关机
  10. Postgresql 帐号密码修改方法