在上一篇文章Levenshtein distance算法实现中,笔者已经讲解了一般最小编辑距离的算法。该算法采用动态规划,时间复杂度是O(m*n),m,n分别为两个字符串的长度,而空间复杂度也是O(m*n),如果使用int作为矩阵元素的类型,则矩阵的占用空间大小为sizeof(int)*m*n,假如两个字符串的长度均为10000个字符,则矩阵大小为400MB,相当可观。参考一个快速、高效的Leve...
分类:
其他好文 时间:
2014-08-20 12:38:02
阅读次数:
187
Levenshein distance,中文名为最小编辑距离,其目的是找出两个字符串之间需要改动多少个字符后变成一致。该算法使用了动态规划的算法策略,该问题具备最优子结构,最小编辑距离包含子最小编辑距离,有下列的公式。
其中d[i-1,j]+1代表字符串s2插入一个字母,d[i,j-1]+1代表字符串s1删除一个字母,然后当xi=yj时,不需要代价,所以和上一步d[i-1,j-1]代价相...
分类:
其他好文 时间:
2014-08-19 22:33:05
阅读次数:
323
Edit Distance
Given two words word1 and word2, find the minimum number of steps required to convert word1 to word2. (each operation is counted as 1 step.)
You have the following 3 operati...
分类:
其他好文 时间:
2014-08-18 20:35:02
阅读次数:
206
思考:我们可以从题目中给出的6种操作描述,找到递归式,比如复制操作是i和j都增加1。那么递归式就是c[i][j]=c[i-1][j-1]+cost[COPY]。c[i][j]表示从字符串i复制到字符串j所需要的总代价。其他操作类似。
递归式如下:
代码如下:
#include
using namespace std;
enum {COPY,REPLACE,DELETE,INSERT,TWI...
分类:
其他好文 时间:
2014-08-18 12:33:14
阅读次数:
222
1,项目方面1)数据准入,geocoding项目完成文本地址和空间地址的映射预处理:父子集成时候的,同次判断,错别字判断,习惯用户判断,字符串相似性。编辑距离2)phoneNormal项目完成电话格式规范和电话区号升级功能。包括四类:固定电话,企业电话,特殊号码,移动号码2,业务方面整个数据端的宏观...
分类:
其他好文 时间:
2014-08-13 00:48:34
阅读次数:
312
题目链接:点击打开链接
有一个交换操作比较特殊,所以记录每个点距离自己最近的那个字符的位置
然后交换就相当于把第一行要交换的2个字符 之间的字符都删掉
把第二行要交换的2个字符 之间的字符都插入第一行的2个字符之间
然后再进行交换。
#include
#include
#include
using namespace std;
#define inf 10000000
#define...
分类:
其他好文 时间:
2014-08-10 18:39:50
阅读次数:
229
编辑距离(Edit Distance),又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。例如将kitten一字转成sitting:sitten (k→s)sittin (e→i)sit...
分类:
其他好文 时间:
2014-08-06 22:11:12
阅读次数:
207
Description
Let x and y be two strings over some finite alphabet A. We would like to transform
x into y allowing only operations given below:
Deletion: a letter in x is missing in y at a corr...
分类:
其他好文 时间:
2014-08-05 19:32:50
阅读次数:
247
dp方程“1、初始化;dp[0][i]=i; dp[j][0]=j;2.dp[i][j]= dp[i-1][j-1](相等) dp[i-1][j]+1 ,,dp[i][j-1]+1; dp[i-1][j-1] (这个对应是改的况)注意字符串下标开始位置就OK了 1 p...
分类:
其他好文 时间:
2014-08-05 18:48:39
阅读次数:
208