海明距离(Hamming Distance)

简介: 海明距离(Hamming Distance)是用来衡量两个二进制数之间差异程度的指标,它表示两个二进制数之间最多有多少个比特的差异。海明距离可以用于衡量数据传输或存储中的错误率,以及检测噪声干扰。海明距离的计算方法是:对于两个 n 位二进制数,将它们进行逐位比较,如果对应位上的数字不同,则计算距离时增加 1。然后将所有位上的距离加在一起,得到海明距离。

海明距离(Hamming Distance)是用来衡量两个二进制数之间差异程度的指标,它表示两个二进制数之间最多有多少个比特的差异。海明距离可以用于衡量数据传输或存储中的错误率,以及检测噪声干扰。
海明距离的计算方法是:对于两个 n 位二进制数,将它们进行逐位比较,如果对应位上的数字不同,则计算距离时增加 1。然后将所有位上的距离加在一起,得到海明距离。
海明距离的优点是它能有效地检测出单个比特的错误,并且不受数据中其他比特的影响。这使得它在通信和数据存储领域具有较高的抗干扰能力。
海明距离的主要应用场景包括:

  1. 通信领域:在数据传输过程中,通过比较接收到的数据与发送的数据之间的海明距离,可以检测出传输过程中发生的错误。
  2. 数据存储:在数据存储和检索系统中,通过比较存储的数据和检索到的数据之间的海明距离,可以检测出存储或检索过程中的错误。
  3. 模式识别:在模式识别领域,可以将不同模式之间的海明距离作为相似性度量,用于模式匹配和分类等任务。
    以下是一个使用 Python 实现的计算两个二进制数之间海明距离的示例:

def hamming_distance(a, b):
"""
计算两个二进制数之间的海明距离
:param a: 一个二进制数(字符串或列表)
:param b: 一个二进制数(字符串或列表)
:return: 海明距离
"""
if isinstance(a, str):
a = [int(x) for x in a]
if isinstance(b, str):
b = [int(x) for x in b]
return sum(abs(x - y) for x, y in zip(a, b))

示例

a = "1011"
b = "1001"
print(hamming_distance(a, b)) # 输出:2
CopyCopy

在这个示例中,我们定义了一个名为 hamming_distance 的函数,它接受两个二进制数作为输入(可以是字符串或列表),并返回它们之间的海明距离。函数首先将输入转换为列表,然后使用列表推导式计算两个二进制数之间的差值,最后计算差值的绝对值之和。

目录
相关文章
五种常用距离的代码实现:欧式距离、曼哈顿距离、闵可夫斯基距离、余弦相似度、杰卡德距离
五种常用距离的代码实现:欧式距离、曼哈顿距离、闵可夫斯基距离、余弦相似度、杰卡德距离
|
机器学习/深度学习 算法 搜索推荐
曼哈顿距离(Manhattan distance)
曼哈顿距离(Manhattan distance),也称为城市街区距离(City block distance)或L1距离(L1 distance),是两个点在标准坐标系上的绝对值距离之和。
944 4
|
机器学习/深度学习 算法 Python
欧几里得距离(Euclidean distance)
欧几里得距离(Euclidean distance)是在数学中常用于衡量两个点之间的距离的一种方法。它在几何学和机器学习等领域都有广泛的应用。欧几里得距离基于两点之间的直线距离,可以看作是在一个多维空间中测量两个点之间的直线距离。
740 1
|
机器学习/深度学习 搜索推荐 数据挖掘
常见的几种距离量度(欧式距离、曼哈顿距离、切比雪夫距离等)
在机器学习和数据挖掘中,我们经常需要计算样本之间的相似度,通常的做法是计算样本之间的距离。本文介绍几种常用的距离量度方法。
975 0
(二维vector)(绝对值求和等式的处理)B. Playing in a Casino
(二维vector)(绝对值求和等式的处理)B. Playing in a Casino
96 0
|
自然语言处理 算法 Java
Levenshtein Distance(编辑距离)算法与使用场景
已经很久没深入研究过算法相关的东西,毕竟日常少用,就算死记硬背也是没有实施场景导致容易淡忘。最近在做一个「脱敏数据和明文数据匹配」的需求的时候,用到了一个算法叫Levenshtein Distance Algorithm,本文对此算法原理做简单的分析,并且用此算法解决几个常见的场景。
462 0
Levenshtein Distance(编辑距离)算法与使用场景
|
人工智能 BI
余弦距离和欧氏距离,知道原理和公式后真的很简单
余弦距离和欧氏距离,知道原理和公式后真的很简单
736 0
余弦距离和欧氏距离,知道原理和公式后真的很简单
LeetCode之Hamming Distance
LeetCode之Hamming Distance
123 0
|
算法
曼哈顿距离和欧式距离
曼哈顿距离和欧式距离
524 0
曼哈顿距离和欧式距离