关于Viterbi的理解,网上有很多小故事和例子来解释。
下面只是自己对Viterbi的一些总结笔记。
如果要计算S到E的最短距离,最开始的想法都是先遍历S到E的所有路径,然后找到最短的路径。
而Viterbi算法就是从S到E寻找路径的过程中,逐步优化。具体是:
S到a的三个点的距离不能武断地就指出哪条是最短的。每条路的选择都有可能是最终的最短路径。
接着看a到b的距离。如果按遍历来算算,a到b的距离将会有 9 种可能。但是假设S-a1-b2的距离是最短的。此时此刻,就可以把S-a1-b1、S-a1-b3的路径全部去掉。以此类推假设S-a2-b3、S-a3-b1是最短路径。那么最终a到b的路径将会缩减到 3 种。
按照这个方法,总体来说,a到b到c,从原来的27种选择,变成最后的 6 种选择,这样就会大大减少不必要的开销。