【发布时间】:2013-03-08 09:39:26
【问题描述】:
我想以数学方式计算 LCS 算法问题的递归关系。我的目的是应用大师定理计算复杂度O(2^n)。
/* Returns length of LCS for X[0..m-1], Y[0..n-1] */
int lcs( char *X, char *Y, int m, int n )
{
if (m == 0 || n == 0)
return 0;
if(X[m-1] == Y[n-1])
return 1 + lcs(X, Y, m-1, n-1);
else
return max(lcs(X, Y, m, n-1), lcs(X, Y, m-1, n));
}
任何人都可以解释如何推动这种重复关系?
【问题讨论】:
-
在最坏的情况下,当字符串不同时,在每次调用
lcs()时,您的工作量几乎翻了一番(您调用lcs()2 次)。这会给您带来指数级的复杂性。 -
@AlexeyFrunze 你能给出这个的递归关系吗?
标签: algorithm recurrence