当今越来越多的应用需用到相似算法,世间事物因种种原因都会变形,转换。在这种情况下计算机里相似算法的重要性就体现了。
常用的算法有:
1. levenshtein 又称编辑距离
2. Jaro-Winkler Distance
3. n-gram
图形相拟的算法:
1.sift算法
2.surf算法
常用的算法有:
1. levenshtein 又称编辑距离
protected function costLeven(a:Array,b:Array):uint{
// point
if (a[0]==-1){
return b.length==0 ? 0 : 100000;
}
// precalc difangles
var d:Array=fill2DTable(a.length+1,b.length+1,0);
var w:Array=d.slice();
for (var x:uint=1;x<=a.length;x++){
for (var y:uint=1;y<b.length;y++){
d[x][y]=difAngle(a[x-1],b[y-1]);
}
}
// max cost
for (y=1;y<=b.length;y++)w[0][y]=100000;
for (x=1;x<=a.length;x++)w[x][0]=100000;
w[0][0]=0;
// levensthein application
var cost:uint=0;
var pa:uint;
var pb:uint;
var pc:uint;
for (x=1;x<=a.length;x++){
for (y=1;y<b.length;y++){
cost=d[x][y];
pa=w[x-1][y]+cost;
pb=w[x][y-1]+cost;
pc=w[x-1][y-1]+cost;
w[x][y]=Math.min(Math.min(pa,pb),pc)
}
}
return w[x-1][y-1];
}
2. Jaro-Winkler Distance
3. n-gram
图形相拟的算法:
1.sift算法
2.surf算法