汉明码(Hamming Code) 中两个核心概念:汉明距离(Hamming Distance) 和 最小距离(Minimum Distance)。
✅ 一、先明确两个概念
1. 汉明距离(Hamming Distance)
- 定义:两个等长码字之间,对应位不同的位数。
- 举例:
- 码字 A =
1011 - 码字 B =
1000 - 不同的位:第3位和第4位 → 汉明距离 = 2
- 码字 A =
📌 汉明距离是任意两个码字之间的属性。
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 个校验位)
- 合法码字示例(部分):
0000000000101111100001111111
计算任意两个合法码字的汉明距离,最小的就是 3。
例如:
0000000和0001011→ 不同位:第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,汉明距离是指两个码字之间的不同位数,而最小距离是整个编码系统中所有码字对的汉明距离的最小值。