相似度计算——汉明距离

汉明距离,又称编辑距离,是一种衡量两个等长字符串之间的不同之处的度量方法,它在信息论和计算机科学领域中有着广泛的应用。

汉明距离的发展及介绍

汉明距离是由理查德·汉明(Richard Hamming)在1950年提出的,用于衡量两个等长字符串之间的不同之处。它在错误检测和纠正编码、网络编码、密码学等领域有着广泛的应用。汉明距离的概念也被应用于DNA序列分析、图像处理、语音识别等领域。

汉明距离的原理及计算方式

汉明距离的计算方式很简单,它是通过对比两个等长字符串对应位置上的字符来计算的。如果两个字符串在相同位置上的字符不同,那么它们之间的汉明距离就会加一。字符串之间的相似度越高,对应的汉明距离越小。

换句话说,两个字符串的汉明距离就是将字符串其对应位置上的不同字符的个数加起来。

例如,现在有两个十进制数a=93b=73,如果将这两个数用二进制表示的话,即a=0b1011101b=0b1001001,这两者的汉明距离为2,因为它们中有两个字符不一致,即在第三和第五个位置上的字符不同。

在计算汉明距离时,我们的目标是计算两个字符串对应位不同的字符个数,因此可以使用异或运算。

异或 运算的规则是相同为0,不同为1

我们可以计算c = a XOR b,再去统计c中出现1的个数和,这个就是a和b的汉明距离。

c++ 复制代码
class Solution {
public:
    int hammingDistance(int x, int y) {
        int c = x^y;
        int d = 0;
        while(c) {
            if(c & 1) d++;
            c = c>>1;
        }
        return d;
    }
};

上面的代码通过与运算和移位运算实现,但还有种优化方案,拿c = 0b00101000举例,c-1=0b00100111,再进行与运算c&(c-1),这个时候倒数最后一个1被消掉,此时还剩下一个1,再进行一次这样的操作,将1全部消掉。这样计算我们只执行了两次,而上面的操作执行了8次。

c++ 复制代码
class Solution {
public:
    int hammingDistance(int x, int y) {
        int c = x^y;
        int d = 0;
        while(c) {
            d++;
            c &= (c-1);
        }
        return d;
    }
};

明白了汉明距离原理的友友,可以做下这个题:汉明距离

汉明距离的应用场景

汉明距离在很多领域都有着广泛的应用。

在通信领域,汉明距离被用来检测和纠正传输中出现的错误。

在编码理论中,汉明距离被用来评估纠错码的性能。

此外,汉明距离还被用于模式识别、数据挖掘、文本相似度计算等方面。

汉明距离在密码学中的应用

在密码学中,汉明距离被用来衡量两个密文之间的相似度。它可以被用来判断密文是否被篡改或者被破解。此外,汉明距离还被用来衡量密钥的相似度,评估密码系统的安全性。

如在 SRAM PUF 计算时,通过片内汉明距离可以判断SRAM 上电序列之的稳定性,或通过片间汉明距离判断SRAM PUF作为物理指纹的独特性。

总结

汉明距离不仅是一种简单而有效的度量方法,还在信息论和计算机科学领域中有着广泛的应用。它不仅在通信、编码、模式识别等领域发挥着重要作用,还在密码学中有着重要的应用价值。

相关推荐
全糖可乐气泡水5 分钟前
Codex适配国产信创环境安装部署与技术适配全解析
开发语言·git·python·算法·百度
h_a_o777oah18 分钟前
状态机+划分型 DP :深度解析K-划分问题下 DP 状态的转移逻辑(洛谷P2679 P2331 附C++代码)
c++·算法·动态规划·acm·状态机dp·划分型dp·滚动数组优化
05候补工程师24 分钟前
从算法理想向工程现实的跨越:SLAM 核心架构、思维误区与 Nav2 实战避坑指南
人工智能·算法·安全·架构·机器人
手写码匠2 小时前
Android 17 适配实战指南:新特性解读、隐私变更与迁移全攻略
人工智能·深度学习·算法·aigc
珊瑚里的鱼2 小时前
leetcode42雨水
算法·leetcode
水木流年追梦2 小时前
大模型入门-大模型的推理策略
开发语言·python·算法·正则表达式·prompt
生成论实验室2 小时前
用事件关系网络重新理解AI(三):激活函数、微调与元学习
人工智能·学习·算法·语言模型·可信计算技术
Narv工程师2 小时前
嵌入式机器人控制器算力评估:从DMIPS到WCET的完整指南
人工智能·算法·机器学习
蒟蒻的贤2 小时前
实训1227
算法
liulilittle3 小时前
TCP UCP:基于卡尔曼滤波的BBR增强型拥塞控制算法
linux·网络·c++·tcp/ip·算法·c·通讯