编辑距离(同源去重算法)
来源:互联网 发布:排序算法中空间复杂度 编辑:程序博客网 时间:2024/06/08 05:50
原理:表示将串s[ 1…i ] 转换为 串t [ 1…j ]所需要的最少步骤个数。(以下方框中的数字就表示的步骤数)
step 1:初始化如下矩阵
step 2:从源串的第一个字符(“j”)开始,从上至下与目标串进行对比,如果两个字符相等,则在从此位置的左,上,左上三个位置中取出最小的值;若不等,则在从此位置的左,上,左上三个位置中取出最小的值再加上1;
第一次,源串第一个字符“j” 与目标串的“j”对比,左,上,左上三个位置中取出最小的值0,因为两字符相等,所以加上0;接着,依次对比“j”→“e”,“j”→“r”,“j”→“r”,,“j”→“y” 到扫描完目标串。
step3:同理
step4:
step5:
step6:
// 计算相似度
float similarity = 1-(最后一个字符的距离)上题为例也就是2/Max(x,y)两个字符的最长的。上述例子中是(1-2/5);
求出编辑距离,那么两个字符串的相似度 Similarity = (Max(x,y) - Levenshtein)/Max(x,y),其中 x,y 为源串和目标串的长度。
/** * 编译距离算法 * @param str1 * @param str2 * @return */ public static float levenshtein(String str1, String str2) { int len1 = str1.length(); int len2 = str2.length(); int[][] dif = new int[len1 + 1][len2 + 1]; //初始化行列矩阵 for (int a = 0; a <= len1; a++) { dif[a][0] = a; } for (int a = 0; a <= len2; a++) { dif[0][a] = a; } int temp; for (int i = 1; i <= len1; i++) { for (int j = 1; j <= len2; j++) { //源字符与目标字符相比相等,则为左,左上,上三个数最小的,不相等,则最小的加1 if (str1.charAt(i - 1) == str2.charAt(j - 1)) { temp = 0; } else { temp = 1; } // 取三个值中最小的 dif[i][j] = min(dif[i - 1][j - 1] + temp, dif[i][j - 1] + 1, dif[i - 1][j] + 1); } } //System.out.println("字符串\"" + str1 + "\"与\"" + str2 + "\"的比较"); //System.out.println("差异步骤:" + dif[len1][len2]); // 计算相似度 float similarity = 1 - (float) dif[len1][len2] / Math.max(str1.length(), str2.length()); return similarity; } private static int min(int... is) { int min = Integer.MAX_VALUE; for (int i : is) { if (min > i) { min = i; } } return min; }
0 0
- 编辑距离(同源去重算法)
- 编辑距离算法(dp)
- 编辑距离与编辑算法
- 编辑距离及编辑距离算法
- 编辑距离及编辑距离算法
- 编辑距离及编辑距离算法
- 编辑距离及编辑距离算法
- 编辑距离及编辑距离算法
- 编辑距离及编辑距离算法
- 编辑距离及编辑距离算法
- 编辑距离及编辑距离算法
- 编辑距离及编辑距离算法
- 编辑距离及编辑距离算法
- 相似度算法(一)------编辑距离
- 相似度算法(编辑距离原理)
- 编辑距离算法(Edit Distance)
- 算法:编辑距离问题(动态规划)
- 编辑距离算法-java
- 前端面试(代码)
- SQL排序后将序号填入指定字段
- 百度首席科学家吴恩达宣布将从百度离职
- 如何将24位RGB颜色转换16位RGB颜色
- linux用tar 解压tar文件报错
- 编辑距离(同源去重算法)
- Codeforces 711C. Bear and Tree Jumps【树形dp好题】
- 斯坦纳树
- HDU3466 Proud Merchants(贪心+01背包)
- explicit关键字的作用
- 【Android】win10下Android Studio写中文注释的时候候选窗不跟随光标(在右下角)
- spark中的hash shuffle
- [iBET Malaysia]Sports Book Rebate 0.35% Bonus
- 微博抓取之各种方法收集