python实现维特比算法

对于维特比算法,首先想到的就是高通公司,对于现在的通信行业的两大巨头公司之一,高通公司的发家是由器创始人维特比发明了一种高效的通信解码技术,维特比算法。

对于维特比算法是什么,以一个例子来讲述什么是维特比算法,假设由一个村庄,某村民的身体在每天只会出现3种,一种是健康,一种是咳嗽,一种是感冒,前后两天的身体状况变化遵循一定的规律,如果前一天村民的身体监看个,那么第二天身体状况会以一定的概率转变成为3种状态之一,状态之间的转换概率如下图:

添加图片注释,不超过 140 字(可选)

用下图来表示村民身体状态转换的所有可能情况:

添加图片注释,不超过 140 字(可选)

对于上图职工显示,上一层多种状态会依据不同概率转换到下一层的相应状态,表示状态转换的线条相互交织构成了篱笆形态。假设第一天村民的状态是健康,第四天的状态是健康,那么这四天村民的状态转换有多种可能,其中一种可能的情况如下:

添加图片注释,不超过 140 字(可选)

上图所表示的就是村民第一天健康,第四天健康时,四天状态的一种可能情况,显然从第一天的某一种状态开始触发,有多种不同路径可以抵达第四天种3种状态种的一种,每一条路径的发生可能性都对应路径上概率的乘积,如果路径不同,那对应的概率也不同。

由此有必要设计一种更有效的办法,也就是动态规划算法。

添加图片注释,不超过 140 字(可选)

对于以上问题使用python实现维特比算法的代码实现如下:

n = 4
C = viterbi(n)       
for i in range(3):for j in range(3):print("the biggest probability from status {0} to status{1} after {2} days is {3}: ".format(i, j, n, C[i][j][n-1]))
def  find_probability_path(i, j , k):  #获得第一天从状态i开始经过k天后抵达状态j的最大概率路径path = []while k > 0:t = 0p = C[i][0][k - 1] * D[0][j]if C[i][1][k - 1] * D[1][j] > p:p = C[i][1][k - 1] * D[1][j]t = 1if C[i][2][k - 1] * D[1][j] > p:p = C[i][1][k - 1] * D[1][j]t = 1path.append(t)k -= 1path.reverse()path.append(j)path.insert(0, i)return path
days = 3
i = 2
j = 2
path = find_probability_path(i, j, days - 1)
print("the biggest probability path from status {0} to status{1} after {2} days is : {3}".format(i, j, days, path))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/699085.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何查看Linux中运行了哪些应用

在Linux中,有多种方法可以查看正在运行的应用程序。以下是一些常用的命令: ps 命令:ps 命令用于显示当前终端会话中运行的进程。要查看系统上运行的所有进程,可以使用 -e 或 -A 选项。例如: ps -e或 ps -A这将列出所有…

TiDB离线部署、Tiup部署TiDB

先做tidb准备工作: 部署 TiDB 前的环境检查操作:TiDB 环境与系统配置检查 | PingCAP 文档中心 1.查看数据盘 fdisk -l (2,3)本人的分区已经是 ext4 文件系统不用分区,具体官方文档的分区: 4.查看数据盘…

Python reversed函数

在Python编程中,reversed()函数是一个内置函数,用于反转序列对象的元素顺序。这个函数可以应用于列表、元组、字符串等可迭代对象,并返回一个反向迭代器,可以按照相反的顺序遍历序列中的元素。本文将深入探讨Python中的reversed()…

Vue学习之计算属性

模板中的表达式虽然方便,但也只能用来做简单的操作。如果在模板中写太多逻辑,会让模板变得臃肿,难以维护。比如说,我们有这样一个包含嵌套数组的对象: const author reactive({name: John Doe,books: [Vue 2 - Advan…

【算法与数据结构】1971、LeetCode寻找图中是否存在路径

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:本题应用并查集的理论直接就可以解决:【算法与数据结构】回溯算法、贪心算法、动态规划、图…

时域系统到频域响应的直观解析及数学推导

课本里经常有已知系统时域的差分方程,求系统的频率响应这样的题,老师会讲怎么带公式进去解决,怎么查表解决,但我们总时无法直观地理解这两种转换的特殊关联在哪里,这篇文章以FIR滤波器为例,不仅列出了课本里…

【Docker】免费使用的腾讯云容器镜像服务

需要云服务器等云产品来学习Linux可以移步/-->腾讯云<--/官网&#xff0c;轻量型云服务器低至112元/年&#xff0c;新用户首次下单享超低折扣。 目录 1、设置密码 2、登录实例&#xff08;sudo docker login xxxxxx&#xff09; 3、新建命名空间&#xff08;每个命名空…

高刷电竞显示器 - HKC VG253KM

今天给大家分享一款高刷电竞显示器 - HKC VG253KM。 高刷电竞显示器 - HKC VG253KM源于雄鹰展翅翱翔的设计灵感&#xff0c;严格遵循黄金分割比例的蓝色点晴线条&#xff0c;加上雾面工艺及高低起伏错落有致的线条处理&#xff0c;在VG253KM的背部勾勒出宛若大鹏展翅的鹰翼图腾…

Python实战:统计字符串中的英文字母、空格、数字及其他字符出现的个数

Python实战&#xff1a;统计字符串中的英文字母、空格、数字及其他字符出现的个数 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程 &…

个人博客系统测试

文章目录 一、项目介绍二、测试1. 功能测试2. 自动化测试&#xff08;1&#xff09;添加相关依赖&#xff08;2&#xff09;新建包并在报下创建测试类&#xff08;3&#xff09;亮点及难点 一、项目介绍 个人博客系统采用前后端分离的方法来实现&#xff0c;同时使用了数据库来…

windows11本地深度学习环境搭建Anacond,keras,tensorflow,pytorch, jupyter notebook

前言 工欲善其事&#xff0c;必先利其器。 第一步 安装Anaconda 下载地址&#xff1a; https://www.anaconda.com/download 路径默认 这里都勾选上 然后会卡在这里&#xff0c;卡很久&#xff0c;不用管&#xff0c;等着就行 第二步 配置环境 conda env list 列出所有…

Redis可视化工具——RedisInsight

文章目录 1. 下载2. 安装3. RedisInsight 添加 Redis 数据库4. RedisInsight 使用 RedisInsight 是 Redis 官方出品的可视化管理工具&#xff0c;支持 String、Hash、Set、List、JSON 等多种数据类型的管理&#xff0c;同时集成了 RedisCli&#xff0c;可进行终端交互。 1. 下载…

电子器件系列63:焊带(光伏焊带)

光伏焊带&#xff0c;又称涂锡焊带。光伏焊带是光伏组件的重要组成部分&#xff0c;属于电气连接部件&#xff0c;应用于光伏电池片的串联或并联&#xff0c;发挥导电聚电的重要作用&#xff0c;以提升光伏组件的输出电压和功率。光伏焊带是光伏组件焊接过程中的重要材料&#…

ShardingSphere 5.x 系列【15】分布式主键生成器

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.1.0 本系列ShardingSphere 版本 5.4.0 源码地址:https://gitee.com/pearl-organization/study-sharding-sphere-demo 文章目录 1. 概述2. 配置3. 内置算法3.1 UUID3.2 Snowflake3.3 NanoId3.4 CosId3.5 Co…

美客多如何批量注册买家账号?

美客多在南美电商领域可是个大佬。它的实力强大&#xff0c;影响力广泛&#xff0c;被大家尊称为南美电商巨头。它的业务范围覆盖了整个拉丁美洲&#xff0c;特别是一些重要的国家&#xff0c;比如墨西哥、阿根廷、玻利维亚、巴西、智利和哥伦比亚&#xff0c;这些地方都有它的…

【开源】SpringBoot框架开发婚恋交友网站

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 会员管理模块2.3 新闻管理模块2.4 相亲大会管理模块2.5 留言管理模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 会员信息表3.2.2 新闻表3.2.3 相亲大会表3.2.4 留言表 四、系统展示五、核心代码5.…

cookie伪造 [BSidesCF 2019]Kookie1

打开题目 提示用admin用户登录 尝试弱口令发现&#xff0c;登录失败 显示用admin&passwordadmin!进行登录 有发现说cookie&#xff0c;就尝试用cookie登录&#xff1a; f12编辑添加cookie重发包: 或者bp抓包 Cookie:usernameadmin 用admin登录成功 得到flag: 参考文章&…

Nmap详解

Nmap(Network Mapper,网络映射器)是一款开放源代码的网络探测和安 全审核工具。它被设计用来快速扫描大型网络&#xff0c;包括主机探测与发现、开放的端口情 况、操作系统与应用服务指纹识别、WAF 识别及常见安全漏洞。它的图形化界面是 Zenmap, 分布式框架为DNmap。 Nm…

TensorFlow2.x 精选笔记(1)数据基本操作与线性代数

学习参考&#xff1a; 动手学深度学习2.0Deep-Learning-with-TensorFlow-bookpytorchlightning 一、数组与张量 虽然张量看起来是复杂的对象&#xff0c;但它们可以理解为向量和矩阵的集合。理解向量和矩阵对于理解张量至关重要。 向量是元素的一维列表&#xff0c;向量是一…

C++的vector容器->基本概念、构造函数、赋值操作、容量和大小、插入和删除、数据存取、互换容器、预留空间

#include<iostream> using namespace std; #include <vector> //vector容器构造 void printVector(vector<int>& v) { for (vector<int>::iterator it v.begin(); it ! v.end(); it) { cout << *it << " "…