码迷,mamicode.com
首页 > 其他好文 > 详细

最短编辑距离问题理解

时间:2019-04-07 12:41:09      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:最优   一个   成本   另一个   距离   元素   编辑距离   动态   整理   

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

设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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!