相似算法学习

本文介绍了在计算机领域中广泛应用的相似算法,包括编辑距离(Levenshtein)算法、Jaro-Winkler距离算法以及图形相似性的SIFT和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算法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值