Viterbi算法(维特比算法)

2023-05-16

维特比算法背景:

安德鲁·维特比(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算法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Viterbi算法(维特比算法) 的相关文章

  • FreeRtos--中断

    采用二值信号量同步 二值信号量可以在某个特殊的中断发生时 xff0c 让任务解除阻塞 xff0c 相当于让任务与中断同步 这样就可以让中断事件处理量大的工作在同步任务中完成 xff0c 中断服务例程 ISR 中只是快速处理少部份工作 如此
  • FreeRTOS--资源管理

    函数重入 如果一个函数可以安全地被多个任务调用 xff0c 或是在任务与中断中均可调用 xff0c 则这个函数是可重入的 每个任务都单独维护自己的栈空间及其自身在的内存寄存器组中的值 如果一个函数除了访问自己栈空间上分配的数据或是内核寄存器
  • vscode代码提交到gittee码云 第一次提交方法

    学习3 xff1a 今天是第一次将vscode代码提交到gittee xff0c 废话不多说 xff0c 直接上方法 xff1a 查看git仓库 gt git status 将当前项目文件初始化为仓库 如果当前文件夹不是git仓库 xff0
  • 明火烟雾目标检测项目部署(YoloV5+Flask)

    明火烟雾目标检测项目部署 文章目录 明火烟雾目标检测项目部署1 拉取Docker PyToch镜像2 配置系统环境2 1 更换软件源2 2 下载vim2 3 解决vim中文乱码问题 3 运行项目3 1 拷贝项目到容器中3 2 安装项目所需的
  • 操作系统实践课作业(南航)

    操作系统实践课作业 xff08 南航 xff09 文章目录 操作系统实践课作业 xff08 南航 xff09 1 job21 1 main c1 2 math c1 3 Makefile 2 job32 1 myecho c2 2 myca
  • 在Linux系统下安装Neo4j图数据库

    在Linux系统下安装Neo4j图数据库 文章目录 在Linux系统下安装Neo4j图数据库1 Java JDK1 1 安装1 2 查看安装路径 2 Neo4j2 1 下载2 2 拷贝到容器中2 3 修改neo4j conf配置文件2 4
  • 大数定律 与 中心极限定理 的理解

    目录 1 大数定律 2 中心极限定理 1 大数定律 当样本的数量足够大时 xff0c 样本的统计特性就可以近似代表总体的统计特性 大数 是指样本的数量足够大或者试验的次数足够多 2 中心极限定理 设总体为 为总体的 N 个样本集 xff0c
  • 操作系统实践05—文件描述符和系统调用

    操作系统实践05 文件描述符和系统调用 文章目录 操作系统实践05 文件描述符和系统调用1 概念1 1 文件描述符1 2 系统调用1 3 例子 2 内核实现2 1 file结构体2 2 文件描述符表2 3 进程控制块2 4 私有的文件描述符
  • 医疗问答机器人项目部署

    医疗问答机器人项目部署 文章目录 医疗问答机器人项目部署1 拉取TensorFlow镜像2 配置系统环境2 1 更换软件源2 2 下载vim2 3 解决vim中文乱码问题2 4 安装Neo4J图数据库2 5 安装网络工具包 3 运行项目3
  • SimpleITK学习

    SimpleITK学习 文章目录 SimpleITK学习1 SimpleITK ReadImage path 2 SimpleITK GetArrayFromImage itk img 3 itk img GetOrigin 4 itk i
  • 【Docker】服务器部署项目

    服务器部署项目 文章目录 服务器部署项目1 远程连接服务器2 在Linux系统上安装Docker2 1 卸载旧版本2 2 使用 APT 安装2 3 安装Docker2 4 使用脚本自动安装2 5 启动Docker2 6 测试 Docker
  • 计算机网络04—网络层

    网络层 学习参考资料 xff1a 湖南科技大学 计算机网络谢希仁 计算机网络 xff08 第7版 xff09 文章目录 网络层1 概述1 1 IP协议及配套协议 2 两种服务2 1 面向连接的虚电路服务2 2 无连接的数据报服务2 3 对比
  • torch.nn学习

    torch nn学习 文章目录 torch nn学习1 卷积层1 1 Conv2d 2 池化层2 1 MaxPool2d2 2 MaxUnpool2d2 3 AvgPool2d 3 代码实践3 1 Inception Module3 2 R
  • 深度学习基础知识点【更新中】

    深度学习基础知识点 文章目录 深度学习基础知识点1 数据归一化2 数据集划分3 混淆矩阵4 模型文件5 权重矩阵初始化6 激活函数7 模型拟合8 卷积操作9 池化操作10 深度可分离卷积11 转置卷积 1 数据归一化 过大的输入数据未归一化
  • VS Code配置C/C++环境

    VS Code配置C C 43 43 环境 文章目录 VS Code配置C C 43 43 环境1 下载Visual Studio Code2 下载MinGW3 VS Code设置3 1 下载插件3 2 新建工作区3 3 C 43 43 环
  • 计算机网络05—运输层

    运输层 学习参考资料 xff1a 湖南科技大学 计算机网络谢希仁 计算机网络 xff08 第7版 xff09 文章目录 运输层1 概述1 1 两个主要协议1 2 端口 2 用户数据报协议UDP3 传输控制协议TCP3 1 概述3 2 可靠运
  • 【2022春招研发】字节笔试记录(测试方向)

    20220410字节笔试 测试方向 文章目录 20220410字节笔试 测试方向一 编程题2道 xff08 50分 xff09 二 单选题10道 xff08 20分 xff09 三 多选题10道 xff08 30分 xff09 一 编程题2
  • 浏览器主页被劫持篡改了怎么办

    就想下载个驱动 xff0c 结果一通操作把我的 Edge 浏览器主页篡改成了 桔梗网 xff0c 就下面这个网站 算了不喷它了 xff0c 来说说怎么改回去吧 其他浏览器的修改方式相同 找到 Microsoft Edge 浏览器的桌面快捷方
  • 【2022春实习】百度笔试记录(机器学习/数据挖掘/自然语言)

    20220412百度笔试 机器学习 数据挖掘 自然语言 文章目录 20220412百度笔试 机器学习 数据挖掘 自然语言一 选择题30道 xff08 60分 xff09 二 问答题1道 xff08 20分 xff09 三 系统设计题1道 x
  • 【算法工程师】华为技术面面试记录

    20220419华为技术面 面试岗位是算法工程师 文章目录 20220419华为技术面1 自我介绍 2 算法题3 专业知识3 1 数据结构3 2 计算机网络3 3 操作系统3 4 设计模式3 5 机器学习3 6 其他 4 提问环节 1 自我

随机推荐

  • 操作系统实践06—线程

    操作系统实践06 线程 文章目录 操作系统实践06 线程1 创建线程1 1 原型1 2 线程参数1 3 参数类型1 4 例子一1 5 例子二 2 等待线程2 1 原型2 2 线程返回值2 3 例子一2 4 例子二 3 线程互斥3 1 初始化
  • VS Code指定扩展安装位置

    VS Code指定扩展安装位置 默认情况下 xff0c Windows vscode的安装路径为C Users 用户名 vscode extensions 如果想要自定义扩展的安装路径 xff0c 无法直接在vscode中修改 但是 xff
  • Ubuntu 网络配置顺序:(Ubuntu 16.4)

    网络配置顺序 xff1a xff08 Ubuntu 16 4 xff09 1 xff0c 网卡硬件 xff08 硬件 vm DHCP用NAT直接到物理网 xff0c 静态用桥接通过本地网络链接转发 xff09 xff0c 2 xff0c 系
  • C语言实现汉诺塔问题

    目录 一 程序 1 实现代码 2 程序执行结果 二 背景 1 汉诺塔问题描述 2 直观理解 3 思考过程 三 函数执行过程 举例 n 61 2 四 总结 递归问题 一 程序 1 实现代码 include lt stdio h gt 函数名
  • ubuntu 系统下运行DQN Flappy bird

    github链接 xff1a xff08 两个项目均可运行成功 xff0c 推荐第二个 xff0c 只有200多行 xff0c 好入门 xff09 https github com songrotek DRL FlappyBird http
  • eclipse中如何查看程序源码

    在eclipse中如何查看程序源码 1 查看方法 xff0c 按下Ctrl键同时 xff0c 用鼠标指向自己想要查看源码的关键字 xff0c 该字会出现下划线 xff0c 单击左键 xff0c 就可以进入源码查看了 2 在此前 xff0c
  • 基于51单片机的智能窗帘proteus仿真数码管显示

    硬件设计 该硬件设计是基于51单片机为MCU xff0c ADC采用ADC0804 xff0c 电机驱动芯片是L298 xff0c 显示部分采用的是4位数码管 ADC0804芯片的简介 xff1a 工作电压 xff1a 43 5V xff0
  • Mac VSCode 配置Gitee |使用Sourcetree关联Gitee仓库

    目录 一 使用Git的基本操作 xff08 如果只是想看如何上传到gitee的直接跳过这个 xff09 xff1a 1 安装插件GitLens 2 初始化 3 git文件 4 创建一个示例文件 5 操作日志 6 操作日志查看 7 版本回退
  • 马尔可夫链 以及 隐马尔可夫模型(HMM)

    背景 xff1a 马尔可夫过程 xff08 Markov process xff09 是一类随机过程 它的原始模型马尔科夫链 xff0c 由俄国数学家A A Markov于1907年提出 马尔可夫过程是研究离散时间动态系统状态空间的重要方法
  • AIOps探索:基于VAE模型的周期性KPI异常检测方法——VAE异常检测

    AIOps探索 xff1a 基于VAE模型的周期性KPI异常检测方法 VAE异常检测 参考文章 xff1a xff08 1 xff09 AIOps探索 xff1a 基于VAE模型的周期性KPI异常检测方法 VAE异常检测 xff08 2 x
  • 51单片机系列--蜂鸣器

    工作原理 蜂鸣器发声原理是电流通过电磁线圈 xff0c 使电磁线圈产生磁场来驱动振动膜发声的 xff0c 因此需要一定的电流才能驱动它 51单片机IO口输出的TTl电流无法驱动蜂鸣器 xff0c 故而蜂鸣器内部需要一个三极管来进行电流放大
  • debian9.8安装网卡驱动

    一 挂载本地镜像源 xff08 参考下面博客 xff09 debian9 8添加iso为本地源 weixin 46027366的博客 CSDN博客 二 配置安装所需环境 1 xff09 安装gcc和cmake xff0c 命令行输入如下命令
  • 浮点型数据的输入和输出(C语言)

    目录 1 浮点型数据的输入 1 1 单精度输入 1 2 双精度和长双精度 2 浮点型数据的输出 2 1 浮点数的默认输出 2 2 指定输出格式 m n f 2 3 输出示例 3 案例 3 1 案例 1 浮点型数据的输入 1 1 单精度输入
  • 开学送给她的礼物(Python实现)

    目录 1 卿为朝朝暮暮 2 情感起伏 3 礼物赠送 4 Python之实现turtle 1 卿为朝朝暮暮 先手抄一遍 xff0c 然后再键盘敲出来 xff1a 飞鸟集中的一句话 xff0c 改编的一首诗是过样的 浮世万千 xff0c 吾爱有
  • 最详细matlab 2018a安装教程步骤.

    链接 xff1a https pan baidu com s 1XjfAKeFY otNy7HfGhYQCw 提取码 xff1a cmzv 来自百度网盘超级会员V3的分享 1 鼠标右击 Matlab R2018a Win64 压缩包 xff
  • 牵着她——表白不成功算我输(Python实现)

    目录 1 牵着她的手一直走下去 2 一首小情诗送给甜甜的她 3 历史总结的哲学想法 4 表白不成功算我输 xff08 Python代码 xff09 1 牵着她的手一直走下去 今天牵着她的手 xff0c 她很贴心 一起并肩赏樱花 x1f338
  • Python|十五个超级炫酷代码

    x1f96c x1f96c x1f96c 欢迎来到本博客 x1f60a x1f60a x1f60a 本次博客内容将分享几个超级炫酷的Python代码和前端 x1f4dd 目前更新 xff1a x1f31f x1f31f x1f31f 炫酷炫
  • 【无人机】四轴无人机的轨迹进行可视化和动画处理(Matlab代码实现)

    x1f4cb x1f4cb x1f4cb 本文目录如下 xff1a 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 随着传感器检测技术 智能控制技术和材料技术的快速发展 四轴无人机及其配套系统的发展越来越成熟
  • 【无人机】四旋翼飞行器控制、路径规划和轨迹优化(Matlab代码实现)

    x1f4a5 x1f4a5 x1f4a5 x1f49e x1f49e x1f49e 欢迎来到本博客 x1f4a5 x1f4a5 x1f4a5 x1f3c6 博主优势 xff1a x1f31e x1f31e x1f31e 博客内容尽量做到思维
  • Viterbi算法(维特比算法)

    维特比算法背景 xff1a 安德鲁 维特比 xff08 Andrew J Viterbi xff09 xff0c CDMA之父 xff0c IEEE Fellow xff0c 高通公司创始人之一 xff0c 高通首席科学家 他开发了卷积码编