我正在尝试设计一种算法,使用分而治之技术生成Hadamard矩阵。为此,我决定使用四个递归调用来生成矩阵的每个项,然后在每个步骤继续递归调用,以减少一个值的Hadamard矩阵。例如,H(3)被分成4个H(2)项,其中一个是负的,依此类推,直到H(0)。在计算出递归关系时,我最终得到了
C(n) = 4C(n-1) + 1.
但是,分治应该涉及输入的分割而不是减少1?从概念上讲,我认为将矩阵划分为较小矩阵的子集将有资格作为分而治之。无论如何,我最终的运行时间为4 ^ n。这对我设计的算法是否准确?
答案 0 :(得分:0)
这很准确。鉴于n
的解释,最终矩阵为2^n
- by - 2^n
,4^n
元素。涉及m
(元素数量)的重复将是
T(m) = 4T(m/4) + 1,
使用O(m)
的解决方案。