Recursion 具有对数时间复杂度的递归

Recursion 具有对数时间复杂度的递归,recursion,time-complexity,Recursion,Time Complexity,这是一个家庭作业问题。不期待解决方案。。只是在寻找一个正确的方向轻推 设计了一个具有对数时间复杂度的快速算法来计算三重神经网络−1,Nn−2.编写一个递归函数,在输入n>3时返回上述三元组。对于足够大的n,例程使用的操作总数应比计算Nn的明显方法少得多 鉴于: N(0) = 0 N(1) = N(2) = N(3) = 1 N(n) = N(n-1) + N(n-3) N(2k) = N(k)N(k) + 2N(k)N(k−2) + N(k−1)N(k−1) and N(2k−1) = N(k)

这是一个家庭作业问题。不期待解决方案。。只是在寻找一个正确的方向轻推

设计了一个具有对数时间复杂度的快速算法来计算三重神经网络−1,Nn−2.编写一个递归函数,在输入n>3时返回上述三元组。对于足够大的n,例程使用的操作总数应比计算Nn的明显方法少得多

鉴于:

N(0) = 0
N(1) = N(2) = N(3) = 1
N(n) = N(n-1) + N(n-3)
N(2k) = N(k)N(k) + 2N(k)N(k−2) + N(k−1)N(k−1) and
N(2k−1) = N(k)N(k) + 2N(k−1)N(k−2)

**显而易见的方法是计算序列N0,N1中的值。。Nn,因此能够使用预先计算的值。这一点很重要

记住它就行了。递归调用多个对数间隔簇中的所有land,您可以证明这些簇的最大大小的一个简单界限。因为这是家庭作业,我把证据留给你


或者,您可以编写一个函数,通过一次递归调用计算整个集群的值,以获取下一个较低集群的值。这很可能是他们的想法。

我的第一反应是看看是否足够。我编辑了这个问题来澄清。如前所述,我也很喜欢回忆录。但是,很明显,它的时间开销永远不可能小于线性。不过,记忆化并不能计算n以下的所有值。它的计算量会大大少于这个,我的第一反应是检查所需的数值是否是对数n。我已经和几个同学谈过了。我听说回忆录不是人们所期望的。斐波那契数有一种矩阵求幂法。当然,它可以用在这种情况下?如果是的话,有什么建议吗?回忆录可能不是预期的,但它是有效的。我列出了另一种方法来解决这个问题,它可以执行相同的计算而不需要记忆。我看不到任何直接的方法可以将矩阵求幂应用于此,因为您没有处理以前值的线性组合。