目录
熵定义:
信息熵是信息论中用于度量信息不确定性的单位量。 简而言之,熵值用来告诉我们某件事情的结果到底有多难猜。
通过公式可以计算出一个事物的出现的概率,结果的熵值越高 ,表示结果越混乱、越难预测 (比如抛公平骰子)。反之熵值越低 ,结果越有序、越容易预测(比如作弊的硬币总出正面)。
公式
信息熵的数学定义为:
\[H = -\sum_{i=1}^{n} p_i \log_2 p_i \]
其中:
- p_i 表示第 i 个事件发生的概率;
- 对数底为2,单位为比特(bit);
- 当某个 p_i = 0 时, 0 \\cdot \\log_2 0 按0处理。
计算案例
翻面硬币的信息熵计算(正面、反面)
-
公平硬币:正面和反面出现的概率均为50%(即各为0.5)。
-
概率计算:
- 正面概率: p_{\\text{正面}} = \\frac{1}{2}
- 反面概率: p_{\\text{反面}} = \\frac{1}{2}
-
信息熵计算:
\[H = -\left(0.5 \log_2 0.5 + 0.5 \log_2 0.5\right) = 1 \text{比特} \]
-
含义:需要1比特的信息表示结果(如用0表示正面,1表示反面)。
-
-
不公平硬币:假设正面概率为80%(0.8),反面为20%(0.2)。
-
概率计算:
- 正面概率: p_{\\text{正面}} = \\frac{8}{10}
- 反面概率: p_{\\text{反面}} = \\frac{2}{10}
-
信息熵计算:
\[H = -\left(0.8 \log_2 0.8 + 0.2 \log_2 0.2\right) \approx 0.72 \text{比特} \]
-
含义:结果更易预测(常出现正面),所以熵更低。
-
摸球游戏中的信息熵计算(红球、黄球、绿球)
假设袋子中有红球、黄球、绿球的数量分别为 \(k\)、\(m\)、\(l\),总球数 \(n = k + m + l\)。则:
-
计算每种颜色的概率:
- 红球概率: p_{\\text{红}} = \\frac{k}{n}
- 黄球概率: p_{\\text{黄}} = \\frac{m}{n}
- 绿球概率: p_{\\text{绿}} = \\frac{l}{n}
-
代入熵公式 :
\( H = -\left( p_{\text{红}} \log_2 p_{\text{红}} + p_{\text{黄}} \log_2 p_{\text{黄}} + p_{\text{绿}} \log_2 p_{\text{绿}} \right) \) -
求和并取负数 :
\( H = -\left( -0.5 - 0.528 - 0.4308 \right) \approx -\left( -1.4588 \right) \approx 1.46 \ \text{比特} \) -
结论:
- 最大熵:当所有颜色概率相等(例如各1/3)时,熵最大,约为 \\log_2 3 \\approx 1.58 比特。
- 最小熵:若某颜色概率接近1(如红球占5/6),熵趋近于0,不确定性极低。
- 直观意义:熵越高,结果越难预测;熵越低,结果越容易预测。
熵的应用场景
通过理解熵的理论,开发者能设计出更高效的压缩算法 和更安全的加密系统。
1、数据压缩中的应用
核心原理:熵给出了数据压缩的理论下限------最优压缩后的平均编码长度等于熵值。
具体应用:
-
统计编码:
- 哈夫曼编码:根据符号频率分配变长编码,高频符号用短码,低频符号用长码。
- 算术编码:将整个数据流映射为一个区间,直接逼近熵的理论极限。
-
压缩算法实例:
- ZIP(DEFLATE):结合 LZ77 算法(消除重复)和哈夫曼编码。
- JPEG(图像压缩):利用离散余弦变换(DCT)减少空间冗余,再熵编码量化后的系数。
示例:
- 文本文件中的字母频率差异越大,熵越低,压缩率越高。
- 若所有符号等概率(最大熵),压缩率最低(接近原始大小)。
2、加密算法设计中的应用
核心原理:高熵确保密钥和随机数的不可预测性,是加密安全的基础。
具体应用:
-
密钥生成:
- 高熵密钥:使用真随机数生成器(TRNG)或密码学安全伪随机数生成器(CSPRNG)生成密钥。
- 低熵风险:若密钥熵不足,易被暴力破解(如短密码或重复模式)。
-
加密算法设计:
- 扩散与混淆:通过高熵操作(如置换、代换)使密文统计特性接近随机。
- AES 加密:每轮操作(字节替换、行移位、列混淆、轮密钥加)增加密文熵。
-
随机数验证:
- 熵测试:使用 NIST SP 800-90B 等标准评估随机源的熵质量。
- 攻击防范:避免低熵导致的重放攻击或侧信道攻击。
示例:
- TLS 协议:使用高熵的会话密钥确保通信安全。
- 密码存储:盐值(Salt)增加熵,防止彩虹表攻击。
总结
应用领域 | 熵的作用 | 实际技术 |
---|---|---|
数据压缩 | 指导最优编码策略,逼近理论下限 | 哈夫曼编码、算术编码、LZ77 |
加密算法 | 确保密钥不可预测性与密文随机性 | AES、RSA、TRNG/CSPRNG、盐值技术 |
关键结论:
- 数据压缩:熵决定了最小可能的压缩大小,算法需逼近这一极限。
- 加密安全:高熵是抵御攻击的核心,需从密钥生成到算法设计全程保障。