Algorithm 计算最长公共子序列复杂度的数学递推关系
我想用数学方法计算LCS算法问题的递推关系。我的目的是应用master定理来计算复杂性O(2^n)Algorithm 计算最长公共子序列复杂度的数学递推关系,algorithm,recurrence,Algorithm,Recurrence,我想用数学方法计算LCS算法问题的递推关系。我的目的是应用master定理来计算复杂性O(2^n) 任何人都可以解释如何驱动该循环关系?循环关系将是: T(n,m) = T(n-1,m-1)+O(1), if (X[m-1] = Y[n-1]) or T(n-1,m)+T(n,m-1)+O(1), otherwise T(n,m) = T(n-1,m)+T(n,m-1)+O(1) 我们必须考虑最坏的情况,即: T(n,m) = T(n-1,m-1)+O(
任何人都可以解释如何驱动该循环关系?循环关系将是:
T(n,m) = T(n-1,m-1)+O(1), if (X[m-1] = Y[n-1])
or
T(n-1,m)+T(n,m-1)+O(1), otherwise
T(n,m) = T(n-1,m)+T(n,m-1)+O(1)
我们必须考虑最坏的情况,即:
T(n,m) = T(n-1,m-1)+O(1), if (X[m-1] = Y[n-1])
or
T(n-1,m)+T(n,m-1)+O(1), otherwise
T(n,m) = T(n-1,m)+T(n,m-1)+O(1)
自始至终。这可以归结为:
T(n,m) <= 2^(n-1) T(0,m) + ... , if m<n (longest branch of height n)
or
2^(m-1) T(n,0) + ... , if n<m (longest branch of height m)
或
如果n和m相等。在最坏的情况下,当字符串不同时,每次调用
lcs()
时,工作量几乎增加一倍(调用lcs()
2次)。这给了你指数级的复杂性。@AlexeyFrunze你能给出这个的递归关系吗。你能告诉我n&m是什么吗?它们是树的左/右分支吗?另外,X和Y来自哪里?@Auston请检查问题中提供的“int lcs(…)”函数以获得答案。
T(n,m) = O(2^n)