【问题标题】:Divide and conquer for function compositions功能组合的分而治之
【发布时间】:2016-04-04 04:28:36
【问题描述】:

我正在搜索算法以在 O(log n) 时间内找到 2 个线性函数 n 次(其中 n 可以大到 10^18)的组合。我刚刚得到一个pdf,其中包含使用分治算法的 2 个大度函数的多项式组合。

我想知道我的线性函数组合问题是否也可以使用 O(log n) 复杂度的分治算法来解决?

如果是,请解释算法。

谢谢,提前。

编辑 1: 函数 f(x) n 次的组成是 fofof...n 次。这里函数将被组合到自身 n 次。没有 2 个函数。

【问题讨论】:

  • 提示:您正在寻找平方和乘法算法的变体。
  • 这个问题可能会在math.stackexchange上得到更多关注。
  • 这个问题太不清楚了……你的功能是什么?当您说作文n 次时,您期望什么?如果n=2,是指fog还是fogofog或者fogog等等?
  • @Jan Dvorak,你能解释一下你的方法吗?
  • 两个线性函数的合成是一个线性函数,不管是哪个领域。玩得开心。

标签: algorithm divide-and-conquer function-composition


【解决方案1】:

您可以将线性函数 f(x) = ax + b 的应用表示为 2×2 矩阵乘以向量 (x, 1)。

(f(x)) = ( a b ) (x)
( 1  )   ( 0 1 ) (1)

对 x 应用 f n 次就是将矩阵乘以 n 次到 (x, 1),或者等效地,将矩阵的 n 次幂乘以 (x, 1)。

(f^n(x)) = ( a b )^n (x)
(  1   )   ( 0 1 )   (1)

您可以使用平方乘幂来计算矩阵幂。

无论您是在处理实数、整数还是以某个数 M 为模的整数,这都有效。

【讨论】:

    猜你喜欢
    • 2011-05-22
    • 2011-12-31
    • 2018-06-23
    • 2013-11-09
    • 2013-02-05
    • 2012-09-08
    • 2018-01-26
    • 2013-01-31
    • 2013-01-16
    相关资源
    最近更新 更多