机器学习面试:维特比算法

维特比算法主要用于解决特殊形式的图——篱笆网络的最长路径问题。不同于迪杰斯特拉算法求最短路径,动态规划是解决最长路径问题的直观方法。通过递推公式dis[i]=min(dis[j]+c[j][i]),可以将问题分解为求解子问题,从而找到从A到E的最长路径。
摘要由CSDN通过智能技术生成

维特比算法主要用来解决篱笆网络,老实讲我第一次听到这个名字是发懵的,网络我是知道的,说白了就是图(迪杰特斯拉算法)
在这里插入图片描述
但是,篱笆网络是值下面这种一列一列的图,只会前面连接到后面,而且不会跳层连接,可以说是一种非常特殊且友好的图了(正常的图能逼死强迫症)在这里插入图片描述

动态规划求最长路径

现在问题是要求出从A到E的最长路径。我们都知道dijkstra可以求最短路径,是否可以求最长路径呢?答案好像是不可以的(但是看了评论,有人说用一个最大值减去所有的路径 x − = x m a x − x x^-=x_{max}-x x=xmaxx,这样原来大的值就变成现在小的值了,这时再用dijkstra求最短路径)。但是对我来讲,最直接的办法就是动态规划(无法理解dijkstra,怎么看都是动态规划)。
我们假设A到E点的最短路径为dis[A][E],到达E之前是先要经过D1,D2,D3,那么最短路径可以表示为
d i s [ E ] = m i n ( d i s [ D 1 ] + c [ D 1 ] [ E ] , d i s [ D 2 ] + c [ D 2 ] [ E ] , d i s [ D 3 ] + c [ D 3 ] [ E ] ) dis[E]=min(dis[D1]+c[D1][E],dis[D2]+c[D2][E],dis[D3]+c[D3][E]) dis[E]=min(dis[D1]+c[D1][E],dis[D2]+c[D2][E],dis[D3]+c[D3][E])可以看到,我们把求dis[E]的问题转化为求解子问题dis[D1]等等,写成递推式为 d i s [ i ] = m i n ( d i s [ j ] + c [ j ] [ i ] ) dis[i]=min(dis[j]+c[j][i]) dis[i]=min(dis[j]+c[j][i])其中 j j j表示与 i i i边有连接的节点。

如何通俗地讲解 viterbi 算法? - 路生的回答 - 知乎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值