维特比算法学习

前言:作为堂堂数学系的学生,竟然很多算法都不会。表示对自己很失望,今天学习了一下维特比算法,发现很简单,而且隐约中感觉大学应该学过,回到宿舍回顾一下。

那么什么是维特比算法呢?

其实它属于动态规划的领域。下面举一个简单的例子进行介绍:

1,从城市A到城市C要经过中间的很多B城市点(B1到B20),而每个城市点又有几个可能经过的节点(比如B2有B21、B22到B210)。也就是说从A到C,每一列必经过一点,如下图:

2,问题是:在每条路径长度已知的情况下,如果找到最短的路径?

3,常规方法:计算没一条可能的路径的长度,其计算量为10的21次方,

4,采用viterbi算法:

4.1)原理:

上图是截图自吴军博士的《数学之美》第二版的第26章。

通俗来说就是:

        1,假如A到C的最短路线是A-B33-C,那么“A到B33的最短路线”跟“A到C的最短路线”重合。否则就可以用“A到B33的最短路线”来替换“A到C的最短路线”中的那一段了。

        2,如果知道了“A到 B3的每一个子节点 的最短路线”(图中共有10条),那么:“A到C的最短路线”必定经过其中一条。

5,上面4中是思路,这里讲一下具体的实现。

先算出A到B1的每一个节点的最短路径,(计算量为10);【得到10条最短路径】

然后计算在这10条路径,分别到B2的每一个节点的最短路径,(计算量为10*10);【得到10条最短路径】

同上,到B3、B4、B3、B4、……B19、B20、C 的每一个节点的最短路径。

至此,得到全局最短路径。总的计算量为:10+10*10*19+10=1920。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,915评论 18 139
  • 《机械制图》10%(50+30=80) 单项选择题 Q-B1-E-001 L 基本幅面不能满足需要而采用加长幅面时...
    开源时代阅读 3,953评论 1 1
  • 目录 但还是爱,深藏于心 前情回顾 06 Sam的家和家人 秋天该很好,你若尚在场。--《春夏秋冬》张国荣 当妈妈...
    盛靳阅读 414评论 0 0