最短编辑距离是指两个字符串,把其中一个字符串转为另一个字符串所需要花费的最小操作成本。

设dp[i][j]为Xi与Yj的最短编辑距离,则Xi与Yj处于最优解时的排列有三种情况

1.Xi最后一个元素xi位于Yj最后一个元素yj的左边

2.Xi最后一个元素xi位于Yj最后一个元素yj的右边

3.Xi最后一个元素xi与Yj最后一个元素yj重合

无论最终dp[i][j]的字符串如何对齐,只用取三种情况的最小值即可。

对于1,转化操作时,yj是必然要删掉的,故必然有1个单位的操作成本,因为dp[i][j]是最优操作成本,故dp[i][j]-1就是Xi与Yj-1的最优操作成本,即dp[i][j]-1=dp[i][j-1],即dp[i][j] = dp[i][j-1] + 1。

对于2,同理,对称,xi是必然要删掉的,dp[i][j] = dp[i-1][j] + 1

对于3,若xi = yj,则没有任何成本,此时Xi与Yj的最小操作成本与Xi-1和Yj-1相同,dp[i][j] = dp[i-1][j-1] + 0;若xi ≠ yj,则必然要将xi替换为yj或反之,故必然有1个单位的操作成本,所以dp[i][j] - 1是Xi-1与Yj-1的最优成本,dp[i][j] = dp[i-1][j-1] + 1;

整理递归式:dp[i][j] = min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1] + diff(xi, yj));

可直接用递归求解或者动态规划求解。

posted on 2019-04-07 12:28  SHQHDMR  阅读(186)  评论(0编辑  收藏  举报