标签:最优 一个 成本 另一个 距离 元素 编辑距离 动态 整理
最短编辑距离是指两个字符串,把其中一个字符串转为另一个字符串所需要花费的最小操作成本。
设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));
可直接用递归求解或者动态规划求解。
标签:最优 一个 成本 另一个 距离 元素 编辑距离 动态 整理
原文地址:https://www.cnblogs.com/SHQHDMR/p/10664927.html