递归树,求解递推方程

时间:2009-10-06 01:46:28

标签: algorithm recursion heuristics recurrence

据我所知有4种方法可以解决递归方程: 1-递归树 2-替换 3 - 迭代 4 - 衍生

我们被要求使用Substitution,我们需要猜测输出的公式。我从CLRS书中读到,没有什么魔法可以做到这一点,我很好奇是否有任何启发式方法可以做到这一点?

我当然可以通过绘制递归树或使用迭代来获得一个想法但是,因为输出将是Big-OH​​或Theta格式,公式不一定匹配。

是否有人建议使用替换来求解递归方程?

2 个答案:

答案 0 :(得分:3)

请注意,解决递归方程的可能方法列表绝对不完整,它只是他们教授计算机科学家的一套工具,因为它们很可能解决你的大部分问题。

对于递归方程的精确解,数学家使用称为生成函数的工具。生成函数为您提供精确的解决方案,并且通常比主定理更强大。

在线有一个很好的资源来了解这里。 http://www.math.upenn.edu/~wilf/DownldGF.html

如果你仔细阅读前几个例子,你应该立即掌握它。

你需要一些数学背景并理解基本的泰勒系列。 http://en.wikipedia.org/wiki/Taylor_series

生成函数在概率上也非常有用。

答案 1 :(得分:1)

对于简单的,只需采取“合理”的猜测。

对于更复杂的问题,我会继续使用递归树 - 在我看来,它是用于生成猜测的最简单的“算法”。请注意,使用递归树来证明边界可能很困难(细节很难正确)。复发树对于形成猜测非常有用,然后通过替换来证明。

我不确定你为什么说这些公式与Big-O或Theta的输出不匹配。它们通常不完全匹配,但这是Big-O的一部分。回到替代的部分技巧是知道如何插入Big-O解决方案以使替换代数工作。 IIRC,CLRS确实解决了一两个这样的问题。