我是数据结构的新手想知道这个图的流程如上所述,它用于计算两个字符串之间的最小编辑距离,在图中我理解字符串1是三个长度而字符串2也是三个长度,所以教程从eD(3,3)显示图表,然后为什么图形在eD(3,2),eD(2,3),eD(2,2)中再次分割为2级递归。这意味着什么?请详细说明。为什么我们不能拆分2级,比如eD(3,2),eD(2,3)。
我正在关注此网址:https://www.geeksforgeeks.org/dynamic-programming-set-5-edit-distance/
答案 0 :(得分:0)
好的,所以基本上在编辑距离的情况下,我们试图插入,更新或删除元素。因此,我们的基本方法是在每个点尝试所有这三个可用的操作,并检查哪个案例可以得到最好的结果。
具体到您尝试理解的情况,以下是该方案:
eD(3,3) = eD(2,2) if str1[3] == str2[3] # Without incuring any cost, we find edit distance of the remaining strings.
else l + min(del, ins, rep)
,其中
del = eD(2,3)
,删除了str1的最后一个字符,并查找剩余字符串的编辑距离。
ins = eD(3,2)
,在str1中插入str2的最后一个元素,因此现在我们找到剩余字符串之间的编辑距离。例如。 'adc'
和'axf'
,如果我们将'f'
添加到第一个字符串,它将变为'adcf'
。因此,现在,两个字符串的最后一个字符是相同的,我必须最终找到'adc'
和'ax'
之间的编辑距离,因此它变为eD(3,2)
。
rep = eD(2,2)
,用str2的最后一个元素替换str1的最后一个元素,并找到剩余字符串的编辑距离。例如。 'abc'
和adf
,如果我们将第一个字符串的最后一个字符替换为第二个字符串的最后一个字符,我们将获得'abf'
和'adf'
,就像现在的最后一个字符一样两个字符串都相同,最终我们找到'ab'
和'ad'
之间的编辑距离。因此,eD(2,2)