关于斜率优化和四边形不等式的讨论
最近学习了四边形不等式和斜率优化。总的来说,都是围绕着决策单调性进行的。
首先是四边形不等式,总结写过了,在这里
http://www.cnblogs.com/nevergoback/archive/2012/06/03/2532814.html
现在说下斜率优化的问题:
斜率优化,就是说把决策与决策之间表示成一个类似斜率的式子,进一步分析其中的单调性,并用队列维护其有用决策。因此斜率优化又称为队列优化。
对于方程,其中,x(i),y(i)都是可以在常数时间内通过f(i)唯一决定的两个量,我们以x(i)为横轴,y(i)为纵轴建立平面直角坐标系,这样一个状态f(i)所决定的二元组就可以用坐标系中的一个点表示。
也就是说对于当前的状态f[n]每一个决策i都是平面上的一个点,我们的目标是找到min P=ax+by 其中a=a[n],b=b[n],也就是找最小的P,然后化简到直线方程的点斜式形式,
即,假设b>0(反之亦然),则我们的任务是使得这条直线的纵截距最小。根据线性规划我们可以想象有一组斜率相同的直线自负无穷向上平移,所碰到的第一个点就是最优决策。
①所以,我们很好理解的就是:所有最优决策点都在平面点集的凸包上。
②然后我们可以去证明决策的单调性,通常是设j1,j2为F[i]的两个决策,且j1<j2,然后我们证明出来如果决策j2比决策j1要优的话要满足什么条件,然后证明对于以后的所有状态j1都优于j2,也就是满足了决策的单调性。
然后我们要维护的就是这个决策的单调性,一般情况下,我们可以使用优先队列来维护这个,而维护的时候判断决策孰优孰劣就是要看②的结论了,实际上我们可以发现②推出的都是一个斜率的式子,维护他的单调性实际上就是维护了一个凸包的一部分。
相关文章
《1D1D动态规划优化初步》
《2006年冬令营汤泽论文》