维特比算法

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

动态规划求最长路径

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