我正在学习什么是 Knuth Optimization 。
可以通过here
访问相关信息基本上, Knuth Optimization 中有两个假设。
一个是四边形不等式,另一个是单调性
我完全可以理解什么是四边形不等式。但是,由于没有关于 Monotoniciy 的解释,我无法得到它。
单调性 : C [b] [c]< C [a] [d](a,b,c,d)
据我所知, Monotonicity 有点线性特征,如果在它们之外的元素(a,d)之间有两个不同的元素(b,c),则成本在范围b到c小于范围a到d的成本。
那为什么这不适用于链式矩阵问题?
假设有一组矩阵{x1,x2,...,xn}
显然,b到c范围内的乘法成本小于a到d范围内乘法的成本,a到d范围内的元素多于b到c。
有人可以解释一下吗?
答案 0 :(得分:0)
相对单调性也可以在更高的维度上。
设想一个2D平面,你可以握住右下方的平面并抬起它,以便得到A[i-1][j] <= A[i][j] <= A[i][j+1]
。
如果这种单调性成立,那么我们就说使用Knuth Optinimzaton可以优化问题空间。
即F[i][j] = min{F[i][k]+F[k+1][j]}+C[i][j] for k=i to j-1
,
然后只能遍历from k=P[i-1][j] to P[i][j+1]
来优化它
其中P[i][j]
是A[i][j]
最小的点。
原始问题需要O(n ^ 3),而由于上述单调性,现在可以用O(n ^ 2)求解
(注意:这里没有任何两个元素之间的绝对单调性,这就是为什么我把它称为相对单调性,如果两个元素是一个在另一个元素的东南方向那么东南元素是大于或等于另一个,这种关系对Knuth Optimization来说足够好了)