Algorithm 如何将递归定义的输入大小函数转换为问题输入大小的直接函数?
假设我有一个对大小为n的输入进行运算的算法,我知道n所用的时间是n-1所用时间的两倍。在这个简单的例子中(假设n=0需要1秒),我可以观察到算法需要2n秒 是否有一种通用方法可以将递归定义的定义转换为更熟悉的直接表达式类型? 特别是: T(n)=(n/b)+nc时 如果logbaAlgorithm 如何将递归定义的输入大小函数转换为问题输入大小的直接函数?,algorithm,math,time,Algorithm,Math,Time,假设我有一个对大小为n的输入进行运算的算法,我知道n所用的时间是n-1所用时间的两倍。在这个简单的例子中(假设n=0需要1秒),我可以观察到算法需要2n秒 是否有一种通用方法可以将递归定义的定义转换为更熟悉的直接表达式类型? 特别是: T(n)=(n/b)+nc时 如果logbac,则T(n)=O(nlogba) 这是一个有用的定理,但并不能完全回答你的问题 你要找的是递归关系的生成函数。一般来说,这些问题只在非常简单的情况下可解,即当f(n)=Af(n-1)+Bf(n-1)和f(0)=f(1)
和(在“另请参阅”下)列出一些常见递归关系类的封闭形式。然而,复杂的(非线性)递推关系可能很难找到的封闭形式的解决方案,如果一个存在的话。没有解决这些问题的通用算法。如果是线性的,可以将关系表示为矩阵,并找到特征值,将其分解为一种形式,使特征值可以提高到一个幂次,如前所述 f(n)=2**n而不是f(n)=2*f(n-1)