自然语言处理-Minimum edit distance

来源:互联网 发布:sql 相同数据合并 编辑:程序博客网 时间:2024/05/16 06:48
#include <iostream>#include <string>#define min(a,b) ((a)>(b))?(b):(a)using namespace std;int mindistance(string& a, string& b){int n = a.length();int m = b.length();int**dp;dp = new int*[n+1];for (int i = 0; i <= n; ++i)dp[i] = new int[m + 1];dp[0][0] = 0;for (int i = 1; i <= n; ++i)dp[i][0] = i;for (int j = 1; j <= m; ++j)dp[0][j] = j;int temp;for (int i = 1; i <= n; ++i){for (int j = 1; j <= m; ++j){temp = min(dp[i - 1][j] + 1, dp[i][j - 1] + 1);if (a[i-1] == b[j-1])dp[i][j] = min(temp, dp[i - 1][j - 1]);elsedp[i][j] = min(temp, dp[i - 1][j - 1] + 2);}}int ret = dp[n][m];/*for (int i = 0; i <= n; ++i){for (int j = 0; j <= m; ++j){printf("%4d ", dp[i][j]);}printf("\n");}*/for (int i = 0; i <= n; ++i)delete[] dp[i];delete[] dp;return ret;}int main(){string a = "abc";string b = "acbfbcd";int ret = mindistance(a, b);cout << ret << endl;system("PAUSE");return 0;}


参考文献:

原理篇:http://blog.csdn.net/huaweidong2011/article/details/7727482

C代码实现篇:http://blog.csdn.net/abcjennifer/article/details/7735272

0 0
原创粉丝点击