首页 > 其他 > 详细

动态规划——最短编辑距离

时间:2015-09-30 14:29:04      阅读:239      评论:0      收藏:0      [点我收藏+]

    编辑距离是指两个字串之间,从一个转成另一个所需要的最少编辑操作次数,许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。 
问题 
    给定两个字符串S1和S2,求S2和S1的编辑距离,即至少需要经过多少步编辑操作才可以将S1变成S2。

分析 
    定义“状态” edit[i][j],表示将S1的长度为i的前缀S1[1...i]到S2的长度为j的前缀S2[1....j]的编辑距离。则显然有:

if (i == 0 && j == 0)
    edit[i][j] = 0;
else if (i == 0 && j > 0)
    edit[i][j] = j;
else if(j == 0 && i > 0)
    edit[i][j] = i;
else
    edit[i][j] = min{edit[i-1][j] + 1, edit[i][j-1] + 1, edit[i-1][j-1] + f(i, j)}
//其中,当第一个字符串的第i个字符不等于第二个字符串的第j个字符时,f(i, j) = 1; 否则 = 0.

 

动态规划——最短编辑距离

原文:http://www.cnblogs.com/gtarcoder/p/4848899.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!