看完这篇文章,你一定能看懂viterbi 算法!

先上图
看完这篇文章,你一定能看懂viterbi 算法!_第1张图片
找出从H到G的最短路径,记得上面的每个箭头都是含有路径长短的的哈,例如H–>A1为3,H–>A2为5,H–>A3为8。
那除了全遍历,还有什么处理方式呢?
让我们来看下面这种方式,即维特比算法去处理最优路径问题。

  1. 让我们一列一列的分析问题。从H到A这一列有:H–>A1,H–>A2,H–>A3,此时,哪一个都可能是全局最短路径的备选项。所以我们继续往下一列即B列看。
  2. 按照B1,B2,B逐个分析,先看B1:
    看完这篇文章,你一定能看懂viterbi 算法!_第2张图片
    有路径:H–>A1–>B1,H–>A2–>B1,H–>A3–>B1
    假设经过累加路径后,H–>A1–>B1最短,故删去其他两条路径,留下此条路径:
    看完这篇文章,你一定能看懂viterbi 算法!_第3张图片
    同理,对于B2,假设经过累加路径后H–>A3->B2最短:
    看完这篇文章,你一定能看懂viterbi 算法!_第4张图片
    对于B3,假设经过累加路径后H–>A2->B3最短:
    看完这篇文章,你一定能看懂viterbi 算法!_第5张图片
    所以,我们获得了上述的三条备选路径,它们每一条都有可能成为未来最短路径的基石。如下图所示:
    看完这篇文章,你一定能看懂viterbi 算法!_第6张图片
  3. 接下来到了C列了,我们继续按照C1,C2,C3节点分析。
    先看C1:
    看完这篇文章,你一定能看懂viterbi 算法!_第7张图片
    我们发现,从H到C1仍然有三条路径:H–>A1–>B1–>C1,H–>A2–>B3–>C1,H–>A3–>B2–>C1。假设经过累加路径后,H–>A3–>B2–>C1最短,则删去其他两条路径,留下该条路径:
    看完这篇文章,你一定能看懂viterbi 算法!_第8张图片
    接下来的C2,C3同理,我们最终得到从G到C这一列的最短路径的备选路径如下:
    看完这篇文章,你一定能看懂viterbi 算法!_第9张图片
  4. 最后,我们来看最后一列:G列:
    看完这篇文章,你一定能看懂viterbi 算法!_第10张图片
    此时从H到G仍有三条路径,假设经过计算后H–>A2–>B3–>C1–>G这条路径的累加路径最短。则我们已经找到了最短路径,若要实现编程,我们进行回溯即可得到最短路径:
    看完这篇文章,你一定能看懂viterbi 算法!_第11张图片
    最后,看完这篇文章,你一定能看懂viterbi 算法!_第12张图片

你可能感兴趣的:(看完这篇文章,你一定能看懂viterbi 算法!)