我正在搜索算法,在O(log n)时间内找到2次线性函数的组合n次(其中n可以大到10 ^ 18)。我只得到一个pdf包含2个函数的多项式组合,使用分而治之算法进行大度求解。
我想知道我的线性函数组合n次的问题是否也可以使用O(log n)复杂度中的分而治之算法来解决?
如果是,请解释算法。
提前谢谢。
编辑1:函数f(x)n次的组合是... n次。这里的功能是自己组成n次。没有2个功能。
答案 0 :(得分:3)
你可以将线性函数f(x)= ax + b的应用表示为2乘2矩阵乘以向量(x,1)。
Intent in = new Intent(getActivity(), ActivityShowGallery.class);
in.putExtra(ActivityShowGallery.Gallery, m);
in.putExtra(ActivityShowGallery.position, 0);
getActivity().startActivity(in);
对x应用f n次是将矩阵n次乘以(x,1),或等效地将提升的矩阵乘以n的幂乘以(x,1)。
(f(x)) = ( a b ) (x)
( 1 ) ( 0 1 ) (1)
您可以通过平方来计算矩阵幂。
无论你是以实数,整数还是以数M为模的整数,都可以工作。