关于Bellman最优化原理和动态规划的个人理解

最近一直在研究模板匹配方法的过程,起先一直对模板匹配的过程不能够有一个充分的理解,开始时是对模板序列和样本序列的组织不能够理解,后期又是对其中的关系不能够有清醒的认识,再之后又对Bellman的最优化原理不能够很好的理解,总之是没完没了的看书,找方法。现在对这个过程做一个个人的总结:

一、基于最优路径搜索技术的侧度

    在我进行的工作当中主要是针对相对简单的测试样本波形和参考模板波形进行对比,获取他们的匹配程度。

    1、首先需要创建一个参考模板r(i),i = 1,2,…,I 和测试样本t(j), j = 1,2,…,J 的对应关系,建立一个二维的表格,两个序列的元素作为各自坐标轴的点,即参考模式的序列在横坐标轴(i 轴),测试模式的序列在纵坐标轴(j 轴),组建好这个表格后,在表格的横纵交叉结点上(i,j)都对应一个代价值,它有一个合适的定义函数d(i,j),用于测量各自波形元素 r(i) 和 t(j) 之间的距离。计算从原点(0,0) 到 (I, J)的所有路径的最小距离值D,这个路径成为两个序列的最小代价路径,它揭示了两个序列元素之间的成对对应的最优关系,因为两个序列的长度不同,所以这种对应关系是今后进行匹配操作的关键(如何能够使两个序列依据最小路径进行转换还没有找到明确的方法)也就是说,在模板匹配的第一前提是获取当前两个序列的最优路径,从而获得测试样本与参考模板的完整对应序列。

   2、为了获得可能的最优路径,必须寻找所有可能的路径,这可是一个力气活,计算量会是非常高。在实际的应用中会利用Bellman原理的动态规划算法来解决计算量的问题。Bellman的基本原理是:经过(i,j)的从(i0,j0)到(if,jf)的最优路径是一条由原点(0,0)到结点(i,j)到终点(if,jf)的最优路径的串联。

    原则确定好了之后我可以使用全局约束定义和局部约束来搜索各个结点,而不是全部搜索所有的结点,只是在各个节点的子集中进行,这个过程就是动态规划算法。算法的过程可以进行如下描述:

    a、明确全局和局部约束的内容,全局约束表明路径的起止点分别为(0,0)和(i,j);局部约束为路径经过各个节点时的斜率选择范围,根据书了的例子我们可以定义只关心相同横坐标的3个后驱节点,选择为,(i,j),(i,j+1),(i,j+2)。

    b、在当前节点到3个后驱节点计算过程要考虑本身节点与其前驱节点的最小间距,即在获取最小间距的过程中要判断其后驱节点的距离,要分别对本节点的三个点以及前驱的三个节点进行计算,然后决定当前节点是否转移,上一个确定的节点不用转移,如果需要转移则依据上一节点到本横坐标的某个节点再到前驱节点进行连接确定其最小距离。(现在是这样理解的)

    c、循环操作一直到二维表格的(i,j)位置即可。

  3、获得最优路径之后,需要利用最优路径进行回溯,这时可以揭示出测试样本与参考模板的最优化节点对应关系。(如何回溯还没有总结好)

    原文作者:动态规划
    原文地址: https://blog.csdn.net/jizu_qusg/article/details/3997937
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞