汉明编码的最小距离、汉明距离

汉明码(Hamming Code) 中两个核心概念:汉明距离(Hamming Distance)最小距离(Minimum Distance)


✅ 一、先明确两个概念

1. 汉明距离(Hamming Distance)
  • 定义:两个等长码字之间,对应位不同的位数
  • 举例:
    • 码字 A = 1011
    • 码字 B = 1000
    • 不同的位:第3位和第4位 → 汉明距离 = 2

📌 汉明距离是任意两个码字之间的属性


2. 最小距离(Minimum Distance, dₘᵢₙ)
  • 定义:在一个编码系统中,所有合法码字两两之间的汉明距离的最小值
  • 它是整个编码方案的属性,不是某两个码字的。

✅ 最小距离决定了编码的检错和纠错能力


✅ 二、标准汉明码(如 (7,4) 汉明码)的最小距离是多少?

标准汉明码的最小距离 dₘᵢₙ = 3

这是必须记住的结论

为什么是 3?
  • 汉明码的设计目标是:能纠正 1 位错误
  • 根据编码理论:
    • 要纠正 t 位错误 ,需要 dₘᵢₙ ≥ 2t + 1
    • 所以 t=1 → dₘᵢₙ ≥ 3
  • 汉明码恰好满足 dₘᵢₙ = 3,是最优的单比特纠错码。

🔍 三、举例验证:(7,4) 汉明码

  • 信息位:4 位(如 1011
  • 编码后:7 位(加入 3 个校验位)
  • 合法码字示例(部分):
    • 0000000
    • 0001011
    • 1110000
    • 1111111

计算任意两个合法码字的汉明距离,最小的就是 3

例如:

  • 00000000001011 → 不同位:第4、6、7位 → 距离 = 3
  • 没有任何两个合法码字的距离为 1 或 2(否则无法区分单比特错误)

✅ 四、最小距离 = 3 意味着什么?(408 必考!)

最小距离 dₘᵢₙ 检错能力 纠错能力
3 可检测 最多 2 位错误 可纠正 1 位错误

💡 原理:

  • 检错:只要错误位数 < dₘᵢₙ,就能发现"这不是合法码字"
  • 纠错:只要错误位数 ≤ ⌊(dₘᵢₙ−1)/2⌋,就能唯一确定原始码字

所以对汉明码:

  • 发生 1 位错 → 能纠正 ✅
  • 发生 2 位错 → 能检测但不能纠正(不能同时纠错,会误纠)⚠️
  • 发生 3 位错 → 可能被当成另一个合法码字 → 无法检测

(7,4) 汉明码举例解释:
为什么(7,4) 汉明码可以检测最多 2 位错误?,但是不能纠正


📌 五、常见误区澄清

误解 正确理解
"汉明距离就是最小距离" ❌ 汉明距离是两码字间的距离,最小距离是所有距离中的最小值
"汉明码能纠 2 位错" ❌ 只能纠 1 位错(dₘᵢₙ=3)
"最小距离可以是 2" ❌ 标准汉明码 dₘᵢₙ=3;若 dₘᵢₙ=2,只能检 1 位错,不能纠错

✅ 六、扩展:如果加一个总校验位(SECDED)

  • 在 (7,4) 汉明码基础上加 1 位奇偶校验 → (8,4) 码
  • 此时 dₘᵢₙ = 4
  • 能力提升:
    • 纠 1 位错
    • 检 2 位错(且不误纠)

标准汉明码(无总校验位)的 dₘᵢₙ = 3


🎯 总结(408 考生必背)

  • 汉明距离:两个码字不同位的个数
  • 最小距离(dₘᵢₙ):所有合法码字间汉明距离的最小值
  • 标准汉明码的最小距离 = 3
  • 因此:可纠 1 位错,可检 2 位错

汉明编码的最小距离是 3,汉明距离是指两个码字之间的不同位数,而最小距离是整个编码系统中所有码字对的汉明距离的最小值。

相关推荐
三品吉他手会点灯1 小时前
C语言学习笔记 - 20.C编程预备计算机专业知识 - 变量为什么必须的初始化【重点】
c语言·笔记·学习
zh1570231 小时前
JavaScript中WorkerThreads解决服务端计算瓶颈
jvm·数据库·python
kobesdu1 小时前
【ROS2实战笔记-12】rosshow:终端里的盲文可视化与无头机器人的现场调试
笔记·机器人·ros·移动机器人
代码AI弗森1 小时前
一文理清楚“算力申请 / 成本测算 / 并发评估”
java·服务器·数据库
sakiko_1 小时前
UIKit学习笔记1-创建项目(使用UIKit)、使用组件
笔记·学习
Old Uncle Tom1 小时前
OpenClaw 记忆系统 -- 记忆预加载
java·数据结构·算法·agent
会编程的土豆2 小时前
洛谷题单入门1 顺序结构
数据结构·算法·golang
生信碱移2 小时前
PACells:这个方法可以鉴定疾病/预后相关的重要细胞亚群,作者提供的代码流程可以学习起来了,甚至兼容转录组与 ATAC 两种数据类型!
人工智能·学习·算法·机器学习·数据挖掘·数据分析·r语言
智者知已应修善业2 小时前
【51单片机中的打飞机设计】2023-8-25
c++·经验分享·笔记·算法·51单片机
^—app5668662 小时前
游戏运存小启动不起来临时解决方法
运维·服务器