php mysql图片汉明距离_编辑距离及汉明距离的php实现

在计算字符串或图形的相似度时,常用的两个算法,一个是编辑距离,另一个是汉明距离。

简单点说:

编辑距离是通过几次编辑能把一个字符串变成另一个字符串

汉明距离是对应位置进行比较,找出不同的字符个数

想了解详情的请自行搜索。

以下是他们的php代码实现。<?php

/**

* 计算编辑距离

*

* @param string $s1

* @param string $s2

*/

function levDist($s1, $s2)

{

$len1 = strlen($s1);

$len2 = strlen($s2);

if($len1 == 0)

{

return $len2;

}

if($len2 == 0)

{

return $len1;

}

for($i = 0; $i <= $len1; $i++)

{

$matrix[$i][0] = 0;

}

for($j = 0; $j <= $len2; $j++)

{

$matrix[0][$j] = 0;

}

for($i = 1; $i <= $len1; $i++)

{

$ch1 = $s1[$i - 1];

for($j = 1; $j <= $len2; $j++)

{

$ch2  = $s2[$j - 1];

$temp = $ch1 == $ch2 ? 0 : 1;

$arr = array(

$matrix[$i - 1][$j] + 1,

$matrix[$i][$j - 1] + 1,

$matrix[$i - 1][$j - 1] + $temp

);

$matrix[$i][$j] = min($arr);

}

}

return $matrix[$len1][$len2];

}

/**

* 计算汉明距离

*

* @param string $s1

* @param string $s2

* @return boolean number

*/

function hamDist($s1, $s2)

{

$len1 = strlen($s1);

$len2 = strlen($s2);

if($len1 != $len2)

{

return false;

}

$dist = 0;

for($i = 0; $i 

{

if($s1[$i] != $s2[$i])

{

$dist++;

}

}

return $dist;

}

$s1 = "abcde";

$s2 = "acdeb";

echo levDist($s1, $s2);// 输出2

echo hamDist($s1, $s2);// 输出4

原文:http://ustb80.blog.51cto.com/6139482/1569542

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值