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

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

时间:2015-09-30 14:31:12      阅读:191      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!