计算两个整数的汉明距离
一般在对比文件内容的时候用的比较多,比如:对比两个文件内容相似度。
如果对内容查重感兴趣可以看我另一篇文章:《使用SimHash进行海量内容数据查重》
<?php
/**
* @param Integer $x
* @param Integer $y
* @return Integer
*/
function hammingDistance(int $x, int $y) {
//计算整个整数的二进制值
$x_hash = decbin($x);
$y_hash = decbin($y);
//使两个整数转换出来的二进制统一长度 - 左边填充 0
$x_hash = str_pad($x_hash, 64, '0', STR_PAD_LEFT);
$y_hash = str_pad($y_hash, 64, '0', STR_PAD_LEFT);
//计算汉明距离
$result = hd($x_hash, $y_hash);
return $result;
}
/**
* @param Integer $x
* @param Integer $y
* @return Integer
*/
function hd(int $h1, int $h2)
{
$dist = 0;
for ($i=0;$i<64;$i++) {
if ( $h1[$i] != $h2[$i] )
$dist++;
}
return $dist;
}
$result = hammingDistance(1,4);
print_r($result);
?>
點擊查看更多內容
1人點贊
評論
評論
共同學習,寫下你的評論
評論加載中...
作者其他優質文章
正在加載中
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦