关于编辑距离算法的疑惑?
昨天学习编辑距离算法,官方的状态转移方程是;
i==0 ... j==0 ....
当i>=1 && j>=1 dp[i][j]=min(dp[i-1][j]+1,dp[i][j-1]+1,dp[i-1][j-1]]+str1[i]==str2[j]?0:1);
我又在想, 这样的状态方程是否也正确呢?
当 i>=1 && j>=1
if(str1[i]==str2[j]) dp[i][j]=dp[i-1][j-1];
else dp[i][j]=min(dp[i-1][j]+1,dp[i][j-1]+1,dp[i-1][j-1]]+1);
我自己证明不了,就拿去试着去oj测试了,结果是ac了,可是这个方程对吗?
i==0 ... j==0 ....
当i>=1 && j>=1 dp[i][j]=min(dp[i-1][j]+1,dp[i][j-1]+1,dp[i-1][j-1]]+str1[i]==str2[j]?0:1);
我又在想, 这样的状态方程是否也正确呢?
当 i>=1 && j>=1
if(str1[i]==str2[j]) dp[i][j]=dp[i-1][j-1];
else dp[i][j]=min(dp[i-1][j]+1,dp[i][j-1]+1,dp[i-1][j-1]]+1);
我自己证明不了,就拿去试着去oj测试了,结果是ac了,可是这个方程对吗?
...全文
相关推荐
编辑距离算法的总结和分析
字符串的编辑距离,又称为levenshtein距离,是指利用字符操作,把字符串A转换成字符串B所需要的最少操作数,这里的操作包括删除、插入、修改。
计算两个字符串的编辑距离 -- 快速算法
计算两个字符串的编辑距离 -- 快速算法
算法设计编辑距离问题
Problem A:编辑距离问题 Description 设A 和B 是2 个字符串。要用最少的字符操作将字符串A 转换为字符串B。这里所说的字符操作包括 (1)删除一个字符; (2)插入一个字符; (3)将一个字符改为另一个字符。 将字符串A变换为字符串B 所用的最少字符操作数称为字 符串A到B 的编辑距离,记为d(A,B)。试设计一个有效算 法,对任给的2 个字符串A和B,计算出它们的编辑距离 d(A,B)。 编程任务: 对于给定的字符串A和字符串B,编程计算其编辑距离d(A,B)。 Input 输入由多组测试数据组成。 每组测试数据输入的第1 行是字符串A,第2行是字符串B。 Output 对应每组输入,输出的每行中的数是编辑距离d(A,B)。 Sample Input fxpimu xwrs Sample Output 5
fasta算法,Smith-waterman算法,编辑距离算法,最长公共子串算法
fasta算法,Smith-waterman算法,编辑距离算法,最长公共子串算法
编辑距离JS算法
这是用JS编写的一个编辑距离算法,可以用来在网页中检测语句相似性!检测两个字符串的相似性!


