如何计算下面算法的时间复杂度?有人可以简单地向我解释一下:
equal_ids==true
答案 0 :(得分:3)
假设 m 是prefix
的长度,而 n 是remaining
的长度。然后复杂性由
T(m,n,k)=Θ(m + n)+ T(m + 1,n - 1,k - 1)+ T(m,n - 1,k)
Θ(m + n)术语源于
prefix + remaining.charAt(0), remaining.substring(1)
,通常需要分别创建两个长度约为 m 和 n 的字符串(这可能因各种实现而异)。
除此之外,它很难解决(至少对我来说),除了一些非常简单的界限。例如,很明显,复杂性至少是前缀长度的最小值和 k 的指数,因为
T(m,n,k)≥2T(m,n - 1,k - 1)↠T(m,n,k)=Ω(2 min(n,k)功能)
答案 1 :(得分:0)
假设m是prefix
的长度,n是remaining
的长度。然后复杂性由
T(m,n,k)= 1 + n + 1 + T(m + 1,n - 1,k - 1)+ T(m,n - 1,k)
显然,当n = 0或k = 0时,函数停止。所以,
T(r,n,0)= 1 + r
T(m,0,k)= 1 + 1 + 1 = 3
改革方程式1,我们得到了
T(m,n,k) - T(m,n - 1,k)= 2 + n + T(m + 1,n - 1,k - 1)
在等式1中将n替换为n-1
T(m,n - 1,k) - T(m,n - 2,k)= 2 +(n - 1)+ T(m + 1,n - 2,k - 1)
......继续......
T(m,1,k) - T(m,0,k)= 2 +(1)+ T(m + 1,0,k - 1)
总结一下
T(m,n,k) - T(m,0,k)= 2(n)+(n-1)(n)/ 2 + {T上从0到n - 1的总和( m + 1,a,k - 1)}
改革
T(m,n,k)= n 2 / 2 + 3n / 2 + 3 + {T的从0到n - 1的总和(m + 1,a,k - 1)}
我想我们可以通过使用最后一个方程求解求和得到答案,方程的主导因子就像n k + 1