我一整天都在解决一个问题,但似乎无法掌握它。这个任务是展示递归实现的编辑距离具有时间复杂度Ω(2max(n,m)),其中n和m是被测量单词的长度。
这个实现类似于这个小Python例子:
def lev(a, b):
if("" == a):
return len(b) # returns if a is an empty string
if("" == b):
return len(a) # returns if b is an empty string
return min(lev(a[:-1], b[:-1])+(a[-1] != b[-1]), lev(a[:-1], b)+1, lev(a, b[:-1])+1)
来源:http://www.clear.rice.edu/comp130/12spring/editdist/
我尝试过为不同的短单词绘制递归深度树,但我找不到树深度和复杂度之间的联系。
我的计算得出的递归公式:
m = length of word1
n = length of word2
T(m,n) = T(m-1,n-1) + 1 + T(m-1,n) + T(m,n-1)
With the base cases:
T(0,n) = n
T(m,0) = m
但是我不知道该如何进行,因为每次调用都会导致3个新的调用,因为长度未达到0。
如果您能提供任何提示,让我如何证明下限复杂度为Ω(2max(n,m)),我将不胜感激。