相似度的算法(编辑距离法)(Java实现代码)
2017-02-16 17:17
309 查看
public class Suanfa { public static void main(String[] args) { String Str_1="abcdefghijklmuvwxyz"; String Str_2="ijkabclmdefghpq"; //length int Length1=Str_1.length(); int Length2=Str_2.length(); int Distance=0; if (Length1==0) { Distance=Length2; } if(Length2==0) { Distance=Length1; } if(Length1!=0&&Length2!=0){ int[][] Distance_Matrix=new int[Length1+1][Length2+1]; //编号 int Bianhao=0; for (int i = 0; i <= Length1; i++) { Distance_Matrix[i][0]=Bianhao; Bianhao++; } Bianhao=0; for (int i = 0; i <=Length2; i++) { Distance_Matrix[0][i]=Bianhao; Bianhao++; } char[] Str_1_CharArray=Str_1.toCharArray(); char[] Str_2_CharArray=Str_2.toCharArray(); for (int i = 1; i <= Length1; i++) { for(int j=1;j<=Length2;j++){ if(Str_1_CharArray[i-1]==Str_2_CharArray[j-1]){ Distance=0; } else{ Distance=1; } int Temp1=Distance_Matrix[i-1][j]+1; int Temp2=Distance_Matrix[i][j-1]+1; int Temp3=Distance_Matrix[i-1][j-1]+Distance; Distance_Matrix[i][j]=Temp1>Temp2?Temp2:Temp1; Distance_Matrix[i][j]=Distance_Matrix[i][j]>Temp3?Temp3:Distance_Matrix[i][j]; } } Distance=Distance_Matrix[Length1][Length2]; } double Aerfa=1-1.0*Distance/(Length1>Length2?Length1:Length2); System.out.println(Aerfa); } }
相关文章推荐
- 自己实现文本相似度算法(余弦定理) - 呼吸的Java - 开源中国社区
- 算法——数据结构图的最短路径实现JAVA代码
- 现代应用密码学中椭圆曲线求点集E以及点乘算法的java代码实现
- 算法代码实现之Union-Find,Java实现,quick-find、quick-union、加权quick-union(附带路径压缩优化)
- 用java代码实现二叉树的遍历算法
- JAVA中的排序算法及代码实现
- 最短路径A*算法原理及java代码实现(看不懂是我的失败)
- 抢红包的红包生成算法Java实现代码
- 【算法与数据结构】冒泡、插入、归并、堆排序、快速排序的Java实现代码
- 利用朴素贝叶斯算法进行分类-Java代码实现
- 【算法】【算法】b树的实现(2)---java版代码
- 自己琢磨的 图像相似度算法 JAVA版实现
- java文本相似度计算(Levenshtein Distance算法(中文翻译:编辑距离算法))----代码和详解
- java代码实现贪心算法删除数字问题
- 最短路径A*算法原理及java代码实现(看不懂是我的失败)
- 【算法】B+树的研读及实现(2)---java版核心代码
- 排序与查找简单算法 java代码实现
- java排列组合算法代码实现
- 算法代码实现之冒泡排序,Java实现
- 如何用70行Java代码实现深度神经网络算法