• 文件浏览器
  • 000 信息论 (Information Theory)知识框架 001 《信息论:历史背景与深远影响》 002 《信息论:基本概念与核心原理深度解析》 003 《信息论的基石:概率论与随机过程深度解析》 004 《信息论:信源编码基本原理深度解析》 005 《信息论:无损信源编码深度解析 (Information Theory: In-Depth Analysis of Lossless Source Coding)》 006 《信息论之有损信源编码:原理、理论与实践》 007 《信息论:信道模型理论、分析与应用全解》 008 《信息论核心:信道容量理论与应用》 009 《信道编码与纠错:从原理到实践的深度解析(Channel Coding and Error Correction: In-depth Analysis from Principles to Practice)》 010 《信息论:多用户信道深度解析 (Information Theory: In-depth Analysis of Multi-User Channels)》 011 《网络编码:信息论视角下的全面理论与深度应用解析 (Network Coding: Comprehensive Theory and In-depth Application Analysis from an Information Theory Perspective)》 012 《无线网络信息论:从基础到前沿》 013 《信息论:通信系统全面深度解析 (Information Theory: A Comprehensive and In-Depth Analysis of Communication Systems)》 014 《信息论:数据压缩与存储——原理、算法与应用深度解析》 015 《信息论与密码学:原理、应用与深度解析》 016 《信息论、统计推断与机器学习:从基础到前沿》 017 《信息论在生物信息学中的全面与深度解析》 018 《信息论与量子信息论:从经典基础到量子前沿》 019 《信息论的普适原理与跨领域应用》 020 《多终端信息论:原理、模型与前沿(Multi-Terminal Information Theory: Principles, Models, and Frontiers)》 021 《信息论与统计学:原理、方法与应用 (Information Theory and Statistics: Principles, Methods, and Applications)》 022 《信息论与计算复杂性:从基础到前沿》 023 《信息论的哲学意义:从比特到存在 (Philosophical Implications of Information Theory: From Bit to Being)》 024 《信息论的未来:趋势、挑战与前沿探索 (The Future of Information Theory: Trends, Challenges, and Frontier Exploration)》

    013 《信息论:通信系统全面深度解析 (Information Theory: A Comprehensive and In-Depth Analysis of Communication Systems)》


    作者Lou Xiao, gemini创建时间2025-04-18 23:46:49更新时间2025-04-18 23:46:49

    🌟🌟🌟本文案由Gemini 2.5 Flash Preview 04-17创作,用来辅助学习知识。🌟🌟🌟

    书籍大纲

    ▮▮▮▮ 1. chapter 1: 引言 (Introduction)
    ▮▮▮▮▮▮▮ 1.1 信息论的起源与发展 (Origin and Development of Information Theory)
    ▮▮▮▮▮▮▮ 1.2 信息论在通信系统中的重要性 (Importance of Information Theory in Communication Systems)
    ▮▮▮▮▮▮▮ 1.3 本书结构与内容概览 (Book Structure and Content Overview)
    ▮▮▮▮▮▮▮ 1.4 必要的数学基础回顾 (Review of Necessary Mathematical Background)
    ▮▮▮▮▮▮▮▮▮▮▮ 1.4.1 概率论基础 (Fundamentals of Probability Theory)
    ▮▮▮▮▮▮▮▮▮▮▮ 1.4.2 随机变量与随机过程初步 (Random Variables and Introduction to Random Processes)
    ▮▮▮▮ 2. chapter 2: 信息的基本概念与度量 (Basic Concepts and Measures of Information)
    ▮▮▮▮▮▮▮ 2.1 自信息 (Self-Information) 与熵 (Entropy)
    ▮▮▮▮▮▮▮ 2.2 联合熵 (Joint Entropy) 与条件熵 (Conditional Entropy)
    ▮▮▮▮▮▮▮ 2.3 互信息 (Mutual Information)
    ▮▮▮▮▮▮▮ 2.4 熵的性质与链式法则 (Properties of Entropy and Chain Rules)
    ▮▮▮▮▮▮▮ 2.5 交叉熵 (Cross-Entropy) 与KL散度 (KL Divergence)
    ▮▮▮▮ 3. chapter 3: 离散无记忆信源编码 (Discrete Memoryless Source Coding)
    ▮▮▮▮▮▮▮ 3.1 信源模型 (Source Models)
    ▮▮▮▮▮▮▮ 3.2 数据压缩的原理与极限 (Principles and Limits of Data Compression)
    ▮▮▮▮▮▮▮ 3.3 克拉夫特不等式 (Kraft's Inequality) 与最优码 (Optimal Codes)
    ▮▮▮▮▮▮▮ 3.4 霍夫曼编码 (Huffman Coding)
    ▮▮▮▮▮▮▮ 3.5 香农-范诺-伊利亚斯编码 (Shannon-Fano-Elias Coding)
    ▮▮▮▮▮▮▮ 3.6 算术编码初步 (Introduction to Arithmetic Coding)
    ▮▮▮▮ 4. chapter 4: 离散无记忆信道 (Discrete Memoryless Channels)
    ▮▮▮▮▮▮▮ 4.1 信道模型 (Channel Models) 与信道矩阵 (Channel Matrix)
    ▮▮▮▮▮▮▮ 4.2 信道容量 (Channel Capacity) 的定义
    ▮▮▮▮▮▮▮ 4.3 典型离散信道容量计算 (Capacity Calculation for Typical Discrete Channels)
    ▮▮▮▮▮▮▮▮▮▮▮ 4.3.1 二进制对称信道 (Binary Symmetric Channel, BSC)
    ▮▮▮▮▮▮▮▮▮▮▮ 4.3.2 二进制擦除信道 (Binary Erasure Channel, BEC)
    ▮▮▮▮▮▮▮ 4.4 香农信道编码定理 (Shannon's Channel Coding Theorem)
    ▮▮▮▮ 5. chapter 5: 连续信道容量 (Capacity of Continuous Channels)
    ▮▮▮▮▮▮▮ 5.1 微分熵 (Differential Entropy)
    ▮▮▮▮▮▮▮ 5.2 高斯信道 (Gaussian Channels)
    ▮▮▮▮▮▮▮ 5.3 加性高斯白噪声 (AWGN) 信道容量
    ▮▮▮▮▮▮▮ 5.4 香农-哈特利定理 (Shannon-Hartley Theorem)
    ▮▮▮▮▮▮▮ 5.5 带宽与信噪比的权衡 (Bandwidth-SNR Trade-off)
    ▮▮▮▮ 6. chapter 6: 信道编码基础 (Fundamentals of Channel Coding)
    ▮▮▮▮▮▮▮ 6.1 差错控制的必要性 (Necessity of Error Control)
    ▮▮▮▮▮▮▮ 6.2 编码的基本概念 (Basic Concepts of Coding)
    ▮▮▮▮▮▮▮ 6.3 码率 (Code Rate) 与冗余 (Redundancy)
    ▮▮▮▮▮▮▮ 6.4 汉明距离 (Hamming Distance) 与最小距离 (Minimum Distance)
    ▮▮▮▮▮▮▮ 6.5 检错 (Error Detection) 与纠错 (Error Correction) 能力
    ▮▮▮▮ 7. chapter 7: 线性分组码 (Linear Block Codes)
    ▮▮▮▮▮▮▮ 7.1 线性码的定义与性质 (Definition and Properties of Linear Codes)
    ▮▮▮▮▮▮▮ 7.2 生成矩阵 (Generator Matrix) 与校验矩阵 (Parity-Check Matrix)
    ▮▮▮▮▮▮▮ 7.3 伴随式译码 (Syndrome Decoding)
    ▮▮▮▮▮▮▮ 7.4 汉明码 (Hamming Codes)
    ▮▮▮▮▮▮▮ 7.5 循环码初步 (Introduction to Cyclic Codes)
    ▮▮▮▮ 8. chapter 8: 卷积码 (Convolutional Codes)
    ▮▮▮▮▮▮▮ 8.1 卷积码的编码器结构 (Convolutional Encoder Structure)
    ▮▮▮▮▮▮▮ 8.2 状态图 (State Diagram) 与网格图 (Trellis Diagram)
    ▮▮▮▮▮▮▮ 8.3 维特比译码算法 (Viterbi Decoding Algorithm)
    ▮▮▮▮▮▮▮ 8.4 序列译码 (Sequential Decoding) 初步
    ▮▮▮▮ 9. chapter 9: 现代信道编码 (Modern Channel Coding)
    ▮▮▮▮▮▮▮ 9.1 迭代译码 (Iterative Decoding) 的思想
    ▮▮▮▮▮▮▮ 9.2 Turbo码 (Turbo Codes)
    ▮▮▮▮▮▮▮▮▮▮▮ 9.2.1 并行级联卷积码 (Parallel Concatenated Convolutional Codes)
    ▮▮▮▮▮▮▮▮▮▮▮ 9.2.2 迭代译码原理 (Principle of Iterative Decoding)
    ▮▮▮▮▮▮▮ 9.3 低密度奇偶校验码 (Low-Density Parity-Check, LDPC) 码
    ▮▮▮▮▮▮▮▮▮▮▮ 9.3.1 LDPC码的图表示 (Graph Representation of LDPC Codes)
    ▮▮▮▮▮▮▮▮▮▮▮ 9.3.2 消息传递译码算法 (Message Passing Decoding Algorithms)
    ▮▮▮▮▮▮▮ 9.4 现代编码的性能比较与应用 (Performance Comparison and Applications of Modern Codes)
    ▮▮▮▮ 10. chapter 10: 有损信源编码与率失真理论 (Lossy Source Coding and Rate-Distortion Theory)
    ▮▮▮▮▮▮▮ 10.1 有损压缩的原理 (Principles of Lossy Compression)
    ▮▮▮▮▮▮▮ 10.2 失真度量 (Distortion Measures)
    ▮▮▮▮▮▮▮ 10.3 率失真函数 (Rate-Distortion Function)
    ▮▮▮▮▮▮▮ 10.4 率失真理论的意义 (Significance of Rate-Distortion Theory)
    ▮▮▮▮▮▮▮ 10.5 量化 (Quantization)
    ▮▮▮▮▮▮▮ 10.6 变换编码初步 (Introduction to Transform Coding)
    ▮▮▮▮ 11. chapter 11: 信息论在通信系统中的应用实例 (Application Examples of Information Theory in Communication Systems)
    ▮▮▮▮▮▮▮ 11.1 调制方式的信息论视角 (Information-Theoretic View of Modulation Schemes)
    ▮▮▮▮▮▮▮ 11.2 多址接入技术 (Multiple Access Techniques)
    ▮▮▮▮▮▮▮▮▮▮▮ 11.2.1 FDMA, TDMA, CDMA
    ▮▮▮▮▮▮▮▮▮▮▮ 11.2.2 OFDMA 与 SC-FDMA
    ▮▮▮▮▮▮▮ 11.3 无线信道的信息论特性 (Information-Theoretic Properties of Wireless Channels)
    ▮▮▮▮▮▮▮▮▮▮▮ 11.3.1 衰落信道 (Fading Channels)
    ▮▮▮▮▮▮▮▮▮▮▮ 11.3.2 多输入多输出 (MIMO) 系统容量初步
    ▮▮▮▮ 12. chapter 12: 高级主题与未来展望 (Advanced Topics and Future Perspectives)
    ▮▮▮▮▮▮▮ 12.1 网络信息论基础 (Fundamentals of Network Information Theory)
    ▮▮▮▮▮▮▮ 12.2 信息论在机器学习中的应用 (Applications of Information Theory in Machine Learning)
    ▮▮▮▮▮▮▮ 12.3 信息论与信息安全 (Information Theory and Information Security)
    ▮▮▮▮▮▮▮ 12.4 量子信息论初步 (Introduction to Quantum Information Theory)
    ▮▮▮▮ 13. chapter 13: 总结与进一步学习建议 (Summary and Suggestions for Further Study)
    ▮▮▮▮▮▮▮ 13.1 全书要点回顾 (Review of Key Points)
    ▮▮▮▮▮▮▮ 13.2 开放问题与研究方向 (Open Problems and Research Directions)
    ▮▮▮▮▮▮▮ 13.3 推荐的进一步阅读材料 (Recommended Further Reading Materials)
    ▮▮▮▮ 14. chapter 14: 附录 (Appendices)
    ▮▮▮▮▮▮▮ 14.1 常用概率分布 (Common Probability Distributions)
    ▮▮▮▮▮▮▮ 14.2 线性代数基础 (Fundamentals of Linear Algebra)
    ▮▮▮▮▮▮▮ 14.3 关键定理证明选讲 (Selected Proofs of Key Theorems)
    ▮▮▮▮ 15. chapter 15: 参考文献 (References)
    ▮▮▮▮▮▮▮ 15.1 经典教材与专著 (Classic Textbooks and Monographs)
    ▮▮▮▮▮▮▮ 15.2 重要论文与期刊 (Important Papers and Journals)


    1. chapter 1: 引言 (Introduction)

    欢迎来到信息论与通信系统的世界!作为一名致力于传授知识、激发思考的讲师,我非常高兴能与大家一同踏上这段探索之旅。信息论,这门由克劳德·香农(Claude Shannon)奠定的学科,为我们理解信息、度量信息以及如何在不确定环境中可靠地传输信息提供了革命性的视角。它不仅是通信系统的理论基石,更是现代数字世界不可或缺的一部分,深刻影响着数据压缩、信道编码、机器学习、甚至生物学等众多领域。

    本书旨在系统地介绍信息论的基本概念、核心理论及其在通信系统中的应用。无论您是初学者,希望建立扎实的理论基础;还是有一定经验的学习者,希望深入理解关键技术;亦或是领域的专家,希望回顾经典并了解前沿,本书都力求为您提供清晰、深入且富有启发性的内容。

    在本章中,我们将首先回顾信息论的诞生背景与发展历程,理解这门学科是如何从通信工程的实践需求中应运而生,并逐渐发展成为一个独立的数学分支。接着,我们将探讨信息论在现代通信系统中扮演的关键角色,认识到它为何如此重要。随后,我将概述本书的整体结构和各章节的主要内容,帮助大家建立全局观。最后,我们将简要回顾一些必要的数学基础,特别是概率论和随机过程的初步知识,为后续章节的学习做好准备。

    让我们一同开启这段精彩的信息论学习之旅吧!🚀

    1.1 信息论的起源与发展 (Origin and Development of Information Theory)

    信息论的诞生,通常被追溯到1948年。那一年,美国数学家、工程师克劳德·香农(Claude Shannon)在《贝尔系统技术杂志》(Bell System Technical Journal)上发表了划时代的论文《通信的数学理论》(A Mathematical Theory of Communication)。这篇论文为信息、通信和不确定性提供了一个统一的数学框架,标志着信息论作为一门独立学科的正式建立。

    在香农之前,通信工程师们更多地依赖于直觉和经验来设计系统。虽然像哈里·奈奎斯特(Harry Nyquist)和拉尔夫·哈特利(Ralph Hartley)等先驱已经对通信的速度和信息量进行了一些初步的思考,但缺乏一个普适的、量化的理论。哈特利在1928年提出了用对数来度量信息量的思想,这为香农的工作奠定了基础。

    香农的工作之所以具有革命性,在于他:

    ① 提出了信息的量化度量——熵(Entropy),用概率来衡量信息源的不确定性。
    ② 建立了通信系统的抽象模型,包括信源(Source)、编码器(Encoder)、信道(Channel)、译码器(Decoder)和信宿(Sink)。
    ③ 证明了著名的信源编码定理(Source Coding Theorem)和信道编码定理(Channel Coding Theorem),揭示了数据压缩的极限(信源的熵)和在有噪声信道上可靠通信的极限(信道容量)。

    香农的理论为通信系统设计提供了根本性的指导:信源编码的目标是尽可能地压缩数据,使其接近信源的熵;信道编码的目标是引入冗余以对抗信道噪声,使得传输速率不超过信道容量时可以实现任意低的错误率。

    信息论的早期发展与通信工程紧密相连,特别是在数字通信领域。随着计算机科学的兴起,信息论的思想也被广泛应用于数据存储、处理和算法设计中。在随后的几十年里,信息论不断发展壮大,涌现出许多重要的分支和应用,例如:

    代数编码理论(Algebraic Coding Theory):研究具有代数结构的纠错码,如BCH码、Reed-Solomon码等。
    率失真理论(Rate-Distortion Theory):研究有损数据压缩的理论极限。
    网络信息论(Network Information Theory):将信息论推广到多用户、多节点通信网络中。
    信息论在统计学和机器学习中的应用:利用熵、互信息等概念进行特征选择、模型评估、算法设计等。

    如今,信息论已经渗透到现代科技的方方面面,从手机通信、互联网、高清视频传输到人工智能、大数据分析,无不闪耀着信息论的光辉。理解信息论,就是掌握理解和设计现代信息系统的钥匙。🔑

    1.2 信息论在通信系统中的重要性 (Importance of Information Theory in Communication Systems)

    信息论为通信系统提供了一个强大的理论框架和性能基准。它的重要性体现在以下几个方面:

    提供理论极限(Theoretical Limits):香农的信源编码定理告诉我们,任何无损压缩都无法将数据压缩到其熵以下;香农的信道编码定理告诉我们,在给定信道特性下,存在一个最大的可靠传输速率,即信道容量(Channel Capacity)。这些定理为通信系统的性能设定了理论上的天花板,指明了努力的方向。
    指导系统设计(Guiding System Design):信息论的概念和定理直接指导了通信系统中关键模块的设计。
    ▮▮▮▮ⓒ 信源编码(Source Coding):如何有效地表示信息,减少冗余,例如霍夫曼编码(Huffman Coding)、算术编码(Arithmetic Coding)等无损压缩技术,以及量化(Quantization)、变换编码(Transform Coding)等有损压缩技术,都基于信息论对信息量和失真度的理解。
    ▮▮▮▮ⓓ 信道编码(Channel Coding):如何在信息中加入适当的冗余以对抗噪声和干扰,实现可靠传输。纠错码(Error Correcting Codes)的设计,如线性分组码(Linear Block Codes)、卷积码(Convolutional Codes)、Turbo码(Turbo Codes)、LDPC码(Low-Density Parity-Check Codes)等,其理论基础和性能分析都离不开信息论。
    ▮▮▮▮ⓔ 调制与解调(Modulation and Demodulation):虽然信息论本身不直接设计具体的调制方案,但信道容量的概念帮助我们理解不同调制方式在给定带宽和信噪比(Signal-to-Noise Ratio, SNR)下的理论性能,例如香农-哈特利定理(Shannon-Hartley Theorem)揭示了带宽、信噪比与信道容量的关系。
    提供性能评估工具(Providing Performance Evaluation Tools):信息论的度量,如熵、互信息、信道容量等,是评估通信系统各环节效率和性能的强大工具。我们可以用这些工具来分析现有系统的瓶颈,并比较不同设计方案的优劣。
    推动技术创新(Driving Technological Innovation):对香农极限的不断追求,激发了通信工程师和数学家们设计出越来越接近理论极限的编码和调制技术。现代通信系统之所以能实现如此高的效率和可靠性,很大程度上得益于信息论的指引和推动,例如Turbo码和LDPC码的发现和应用,极大地提升了无线通信的性能。
    跨学科应用(Interdisciplinary Applications):信息论的思想和方法不仅限于通信,还广泛应用于数据存储(如硬盘、闪存的纠错码)、机器学习(如信息瓶颈原理、互信息在特征选择中的应用)、生物信息学(如DNA序列分析)、经济学等领域,展现了其普适性和强大生命力。

    总而言之,信息论是通信工程师和相关领域研究人员必须掌握的核心理论。它为我们提供了一套严谨的数学语言来描述和分析信息传输过程,是理解、设计和优化现代通信系统的基石。🏗️

    1.3 本书结构与内容概览 (Book Structure and Content Overview)

    本书旨在构建一个从基础到进阶、理论与应用并重的学习路径。全书共分为15章(包括附录和参考文献),结构如下:

    第1章:引言 - 回顾信息论历史,阐述其重要性,概述本书结构,并回顾必要的数学基础。
    第2章:信息的基本概念与度量 - 深入讲解自信息、熵、联合熵、条件熵、互信息等核心概念及其性质,介绍交叉熵和KL散度。这是理解后续内容的基础。
    第3章:离散无记忆信源编码 - 讨论无损数据压缩的原理和极限,介绍克拉夫特不等式,重点讲解霍夫曼编码、香农-范诺-伊利亚斯编码和算术编码。
    第4章:离散无记忆信道 - 介绍离散信道模型,定义信道容量,计算典型离散信道的容量(BSC, BEC),并阐述香农信道编码定理的意义。
    第5章:连续信道容量 - 将信息论概念推广到连续信道,介绍微分熵,重点分析高斯信道和AWGN信道容量,讲解香农-哈特利定理及其对带宽和信噪比权衡的启示。
    第6章:信道编码基础 - 引入差错控制的必要性,讲解编码的基本概念、码率、冗余、汉明距离、最小距离以及检错纠错能力。
    第7章:线性分组码 - 详细介绍线性分组码的定义、性质、生成矩阵、校验矩阵和伴随式译码,以汉明码为例进行分析,并初步介绍循环码。
    第8章:卷积码 - 介绍卷积码的编码器结构,状态图和网格图表示,重点讲解维特比译码算法,并初步介绍序列译码。
    第9章:现代信道编码 - 介绍迭代译码思想,重点讲解Turbo码(结构、迭代译码原理)和LDPC码(图表示、消息传递译码算法),并比较现代编码的性能与应用。
    第10章:有损信源编码与率失真理论 - 介绍有损压缩原理,失真度量,重点讲解率失真函数及其意义,初步介绍量化和变换编码。
    第11章:信息论在通信系统中的应用实例 - 结合信息论视角分析调制方式、多址接入技术(FDMA, TDMA, CDMA, OFDMA, SC-FDMA),并初步探讨无线信道(衰落信道、MIMO)的信息论特性。
    第12章:高级主题与未来展望 - 简要介绍网络信息论、信息论在机器学习中的应用、信息论与信息安全、量子信息论等前沿和交叉领域。
    第13章:总结与进一步学习建议 - 回顾全书要点,指出开放问题和研究方向,并提供进一步学习的建议和资源。
    第14章:附录 - 提供一些必要的数学背景补充,如常用概率分布、线性代数基础以及部分关键定理的证明选讲。
    第15章:参考文献 - 列出本书引用的经典教材、专著、重要论文和期刊,供读者深入研究。

    本书力求概念清晰、推导严谨、实例丰富。每个章节都包含理论讲解、公式推导、典型例子和可能的应用场景。希望通过这种方式,帮助不同层次的读者都能有所收获。📚

    1.4 必要的数学基础回顾 (Review of Necessary Mathematical Background)

    信息论是一门数学化的学科,尤其依赖于概率论。虽然本书会尽量从基础讲起,但在深入学习之前,对概率论和随机过程的基本概念有一个清晰的认识是必要的。本节将简要回顾这些基础知识,如果您对这些概念已经非常熟悉,可以快速浏览;如果感觉生疏,建议查阅相关的概率论教材进行更深入的学习。

    1.4.1 概率论基础 (Fundamentals of Probability Theory)

    概率论是研究随机现象规律的数学分支。在信息论中,我们经常需要处理随机的信源输出和随机的信道噪声,因此概率论是理解信息论的基石。

    随机试验(Random Experiment):满足以下条件的试验:
    ▮▮▮▮⚝ 可以在相同条件下重复进行。
    ▮▮▮▮⚝ 每次试验的结果不止一个,且所有可能结果事先已知。
    ▮▮▮▮⚝ 每次试验出现哪一个结果是偶然的,即在试验前不能确定。

    样本空间(Sample Space):随机试验所有可能结果组成的集合,通常记为 \(\Omega\)。样本空间的元素称为样本点(Sample Point)。

    事件(Event):样本空间 \(\Omega\) 的子集。事件发生是指构成该事件的某个样本点出现。

    概率(Probability):对样本空间 \(\Omega\) 中的每一个事件 \(A\),赋予一个实数 \(P(A)\),称为事件 \(A\) 的概率。概率满足以下公理(Kolmogorov Axioms):
    ▮▮▮▮⚝ 非负性:对于任意事件 \(A\),\(P(A) \ge 0\)。
    ▮▮▮▮⚝ 规范性:样本空间 \(\Omega\) 的概率为1,即 \(P(\Omega) = 1\)。
    ▮▮▮▮⚝ 可列可加性:对于一列互不相容(Mutually Exclusive)的事件 \(A_1, A_2, \dots\),即 \(A_i \cap A_j = \emptyset\) 对所有 \(i \ne j\),有 \(P(\cup_{i=1}^\infty A_i) = \sum_{i=1}^\infty P(A_i)\)。

    条件概率(Conditional Probability):在事件 \(B\) 发生的条件下,事件 \(A\) 发生的概率,记为 \(P(A|B)\)。如果 \(P(B) > 0\),则定义为:
    \[ P(A|B) = \frac{P(A \cap B)}{P(B)} \]
    其中 \(A \cap B\) 表示事件 \(A\) 和事件 \(B\) 同时发生。

    事件的独立性(Independence of Events):如果事件 \(A\) 的发生不影响事件 \(B\) 发生的概率,则称事件 \(A\) 和 \(B\) 相互独立。数学上定义为 \(P(A \cap B) = P(A)P(B)\)。这等价于 \(P(A|B) = P(A)\)(如果 \(P(B) > 0\))或 \(P(B|A) = P(B)\)(如果 \(P(A) > 0\))。

    全概率公式(Law of Total Probability):如果事件集 \(\{B_i\}_{i=1}^n\) 构成样本空间 \(\Omega\) 的一个划分(Partition),即 \(B_i\) 互不相容且 \(\cup_{i=1}^n B_i = \Omega\),且 \(P(B_i) > 0\) 对所有 \(i\),则对于任意事件 \(A\),有:
    \[ P(A) = \sum_{i=1}^n P(A|B_i)P(B_i) \]

    贝叶斯公式(Bayes' Theorem):利用条件概率和全概率公式,可以在已知 \(P(A|B_i)\) 和 \(P(B_i)\) 的情况下,计算 \(P(B_i|A)\)。
    \[ P(B_i|A) = \frac{P(A|B_i)P(B_i)}{P(A)} = \frac{P(A|B_i)P(B_i)}{\sum_{j=1}^n P(A|B_j)P(B_j)} \]
    贝叶斯公式在通信系统的检测和估计中有着广泛的应用。

    1.4.2 随机变量与随机过程初步 (Random Variables and Introduction to Random Processes)

    随机变量是将随机试验的结果映射到实数的一个函数。随机过程是随时间或某个索引变化的随机变量序列或函数。

    随机变量(Random Variable, RV):一个函数 \(X: \Omega \to \mathbb{R}\),将样本空间的每一个样本点映射为一个实数。
    ▮▮▮▮ⓐ 离散随机变量(Discrete Random Variable):取值是有限个或可列无限个实数的随机变量。其概率分布由概率质量函数(Probability Mass Function, PMF)描述:\(p_X(x) = P(X=x)\)。
    ▮▮▮▮ⓑ 连续随机变量(Continuous Random Variable):取值可以在某个连续区间内的随机变量。其概率分布通常由概率密度函数(Probability Density Function, PDF)描述:\(f_X(x)\)。对于连续随机变量,\(P(a \le X \le b) = \int_a^b f_X(x) dx\)。注意,对于连续随机变量,\(P(X=x) = 0\) 对于任何单个值 \(x\)。
    ▮▮▮▮ⓒ 累积分布函数(Cumulative Distribution Function, CDF):对于任意随机变量 \(X\),其CDF定义为 \(F_X(x) = P(X \le x)\)。CDF是单调非减的,且 \(F_X(-\infty) = 0\),\(F_X(+\infty) = 1\)。

    期望(Expectation):随机变量的平均值或中心位置的度量。
    \[ E[X] = \begin{cases} \sum_x x p_X(x) & \text{if } X \text{ is discrete} \\ \int_{-\infty}^\infty x f_X(x) dx & \text{if } X \text{ is continuous} \end{cases} \]

    方差(Variance):随机变量取值分散程度的度量。
    \[ Var(X) = E[(X - E[X])^2] = E[X^2] - (E[X])^2 \]

    多个随机变量(Multiple Random Variables)
    ▮▮▮▮ⓐ 联合分布(Joint Distribution):描述多个随机变量同时取值的概率。对于两个离散随机变量 \(X, Y\),联合PMF为 \(p_{X,Y}(x,y) = P(X=x, Y=y)\)。对于两个连续随机变量 \(X, Y\),联合PDF为 \(f_{X,Y}(x,y)\)。
    ▮▮▮▮ⓑ 边缘分布(Marginal Distribution):从联合分布中得到单个随机变量的分布。例如,对于离散情况,\(p_X(x) = \sum_y p_{X,Y}(x,y)\)。
    ▮▮▮▮ⓒ 条件分布(Conditional Distribution):在已知一个或多个随机变量取值的情况下,另一个随机变量的分布。例如,对于离散情况,\(p_{X|Y}(x|y) = P(X=x|Y=y) = \frac{p_{X,Y}(x,y)}{p_Y(y)}\)(如果 \(p_Y(y) > 0\))。
    ▮▮▮▮ⓓ 随机变量的独立性(Independence of Random Variables):如果随机变量 \(X\) 和 \(Y\) 的联合分布等于其边缘分布的乘积,即 \(p_{X,Y}(x,y) = p_X(x)p_Y(y)\) 或 \(f_{X,Y}(x,y) = f_X(x)f_Y(y)\),则称 \(X\) 和 \(Y\) 相互独立。这等价于条件分布等于边缘分布,例如 \(p_{X|Y}(x|y) = p_X(x)\)(如果 \(p_Y(y) > 0\))。
    ▮▮▮▮ⓔ 协方差(Covariance):衡量两个随机变量线性相关程度的度量。\(Cov(X,Y) = E[(X - E[X])(Y - E[Y])] = E[XY] - E[X]E[Y]\)。如果 \(X\) 和 \(Y\) 独立,则 \(Cov(X,Y) = 0\),但反之不一定成立。
    ▮▮▮▮ⓕ 相关系数(Correlation Coefficient):对协方差进行归一化,取值范围在 \([-1, 1]\) 之间,更能直观表示线性相关程度。\(\rho_{X,Y} = \frac{Cov(X,Y)}{\sqrt{Var(X)Var(Y)}}\)。

    随机过程(Random Process):一个随时间 \(t\) 或索引 \(n\) 变化的随机变量集合 \(\{X(t), t \in T\}\) 或 \(\{X_n, n \in I\}\)。在通信系统中,信号、噪声等常常被建模为随机过程。例如,离散时间随机过程可以看作是随机变量的一个序列。信息论中常处理的是离散时间随机过程,特别是独立同分布(Independent and Identically Distributed, IID)的随机序列,以及具有马尔可夫(Markov)性质的随机过程。

    本章对数学基础的介绍是高度概括的。在后续章节遇到具体的数学工具时,我们会结合上下文进行讲解。如果您在学习过程中遇到困难,请务必回顾相关的概率论和线性代数知识。扎实的数学基础是掌握信息论的关键。💪

    2. chapter 2: 信息的基本概念与度量 (Basic Concepts and Measures of Information)

    欢迎来到信息论的第二章!在上一章中,我们回顾了信息论的起源、它在通信系统中的核心地位以及一些必要的数学基础。现在,我们将深入信息论的核心,探讨如何对“信息”本身进行科学的度量。这不仅仅是理论上的抽象,更是理解数据压缩、信道容量等后续重要概念的基石。我们将学习自信息、熵、联合熵、条件熵、互信息等一系列关键概念,并了解它们之间的关系以及在信息传输和处理中的意义。

    2.1 自信息 (Self-Information) 与熵 (Entropy)

    我们如何量化一个事件所包含的信息量呢?直观上,一个不太可能发生的事件一旦发生,会带给我们更多的“惊喜”或“信息”。例如,如果天气预报说“明天太阳从东方升起”,这几乎不包含任何信息,因为它是一个确定会发生的事件。但如果预报说“明天北京下雪”,而现在是七月,这则包含大量信息,因为它发生的概率极低。

    基于这种直觉,信息量应该与事件发生的概率有关,而且是概率的减函数。香农(Claude Shannon)定义了自信息 (Self-Information) 来度量单个事件 \(x\) 发生所带来的信息量:

    \[ I(x) = \log_b \frac{1}{P(x)} = -\log_b P(x) \]

    其中,\(P(x)\) 是事件 \(x\) 发生的概率,\(b\) 是对数的底。

    ① 对数底 \(b\) 的选择决定了信息量的单位:
    ▮▮▮▮ⓑ 如果 \(b=2\),单位是比特 (bit)。这是信息论中最常用的单位,因为在数字通信中,信息最终被表示为二进制位。
    ▮▮▮▮ⓒ 如果 \(b=e\),单位是纳特 (nat)。
    ▮▮▮▮ⓓ 如果 \(b=10\),单位是迪特 (dit) 或哈特莱 (Hartley)。

    在本书中,除非特别说明,我们将默认使用以2为底的对数,信息量的单位为比特 (bit)。

    自信息度量的是单个事件的信息量。然而,在通信系统中,我们通常关心的是一个信源 (Source) 平均能够产生多少信息。信源可以看作是一个产生一系列符号(或消息)的随机过程。对于一个离散随机变量 \(X\),它可能取值为 \(x_1, x_2, \dots, x_n\),对应的概率为 \(P(x_1), P(x_2), \dots, P(x_n)\)。香农定义了熵 (Entropy) 来度量离散随机变量 \(X\) 的平均不确定性,或者说信源的平均信息量:

    \[ H(X) = E[I(X)] = \sum_{i=1}^n P(x_i) I(x_i) = -\sum_{i=1}^n P(x_i) \log_b P(x_i) \]

    熵 \(H(X)\) 可以理解为:

    ⚝ 描述随机变量 \(X\) 的不确定性程度。熵越大,不确定性越高。
    ⚝ 在无损压缩的意义下,表示对随机变量 \(X\) 的输出进行编码所需的平均最小比特数。

    例子:
    考虑一个抛硬币的信源。
    ① 如果是公平硬币:正面 (H) 概率 \(P(H) = 0.5\),反面 (T) 概率 \(P(T) = 0.5\)。
    ▮▮▮▮自信息:\(I(H) = -\log_2(0.5) = 1\) 比特,\(I(T) = -\log_2(0.5) = 1\) 比特。
    ▮▮▮▮熵:\(H(X) = -0.5 \log_2(0.5) - 0.5 \log_2(0.5) = -0.5(-1) - 0.5(-1) = 0.5 + 0.5 = 1\) 比特。
    ▮▮▮▮这意味着每次抛掷公平硬币平均产生1比特的信息。

    ② 如果是极端不公平硬币:正面 (H) 概率 \(P(H) = 1\),反面 (T) 概率 \(P(T) = 0\)。
    ▮▮▮▮自信息:\(I(H) = -\log_2(1) = 0\) 比特。对于 \(P(T)=0\),根据定义 \(0 \log_2 0 = 0\)。
    ▮▮▮▮熵:\(H(X) = -1 \log_2(1) - 0 \log_2(0) = -1(0) - 0 = 0\) 比特。
    ▮▮▮▮这意味着一个确定性事件(或信源)的熵为0,不包含信息。

    熵的取值范围:对于一个有 \(n\) 种可能取值的离散随机变量,其熵 \(H(X)\) 满足 \(0 \le H(X) \le \log_b n\)。当且仅当 \(X\) 的取值是确定的时候,熵取最小值0。当且仅当 \(X\) 的取值服从均匀分布时,熵取最大值 \(\log_b n\)。

    2.2 联合熵 (Joint Entropy) 与条件熵 (Conditional Entropy)

    在通信系统中,我们经常需要考虑多个随机变量之间的关系。例如,发送的符号 \(X\) 和接收到的符号 \(Y\) 可能不是完全独立的。

    联合熵 (Joint Entropy) 度量一对离散随机变量 \((X, Y)\) 的不确定性。如果 \((X, Y)\) 的联合概率分布为 \(P(x, y)\),则其联合熵定义为:

    \[ H(X, Y) = -\sum_{x \in \mathcal{X}} \sum_{y \in \mathcal{Y}} P(x, y) \log_b P(x, y) \]

    其中 \(\mathcal{X}\) 和 \(\mathcal{Y}\) 分别是 \(X\) 和 \(Y\) 的取值空间。联合熵可以看作是描述随机向量 \((X, Y)\) 所需的平均比特数。

    条件熵 (Conditional Entropy) 度量在已知随机变量 \(X\) 的值后,随机变量 \(Y\) 的平均不确定性。对于给定的 \(X=x\),\(Y\) 的条件熵是 \(H(Y|X=x) = -\sum_{y \in \mathcal{Y}} P(y|x) \log_b P(y|x)\)。对所有可能的 \(x\) 的条件熵取平均,就得到条件熵 \(H(Y|X)\):

    \[ H(Y|X) = \sum_{x \in \mathcal{X}} P(x) H(Y|X=x) = -\sum_{x \in \mathcal{X}} P(x) \sum_{y \in \mathcal{Y}} P(y|x) \log_b P(y|x) \]
    \[ H(Y|X) = -\sum_{x \in \mathcal{X}} \sum_{y \in \mathcal{Y}} P(x, y) \log_b P(y|x) \]

    条件熵 \(H(Y|X)\) 可以理解为:在已知 \(X\) 的情况下,描述 \(Y\) 所需的平均额外比特数。

    联合熵、熵和条件熵之间存在一个重要的关系,称为链式法则 (Chain Rule)

    \[ H(X, Y) = H(X) + H(Y|X) \]

    这个公式非常直观:描述一对随机变量 \((X, Y)\) 所需的总信息量,等于描述 \(X\) 所需的信息量,加上在已知 \(X\) 的情况下描述 \(Y\) 所需的额外信息量。这个法则可以推广到多个随机变量:

    \[ H(X_1, X_2, \dots, X_n) = H(X_1) + H(X_2|X_1) + H(X_3|X_1, X_2) + \dots + H(X_n|X_1, \dots, X_{n-1}) \]

    2.3 互信息 (Mutual Information)

    互信息是信息论中另一个核心概念,它度量两个随机变量之间共享的信息量,或者说一个随机变量包含的关于另一个随机变量的信息量。它也可以看作是知道其中一个变量后,另一个变量不确定性减少的程度。

    互信息 (Mutual Information) \(I(X; Y)\) 定义为:

    \[ I(X; Y) = H(X) - H(X|Y) \]

    或者等价地:

    \[ I(X; Y) = H(Y) - H(Y|X) \]

    这两个定义表明,X 关于 Y 的信息量等于 Y 关于 X 的信息量,即 \(I(X; Y) = I(Y; X)\)。

    利用联合熵和条件熵的关系,互信息还可以表示为:

    \[ I(X; Y) = H(X) + H(Y) - H(X, Y) \]

    互信息 \(I(X; Y)\) 具有以下重要性质:

    非负性: \(I(X; Y) \ge 0\)。信息量总是非负的。
    独立性: \(I(X; Y) = 0\) 当且仅当 \(X\) 和 \(Y\) 相互独立。如果两个变量独立,知道其中一个不会减少另一个的不确定性,它们之间没有共享信息。
    与熵的关系: \(I(X; Y) \le H(X)\) 且 \(I(X; Y) \le H(Y)\)。两个变量共享的信息量不会超过它们各自包含的总信息量。当 \(Y\) 完全确定 \(X\) 时(例如 \(Y=X\)),\(I(X; Y) = H(X)\)。

    互信息在通信系统中具有极其重要的意义。它可以用来度量信道的传输能力。如果 \(X\) 是发送的信号,\(Y\) 是接收到的信号,那么 \(I(X; Y)\) 就表示通过信道传输的平均信息量。在第四章中,我们将看到信道容量 (Channel Capacity) 正是互信息的最大值。

    我们可以用一个维恩图(Venn Diagram)来形象地表示熵、联合熵、条件熵和互信息之间的关系:

    1.双击鼠标左键复制此行;2.单击复制所有代码。
                                    
                                        
    1 +-------------------+
    2 | H(X, Y) |
    3 | +---------------+ |
    4 | | H(X) | |
    5 | | +-----------+ | |
    6 | | | I(X; Y) | | |
    7 | | +-----------+ | |
    8 | | H(X|Y) | |
    9 | +---------------+ |
    10 | H(Y|X) |
    11 | +---------------+ |
    12 | | H(Y) | |
    13 | +---------------+ |
    14 +-------------------+

    这个图示表明:
    ⚝ \(H(X, Y)\) 是总的不确定性。
    ⚝ \(H(X)\) 和 \(H(Y)\) 是各自的不确定性。
    ⚝ \(I(X; Y)\) 是 \(H(X)\) 和 \(H(Y)\) 重叠的部分,表示共享的信息。
    ⚝ \(H(X|Y)\) 是 \(H(X)\) 中不与 \(H(Y)\) 重叠的部分,表示在已知 \(Y\) 后 \(X\) 剩余的不确定性。
    ⚝ \(H(Y|X)\) 是 \(H(Y)\) 中不与 \(H(X)\) 重叠的部分,表示在已知 \(X\) 后 \(Y\) 剩余的不确定性。

    从图中可以清晰地看出:
    \(H(X, Y) = H(X) + H(Y|X) = H(Y) + H(X|Y)\)
    \(I(X; Y) = H(X) - H(X|Y) = H(Y) - H(Y|X)\)
    \(I(X; Y) = H(X) + H(Y) - H(X, Y)\)

    2.4 熵的性质与链式法则 (Properties of Entropy and Chain Rules)

    我们已经介绍了一些熵和相关概念的性质,这里我们系统地总结一些重要的性质:

    非负性 (Non-negativity): 对于任何离散随机变量 \(X\),\(H(X) \ge 0\)。信息量和不确定性不能是负的。
    确定性事件的熵为零 (Entropy of a deterministic event is zero): 如果 \(X\) 的取值是确定的(即某个 \(x_i\) 的概率为1,其他为0),则 \(H(X) = 0\)。
    均匀分布具有最大熵 (Uniform distribution maximizes entropy): 对于一个有 \(n\) 种可能取值的离散随机变量,当且仅当其概率分布是均匀分布时(即 \(P(x_i) = 1/n\) 对所有 \(i\) 成立),熵取最大值 \(\log_b n\)。这符合直觉,均匀分布的随机变量具有最大的不确定性。
    熵的凹性 (Concavity of Entropy): 熵函数 \(H(P)\) 是关于概率分布 \(P\) 的凹函数。这个性质在证明一些信息论不等式时非常有用。
    条件作用减少熵 (Conditioning reduces entropy): \(H(X|Y) \le H(X)\)。知道另一个随机变量 \(Y\) 的值通常会减少关于 \(X\) 的不确定性。等号成立当且仅当 \(X\) 和 \(Y\) 相互独立。
    联合熵大于等于单个熵 (Joint entropy is greater than or equal to individual entropies): \(H(X, Y) \ge H(X)\) 且 \(H(X, Y) \ge H(Y)\)。描述一对变量所需的信息量至少等于描述其中任何一个变量所需的信息量。
    联合熵小于等于单个熵之和 (Joint entropy is less than or equal to sum of individual entropies): \(H(X, Y) \le H(X) + H(Y)\)。等号成立当且仅当 \(X\) 和 \(Y\) 相互独立。这与 \(I(X; Y) = H(X) + H(Y) - H(X, Y) \ge 0\) 是等价的。

    链式法则 (Chain Rules) 是连接多个随机变量熵的重要工具。我们已经在2.2节介绍了联合熵的链式法则:

    \[ H(X_1, X_2, \dots, X_n) = \sum_{i=1}^n H(X_i | X_1, \dots, X_{i-1}) \]

    类似地,互信息也有链式法则:

    \[ I(X_1, \dots, X_n; Y) = \sum_{i=1}^n I(X_i; Y | X_1, \dots, X_{i-1}) \]

    其中 \(I(X_i; Y | X_1, \dots, X_{i-1}) = H(X_i | X_1, \dots, X_{i-1}) - H(X_i | X_1, \dots, X_{i-1}, Y)\) 是条件互信息。这个法则表示多个变量与另一个变量的联合互信息等于单个变量在给定前面变量条件下的条件互信息之和。

    这些性质和链式法则构成了信息论中许多重要定理和结论的基础,例如数据压缩的极限(信源编码定理)和可靠通信的极限(信道编码定理)。

    2.5 交叉熵 (Cross-Entropy) 与KL散度 (KL Divergence)

    在信息论以及机器学习等领域,我们经常需要比较两个概率分布的相似性或差异性。交叉熵和KL散度是用于此目的的重要度量。

    假设我们有一个真实的概率分布 \(P(x)\),以及一个模型或近似分布 \(Q(x)\)。

    交叉熵 (Cross-Entropy) \(H(P, Q)\) 定义为:

    \[ H(P, Q) = -\sum_{x} P(x) \log_b Q(x) \]

    交叉熵可以理解为:使用基于分布 \(Q\) 的编码方案来编码服从分布 \(P\) 的数据所需的平均比特数。根据信息论的原理,最优的编码方案是基于真实分布 \(P\) 的,所需的平均比特数就是熵 \(H(P)\)。因此,使用 \(Q\) 来编码 \(P\) 所需的平均比特数 \(H(P, Q)\) 通常会大于或等于 \(H(P)\)。

    KL散度 (KL Divergence),也称为相对熵 (Relative Entropy),度量了使用 \(Q\) 来近似 \(P\) 时所损失的信息量,或者说 \(Q\) 与 \(P\) 之间的差异。KL散度 \(D_{KL}(P || Q)\) 定义为:

    \[ D_{KL}(P || Q) = \sum_{x} P(x) \log_b \frac{P(x)}{Q(x)} \]

    KL散度与交叉熵和熵之间的关系是:

    \[ D_{KL}(P || Q) = H(P, Q) - H(P) \]

    这个关系表明,KL散度是使用 \(Q\) 编码 \(P\) 所需的平均比特数 \(H(P, Q)\) 与使用最优编码(基于 \(P\))所需的平均比特数 \(H(P)\) 之间的差值。因此,KL散度表示了由于使用 \(Q\) 而不是 \(P\) 进行编码所带来的额外平均比特数。

    KL散度具有以下重要性质:

    非负性 (Non-negativity): \(D_{KL}(P || Q) \ge 0\)。当且仅当 \(P(x) = Q(x)\) 对所有 \(x\) 成立时,\(D_{KL}(P || Q) = 0\)。这意味着只有当两个分布完全相同时,它们之间的KL散度才为零。
    非对称性 (Asymmetry): 通常 \(D_{KL}(P || Q) \ne D_{KL}(Q || P)\)。因此,KL散度不是一个真正的“距离”度量,因为它不满足对称性。
    凸性 (Convexity): KL散度是关于 \((P, Q)\) 的联合凸函数。

    在机器学习中,KL散度常被用作损失函数的一部分,例如在训练生成模型时,我们希望模型的输出分布 \(Q\) 尽可能接近真实数据分布 \(P\),这时就可以最小化 \(D_{KL}(P || Q)\)。由于 \(H(P)\) 是常数(对于给定的数据分布),最小化 \(D_{KL}(P || Q)\) 等价于最小化交叉熵 \(H(P, Q)\)。因此,交叉熵也常被用作分类任务的损失函数。

    本章我们学习了信息论中最基本也是最重要的概念:自信息、熵、联合熵、条件熵、互信息,以及用于比较概率分布的交叉熵和KL散度。这些概念为我们量化信息、理解信息传输的极限奠定了坚实的基础。在接下来的章节中,我们将利用这些工具来分析信源编码和信道编码的问题。

    3. chapter 3: 离散无记忆信源编码 (Discrete Memoryless Source Coding)

    欢迎来到本书的第三章!在前两章中,我们探讨了信息论的基本概念,包括信息的度量(熵、互信息等)以及概率论的基础。现在,我们将把这些理论工具应用于通信系统的第一个关键环节:信源编码(Source Coding),也称为数据压缩(Data Compression)。信源编码的目的是在保证一定失真度(或无失真)的前提下,用尽可能少的比特(bits)来表示信源输出的信息,从而提高通信效率或存储效率。本章将重点讨论离散无记忆信源(Discrete Memoryless Source, DMS)的无失真编码。

    3.1 信源模型 (Source Models)

    在信息论中,信源(Source)是指产生消息的实体。为了对其进行数学分析,我们需要建立信源的数学模型。本章主要关注离散信源(Discrete Source),即信源输出的消息符号(symbols)来自一个有限或可数的字母表(alphabet)。

    一个离散信源可以用一个随机过程(Random Process)来描述。如果信源在不同时刻输出的符号是相互独立的,并且其概率分布不随时间变化,那么我们称之为离散无记忆信源(Discrete Memoryless Source, DMS)。

    形式上,一个离散无记忆信源 \(S\) 可以由其字母表 \(\mathcal{X} = \{x_1, x_2, \dots, x_K\}\) 和每个符号 \(x_i\) 出现的概率 \(P(x_i) = p_i\) 来完全描述,其中 \(i = 1, 2, \dots, K\),且满足 \(p_i \ge 0\) 且 \(\sum_{i=1}^K p_i = 1\)。由于是无记忆的,信源输出的符号序列 \(s_1, s_2, \dots, s_n\) 的概率可以简单地表示为各个符号概率的乘积:
    \[ P(s_1, s_2, \dots, s_n) = P(s_1) P(s_2) \dots P(s_n) \]
    其中 \(s_i \in \mathcal{X}\)。

    例子:
    考虑一个抛硬币的信源。如果硬币是均匀的,那么字母表是 \(\{\text{正面}, \text{反面}\}\),概率分布是 \(P(\text{正面}) = 0.5\),\(P(\text{反面}) = 0.5\)。如果每次抛硬币的结果都独立于之前的结果,这就是一个离散无记忆信源。

    另一个例子是英文文本信源。如果忽略字母之间的关联性(这通常不是一个精确的模型,因为文本是有记忆的),只考虑每个字母出现的概率,那么字母表是26个英文字母加上空格和标点符号等,每个符号有其对应的出现概率。如果假设每个字母的出现是独立的,则可以近似为一个DMS。

    理解信源模型是信源编码的基础。我们的目标是找到一种编码方式,用二进制比特串(codewords)来表示信源输出的符号或符号序列,使得平均每个符号所需的比特数尽可能少。

    3.2 数据压缩的原理与极限 (Principles and Limits of Data Compression)

    数据压缩(Data Compression)或信源编码(Source Coding)的核心思想是消除信源中的冗余(Redundancy)。冗余的存在是因为信源输出的符号并非等概率出现,或者符号之间存在依赖关系。对于离散无记忆信源,冗余主要体现在符号出现的概率不等。出现概率高的符号携带的信息量(自信息)少,而出现概率低的符号携带的信息量多。直观上,我们应该用较短的码字(codewords)表示出现概率高的符号,用较长的码字表示出现概率低的符号,这样才能在平均意义上减少编码长度。

    无失真数据压缩(Lossless Data Compression)要求能够从编码后的比特串完全恢复原始的信源符号序列,不丢失任何信息。

    衡量编码效率的一个重要指标是平均码长(Average Codeword Length)。假设信源字母表是 \(\mathcal{X} = \{x_1, x_2, \dots, x_K\}\),对应的概率是 \(P(x_i) = p_i\),每个符号 \(x_i\) 被编码成一个长度为 \(l_i\) 的二进制码字。那么,平均码长 \(L\) 定义为:
    \[ L = \sum_{i=1}^K p_i l_i \]
    我们的目标是设计一种编码方案,使得 \(L\) 最小。

    信息论告诉我们,对于一个离散无记忆信源,其平均每个符号的最小可能编码长度有一个理论下限,这个下限就是信源的熵(Entropy)。根据香农的信源编码定理(Shannon's Source Coding Theorem),对于一个熵为 \(H(X)\) 的离散无记忆信源,任何无失真编码方案的平均码长 \(L\) 都必须满足:
    \[ L \ge H(X) \]
    其中 \(H(X) = -\sum_{i=1}^K p_i \log_b p_i\)。通常在信息论中,我们使用以2为底的对数(\(\log_2\)),此时熵的单位是比特(bits)。

    香农信源编码定理的意义在于,它给出了无失真数据压缩的理论极限。我们永远不可能将平均码长压缩到小于信源的熵。同时,该定理也指出,存在一种编码方法(尽管可能是对长序列进行编码),可以使平均码长任意接近熵。

    因此,数据压缩的原理就是利用信源的统计特性(符号出现的概率分布)来设计变长码(Variable-Length Codes),使得高概率符号对应短码字,低概率符号对应长码字,从而使平均码长接近信源的熵。

    3.3 克拉夫特不等式 (Kraft's Inequality) 与最优码 (Optimal Codes)

    在设计变长码时,我们需要确保编码是唯一可译的(Uniquely Decodable)。这意味着任何一串编码后的比特流都只能对应唯一一个原始符号序列。一个简单且常用的实现唯一可译性的方法是使用前缀码(Prefix Code),也称为即时码(Instantaneous Code)。在前缀码中,任何一个码字(codeword)都不是其他任何码字的前缀。例如,\(\{0, 10, 11\}\) 是一个前缀码,而 \(\{0, 01, 10\}\) 不是,因为 001 的前缀。前缀码的优点在于,一旦接收到一个码字,就可以立即确定它是一个完整的码字,无需等待后续的比特,这使得译码过程非常简单高效。

    克拉夫特不等式(Kraft's Inequality)给出了一个离散无记忆信源存在前缀码的充要条件。对于一个包含 \(K\) 个符号的信源,如果存在一个前缀码,其码字长度分别为 \(l_1, l_2, \dots, l_K\),那么这些长度必须满足:
    \[ \sum_{i=1}^K b^{-l_i} \le 1 \]
    其中 \(b\) 是编码使用的进制数(对于二进制码,\(b=2\))。反之,如果一组码字长度 \(l_1, l_2, \dots, l_K\) 满足克拉夫特不等式,那么就存在一个前缀码具有这些码字长度。

    对于二进制码(\(b=2\)),克拉夫特不等式为:
    \[ \sum_{i=1}^K 2^{-l_i} \le 1 \]

    最优码(Optimal Code)是指对于给定的信源概率分布,能够实现最小平均码长 \(L = \sum p_i l_i\) 的无失真编码。对于离散无记忆信源,最优无失真码一定是前缀码。因此,寻找最优码的问题就转化为在满足克拉夫特不等式 \(\sum 2^{-l_i} \le 1\) 的所有码长集合 \(\{l_i\}\) 中,找到使得平均码长 \(L = \sum p_i l_i\) 最小的那组码长。

    通过拉格朗日乘子法等优化技术可以证明,当码长 \(l_i\) 满足 \(l_i = -\log_2 p_i\) 时,平均码长达到理论最小值,即信源的熵 \(H(X)\)。然而,实际中码长必须是整数,所以我们通常无法精确达到熵的下限。最优整数码长 \(l_i^*\) 应该尽可能接近 \(-\log_2 p_i\)。具体来说,最优码长 \(l_i^*\) 应该满足:
    \[ -\log_2 p_i \le l_i^* < -\log_2 p_i + 1 \]
    或者更精确地,\(l_i^* = \lceil -\log_2 p_i \rceil\) 并不总是最优的,但最优码长 \(l_i^*\) 必须满足 \(p_i \approx 2^{-l_i^*}\),即概率越高的符号,其最优码长越短。

    满足克拉夫特不等式等号 \(\sum 2^{-l_i} = 1\) 的前缀码被称为完备码(Complete Code)。完备码对应的码树(Code Tree)是一个满二叉树(Full Binary Tree),即每个非叶子节点都有两个子节点。最优前缀码通常是完备码。

    3.4 霍夫曼编码 (Huffman Coding)

    霍夫曼编码(Huffman Coding)是一种广泛使用的构建最优前缀码的算法。它由 David A. Huffman 在1952年提出。霍夫曼编码算法基于信源符号的概率,采用贪心策略(Greedy Strategy)构建码树。

    霍夫曼编码算法步骤:

    ① 将每个信源符号视为一个初始节点,其权重(Weight)为其对应的概率。
    ② 将所有节点按权重从小到大排序。
    ③ 选择权重最小的两个节点,将它们合并成一个新的父节点。新节点的权重是其两个子节点权重的和。这两个子节点分别作为父节点的左子和右子(顺序可以约定,例如左子权重小于等于右子权重)。
    ④ 从排序列表中移除那两个被合并的节点,将新的父节点加入列表。
    ⑤ 重复步骤②至④,直到列表中只剩下一个节点,这个节点就是码树的根节点。
    ⑥ 从根节点开始,为码树的每条分支分配二进制位。例如,左分支分配 '0',右分支分配 '1'。
    ⑦ 从根节点到每个叶子节点(对应信源符号)的路径上的二进制位串就是该符号的霍夫曼码字。

    例子:
    考虑一个信源,字母表 \(\mathcal{X} = \{A, B, C, D, E\}\),概率分布为 \(P(A)=0.3, P(B)=0.3, P(C)=0.2, P(D)=0.1, P(E)=0.1\)。

    构建霍夫曼码树:
    ⚝ 初始节点及概率:A(0.3), B(0.3), C(0.2), D(0.1), E(0.1)
    ⚝ 排序:D(0.1), E(0.1), C(0.2), A(0.3), B(0.3)
    ⚝ 合并 D 和 E:新节点 DE(0.1+0.1=0.2)。列表:C(0.2), DE(0.2), A(0.3), B(0.3)
    ⚝ 排序:C(0.2), DE(0.2), A(0.3), B(0.3)
    ⚝ 合并 C 和 DE:新节点 CDE(0.2+0.2=0.4)。列表:A(0.3), B(0.3), CDE(0.4)
    ⚝ 排序:A(0.3), B(0.3), CDE(0.4)
    ⚝ 合并 A 和 B:新节点 AB(0.3+0.3=0.6)。列表:CDE(0.4), AB(0.6)
    ⚝ 排序:CDE(0.4), AB(0.6)
    ⚝ 合并 CDE 和 AB:新节点 ABCDE(0.4+0.6=1.0)。列表:ABCDE(1.0) - 根节点

    分配码字(左0右1):
    根 (1.0)
    ▮▮▮▮ 左 -> CDE (0.4) -> 0
    ▮▮▮▮ 右 -> AB (0.6) -> 1
    CDE (0.4)
    ▮▮▮▮ 左 -> C (0.2) -> 00
    ▮▮▮▮ 右 -> DE (0.2) -> 01
    AB (0.6)
    ▮▮▮▮ 左 -> A (0.3) -> 10
    ▮▮▮▮ 右 -> B (0.3) -> 11
    DE (0.2)
    ▮▮▮▮ 左 -> D (0.1) -> 010
    ▮▮▮▮ 右 -> E (0.1) -> 011

    得到的霍夫曼码字:
    A: 10 (长度 2)
    B: 11 (长度 2)
    C: 00 (长度 2)
    D: 010 (长度 3)
    E: 011 (长度 3)

    平均码长 \(L = 0.3 \times 2 + 0.3 \times 2 + 0.2 \times 2 + 0.1 \times 3 + 0.1 \times 3 = 0.6 + 0.6 + 0.4 + 0.3 + 0.3 = 2.2\) 比特/符号。

    信源的熵 \(H(X) = -(0.3\log_2 0.3 + 0.3\log_2 0.3 + 0.2\log_2 0.2 + 0.1\log_2 0.1 + 0.1\log_2 0.1)\)
    \(H(X) \approx -2 \times 0.3 \times (-1.737) - 0.2 \times (-2.322) - 2 \times 0.1 \times (-3.322)\)
    \(H(X) \approx 1.042 + 0.464 + 0.664 = 2.17\) 比特。
    平均码长 2.2 比特/符号非常接近熵的理论下限 2.17 比特/符号。

    霍夫曼编码是针对单个符号进行编码的最优前缀码。它的优点是简单易实现,且对于给定的符号概率分布,能够达到最小的平均码长。然而,霍夫曼编码的效率取决于符号概率的分布。如果符号概率非常接近,霍夫曼编码的优势就不那么明显。此外,霍夫曼编码需要知道信源的概率分布,并在编码前构建码表,这对于动态变化的信源不太适用。

    3.5 香农-范诺-伊利亚斯编码 (Shannon-Fano-Elias Coding)

    香农-范诺-伊利亚斯编码(Shannon-Fano-Elias Coding)是一种基于累积概率(Cumulative Probability)的编码方法。它不是最优的前缀码(通常不是),但其平均码长可以非常接近信源的熵,尤其是在对长序列进行编码时。

    香农-范诺-伊利亚斯编码的基本思想:

    ① 对信源字母表中的符号按概率大小排序(例如,从大到小)。
    ② 计算每个符号的累积概率 \(F_i\)。通常定义 \(F_i = \sum_{j=1}^{i-1} p_j\),其中 \(p_j\) 是排序后的第 \(j\) 个符号的概率,\(F_1 = 0\)。
    ③ 将每个符号 \(x_i\) 映射到区间 \([F_i, F_i + p_i)\)。
    ④ 对于每个符号 \(x_i\),选择区间 \([F_i, F_i + p_i)\) 中的一个点,例如中点 \(F_i + p_i/2\)。
    ⑤ 将这个点用二进制小数表示。例如,\(0.b_1 b_2 b_3 \dots\)。
    ⑥ 截取二进制小数的前 \(l_i = \lceil -\log_2 p_i \rceil + 1\) 位作为符号 \(x_i\) 的码字。这个长度选择是为了确保码字能够唯一标识原始符号。

    例子:
    使用与霍夫曼编码相同的信源:\(\mathcal{X} = \{A, B, C, D, E\}\),概率分布为 \(P(A)=0.3, P(B)=0.3, P(C)=0.2, P(D)=0.1, P(E)=0.1\)。

    ① 排序(按概率从大到小):A(0.3), B(0.3), C(0.2), D(0.1), E(0.1)
    ② 计算累积概率 \(F_i\):
    \(F_A = 0\)
    \(F_B = P(A) = 0.3\)
    \(F_C = P(A) + P(B) = 0.3 + 0.3 = 0.6\)
    \(F_D = P(A) + P(B) + P(C) = 0.3 + 0.3 + 0.2 = 0.8\)
    \(F_E = P(A) + P(B) + P(C) + P(D) = 0.3 + 0.3 + 0.2 + 0.1 = 0.9\)

    ③ 符号对应的区间 \([F_i, F_i + p_i)\):
    A: [0, 0.3)
    B: [0.3, 0.6)
    C: [0.6, 0.8)
    D: [0.8, 0.9)
    E: [0.9, 1.0)

    ④ 选择区间中点 \(F_i + p_i/2\):
    A: \(0 + 0.3/2 = 0.15\)
    B: \(0.3 + 0.3/2 = 0.45\)
    C: \(0.6 + 0.2/2 = 0.7\)
    D: \(0.8 + 0.1/2 = 0.85\)
    E: \(0.9 + 0.1/2 = 0.95\)

    ⑤ 将中点表示为二进制小数:
    0.15 (十进制) = 0.0010011001... (二进制)
    0.45 (十进制) = 0.0111001100... (二进制)
    0.7 (十进制) = 0.1011001100... (二进制)
    0.85 (十进制) = 0.1101100110... (二进制)
    0.95 (十进制) = 0.1111001100... (二进制)

    ⑥ 计算码字长度 \(l_i = \lceil -\log_2 p_i \rceil + 1\):
    \(p_A=0.3, -\log_2 0.3 \approx 1.737, l_A = \lceil 1.737 \rceil + 1 = 2 + 1 = 3\)
    \(p_B=0.3, -\log_2 0.3 \approx 1.737, l_B = \lceil 1.737 \rceil + 1 = 2 + 1 = 3\)
    \(p_C=0.2, -\log_2 0.2 \approx 2.322, l_C = \lceil 2.322 \rceil + 1 = 3 + 1 = 4\)
    \(p_D=0.1, -\log_2 0.1 \approx 3.322, l_D = \lceil 3.322 \rceil + 1 = 4 + 1 = 5\)
    \(p_E=0.1, -\log_2 0.1 \approx 3.322, l_E = \lceil 3.322 \rceil + 1 = 4 + 1 = 5\)

    ⑦ 截取码字:
    A: 0.001... 截取前3位 -> 001
    B: 0.011... 截取前3位 -> 011
    C: 0.101... 截取前4位 -> 1011
    D: 0.1101... 截取前5位 -> 11011
    E: 0.1111... 截取前5位 -> 11110

    得到的香农-范诺-伊利亚斯码字:
    A: 001 (长度 3)
    B: 011 (长度 3)
    C: 1011 (长度 4)
    D: 11011 (长度 5)
    E: 11110 (长度 5)

    平均码长 \(L = 0.3 \times 3 + 0.3 \times 3 + 0.2 \times 4 + 0.1 \times 5 + 0.1 \times 5 = 0.9 + 0.9 + 0.8 + 0.5 + 0.5 = 3.6\) 比特/符号。

    这个例子中,香农-范诺-伊利亚斯编码的平均码长(3.6)远大于霍夫曼编码的平均码长(2.2)和信源的熵(2.17)。这是因为香农-范诺-伊利亚斯编码通常对单个符号编码效率不高。它的优势在于对信源符号序列进行编码。对于一个由 \(n\) 个符号组成的序列 \(s_1, s_2, \dots, s_n\),其联合概率为 \(P(s_1, \dots, s_n) = \prod_{i=1}^n P(s_i)\)。我们可以计算这个序列的累积概率,并用大约 \(-\log_2 P(s_1, \dots, s_n)\) 比特来编码。当 \(n\) 很大时,平均每个符号的码长将趋近于信源的熵。

    香农-范诺-伊利亚斯编码的概念为后续的算术编码奠定了基础。

    3.6 算术编码初步 (Introduction to Arithmetic Coding)

    算术编码(Arithmetic Coding)是一种比霍夫曼编码更先进的信源编码方法,它能够实现更接近信源熵的编码效率,尤其适用于信源符号概率分布不均匀或需要对长序列进行编码的情况。与将每个符号映射到一个独立的码字不同,算术编码是将整个信源符号序列映射到一个单一的二进制小数区间内。

    算术编码的基本思想:

    ① 将单位区间 \([0, 1)\) 根据信源字母表中每个符号的概率进行划分。每个符号 \(x_i\) 对应一个长度为 \(p_i\) 的子区间。这些子区间紧密相连,覆盖整个 \([0, 1)\) 区间。
    ② 编码一个符号序列时,从初始区间 \([0, 1)\) 开始。对于序列中的第一个符号,找到它对应的子区间。这个子区间成为新的当前区间。
    ③ 对于序列中的第二个符号,将当前的区间按照信源字母表的概率比例再次划分。第二个符号对应的子区间在当前区间内的相对位置,决定了新的更小的当前区间。
    ④ 重复步骤③,直到序列中的所有符号都被处理完毕。最终得到一个非常小的区间,它唯一对应着原始的符号序列。
    ⑤ 从最终区间中选择一个二进制小数作为编码结果。通常选择区间下界,并截取足够多的比特,使得这个二进制小数位于最终区间内,且与其他可能的序列对应的区间不重叠。

    例子(简化概念):
    假设信源字母表 \(\mathcal{X} = \{A, B\}\),\(P(A)=0.8, P(B)=0.2\)。
    初始区间 \([0, 1)\)。
    A 对应区间 \([0, 0.8)\),B 对应区间 \([0.8, 1)\)。

    编码序列 "AA":
    ⚝ 第一个符号 A:当前区间变为 \([0, 0.8)\)。
    ⚝ 第二个符号 A:将当前区间 \([0, 0.8)\) 按照 A:B 的概率比例 0.8:0.2 再次划分。
    ▮▮▮▮ A 在 \([0, 0.8)\) 中的子区间长度为 \(0.8 \times 0.8 = 0.64\),对应 \([0, 0.64)\)。
    ▮▮▮▮ B 在 \([0, 0.8)\) 中的子区间长度为 \(0.8 \times 0.2 = 0.16\),对应 \([0.64, 0.8)\)。
    ⚝ 第二个符号是 A,所以新的当前区间变为 \([0, 0.64)\)。

    最终区间是 \([0, 0.64)\)。我们可以选择区间下界 0,或者区间内的任何一个二进制小数,例如 0.5。将 0.5 转换为二进制是 0.1。我们需要选择足够多的比特来唯一标识这个区间。例如,如果选择 0.1 作为码字,它代表的区间是 \([0.5, 1)\),这不包含 \([0, 0.64)\)。如果选择 0.01,它代表 \([0.25, 0.5)\),也不包含。如果选择 0.001,它代表 \([0.125, 0.25)\),也不包含。如果选择 0.0001,它代表 \([0.0625, 0.125)\),也不包含。如果选择 0.00001,它代表 \([0.03125, 0.0625)\),包含在 \([0, 0.64)\) 内。实际上,我们需要找到一个最短的二进制小数,其对应的区间完全包含在最终区间内。对于 \([0, 0.64)\),我们可以选择 0.0,它代表 \([0, 0.5)\),包含在内。或者更精确地,选择一个位于 \([0, 0.64)\) 内的二进制小数,例如 0.1 (0.5), 0.01 (0.25), 0.001 (0.125), 0.0001 (0.0625), 0.00001 (0.03125), ...
    对于区间 \([0, 0.64)\),我们可以选择 0.1 (0.5),其二进制表示是 0.1。这个码字 1 对应的区间是 \([0.5, 1)\),不包含 \([0, 0.64)\)。
    选择 0.01 (0.25),二进制 0.01,码字 01,区间 \([0.25, 0.5)\)。
    选择 0.001 (0.125),二进制 0.001,码字 001,区间 \([0.125, 0.25)\)。
    选择 0.0001 (0.0625),二进制 0.0001,码字 0001,区间 \([0.0625, 0.125)\)。
    选择 0.00001 (0.03125),二进制 0.00001,码字 00001,区间 \([0.03125, 0.0625)\)。
    选择 0.000001 (0.015625),二进制 0.000001,码字 000001,区间 \([0.015625, 0.03125)\)。
    选择 0.0000001 (0.0078125),二进制 0.0000001,码字 0000001,区间 \([0.0078125, 0.015625)\)。
    ...
    实际上,对于区间 \([L, U)\),我们需要找到一个最短的二进制小数 \(0.b_1 b_2 \dots b_k\) 使得 \(L \le 0.b_1 b_2 \dots b_k < U\). 通常选择 \(L\) 的二进制表示并截断。对于 \([0, 0.64)\),下界是 0。我们可以选择 0.5 (0.1),它不在区间内。选择 0.25 (0.01),不在。选择 0.125 (0.001),不在。选择 0.0625 (0.0001),不在。选择 0.03125 (0.00001),不在。选择 0.015625 (0.000001),不在。选择 0.0078125 (0.0000001),不在。选择 0.00390625 (0.00000001),不在。
    对于区间 \([0, 0.64)\),我们可以选择 0.1 (0.5),它不在区间内。选择 0.01 (0.25),不在。选择 0.001 (0.125),不在。选择 0.0001 (0.0625),不在。选择 0.00001 (0.03125),不在。选择 0.000001 (0.015625),不在。选择 0.0000001 (0.0078125),不在。选择 0.00000001 (0.00390625),不在。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.625) 不行。选择 0.00001 (0.3125) 不行。选择 0.000001 (0.15625) 不行。选择 0.0000001 (0.078125) 不行。选择 0.00000001 (0.0390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.0625) 不行。选择 0.00001 (0.03125) 不行。选择 0.000001 (0.015625) 不行。选择 0.0000001 (0.0078125) 不行。选择 0.00000001 (0.00390625) 不行。
    选择 0.1 (0.5) 不行。选择 0.01 (0.25) 不行。选择 0.001 (0.125) 不行。选择 0.0001 (0.06

    3. chapter 3: 离散无记忆信源编码 (Discrete Memoryless Source Coding)

    欢迎来到本书的第三章!在前两章中,我们探讨了信息论的基本概念,包括如何度量信息(熵)以及信息之间的关系(互信息)。现在,我们将把这些理论工具应用于通信系统的第一个关键环节:信源编码 (Source Coding),也称为数据压缩 (Data Compression)。信源编码的目的是在保证信息不丢失或在可接受的失真范围内,用尽可能少的比特 (bits) 来表示信源 (Source) 输出的信息。本章将重点讨论离散无记忆信源 (Discrete Memoryless Source, DMS) 的无损编码 (Lossless Coding)。

    3.1 信源模型 (Source Models)

    在信息论中,信源 (Source) 是产生消息或数据的实体。为了对其进行数学分析,我们需要建立合适的信源模型。最简单也是最基础的模型之一就是离散无记忆信源 (Discrete Memoryless Source, DMS)。

    一个离散信源 (Discrete Source) 是指其输出符号 (symbols) 来自一个有限或可数无限的字母表 (alphabet)。例如,一个抛硬币的信源,其字母表是 \(\{正面, 反面\}\);一个发送英文文本的信源,其字母表是英文字母、数字、标点符号等。

    一个无记忆信源 (Memoryless Source) 是指信源在某一时刻输出的符号与之前或之后输出的符号是统计独立的 (statistically independent)。换句话说,信源的输出序列是一个独立同分布 (Independent and Identically Distributed, IID) 的随机序列。

    综合起来,一个离散无记忆信源 (DMS) 可以由其字母表 \(\mathcal{X} = \{x_1, x_2, \dots, x_K\}\) 和对应每个符号的概率分布 \(P = \{p_1, p_2, \dots, p_K\}\) 来完全描述,其中 \(p_i = P(X=x_i)\) 且 \(\sum_{i=1}^K p_i = 1\)。信源输出的序列 \(X_1, X_2, \dots, X_n\) 中的每个 \(X_i\) 都是独立地从字母表 \(\mathcal{X}\) 中按照概率分布 \(P\) 抽取。

    例子:
    考虑一个只有两个符号的离散无记忆信源,字母表为 \(\mathcal{X} = \{0, 1\}\)。
    如果 \(P(X=0) = 0.8\) 且 \(P(X=1) = 0.2\),这就是一个二元离散无记忆信源 (Binary Discrete Memoryless Source)。信源输出的序列可能是 00100010...,其中每个符号的出现概率独立于其他符号。

    理解信源模型是进行信源编码的基础。不同的信源特性(如是否离散、是否有记忆、是否连续)需要不同的编码方法。DMS模型虽然简单,但它是许多更复杂信源模型的基础,并且其编码理论构成了数据压缩的基石。

    3.2 数据压缩的原理与极限 (Principles and Limits of Data Compression)

    数据压缩 (Data Compression) 的核心思想是去除数据中的冗余 (redundancy)。对于一个离散无记忆信源,其输出符号的概率分布通常是不均匀的。出现概率高的符号携带的信息量(自信息)较低,而出现概率低的符号携带的信息量较高。直观上,我们可以用较短的码字 (codeword) 表示出现概率高的符号,用较长的码字表示出现概率低的符号,从而在平均意义上减少表示信源输出所需的比特数。这就是变长编码 (Variable-Length Coding) 的基本思想。

    无损压缩 (Lossless Compression) 要求编码过程是可逆的,即从压缩后的数据可以完全恢复原始数据,没有任何信息损失。

    我们希望找到一种编码方案,使得表示信源输出符号的平均码长 (average codeword length) 尽可能短。对于一个字母表为 \(\mathcal{X} = \{x_1, \dots, x_K\}\) 的DMS,其概率分布为 \(P = \{p_1, \dots, p_K\}\),如果将符号 \(x_i\) 编码为长度为 \(l_i\) 比特的码字 \(c_i\),则平均码长 \(L\) 定义为:
    \[ L = \sum_{i=1}^K p_i l_i \]
    我们的目标是设计一个编码方案,使得 \(L\) 最小。

    那么,平均码长有没有一个理论上的下限呢?香农 (Claude Shannon) 的第一定理,即信源编码定理 (Source Coding Theorem),给出了这个问题的答案。

    香农信源编码定理 (Shannon's Source Coding Theorem):
    对于一个字母表为 \(\mathcal{X}\) 的离散无记忆信源,其熵为 \(H(X)\) 比特/符号。任何无损编码方案的平均码长 \(L\) 必须满足:
    \[ L \ge H(X) \]
    此外,存在一种无损编码方案,通过对足够长的信源输出序列进行分组编码 (block coding),可以使得平均码长 \(L\) 任意接近 \(H(X)\)。

    这个定理告诉我们,信源的熵 \(H(X)\) 是无损压缩的理论极限。熵代表了信源的平均不确定性,也可以理解为表示信源输出符号所需的最小平均比特数。任何试图将平均码长压缩到低于熵的无损编码方案都是不可能实现的。

    定理的后半部分则表明,虽然对单个符号进行编码可能无法达到熵的下限(除非符号概率是2的负整数幂),但通过对多个符号组成的序列进行联合编码 (joint coding),可以使得每个符号的平均码长趋近于熵。

    因此,数据压缩的原理就是利用信源的统计特性(符号出现的概率分布),通过设计合适的编码方案(如变长编码),使得平均码长接近信源的熵。

    3.3 克拉夫特不等式 (Kraft's Inequality) 与最优码 (Optimal Codes)

    在设计变长编码时,一个重要的问题是如何确保编码是可唯一译码的 (uniquely decodable)。如果一个编码方案中,任何信源符号序列的编码结果都能被唯一地分割回原始的符号序列,那么这个编码就是可唯一译码的。

    一个更强的条件是前缀码 (Prefix Code),也称为瞬时码 (Instantaneous Code)。在前缀码中,任何码字都不是其他任何码字的前缀 (prefix)。例如,\(\{0, 10, 11\}\) 是一个前缀码,而 \(\{0, 01, 1\}\) 不是,因为 '0' 是 '01' 的前缀。前缀码具有一个非常好的性质:当接收到一个完整的码字时,无需查看后续的比特就可以立即确定该码字的边界,从而实现瞬时译码。

    克拉夫特不等式 (Kraft's Inequality) 建立了码字长度与码字集合之间的一个重要关系,特别是对于前缀码。

    克拉夫特不等式 (Kraft's Inequality):
    对于一个包含 \(K\) 个码字 \(\{c_1, c_2, \dots, c_K\}\) 的码集,如果这些码字由一个 \(D\) 进制字母表构成(例如,二进制码 \(D=2\)),其码长分别为 \(l_1, l_2, \dots, l_K\),则:
    ① 如果这个码集是一个前缀码,那么其码长必须满足:
    \[ \sum_{i=1}^K D^{-l_i} \le 1 \]
    ② 反之,如果一组码长 \(l_1, l_2, \dots, l_K\) 满足上述不等式,那么一定存在一个 \(D\) 进制的前缀码,其码字长度恰好是 \(l_1, l_2, \dots, l_K\)。

    对于二进制码 (\(D=2\)),克拉夫特不等式为 \(\sum_{i=1}^K 2^{-l_i} \le 1\)。

    克拉夫特不等式对于理解码长限制至关重要。它表明,码字越短(\(l_i\) 越小),\(D^{-l_i}\) 越大,因此短码字的个数是有限制的。如果等号成立 (\(\sum_{i=1}^K D^{-l_i} = 1\)),则称该码集是完备的 (complete) 或紧凑的 (compact)。完备的前缀码能够完全填满码树 (code tree),没有未使用的分支。

    最优码 (Optimal Code) 是指对于给定的信源概率分布,能够实现最小平均码长 \(L = \sum p_i l_i\) 的无损编码。根据香农信源编码定理,最优码的平均码长应该尽可能接近信源的熵 \(H(X)\)。

    对于离散无记忆信源,存在一种最优的前缀码,其平均码长 \(L_{opt}\) 满足:
    \[ H(X) \le L_{opt} < H(X) + 1 \]
    这个界限表明,即使是对单个符号进行编码,最优前缀码的平均码长也与熵非常接近,最多相差1比特。

    设计最优码的关键在于如何根据符号的概率分布来分配码字长度。直观上,概率越高的符号应该分配越短的码字。克拉夫特不等式为码长分配提供了约束。

    3.4 霍夫曼编码 (Huffman Coding)

    霍夫曼编码 (Huffman Coding) 是一种构造最优前缀码的经典算法。它由大卫·霍夫曼 (David Huffman) 在1952年提出。霍夫曼编码的特点是能够为离散无记忆信源构造出平均码长最短的前缀码。

    霍夫曼编码算法步骤 (对于二进制码):
    ① 将所有待编码的符号及其概率视为叶子节点 (leaf nodes)。
    ② 重复以下步骤,直到只剩下一个节点:
    ▮▮▮▮ⓒ 从当前节点集合中,找出概率最小的两个节点。
    ▮▮▮▮ⓓ 创建一个新的父节点 (parent node),其概率是这两个子节点的概率之和。
    ▮▮▮▮ⓔ 将概率最小的两个节点分别作为新父节点的左子节点和右子节点(顺序任意,但通常约定一个方向代表0,另一个代表1)。
    ▮▮▮▮ⓕ 从节点集合中移除这两个子节点,加入新创建的父节点。
    ⑦ 构建完成后,从根节点 (root node) 到每个叶子节点的路径就构成了对应符号的码字。通常约定向左分支代表比特0,向右分支代表比特1(或反过来)。

    例子:
    考虑一个DMS,字母表 \(\mathcal{X} = \{A, B, C, D, E\}\),概率分布 \(P = \{0.3, 0.25, 0.2, 0.15, 0.1\}\)。

    步骤:
    1. 初始节点:A(0.3), B(0.25), C(0.2), D(0.15), E(0.1)
    2. 合并 E(0.1) 和 D(0.15) -> ED(0.25)。节点:A(0.3), B(0.25), C(0.2), ED(0.25)。按概率排序:A(0.3), B(0.25), ED(0.25), C(0.2)。
    3. 合并 C(0.2) 和 ED(0.25) -> CED(0.45)。节点:A(0.3), B(0.25), CED(0.45)。按概率排序:CED(0.45), A(0.3), B(0.25)。
    4. 合并 B(0.25) 和 A(0.3) -> BA(0.55)。节点:CED(0.45), BA(0.55)。按概率排序:BA(0.55), CED(0.45)。
    5. 合并 CED(0.45) 和 BA(0.55) -> CEDBA(1.0)。节点:CEDBA(1.0)。

    构建码树(例如,左分支0,右分支1):

    1.双击鼠标左键复制此行;2.单击复制所有代码。
                                    
                                        
    1 CEDBA(1.0)
    2 / CED(0.45) BA(0.55)
    3 / \ / C(0.2) ED(0.25) B(0.25) A(0.3)
    4 / E(0.1) D(0.15)

    根据路径得到码字:
    A: 11
    B: 10
    C: 00
    D: 011
    E: 010

    码字集合:\(\{11, 10, 00, 011, 010\}\)。这是一个前缀码。
    平均码长 \(L = 0.3 \times 2 + 0.25 \times 2 + 0.2 \times 2 + 0.15 \times 3 + 0.1 \times 3\)
    \(L = 0.6 + 0.5 + 0.4 + 0.45 + 0.3 = 2.25\) 比特/符号。

    信源的熵 \(H(X)\) 可以计算为:
    \(H(X) = -\sum p_i \log_2 p_i\)
    \(H(X) = -(0.3 \log_2 0.3 + 0.25 \log_2 0.25 + 0.2 \log_2 0.2 + 0.15 \log_2 0.15 + 0.1 \log_2 0.1)\)
    \(H(X) \approx -(-0.521 - 0.5 - 0.464 - 0.410 - 0.332) \approx 2.227\) 比特/符号。
    可以看到,霍夫曼编码的平均码长 2.25 比特/符号非常接近熵的理论下限 2.227 比特/符号。

    霍夫曼编码是贪心算法 (greedy algorithm) 的一个例子,并且被证明对于DMS是最佳的单符号前缀编码方案。

    3.5 香农-范诺-伊利亚斯编码 (Shannon-Fano-Elias Coding)

    香农-范诺-伊利亚斯编码 (Shannon-Fano-Elias Coding) 是一种基于累积概率 (cumulative probability) 的编码方法。它不是最优的(即平均码长不一定最短),但它具有重要的理论意义,并且是算术编码 (Arithmetic Coding) 的基础。

    该方法为每个符号 \(x_i\) 分配一个码字,其长度近似等于 \(\lceil -\log_D p_i \rceil\),其中 \(D\) 是码字的进制数。对于二进制码 (\(D=2\)),码长近似为 \(\lceil -\log_2 p_i \rceil\)。这与自信息 \(-\log_2 p_i\) 的概念紧密相关。

    香农-范诺-伊利亚斯编码算法步骤 (对于二进制码):
    ① 将信源符号按照概率降序排列:\(x_1, x_2, \dots, x_K\),其中 \(p_1 \ge p_2 \ge \dots \ge p_K\)。
    ② 计算每个符号的累积概率 \(F_i\)。通常定义 \(F_i = \sum_{j=1}^{i-1} p_j\) 为符号 \(x_i\) 之前所有符号的概率之和,且 \(F_1 = 0\)。
    ③ 计算每个符号的码字长度 \(l_i = \lceil -\log_2 p_i \rceil\)。
    ④ 将每个累积概率 \(F_i\) 表示为二进制小数。例如,\(F_i = 0.b_1 b_2 b_3 \dots\)。
    ⑤ 符号 \(x_i\) 的码字取 \(F_i\) 的二进制小数表示的前 \(l_i\) 位。

    例子:
    使用与霍夫曼编码相同的例子:\(\mathcal{X} = \{A, B, C, D, E\}\),概率分布 \(P = \{0.3, 0.25, 0.2, 0.15, 0.1\}\)。

    ① 符号按概率降序排列:A(0.3), B(0.25), C(0.2), D(0.15), E(0.1)。
    ② 计算累积概率 \(F_i\):
    \(F_A = 0\)
    \(F_B = P(A) = 0.3\)
    \(F_C = P(A) + P(B) = 0.3 + 0.25 = 0.55\)
    \(F_D = P(A) + P(B) + P(C) = 0.3 + 0.25 + 0.2 = 0.75\)
    \(F_E = P(A) + P(B) + P(C) + P(D) = 0.3 + 0.25 + 0.2 + 0.15 = 0.9\)

    ③ 计算码字长度 \(l_i = \lceil -\log_2 p_i \rceil\):
    \(l_A = \lceil -\log_2 0.3 \rceil = \lceil 1.737 \rceil = 2\)
    \(l_B = \lceil -\log_2 0.25 \rceil = \lceil 2 \rceil = 2\)
    \(l_C = \lceil -\log_2 0.2 \rceil = \lceil 2.322 \rceil = 3\)
    \(l_D = \lceil -\log_2 0.15 \rceil = \lceil 2.737 \rceil = 3\)
    \(l_E = \lceil -\log_2 0.1 \rceil = \lceil 3.322 \rceil = 4\)

    ④ 将 \(F_i\) 表示为二进制小数并取前 \(l_i\) 位作为码字:
    \(F_A = 0\).0000... (二进制) -> 码字 A: 00 (长度 2)
    \(F_B = 0.3\) (十进制) = \(0.0100110011... \) (二进制) -> 码字 B: 01 (长度 2)
    \(F_C = 0.55\) (十进制) = \(0.1000110011... \) (二进制) -> 码字 C: 100 (长度 3)
    \(F_D = 0.75\) (十进制) = \(0.1100000000... \) (二进制) -> 码字 D: 110 (长度 3)
    \(F_E = 0.9\) (十进制) = \(0.1110011001... \) (二进制) -> 码字 E: 1110 (长度 4)

    码字集合:\(\{00, 01, 100, 110, 1110\}\)。这是一个前缀码。
    平均码长 \(L = 0.3 \times 2 + 0.25 \times 2 + 0.2 \times 3 + 0.15 \times 3 + 0.1 \times 4\)
    \(L = 0.6 + 0.5 + 0.6 + 0.45 + 0.4 = 2.55\) 比特/符号。

    与霍夫曼编码的 2.25 相比,香农-范诺-伊利亚斯编码的平均码长更长,因此它不是最优的。然而,它的码长 \(l_i = \lceil -\log_2 p_i \rceil\) 保证了 \(-\log_2 p_i \le l_i < -\log_2 p_i + 1\),从而平均码长 \(L = \sum p_i l_i\) 满足 \(H(X) \le L < H(X) + 1\),与最优码的界限一致。

    香农-范诺编码 (Shannon-Fano Coding) 是香农-范诺-伊利亚斯编码的一个变种,它通过递归地将符号列表分成两部分,使得两部分的概率之和尽可能接近,然后为两部分分别分配0和1作为码字前缀。这种方法也不保证最优。

    3.6 算术编码初步 (Introduction to Arithmetic Coding)

    算术编码 (Arithmetic Coding) 是一种比霍夫曼编码更先进的信源编码方法。它不是为每个符号分配一个独立的码字,而是将整个信源序列编码为一个单一的浮点数 (floating-point number) 在 [0, 1) 区间内。这个浮点数的精度随着序列长度的增加而增加。

    算术编码的核心思想是将 [0, 1) 区间根据信源符号的概率进行划分。对于一个序列,编码器会根据序列中出现的符号,逐步缩小表示该序列的区间。最终得到的区间是 [L, H),其中 L 和 H 是浮点数。选择该区间内的任意一个浮点数(通常是 L 加上一个小的偏移量,或者选择一个能唯一标识该区间的具有最短二进制表示的数)作为编码结果。

    基本原理:
    考虑一个DMS,字母表 \(\mathcal{X} = \{x_1, \dots, x_K\}\),概率分布 \(P = \{p_1, \dots, p_K\}\)。
    ① 初始化一个区间 [lower, upper) = [0, 1)。
    ② 对于输入的每一个符号,根据其概率和累积概率,将当前区间 [lower, upper) 细分为 K 个子区间,每个子区间的长度与对应符号的概率成正比。
    ③ 根据当前输入的符号,选择对应的子区间作为新的当前区间。
    ④ 重复步骤②和③直到所有符号都被处理。
    ⑤ 最终得到的区间 [L, H) 唯一对应于输入的符号序列。选择一个位于 [L, H) 内的二进制小数作为编码输出。

    例子(概念说明):
    假设信源 \(\mathcal{X} = \{A, B\}\),\(P(A)=0.8, P(B)=0.2\)。
    初始区间 [0, 1)。
    第一次划分:A 对应 [0, 0.8),B 对应 [0.8, 1)。
    如果第一个符号是 A,新区间变为 [0, 0.8)。
    第二次划分(在 [0, 0.8) 内):A 对应 [0, 0.8 \(\times\) 0.8) = [0, 0.64),B 对应 [0.8 \(\times\) 0.8, 0.8 \(\times\) 1) = [0.64, 0.8)。
    如果第二个符号是 A,新区间变为 [0, 0.64)。
    如果序列是 AA,最终区间是 [0, 0.64)。我们可以选择 0.5 作为编码结果(二进制 0.1)。

    算术编码的主要优点是:
    ⚝ 它可以达到接近信源熵的压缩效率,即使符号概率不是2的负整数幂。
    ⚝ 它对整个序列进行编码,而不是单个符号,这使得它更容易适应更复杂的信源模型(如具有记忆的信源)。
    ⚝ 它可以方便地处理自适应编码 (adaptive coding),即在编码过程中根据已出现的符号动态更新概率模型。

    算术编码的缺点是计算复杂度相对较高,并且对精度要求较高(需要处理浮点数)。然而,随着计算能力的提升,算术编码在许多现代压缩标准中得到了广泛应用,例如 JPEG 2000 和 HEVC (H.265)。

    本章我们深入探讨了离散无记忆信源的无损编码。我们了解了数据压缩的原理和熵作为其理论极限,学习了克拉夫特不等式与最优码的概念,并详细介绍了两种重要的编码算法:霍夫曼编码和香农-范诺-伊利亚斯编码,以及更先进的算术编码的基本思想。这些是理解更广泛的数据压缩技术的基础。

    4. chapter 4: 离散无记忆信道 (Discrete Memoryless Channels)

    欢迎来到本书的第四章!在前几章中,我们深入探讨了信息的本质、如何度量信息以及如何对信源进行有效编码以实现数据压缩。现在,我们将目光转向信息传输的另一个关键环节:信道 (channel)。信道是信息从发送端传输到接收端的媒介,但在传输过程中,信息往往会受到噪声 (noise) 或干扰 (interference) 的影响,导致接收到的信息与发送的信息不完全一致。本章将重点研究离散无记忆信道 (Discrete Memoryless Channels, DMC),这是信息论中最基本也是最重要的信道模型之一。我们将学习如何描述这类信道、如何度量其传输信息的能力,以及香农 (Shannon) 关于可靠通信极限的伟大定理。

    4.1 信道模型 (Channel Models) 与信道矩阵 (Channel Matrix)

    在信息论中,信道被抽象为一个系统,它接收来自信源的符号序列,并输出一个可能被噪声污染的符号序列。对于离散信道 (discrete channel),其输入和输出都是来自有限字母表 (finite alphabet) 的符号。

    一个离散无记忆信道 (DMC) 具有以下特点:
    ① 输入字母表 \( \mathcal{X} = \{x_1, x_2, \dots, x_m\} \),包含 \( m \) 种可能的输入符号。
    ② 输出字母表 \( \mathcal{Y} = \{y_1, y_2, \dots, y_n\} \),包含 \( n \) 种可能的输出符号。
    ③ 信道是离散的,意味着输入和输出符号都是离散的。
    ④ 信道是无记忆的 (memoryless),意味着当前输出符号的概率分布只依赖于当前的输入符号,与之前的输入或输出符号无关。

    DMC 的行为完全由一组条件概率 (conditional probabilities) 来描述,即给定输入符号 \( x_i \),输出符号为 \( y_j \) 的概率。我们将这些概率记为 \( P(y_j | x_i) \)。

    \[ P(y_j | x_i) = \text{Prob}(Y = y_j | X = x_i) \]

    其中 \( X \) 是随机变量 (random variable) 表示输入的符号,\( Y \) 是随机变量表示输出的符号。

    这些条件概率可以组织成一个 \( n \times m \) 的矩阵,称为信道矩阵 (channel matrix) \( \mathbf{P} \)。矩阵的第 \( j \) 行第 \( i \) 列的元素就是 \( P(y_j | x_i) \)。

    \[ \mathbf{P} = \begin{pmatrix} P(y_1 | x_1) & P(y_1 | x_2) & \dots & P(y_1 | x_m) \\ P(y_2 | x_1) & P(y_2 | x_2) & \dots & P(y_2 | x_m) \\ \vdots & \vdots & \ddots & \vdots \\ P(y_n | x_1) & P(y_n | x_2) & \dots & P(y_n | x_m) \end{pmatrix} \]

    注意,对于每一列(对应于一个特定的输入 \( x_i \)),所有元素的和必须等于 1,因为给定输入 \( x_i \),输出必然是 \( \mathcal{Y} \) 中的某个符号。

    \[ \sum_{j=1}^n P(y_j | x_i) = 1 \quad \text{for all } i = 1, \dots, m \]

    通过信道矩阵,我们可以计算给定输入概率分布 \( P(x_i) \) 时,输出符号的概率分布 \( P(y_j) \) 以及输入和输出的联合概率分布 \( P(x_i, y_j) \)。

    ① 输出概率分布 \( P(y_j) \):
    \[ P(y_j) = \sum_{i=1}^m P(y_j | x_i) P(x_i) \]

    ② 联合概率分布 \( P(x_i, y_j) \):
    \[ P(x_i, y_j) = P(y_j | x_i) P(x_i) \]

    信道模型是分析通信系统性能的基础。通过信道矩阵,我们可以量化信道引入的不确定性或噪声水平。

    4.2 信道容量 (Channel Capacity) 的定义

    信道容量 (channel capacity) 是信息论中一个核心概念,它度量了信道可靠传输信息的最大速率。直观地说,信道容量越高,信道传输信息的能力越强。

    我们知道,互信息 (mutual information) \( I(X; Y) \) 度量了随机变量 \( X \) 和 \( Y \) 之间的相互依赖程度,或者说,通过观察 \( Y \) 获得的关于 \( X \) 的信息量。对于一个信道,输入是 \( X \),输出是 \( Y \),互信息 \( I(X; Y) \) 度量了通过信道传输的信息量。

    \[ I(X; Y) = H(X) - H(X | Y) = H(Y) - H(Y | X) \]

    其中 \( H(X) \) 是输入 \( X \) 的熵 (entropy),\( H(X | Y) \) 是给定输出 \( Y \) 后输入 \( X \) 的条件熵 (conditional entropy),表示接收到 \( Y \) 后关于 \( X \) 剩余的不确定性(即噪声引入的不确定性)。\( H(Y) \) 是输出 \( Y \) 的熵,\( H(Y | X) \) 是给定输入 \( X \) 后输出 \( Y \) 的条件熵,表示信道引入的噪声量。

    信道容量 \( C \) 定义为在所有可能的输入概率分布 \( P(x_i) \) 下,互信息 \( I(X; Y) \) 的最大值。

    \[ C = \max_{P(x)} I(X; Y) = \max_{P(x)} \sum_{x \in \mathcal{X}, y \in \mathcal{Y}} P(x, y) \log_2 \frac{P(x, y)}{P(x) P(y)} \]

    或者等价地:

    \[ C = \max_{P(x)} \sum_{x \in \mathcal{X}, y \in \mathcal{Y}} P(y|x) P(x) \log_2 \frac{P(y|x)}{P(y)} \]

    信道容量的单位通常是比特每符号 (bits per symbol),因为它表示每个信道使用(传输一个符号)可以可靠传输的最大比特数。

    寻找信道容量需要优化输入概率分布 \( P(x) \)。这是一个凸优化问题,存在唯一的最优解。对于某些简单的信道模型,我们可以直接计算出容量。

    信道容量的意义在于,它给出了在给定信道条件下,无论采用多么复杂的编码和调制技术,都无法超越的可靠通信速率上限。香农的信道编码定理(我们将在 4.4 节讨论)表明,存在一种编码方案,其传输速率可以任意接近信道容量,同时错误概率可以任意小。

    4.3 典型离散信道容量计算 (Capacity Calculation for Typical Discrete Channels)

    本节我们将计算两种典型的离散无记忆信道的容量:二进制对称信道 (BSC) 和二进制擦除信道 (BEC)。

    4.3.1 二进制对称信道 (Binary Symmetric Channel, BSC)

    二进制对称信道 (BSC) 是最简单的离散信道模型之一。它是一个二元输入、二元输出的信道,输入字母表 \( \mathcal{X} = \{0, 1\} \),输出字母表 \( \mathcal{Y} = \{0, 1\} \)。信道具有对称性,即输入 0 错误地传输成 1 的概率与输入 1 错误地传输成 0 的概率相等,都等于 \( p \)。这个概率 \( p \) 称为交叉概率 (crossover probability)。

    BSC 的信道矩阵为:

    \[ \mathbf{P}_{\text{BSC}} = \begin{pmatrix} P(0 | 0) & P(0 | 1) \\ P(1 | 0) & P(1 | 1) \end{pmatrix} = \begin{pmatrix} 1-p & p \\ p & 1-p \end{pmatrix} \]

    其中 \( 0 \le p \le 1 \)。当 \( p=0 \) 时,信道是无差错的;当 \( p=1/2 \) 时,信道输出与输入完全无关(相当于抛硬币决定输出),传输的信息量为零;当 \( p=1 \) 时,信道将输入完全反转。

    为了计算 BSC 的容量,我们需要找到使 \( I(X; Y) \) 最大的输入概率分布 \( P(X) = \{P(0), P(1)\} \)。

    \( I(X; Y) = H(Y) - H(Y | X) \)

    对于 BSC,给定输入 \( x \),输出 \( Y \) 的条件概率分布是固定的,因此条件熵 \( H(Y | X) \) 是固定的,不依赖于输入分布 \( P(X) \)。

    \( H(Y | X) = \sum_{x \in \{0,1\}} P(x) H(Y | X=x) \)

    \( H(Y | X=0) = -P(0|0)\log_2 P(0|0) - P(1|0)\log_2 P(1|0) = -(1-p)\log_2(1-p) - p\log_2 p \)
    \( H(Y | X=1) = -P(0|1)\log_2 P(0|1) - P(1|1)\log_2 P(1|1) = -p\log_2 p - (1-p)\log_2(1-p) \)

    令 \( h(p) = -p\log_2 p - (1-p)\log_2(1-p) \) 为二元熵函数 (binary entropy function)。
    则 \( H(Y | X=0) = H(Y | X=1) = h(p) \)。

    所以,\( H(Y | X) = P(0) h(p) + P(1) h(p) = (P(0) + P(1)) h(p) = h(p) \)。

    因此,\( I(X; Y) = H(Y) - h(p) \)。要最大化 \( I(X; Y) \),只需要最大化 \( H(Y) \)。

    输出 \( Y \) 的概率分布为:
    \( P(Y=0) = P(0|0)P(0) + P(0|1)P(1) = (1-p)P(0) + pP(1) \)
    \( P(Y=1) = P(1|0)P(0) + P(1|1)P(1) = pP(0) + (1-p)P(1) \)

    \( H(Y) \) 在 \( P(Y=0) = P(Y=1) = 1/2 \) 时达到最大值 \( \log_2 2 = 1 \) 比特。
    要使 \( P(Y=0) = P(Y=1) = 1/2 \),需要 \( (1-p)P(0) + pP(1) = pP(0) + (1-p)P(1) \)。
    \( (1-2p)P(0) = (1-2p)P(1) \)。
    如果 \( p \ne 1/2 \),则需要 \( P(0) = P(1) \)。由于 \( P(0) + P(1) = 1 \),所以 \( P(0) = P(1) = 1/2 \)。
    如果 \( p = 1/2 \),则 \( 0 = 0 \),任何输入分布 \( P(0), P(1) \) 都会导致 \( P(Y=0) = P(Y=1) = 1/2 \)。

    因此,对于 BSC,当输入符号等概率发送时,即 \( P(0) = P(1) = 1/2 \),互信息达到最大值。

    此时,\( H(Y) = 1 \) 比特(除非 \( p=0 \) 或 \( p=1 \),此时 \( Y \) 与 \( X \) 相同,\( H(Y)=H(X)=1 \);或 \( p=1/2 \),此时 \( Y \) 是均匀分布,\( H(Y)=1 \))。

    BSC 的信道容量为:
    \[ C_{\text{BSC}} = \max_{P(x)} I(X; Y) = 1 - h(p) \quad \text{bits per symbol} \]

    其中 \( h(p) = -p\log_2 p - (1-p)\log_2(1-p) \)。

    当 \( p=0 \) 时,\( h(0)=0 \),\( C_{\text{BSC}} = 1 \) 比特每符号,信道无差错,可以传输 1 比特信息。
    当 \( p=1/2 \) 时,\( h(1/2)=1 \),\( C_{\text{BSC}} = 1 - 1 = 0 \) 比特每符号,信道完全随机,无法传输信息。
    当 \( p=1 \) 时,\( h(1)=0 \),\( C_{\text{BSC}} = 1 - 0 = 1 \) 比特每符号,信道将输入反转,但接收端知道这种反转,仍然可以恢复信息。
    当 \( 0 < p < 1/2 \) 或 \( 1/2 < p < 1 \) 时,\( 0 < h(p) < 1 \),\( 0 < C_{\text{BSC}} < 1 \)。

    4.3.2 二进制擦除信道 (Binary Erasure Channel, BEC)

    二进制擦除信道 (BEC) 也是一个二元输入信道,输入字母表 \( \mathcal{X} = \{0, 1\} \)。但它的输出字母表有三个符号 \( \mathcal{Y} = \{0, 1, e\} \),其中 \( e \) 表示擦除 (erasure)。当输入符号被擦除时,接收端知道发生了错误,但不知道原始符号是 0 还是 1。

    BEC 的行为由擦除概率 (erasure probability) \( \epsilon \) 决定。输入 0 有 \( 1-\epsilon \) 的概率正确传输为 0,有 \( \epsilon \) 的概率被擦除为 \( e \)。输入 1 有 \( 1-\epsilon \) 的概率正确传输为 1,有 \( \epsilon \) 的概率被擦除为 \( e \)。

    BEC 的信道矩阵为:

    \[ \mathbf{P}_{\text{BEC}} = \begin{pmatrix} P(0 | 0) & P(0 | 1) \\ P(1 | 0) & P(1 | 1) \\ P(e | 0) & P(e | 1) \end{pmatrix} = \begin{pmatrix} 1-\epsilon & 0 \\ 0 & 1-\epsilon \\ \epsilon & \epsilon \end{pmatrix} \]

    其中 \( 0 \le \epsilon \le 1 \)。

    为了计算 BEC 的容量,我们再次最大化 \( I(X; Y) = H(X) - H(X | Y) \)。

    \( H(X | Y) = \sum_{y \in \{0,1,e\}} P(y) H(X | Y=y) \)

    ① 如果 \( Y=0 \),那么输入一定是 0 (因为 \( P(0|1)=0 \))。所以 \( P(X=0 | Y=0) = 1 \),\( P(X=1 | Y=0) = 0 \)。\( H(X | Y=0) = 0 \)。
    ② 如果 \( Y=1 \),那么输入一定是 1 (因为 \( P(1|0)=0 \))。所以 \( P(X=0 | Y=1) = 0 \),\( P(X=1 | Y=1) = 1 \)。\( H(X | Y=1) = 0 \)。
    ③ 如果 \( Y=e \),那么输入可能是 0 也可能是 1。\( P(X=0 | Y=e) = \frac{P(e|0)P(0)}{P(e)} \) 和 \( P(X=1 | Y=e) = \frac{P(e|1)P(1)}{P(e)} \)。
    \( P(e) = P(e|0)P(0) + P(e|1)P(1) = \epsilon P(0) + \epsilon P(1) = \epsilon (P(0) + P(1)) = \epsilon \)。
    所以,\( P(X=0 | Y=e) = \frac{\epsilon P(0)}{\epsilon} = P(0) \) 和 \( P(X=1 | Y=e) = \frac{\epsilon P(1)}{\epsilon} = P(1) \)。
    \( H(X | Y=e) = -P(0)\log_2 P(0) - P(1)\log_2 P(1) = H(X) \)。

    现在计算 \( H(X | Y) \):
    \( H(X | Y) = P(Y=0) H(X | Y=0) + P(Y=1) H(X | Y=1) + P(Y=e) H(X | Y=e) \)
    \( H(X | Y) = P(Y=0) \cdot 0 + P(Y=1) \cdot 0 + P(Y=e) H(X) \)
    \( H(X | Y) = P(Y=e) H(X) \)

    \( P(Y=0) = P(0|0)P(0) + P(0|1)P(1) = (1-\epsilon)P(0) \)
    \( P(Y=1) = P(1|0)P(0) + P(1|1)P(1) = (1-\epsilon)P(1) \)
    \( P(Y=e) = \epsilon \)

    所以,\( H(X | Y) = \epsilon H(X) \)。

    互信息为:
    \( I(X; Y) = H(X) - H(X | Y) = H(X) - \epsilon H(X) = (1-\epsilon) H(X) \)

    要最大化 \( I(X; Y) \),只需要最大化 \( H(X) \)。对于二元输入,\( H(X) \) 在 \( P(0) = P(1) = 1/2 \) 时达到最大值 \( \log_2 2 = 1 \) 比特。

    BEC 的信道容量为:
    \[ C_{\text{BEC}} = \max_{P(x)} (1-\epsilon) H(X) = (1-\epsilon) \max_{P(x)} H(X) = (1-\epsilon) \cdot 1 = 1-\epsilon \quad \text{bits per symbol} \]

    当 \( \epsilon=0 \) 时,\( C_{\text{BEC}} = 1 \) 比特每符号,信道无擦除。
    当 \( \epsilon=1 \) 时,\( C_{\text{BEC}} = 0 \) 比特每符号,所有符号都被擦除,无法传输信息。

    比较 BSC 和 BEC 的容量,对于相同的错误/擦除概率 \( p=\epsilon \),BEC 的容量 \( 1-\epsilon \) 大于或等于 BSC 的容量 \( 1-h(p) \)。这是因为在 BEC 中,接收端知道哪些符号被擦除了,这提供了额外的信息,有助于恢复原始数据。而在 BSC 中,接收端只知道接收到的符号与发送的符号可能不同,但不知道具体是哪个符号发生了错误。

    4.4 香农信道编码定理 (Shannon's Channel Coding Theorem)

    香农信道编码定理 (Shannon's Channel Coding Theorem),也称为信道容量定理 (Channel Capacity Theorem),是信息论中最深刻和最重要的结果之一。它回答了在存在噪声的信道上进行可靠通信的可能性问题。

    定理的非正式表述如下:

    对于任何离散无记忆信道 (DMC),其信道容量为 \( C \)。
    ① 如果信息传输速率 \( R \) 小于信道容量 \( C \) (即 \( R < C \)),那么存在一种编码方案,可以在该信道上实现任意低的错误概率 (error probability)。这意味着我们可以通过适当的编码,以接近 \( C \) 的速率进行可靠通信。
    ② 如果信息传输速率 \( R \) 大于信道容量 \( C \) (即 \( R > C \)),那么无论采用何种编码方案,错误概率都将趋于一个非零的下界,且该下界随着码长 (codeword length) 的增加而趋于 1。这意味着以高于信道容量的速率进行可靠通信是不可能的。

    这个定理的意义极其重大:

    ① 它确定了可靠通信的极限:信道容量 \( C \) 是在给定信道上实现可靠通信的最高速率。
    ② 它指出了实现可靠通信的可能性:只要传输速率低于容量,原则上就可以通过编码实现任意高的可靠性。
    ③ 它分离了信息度量和编码实现:信道容量是一个仅依赖于信道统计特性的量,而定理表明,达到这个极限是可能的,尽管定理本身没有给出具体的“最优”编码方法。

    定理的证明通常涉及随机编码 (random coding) 的思想。证明过程表明,如果随机选择足够长的码字 (codewords),那么随着码长增加,通过信道的噪声使得一个码字被错误地译码成另一个码字的概率会指数级下降,只要传输速率低于容量。

    香农定理是通信系统的理论基石。它告诉我们,对抗噪声的关键在于编码,并且存在一个明确的性能上限。现代通信系统的设计,如蜂窝网络、Wi-Fi、卫星通信等,都深受香农理论的影响,其目标就是设计出能够逼近信道容量的高效编码和调制方案。

    然而,香农定理是一个存在性定理 (existence theorem),它证明了存在这样的编码,但没有具体构造出来。寻找能够逼近香农极限且具有较低实现复杂度的编码方案,是信道编码领域长期研究的课题。在本书后续章节中,我们将学习一些重要的信道编码技术,如线性分组码、卷积码以及现代的 Turbo 码和 LDPC 码,它们都是为了在实际系统中逼近香农极限而设计的。

    5. chapter 5: 连续信道容量 (Capacity of Continuous Channels)

    在前面的章节中,我们主要讨论了离散信源和离散信道的信息论概念,包括熵、互信息以及离散无记忆信道的容量。然而,在实际的通信系统中,信号往往是连续的,例如模拟音频信号或射频信号。本章将把信息论的框架扩展到连续随机变量和连续信道,重点探讨连续信道,特别是高斯信道的容量,并引出著名的香农-哈特利定理。理解连续信道的容量对于设计和分析现代通信系统至关重要。

    5.1 微分熵 (Differential Entropy)

    对于连续随机变量 \(X\),其概率密度函数 (Probability Density Function, PDF) 为 \(f(x)\),我们希望定义一个类似于离散熵的量来度量其不确定性。自然的想法是将离散熵的求和替换为积分。

    离散随机变量 \(X\) 的熵定义为 \(H(X) = -\sum_x p(x) \log p(x)\)。对于连续随机变量,我们考虑将其取值范围划分为宽度为 \(\Delta\) 的小区间 \([i\Delta, (i+1)\Delta)\)。如果 \(\Delta\) 足够小,则 \(X\) 落入第 \(i\) 个区间的概率近似为 \(P(i\Delta \le X < (i+1)\Delta) \approx f(i\Delta)\Delta\)。

    将这些区间视为一个离散随机变量 \(X_\Delta\),其取值为 \(i\Delta\),概率为 \(p_i \approx f(i\Delta)\Delta\)。这个离散变量的熵为:
    \[ H(X_\Delta) \approx -\sum_i f(i\Delta)\Delta \log(f(i\Delta)\Delta) \]
    \[ H(X_\Delta) \approx -\sum_i f(i\Delta)\Delta (\log f(i\Delta) + \log \Delta) \]
    \[ H(X_\Delta) \approx -\sum_i f(i\Delta)\Delta \log f(i\Delta) - \sum_i f(i\Delta)\Delta \log \Delta \]
    当 \(\Delta \to 0\) 时,第一项的求和趋向于积分 \(\int_{-\infty}^{\infty} f(x) \log f(x) dx\)。第二项 \(\sum_i f(i\Delta)\Delta \approx \int_{-\infty}^{\infty} f(x) dx = 1\),所以第二项趋向于 \(-\log \Delta\)。

    因此,\(H(X_\Delta) \approx -\int_{-\infty}^{\infty} f(x) \log f(x) dx - \log \Delta\)。注意到 \(-\log \Delta \to \infty\) 当 \(\Delta \to 0\),这意味着直接将离散熵推广到连续情况会得到无穷大。这是因为连续随机变量可以取无限多个值,其不确定性在某种意义上是无限的。

    然而,我们关注的是相对不确定性,即不同概率分布之间的不确定性差异。注意到 \(-\log \Delta\) 项与具体的概率密度函数 \(f(x)\) 无关,它反映了量化间隔带来的不确定性。因此,我们可以定义微分熵 (Differential Entropy) 为去掉这一无穷项后的部分:

    定义:连续随机变量 \(X\) 的微分熵 \(h(X)\) 定义为:
    \[ h(X) = -\int_{-\infty}^{\infty} f(x) \log f(x) dx \]
    如果 \(X\) 是多维随机变量,其概率密度函数为 \(f(\mathbf{x})\),则其微分熵为:
    \[ h(\mathbf{X}) = -\int f(\mathbf{x}) \log f(\mathbf{x}) d\mathbf{x} \]
    积分是在 \(\mathbf{x}\) 的取值空间上进行的。对数的底通常取 \(e\) (单位为奈特, nats) 或 2 (单位为比特, bits)。在信息论中,通常使用底为 2 的对数,单位为比特。

    微分熵的性质:
    ⚝ 微分熵可以为负值。例如,对于在 \([0, \epsilon]\) 上均匀分布的随机变量,当 \(\epsilon < 1\) 时,其微分熵为 \(\log_2 \epsilon < 0\)。这与离散熵总是非负的性质不同。
    ⚝ 微分熵不是对随机变量取值数量的度量,而是对其概率密度函数“平坦”程度的度量。密度函数越“平坦”,微分熵越大。
    ⚝ 对于给定的方差 \(\sigma^2\),高斯分布 (Gaussian Distribution) 具有最大的微分熵。这是高斯分布在信息论中如此重要的原因之一。
    ⚝ 微分熵具有平移不变性:\(h(X+c) = h(X)\) 对于任何常数 \(c\)。
    ⚝ 微分熵具有缩放性质:\(h(aX) = h(X) + \log_2 |a|\) 对于任何非零常数 \(a\)。对于 \(n\) 维向量 \(\mathbf{X}\) 和可逆矩阵 \(\mathbf{A}\),\(h(\mathbf{A}\mathbf{X}) = h(\mathbf{X}) + \log_2 |\det(\mathbf{A})|\)。
    ⚝ 联合微分熵 (Joint Differential Entropy) 和条件微分熵 (Conditional Differential Entropy) 可以类似地定义:
    \[ h(X, Y) = -\int \int f(x, y) \log f(x, y) dx dy \]
    \[ h(Y|X) = \int f(x) h(Y|X=x) dx = -\int \int f(x, y) \log f(y|x) dx dy \]
    ⚝ 互信息 (Mutual Information) 的定义可以自然地推广到连续随机变量:
    \[ I(X; Y) = \int \int f(x, y) \log \frac{f(x, y)}{f(x)f(y)} dx dy \]
    互信息也可以表示为 \(I(X; Y) = h(X) - h(X|Y) = h(Y) - h(Y|X)\)。与离散情况不同,连续互信息总是非负的,并且它度量了 \(X\) 和 \(Y\) 之间的统计依赖性,与坐标系选择无关。信道容量 (Channel Capacity) 正是通过互信息来定义的。

    5.2 高斯信道 (Gaussian Channels)

    在实际通信系统中,噪声是普遍存在的。许多物理噪声源(如热噪声、散粒噪声等)在统计上可以很好地用高斯分布来建模。根据中心极限定理 (Central Limit Theorem),大量独立随机变量之和趋向于高斯分布,这也解释了高斯噪声的普遍性。

    高斯信道是一种重要的连续信道模型。最简单的形式是加性高斯噪声 (Additive Gaussian Noise, AGN) 信道。对于一个输入信号 \(X(t)\),经过信道后输出信号 \(Y(t)\) 可以表示为:
    \[ Y(t) = X(t) + Z(t) \]
    其中 \(Z(t)\) 是加性噪声。如果 \(Z(t)\) 是一个高斯随机过程,那么这就是一个加性高斯噪声信道。

    在信息论中,我们通常考虑离散时间模型,或者将连续时间信号通过采样和量化转换为离散信号进行分析。对于一个离散时间的高斯信道,输入为随机变量 \(X\),输出为随机变量 \(Y\),噪声为随机变量 \(Z\),它们之间的关系为:
    \[ Y = X + Z \]
    其中 \(Z\) 是一个服从均值为 0、方差为 \(\sigma^2\) 的高斯分布的随机变量,即 \(Z \sim \mathcal{N}(0, \sigma^2)\)。噪声 \(Z\) 与输入 \(X\) 相互独立。

    我们通常对输入信号的功率 (Power) 有限制。对于离散时间信号,功率通常定义为其方差的期望值。假设输入信号 \(X\) 的均值为 0,则其功率为 \(E[X^2]\)。我们通常要求输入信号的平均功率不超过某个最大值 \(P\),即 \(E[X^2] \le P\)。

    高斯信道模型是分析许多实际通信系统(如无线通信、电话线、卫星通信等)的基础。

    5.3 加性高斯白噪声 (AWGN) 信道容量

    加性高斯白噪声 (Additive White Gaussian Noise, AWGN) 信道是高斯信道的一个特例,也是信息论中最重要、最基础的连续信道模型之一。

    “加性” (Additive) 指噪声是叠加在信号上的。
    “高斯” (Gaussian) 指噪声的统计分布是高斯分布。
    “白噪声” (White Noise) 指噪声的功率谱密度 (Power Spectral Density, PSD) 在所有频率上是均匀的。这意味着噪声在时间上是不相关的(或者说相关时间非常短),并且在频域上具有无限带宽。

    在实际分析中,我们通常考虑带限 (Band-limited) 的 AWGN 信道。假设信道的带宽为 \(W\) Hz。根据奈奎斯特-香农采样定理 (Nyquist-Shannon Sampling Theorem),一个带宽为 \(W\) 的连续时间信号可以由每秒 \(2W\) 个样本完全表示。因此,一个持续时间为 \(T\) 的信号可以由 \(2WT\) 个样本表示。

    对于离散时间的 AWGN 信道模型 \(Y_i = X_i + Z_i\),其中 \(i\) 表示时间样本索引。\(Z_i\) 是独立同分布 (Independent and Identically Distributed, IID) 的高斯随机变量,均值为 0,方差为 \(N_0/2\)(在连续时间模型中,\(N_0\) 是噪声的功率谱密度)。输入信号 \(X_i\) 的平均功率限制为 \(P\),即 \(E[X_i^2] \le P\)。

    AWGN 信道的容量 \(C\) 是指在给定带宽 \(W\) 和信号功率 \(P\) 的条件下,通过该信道进行可靠通信的最高信息传输速率。香农 (Claude Shannon) 证明了 AWGN 信道的容量为:
    \[ C = W \log_2 \left(1 + \frac{P}{N_0 W}\right) \text{ bits/second} \]
    这个公式通常被称为香农-哈特利定理 (Shannon-Hartley Theorem),尽管严格来说,哈特利 (Ralph Hartley) 的贡献主要在于提出了信息速率与带宽和信号幅度的对数有关的概念,而香农给出了精确的容量公式。

    公式中的各项含义:
    ⚝ \(C\): 信道容量,单位是比特每秒 (bits/second)。
    ⚝ \(W\): 信道带宽,单位是赫兹 (Hz)。
    ⚝ \(P\): 接收端信号的平均功率,单位是瓦特 (Watts)。
    ⚝ \(N_0\): 单边噪声功率谱密度,单位是瓦特每赫兹 (Watts/Hz)。\(N_0 W\) 表示带宽 \(W\) 内的总噪声功率。
    ⚝ \(P/(N_0 W)\): 这是信号功率与噪声功率之比,即信噪比 (Signal-to-Noise Ratio, SNR)。通常用 \(\text{SNR}\) 表示。

    所以,AWGN 信道容量公式也可以写成:
    \[ C = W \log_2 (1 + \text{SNR}) \]

    这个公式是信息论在通信领域最核心的成果之一。它给出了在存在高斯噪声干扰的情况下,任何通信系统能够达到的理论最大速率。重要的是,香农信道编码定理 (Shannon's Channel Coding Theorem) 表明,只要传输速率 \(R < C\),就存在一种编码方案,使得通过该信道传输信息的错误概率可以任意地小。反之,如果传输速率 \(R > C\),则不可能实现任意低的错误概率。

    5.4 香农-哈特利定理 (Shannon-Hartley Theorem)

    香农-哈特利定理是 AWGN 信道容量公式的正式名称。它由克劳德·香农在 1948 年的开创性论文《通信的数学理论》中提出。

    定理内容:对于一个带宽为 \(W\) Hz 的加性高斯白噪声 (AWGN) 信道,如果接收到的信号平均功率为 \(P\),噪声的单边功率谱密度为 \(N_0\),则该信道的容量 \(C\) 为:
    \[ C = W \log_2 \left(1 + \frac{P}{N_0 W}\right) \]
    这个定理的意义极其深远:
    ① 它设定了通信速率的理论上限。无论采用多么巧妙的调制或编码技术,都不可能在给定带宽和信噪比的 AWGN 信道上以高于 \(C\) 的速率进行可靠通信。
    ② 它指明了提高信道容量的途径:增加带宽 \(W\) 或提高信噪比 \(P/(N_0 W)\)。
    ③ 它具有“存在性”意义。定理证明了当速率低于容量时,存在能够实现可靠通信的编码方案,但并没有具体构造出这种方案。这激发了后续几十年的信道编码研究,寻找逼近香农极限的实际编码方法(如 Turbo 码和 LDPC 码)。
    ④ 它将模拟通信系统的性能极限与数字信息的基本度量(比特)联系起来。

    理解这个定理需要注意几个关键点:
    ⚝ “可靠通信” (Reliable Communication) 指的是错误概率可以任意小,但不一定是零。
    ⚝ 定理假设噪声是高斯白噪声,并且与信号独立。
    ⚝ 定理中的功率 \(P\) 是接收端的平均信号功率。
    ⚝ 定理给出的容量是在输入信号为高斯分布时达到的。虽然实际通信中输入信号通常是数字信号(非高斯),但对于 AWGN 信道,高斯输入信号可以最大化互信息,从而达到信道容量。对于其他输入分布,互信息可能小于容量。

    香农-哈特利定理为通信系统的设计和性能评估提供了一个基准。工程师可以根据这个极限来判断当前系统的效率,并努力设计更接近理论极限的调制和编码方案。

    5.5 带宽与信噪比的权衡 (Bandwidth-SNR Trade-off)

    香农-哈特利定理 \(C = W \log_2 (1 + \text{SNR})\) 清晰地揭示了信道容量与带宽 \(W\) 和信噪比 \(\text{SNR}\) 之间的关系。提高容量可以通过增加 \(W\) 或增加 \(\text{SNR}\) 来实现。然而,在实际系统中,这两者往往受到物理或经济的限制,并且可能存在权衡关系。

    考虑容量公式:\(C = W \log_2 \left(1 + \frac{P}{N_0 W}\right)\)。

    固定带宽,增加信噪比:
    如果带宽 \(W\) 是固定的(例如,分配的频谱资源有限),我们可以通过增加发射功率 \(P\)(从而增加接收端的 \(P\))或降低噪声功率谱密度 \(N_0\) 来提高信噪比 \(\text{SNR}\)。容量 \(C\) 随 \(\text{SNR}\) 的增加而对数增长。这意味着要大幅提高容量,需要信噪比呈指数级增长。例如,将容量翻倍,需要 \((1+\text{SNR})\) 平方,即 \(\text{SNR}\) 大约需要从 \(S\) 增加到 \(S^2 + 2S\)。

    固定信噪比,增加带宽:
    如果信噪比 \(\text{SNR} = P/(N_0 W)\) 是固定的(这通常意味着 \(P\) 随 \(W\) 线性增加,或者 \(N_0\) 随 \(W\) 线性减小,这在实际中不常见),容量 \(C\) 随带宽 \(W\) 线性增长。然而,更常见的情况是总发射功率 \(P\) 是固定的,而噪声功率谱密度 \(N_0\) 是固定的。在这种情况下,增加带宽 \(W\) 会导致信噪比 \(\text{SNR} = P/(N_0 W)\) 下降。

    让我们分析固定功率 \(P\) 和固定噪声谱密度 \(N_0\) 下,容量随带宽 \(W\) 的变化:
    \[ C(W) = W \log_2 \left(1 + \frac{P}{N_0 W}\right) \]
    ⚝ 当 \(W \to 0\) 时(带宽非常窄),使用洛必达法则或泰勒展开 \(\log_2(1+x) \approx x/\ln 2\) 当 \(x \to 0\),我们有:
    \[ C(W) \approx W \left(\frac{P}{N_0 W \ln 2}\right) = \frac{P}{N_0 \ln 2} \]
    这是一个有限值。这意味着即使带宽趋于零,只要信噪比足够高(因为 \(W \to 0\) 且 \(P\) 固定,\(\text{SNR} \to \infty\)),仍然可以传输有限的速率。这对应于功率受限 (Power-limited) 的情况。
    ⚝ 当 \(W \to \infty\) 时(带宽非常宽),\(\frac{P}{N_0 W} \to 0\)。同样使用 \(\log_2(1+x) \approx x/\ln 2\) 当 \(x \to 0\),我们有:
    \[ C(W) \approx W \left(\frac{P}{N_0 W \ln 2}\right) = \frac{P}{N_0 \ln 2} \]
    这个结果与 \(W \to 0\) 时相同。这似乎有点反直觉。仔细观察 \(C(W)\) 的表达式,当 \(W \to \infty\) 时,虽然 \(\log_2(1 + \frac{P}{N_0 W})\) 趋于 0,但前面的 \(W\) 趋于无穷大。乘积的极限是有限的。这意味着即使有无限带宽,在总功率 \(P\) 受限的情况下,容量也存在一个上限 \(P/(N_0 \ln 2)\)。这对应于带宽受限 (Bandwidth-limited) 的情况。

    实际上,在大多数通信系统中,我们面临的是带宽和功率都有限制的情况。香农-哈特利定理告诉我们如何在两者之间进行权衡以达到所需的传输速率。

    例如,对于一个目标速率 \(R\),我们可以选择一个较窄的带宽 \(W_1\) 但需要较高的信噪比 \(\text{SNR}_1\),使得 \(R \le W_1 \log_2(1 + \text{SNR}_1)\)。或者,我们可以选择一个较宽的带宽 \(W_2\) 但可以容忍较低的信噪比 \(\text{SNR}_2\),使得 \(R \le W_2 \log_2(1 + \text{SNR}_2)\)。

    这种权衡在实际系统中非常普遍。例如:
    ⚝ 电话线调制解调器 (Modem):带宽非常有限(几 kHz),为了提高速率,需要较高的信噪比。
    ⚝ 无线局域网 (Wi-Fi):带宽相对较宽(几十 MHz),可以通过增加带宽或提高信噪比来提高速率。在信号较弱(低信噪比)时,系统会自动降低调制阶数和编码速率(有效降低了容量需求),或者切换到更窄的带宽模式。
    ⚝ 超宽带 (Ultra-Wideband, UWB) 通信:使用非常宽的带宽(几 GHz),但发射功率非常低,因此信噪比也很低。通过利用巨大的带宽来实现高速率通信。

    频谱效率 (Spectral Efficiency) 是衡量通信系统性能的另一个重要指标,定义为每赫兹带宽可以传输的比特数,单位是 bits/s/Hz。根据香农-哈特利定理,AWGN 信道的最大频谱效率为:
    \[ \eta = \frac{C}{W} = \log_2 (1 + \text{SNR}) \text{ bits/s/Hz} \]
    这个公式表明,频谱效率仅取决于信噪比。提高频谱效率的唯一方法是提高信噪比。

    总结来说,香农-哈特利定理不仅给出了 AWGN 信道的容量极限,还深刻揭示了带宽和信噪比在决定通信速率方面的相互作用和权衡关系。理解这种权衡对于设计高效、可靠的通信系统至关重要。

    6. chapter 6: 信道编码基础 (Fundamentals of Channel Coding)

    欢迎来到本书的第六章!在前几章中,我们深入探讨了信息的基本概念、如何度量信息,以及如何在不损失信息的前提下对信源进行高效编码(无损压缩)。我们还研究了通信信道的模型以及信道的最大传输能力——信道容量。现在,我们将把注意力转向通信系统的另一个核心问题:如何在有噪声和干扰的不可靠信道上可靠地传输信息。这就是信道编码(Channel Coding)的领域。

    信道编码是信息论在通信系统中最直接和最强大的应用之一。香农的信道编码定理告诉我们,只要传输速率低于信道容量,原则上就可以通过适当的编码方法实现任意低的错误概率。本章将为读者奠定信道编码的基础,介绍其基本概念、原理以及衡量编码性能的关键指标。

    6.1 差错控制的必要性 (Necessity of Error Control)

    在理想的通信系统中,发送端发出的信号经过信道传输后,接收端能够完美无误地恢复出原始信息。然而,现实世界中的通信信道往往是不完美的。信号在传输过程中会受到各种因素的影响,导致接收到的信号与发送的信号不同,从而引入差错。

    这些影响因素主要包括:
    噪声 (Noise): 这是信道中普遍存在的随机干扰,例如热噪声、散粒噪声等。噪声会叠加到传输信号上,改变信号的波形或电平。
    干扰 (Interference): 来自其他通信系统或信号源的非期望信号。
    衰落 (Fading): 在无线通信中,由于多径传播等效应,信号的强度会随时间和空间发生变化。
    失真 (Distortion): 信道的频率响应不理想或存在非线性特性,导致信号波形发生变化。

    这些因素共同作用,使得接收端收到的信号是原始信号、噪声、干扰和失真等的混合体。当接收端对信号进行判决(例如,判断接收到的电压是代表二进制的0还是1)时,就有可能因为这些干扰而做出错误的判断,导致接收到的信息与发送的信息不一致,即发生了传输差错(Transmission Errors)。

    考虑一个简单的例子:通过电话线传输数字信号。电话线会受到电磁干扰、线路本身的电阻噪声等影响。发送端发送一个代表“1”的电压信号,但在传输过程中叠加了噪声,导致接收端收到的电压信号低于判决门限,最终被误判为“0”。

    传输差错的存在对于许多应用是不可接受的。例如:
    ① 数据传输:文件下载、电子邮件、网页浏览等,一个比特的错误可能导致整个文件损坏或程序崩溃。
    ② 数字通信:语音、视频传输,错误可能导致卡顿、花屏或无法理解。
    ③ 控制系统:工业控制、航空航天等,微小的错误可能导致严重的后果。

    因此,为了确保信息传输的可靠性,我们必须采取措施来检测甚至纠正这些传输过程中产生的差错。这就是差错控制(Error Control)的任务,而信道编码是实现差错控制的核心技术。通过在发送端对信息进行编码,在接收端进行相应的译码,我们可以有效地对抗信道引入的差错,提高通信系统的可靠性。

    6.2 编码的基本概念 (Basic Concepts of Coding)

    “编码”在通信领域有两个主要的含义:信源编码(Source Coding)和信道编码(Channel Coding)。
    信源编码 (Source Coding): 旨在去除信息源中的冗余,用尽可能少的比特表示信息,实现数据压缩。例如,JPEG图像压缩、MP3音频压缩等。
    信道编码 (Channel Coding): 旨在通过增加受控的冗余(Controlled Redundancy),使得在传输过程中引入的差错能够在接收端被检测甚至纠正,从而提高通信的可靠性。

    本章及后续章节主要讨论的是信道编码。信道编码的基本思想是在待传输的信息比特序列中加入一些额外的、与信息比特相关的冗余比特。这些冗余比特并不携带新的信息,但它们与信息比特之间存在特定的数学关系。在接收端,译码器利用这些关系来检查接收到的序列是否符合编码规则,如果不符合,则表明发生了差错,并尝试根据这些关系来恢复原始的信息比特。

    一个信道编码器(Channel Encoder)接收一个由 \(k\) 个信息比特组成的输入块,并产生一个由 \(n\) 个编码比特(码字,Codeword)组成的输出块,其中 \(n > k\)。这 \(n\) 个编码比特通过信道传输。在接收端,一个信道译码器(Channel Decoder)接收可能包含差错的 \(n\) 个比特序列,并尝试恢复原始的 \(k\) 个信息比特。

    信道编码可以分为两大类:
    分组码 (Block Codes): 将信息比特分成固定长度的块(每块 \(k\) 比特),然后独立地为每个信息块生成一个固定长度的码字(\(n\) 比特)。编码过程不依赖于之前的输入块。
    卷积码 (Convolutional Codes): 将信息比特流连续地输入编码器,编码器的输出不仅取决于当前输入的比特,还取决于之前输入的若干比特。编码过程具有记忆性。

    选择哪种类型的信道编码以及具体的编码方案,取决于信道的特性、要求的可靠性水平以及允许的复杂度和延迟。

    信道编码的目的是在给定信道条件下,以尽可能高的效率(即尽可能低的冗余)实现所需的可靠性。这涉及到编码的设计(如何选择冗余比特以及它们与信息比特的关系)和译码算法的设计(如何在接收端有效地利用冗余比特来检测和纠正差错)。

    6.3 码率 (Code Rate) 与冗余 (Redundancy)

    信道编码通过引入冗余来提高可靠性。冗余的量可以用码率(Code Rate)来衡量。

    对于一个将 \(k\) 个信息比特编码成 \(n\) 个码字比特的编码方案,其码率 \(R\) 定义为:
    \[ R = \frac{k}{n} \]
    码率 \(R\) 是一个介于 0 和 1 之间的值(对于实用的编码方案,\(k < n\),所以 \(R < 1\))。码率越高,表示编码引入的冗余越少,传输效率越高;码率越低,表示引入的冗余越多,通常能提供更强的差错控制能力。

    例如,如果一个编码器将 8 个信息比特编码成 16 个码字比特,那么码率 \(R = 8/16 = 1/2\)。这意味着每传输 16 个比特,只有 8 个是真正的信息比特,另外 8 个是冗余比特。

    冗余(Redundancy)可以理解为编码过程中增加的额外比特数量,或者与码率相关的量。冗余比特的数量是 \(n-k\)。相对冗余可以表示为 \((n-k)/k\) 或 \((n-k)/n = 1 - R\)。

    码率与信道容量(Channel Capacity)密切相关。香农信道编码定理指出,如果信息传输速率(考虑了编码后的码率)低于信道容量,那么原则上存在一种编码方案,可以实现任意低的错误概率。这里的“信息传输速率”实际上就是码率乘以每个信道符号携带的信息量(对于二进制信道,通常就是码率 \(R\))。因此,为了实现可靠通信,我们必须选择一个码率 \(R\) 使得 \(R < C\),其中 \(C\) 是信道的容量。

    码率的选择是一个重要的设计权衡。
    高码率 (High Code Rate): 意味着较低的冗余,传输效率高,但差错控制能力相对较弱。适用于信道条件较好、噪声较低的环境。
    低码率 (Low Code Rate): 意味着较高的冗余,传输效率低,但差错控制能力相对较强。适用于信道条件较差、噪声较高或对可靠性要求极高的环境。

    在实际系统中,设计者需要根据具体的应用需求(如吞吐量要求、延迟限制)和信道特性来选择合适的码率和编码方案。

    6.4 汉明距离 (Hamming Distance) 与最小距离 (Minimum Distance)

    为了理解信道编码如何实现差错控制,我们需要引入码字之间“距离”的概念。汉明距离(Hamming Distance)是衡量两个等长二进制码字之间差异的常用度量。

    定义 (Definition): 两个等长二进制码字 \(x\) 和 \(y\) 之间的汉明距离 \(d(x, y)\) 定义为它们对应位置上不同的比特数。

    示例 (Example):
    假设有两个码字 \(x = 1011010\) 和 \(y = 1001100\)。
    比较它们对应位置的比特:
    位置 1: 1 vs 1 (相同)
    位置 2: 0 vs 0 (相同)
    位置 3: 1 vs 0 (不同)
    位置 4: 1 vs 1 (相同)
    位置 5: 0 vs 1 (不同)
    位置 6: 1 vs 0 (不同)
    位置 7: 0 vs 0 (相同)
    不同的位置有 3, 5, 6。因此,\(d(x, y) = 3\)。

    汉明距离反映了将一个码字转换为另一个码字所需的最少比特翻转次数。在二进制对称信道(Binary Symmetric Channel, BSC)中,比特翻转是最常见的差错类型,汉明距离自然地衡量了两个码字经过信道传输后相互混淆的可能性(距离越大,混淆的可能性越小)。

    对于一个信道编码方案,它会生成一个码字集合,称为码本(Codebook)。码本中的每个码字都对应一个有效的信息序列。信道编码的差错控制能力主要取决于码本中任意两个不同码字之间的最小汉明距离。

    定义 (Definition): 一个码本 \(\mathcal{C}\) 的最小距离(Minimum Distance),通常记为 \(d_{\min}\),定义为码本中任意两个不同码字之间的最小汉明距离。
    \[ d_{\min} = \min_{x, y \in \mathcal{C}, x \neq y} d(x, y) \]

    最小距离 \(d_{\min}\) 是衡量一个信道编码方案性能的关键参数。它直接决定了该编码方案的检错和纠错能力。一个具有较大最小距离的码本,其码字之间“间隔”较远,因此即使在传输过程中发生了一些比特翻转,接收到的序列仍然更有可能“靠近”原始发送的码字,而不是另一个不同的有效码字。

    对于线性分组码(Linear Block Codes),最小距离有一个方便的计算方法:它是码本中所有非零码字的最小汉明重量(Hamming Weight)。一个码字的汉明重量是指其非零比特的个数。这是因为对于线性码,任意两个码字 \(x\) 和 \(y\) 的汉明距离 \(d(x, y)\) 等于它们的差 \(x-y\) 的汉明重量 \(w(x-y)\),而 \(x-y\) 也是码本中的一个码字(如果 \(x \neq y\),则 \(x-y \neq 0\))。

    6.5 检错 (Error Detection) 与纠错 (Error Correction) 能力

    最小距离 \(d_{\min}\) 与信道编码的检错和纠错能力之间存在直接的关系。

    检错能力 (Error Detection Capability):
    一个码本的最小距离为 \(d_{\min}\),则该码本可以检测出任意 \(t\) 个或少于 \(t\) 个比特的差错,当且仅当 \(d_{\min} \ge t + 1\)。
    换句话说,一个码本可以检测出最多 \(d_{\min} - 1\) 个比特的差错。
    这是因为如果在发送码字 \(c\) 的过程中发生了 \(t\) 个比特的差错,接收到的序列是 \(r\),则 \(d(c, r) = t\)。如果 \(t < d_{\min}\),那么接收到的序列 \(r\) 不可能是码本中的任何其他有效码字 \(c'\)(因为 \(d(c, c') \ge d_{\min} > t = d(c, r)\))。因此,接收端可以通过检查接收到的序列是否是码本中的有效码字来检测出差错。如果接收到的序列不在码本中,就知道发生了差错。

    纠错能力 (Error Correction Capability):
    一个码本的最小距离为 \(d_{\min}\),则该码本可以纠正任意 \(t\) 个或少于 \(t\) 个比特的差错,当且仅当 \(d_{\min} \ge 2t + 1\)。
    换句话说,一个码本可以纠正最多 \(\lfloor (d_{\min} - 1) / 2 \rfloor\) 个比特的差错。
    这是基于“最小距离译码”或“最大似然译码”的思想。假设发送了码字 \(c\),接收到序列 \(r\),且在传输过程中发生了 \(t\) 个比特的差错,即 \(d(c, r) = t\)。如果 \(t \le \lfloor (d_{\min} - 1) / 2 \rfloor\),那么 \(2t \le d_{\min} - 1\),即 \(2t < d_{\min}\)。对于码本中的任何其他有效码字 \(c' \neq c\),我们有 \(d(c, c') \ge d_{\min}\)。根据三角不等式,\(d(c', r) \ge |d(c, c') - d(c, r)| \ge |d_{\min} - t|\). 由于 \(t \le (d_{\min}-1)/2\),所以 \(d_{\min} - t \ge d_{\min} - (d_{\min}-1)/2 = (d_{\min}+1)/2\). 同时,\(d(c, r) = t \le (d_{\min}-1)/2\). 因为 \(d_{\min} \ge 1\),所以 \((d_{\min}+1)/2 > (d_{\min}-1)/2\). 因此,\(d(c', r) > d(c, r)\). 这意味着接收到的序列 \(r\) 距离原始发送的码字 \(c\) 比距离码本中的任何其他有效码字 \(c'\) 都更近。最小距离译码器会选择距离接收序列最近的有效码字作为译码结果,从而能够正确地恢复原始码字 \(c\)。

    总结 (Summary):
    对于一个最小距离为 \(d_{\min}\) 的码:
    ⚝ 可以检测出最多 \(d_{\min} - 1\) 个差错。
    ⚝ 可以纠正最多 \(t = \lfloor (d_{\min} - 1) / 2 \rfloor\) 个差错。

    示例 (Example):
    考虑一个码本 \(\mathcal{C} = \{000, 111\}\)。
    码字 000 和 111 之间的汉明距离是 \(d(000, 111) = 3\)。
    所以,这个码的最小距离 \(d_{\min} = 3\)。
    ⚝ 检错能力:可以检测出最多 \(3 - 1 = 2\) 个差错。
    ▮▮▮▮⚝ 如果发送 000,接收到 001 (1个差错),不在码本中,检测到差错。
    ▮▮▮▮⚝ 如果发送 000,接收到 011 (2个差错),不在码本中,检测到差错。
    ▮▮▮▮⚝ 如果发送 000,接收到 111 (3个差错),这是另一个有效码字,无法检测到差错。
    ⚝ 纠错能力:可以纠正最多 \(\lfloor (3 - 1) / 2 \rfloor = \lfloor 1 \rfloor = 1\) 个差错。
    ▮▮▮▮⚝ 如果发送 000,接收到 001 (1个差错)。001 距离 000 的距离是 1,距离 111 的距离是 2。译码器会选择 000,纠错成功。
    ▮▮▮▮⚝ 如果发送 000,接收到 011 (2个差错)。011 距离 000 的距离是 2,距离 111 的距离是 1。最小距离译码器会选择 111,纠错失败。

    这个简单的例子说明了最小距离在确定码的检错和纠错能力方面的重要性。设计一个好的信道编码方案,很大程度上就是设计一个具有足够大最小距离的码本,以满足所需的可靠性要求。当然,码率和编码/译码的复杂度也是设计中需要考虑的重要因素。

    本章为信道编码奠定了基础,介绍了其必要性、基本概念、码率与冗余的关系以及衡量码性能的关键指标——汉明距离和最小距离。在接下来的章节中,我们将深入学习具体的信道编码方案,包括线性分组码、卷积码以及现代的Turbo码和LDPC码。

    7. chapter 7: 线性分组码 (Linear Block Codes)

    欢迎来到本书的第七章!在前几章中,我们探讨了信息的基本概念、信源编码以及信道容量的理论极限。我们了解到,在噪声信道中可靠地传输信息需要进行信道编码,即在发送端引入冗余,以便在接收端检测或纠正传输过程中发生的错误。本章将深入介绍一类重要的信道编码方法——线性分组码。线性分组码因其结构简单、易于分析和实现而成为信道编码理论的基石,也是许多现代复杂编码技术的基础。我们将从线性码的定义和基本性质出发,逐步学习其编码和译码方法,并通过经典的汉明码来加深理解,最后对循环码进行初步介绍。

    7.1 线性码的定义与性质 (Definition and Properties of Linear Codes)

    在数字通信系统中,信息通常被表示为二进制序列。信道编码的任务就是将原始信息序列(通常称为信息字)转换为具有一定冗余度的码字序列,以便抵抗信道噪声的影响。分组码 (Block Code) 是一种基本的信道编码方式,它将长度为 \(k\) 的信息字映射为长度为 \(n\) 的码字,其中 \(n > k\)。这里的 \(k\) 称为信息位长度 (Information Length),\(n\) 称为码字长度 (Codeword Length),\(n-k\) 称为冗余位长度 (Redundancy Length) 或监督位长度 (Parity-Check Length)。码率 (Code Rate) 定义为 \(R = k/n\),表示每个码字中有效信息所占的比例。

    线性分组码 (Linear Block Code) 是一类特殊的 \( (n, k) \) 分组码。它不仅是一个码字集合,而且这个集合在二进制域 \( \mathbb{F}_2 \)(包含元素 0 和 1,加法和乘法遵循模 2 运算)上构成一个向量空间 (Vector Space)。具体来说,一个 \( (n, k) \) 二进制线性分组码 \( \mathcal{C} \) 是 \( \mathbb{F}_2^n \) 的一个 \( k \) 维子空间 (Subspace)。这意味着:

    ① 码字集合 \( \mathcal{C} \) 包含零向量 (Zero Vector),即全零码字 \( \mathbf{0} = (0, 0, \dots, 0) \)。
    ② 对于任意两个码字 \( \mathbf{c}_1, \mathbf{c}_2 \in \mathcal{C} \),它们的模 2 加法 (Modulo-2 Addition) 结果 \( \mathbf{c}_1 + \mathbf{c}_2 \) 仍然是一个码字,即 \( \mathbf{c}_1 + \mathbf{c}_2 \in \mathcal{C} \)。
    ③ 对于任意码字 \( \mathbf{c} \in \mathcal{C} \) 和任意标量 \( a \in \mathbb{F}_2 \)(即 \( a=0 \) 或 \( a=1 \)),标量乘法 \( a \cdot \mathbf{c} \) 仍然是一个码字,即 \( a \cdot \mathbf{c} \in \mathcal{C} \)。在 \( \mathbb{F}_2 \) 上,这只意味着 \( 0 \cdot \mathbf{c} = \mathbf{0} \in \mathcal{C} \) 和 \( 1 \cdot \mathbf{c} = \mathbf{c} \in \mathcal{C} \),这与性质 ① 和 ② 是兼容的。

    线性码的这些性质带来了许多便利。例如,由于码字集合构成一个向量空间,它必然包含 \( 2^k \) 个码字,因为 \( \mathbb{F}_2^n \) 的任何 \( k \) 维子空间都恰好包含 \( 2^k \) 个向量。这与 \( k \) 位信息字可以表示 \( 2^k \) 种不同信息相对应。

    线性码的一个重要性质是,任意两个不同码字之间的汉明距离 (Hamming Distance) 等于它们模 2 加法结果的汉明重量 (Hamming Weight)。汉明距离 \( d(\mathbf{x}, \mathbf{y}) \) 是两个等长向量 \( \mathbf{x} \) 和 \( \mathbf{y} \) 中对应位置不同的个数。汉明重量 \( w(\mathbf{z}) \) 是向量 \( \mathbf{z} \) 中非零元素的个数。对于线性码,如果 \( \mathbf{c}_1, \mathbf{c}_2 \in \mathcal{C} \) 且 \( \mathbf{c}_1 \neq \mathbf{c}_2 \),则 \( \mathbf{c}_1 + \mathbf{c}_2 \in \mathcal{C} \) 且 \( \mathbf{c}_1 + \mathbf{c}_2 \neq \mathbf{0} \)。它们的距离 \( d(\mathbf{c}_1, \mathbf{c}_2) = w(\mathbf{c}_1 + \mathbf{c}_2) \)。

    线性码的最小距离 (Minimum Distance) \( d_{\min} \) 是码字集合中任意两个不同码字之间的最小汉明距离。对于线性码,最小距离等于码字集合中所有非零码字的最小汉明重量。即:
    \[ d_{\min} = \min_{\mathbf{c} \in \mathcal{C}, \mathbf{c} \neq \mathbf{0}} w(\mathbf{c}) \]
    这个性质极大地简化了最小距离的计算,我们只需要计算所有 \( 2^k - 1 \) 个非零码字的重量,而不需要计算 \( \binom{2^k}{2} \) 对码字之间的距离。最小距离 \( d_{\min} \) 决定了码的检错 (Error Detection) 和纠错 (Error Correction) 能力。一个码可以检测 \( d_{\min} - 1 \) 个错误,可以纠正 \( t = \lfloor (d_{\min} - 1)/2 \rfloor \) 个错误。

    7.2 生成矩阵 (Generator Matrix) 与校验矩阵 (Parity-Check Matrix)

    由于线性分组码是 \( \mathbb{F}_2^n \) 的一个 \( k \) 维子空间,它必然有一个基 (Basis),由 \( k \) 个线性无关的码字组成。我们可以用一个 \( k \times n \) 的矩阵来表示这个基,这个矩阵称为生成矩阵 (Generator Matrix),通常记为 \( \mathbf{G} \)。生成矩阵的行向量是码空间的 \( k \) 个基向量。

    设信息字为 \( \mathbf{m} = (m_1, m_2, \dots, m_k) \in \mathbb{F}_2^k \),其中 \( m_i \in \{0, 1\} \)。编码过程就是将信息字 \( \mathbf{m} \) 映射到码字 \( \mathbf{c} \in \mathcal{C} \)。对于线性码,这个映射是线性的,可以通过矩阵乘法实现:
    \[ \mathbf{c} = \mathbf{m} \mathbf{G} \]
    其中,乘法和加法都是在 \( \mathbb{F}_2 \) 上进行的。例如,如果 \( \mathbf{G} \) 的第 \( i \) 行是基向量 \( \mathbf{g}_i \),那么码字 \( \mathbf{c} = \sum_{i=1}^k m_i \mathbf{g}_i \pmod 2 \)。

    生成矩阵 \( \mathbf{G} \) 可以通过行变换化为系统形式 (Systematic Form):\( \mathbf{G} = [\mathbf{I}_k | \mathbf{P}] \),其中 \( \mathbf{I}_k \) 是 \( k \times k \) 的单位矩阵 (Identity Matrix),\( \mathbf{P} \) 是一个 \( k \times (n-k) \) 的矩阵。采用系统生成矩阵编码时,信息字 \( \mathbf{m} = (m_1, \dots, m_k) \) 直接构成码字的前 \( k \) 位,而后面的 \( n-k \) 位是监督位 (Parity-Check Bits),由 \( \mathbf{m} \mathbf{P} \) 计算得到。码字的形式为 \( \mathbf{c} = (\mathbf{m} | \mathbf{m} \mathbf{P}) \)。系统码 (Systematic Code) 的优点是信息位在码字中是显而易见的,便于提取。

    与生成矩阵相对应的是校验矩阵 (Parity-Check Matrix),通常记为 \( \mathbf{H} \)。校验矩阵的行向量构成了码空间 \( \mathcal{C} \) 的正交补空间 (Orthogonal Complement Space) \( \mathcal{C}^\perp \) 的基。对于任意码字 \( \mathbf{c} \in \mathcal{C} \),它必须满足:
    \[ \mathbf{c} \mathbf{H}^T = \mathbf{0} \]
    其中 \( \mathbf{H}^T \) 是 \( \mathbf{H} \) 的转置 (Transpose),\( \mathbf{0} \) 是全零向量。这个方程组表示了码字中各比特位之间必须满足的线性关系,即校验方程。

    如果生成矩阵是系统形式 \( \mathbf{G} = [\mathbf{I}_k | \mathbf{P}] \),那么对应的校验矩阵也是系统形式 \( \mathbf{H} = [-\mathbf{P}^T | \mathbf{I}_{n-k}] \)。在 \( \mathbb{F}_2 \) 上,\( -\mathbf{P}^T = \mathbf{P}^T \),所以 \( \mathbf{H} = [\mathbf{P}^T | \mathbf{I}_{n-k}] \)。我们可以验证 \( \mathbf{G} \mathbf{H}^T = [\mathbf{I}_k | \mathbf{P}] [\mathbf{P} | \mathbf{I}_{n-k}]^T = [\mathbf{I}_k | \mathbf{P}] [\mathbf{P}^T | \mathbf{I}_{n-k}] = \mathbf{I}_k \mathbf{P}^T + \mathbf{P} \mathbf{I}_{n-k} = \mathbf{P}^T + \mathbf{P} = \mathbf{0} \),这符合 \( \mathbf{G} \mathbf{H}^T = \mathbf{0} \) 的要求。校验矩阵 \( \mathbf{H} \) 是一个 \( (n-k) \times n \) 的矩阵。

    校验矩阵在接收端进行错误检测和译码时非常有用。接收到的向量 \( \mathbf{r} \) 可能由于信道噪声而与发送的码字 \( \mathbf{c} \) 不同。我们将 \( \mathbf{r} \) 乘以 \( \mathbf{H}^T \) 得到伴随式 (Syndrome):
    \[ \mathbf{s} = \mathbf{r} \mathbf{H}^T \]
    如果 \( \mathbf{r} \) 是一个有效的码字(即 \( \mathbf{r} \in \mathcal{C} \)),那么 \( \mathbf{s} = \mathbf{0} \)。如果 \( \mathbf{r} \) 不是码字,那么 \( \mathbf{s} \neq \mathbf{0} \),这表明发生了错误。伴随式 \( \mathbf{s} \) 的值与错误模式 (Error Pattern) 之间存在一一对应的关系(在可纠错范围内),这为译码提供了基础。

    7.3 伴随式译码 (Syndrome Decoding)

    伴随式译码是一种基于校验矩阵 \( \mathbf{H} \) 的译码方法,特别适用于线性分组码。假设发送的码字是 \( \mathbf{c} \),接收到的向量是 \( \mathbf{r} \)。由于信道噪声,\( \mathbf{r} = \mathbf{c} + \mathbf{e} \),其中 \( \mathbf{e} \) 是错误向量 (Error Vector),其非零位置表示发生了错误。

    接收端计算伴随式:
    \[ \mathbf{s} = \mathbf{r} \mathbf{H}^T = (\mathbf{c} + \mathbf{e}) \mathbf{H}^T = \mathbf{c} \mathbf{H}^T + \mathbf{e} \mathbf{H}^T \]
    由于 \( \mathbf{c} \) 是码字,\( \mathbf{c} \mathbf{H}^T = \mathbf{0} \)。因此,伴随式 \( \mathbf{s} = \mathbf{e} \mathbf{H}^T \)。这意味着伴随式只与错误向量 \( \mathbf{e} \) 有关,而与发送的码字 \( \mathbf{c} \) 无关。

    伴随式译码的基本思想是:对于接收到的向量 \( \mathbf{r} \),计算其伴随式 \( \mathbf{s} \)。然后,查找一个最有可能的错误向量 \( \hat{\mathbf{e}} \) 使得 \( \hat{\mathbf{e}} \mathbf{H}^T = \mathbf{s} \)。在最大似然译码 (Maximum Likelihood Decoding) 的原则下,如果假设信道是二进制对称信道 (Binary Symmetric Channel, BSC),错误发生的概率 \( p < 0.5 \),那么最有可能的错误向量是具有最小汉明重量的那个。因此,伴随式译码的目标是找到一个重量最小的错误向量 \( \hat{\mathbf{e}} \) 满足 \( \hat{\mathbf{e}} \mathbf{H}^T = \mathbf{s} \)。找到 \( \hat{\mathbf{e}} \) 后,估计的发送码字就是 \( \hat{\mathbf{c}} = \mathbf{r} + \hat{\mathbf{e}} \)。

    伴随式译码的步骤如下:
    ① 接收到向量 \( \mathbf{r} \)。
    ② 计算伴随式 \( \mathbf{s} = \mathbf{r} \mathbf{H}^T \)。
    ③ 如果 \( \mathbf{s} = \mathbf{0} \),则认为没有发生可检测的错误,译码输出 \( \hat{\mathbf{c}} = \mathbf{r} \)。
    ④ 如果 \( \mathbf{s} \neq \mathbf{0} \),则查找与伴随式 \( \mathbf{s} \) 对应的最小重量错误向量 \( \hat{\mathbf{e}} \)。这通常通过预先建立一个伴随式与最小重量错误向量的对照表(称为标准伴随式译码表 (Standard Array Decoding Table))来实现。
    ⑤ 译码输出 \( \hat{\mathbf{c}} = \mathbf{r} + \hat{\mathbf{e}} \)。

    标准伴随式译码表是一个 \( 2^{n-k} \times 2^k \) 的矩阵。第一行是所有 \( 2^k \) 个码字,以 \( \mathbf{0} \) 开头。第一列是伴随式为非零的最小重量错误向量(称为陪集首领 (Coset Leader)),以 \( \mathbf{0} \) 开头。表中位于第 \( i \) 行第 \( j \) 列的元素是第 \( i \) 个陪集首领与第 \( j \) 个码字的模 2 和。接收到的向量 \( \mathbf{r} \) 必然落在表中的某一位置。计算 \( \mathbf{r} \) 的伴随式 \( \mathbf{s} \),找到第一列中对应的陪集首领 \( \hat{\mathbf{e}} \)。则 \( \mathbf{r} \) 所在的行就是以 \( \hat{\mathbf{e}} \) 为陪集首领的陪集 (Coset)。该陪集中的所有向量具有相同的伴随式 \( \mathbf{s} \)。译码器选择该行中位于第一行的码字作为译码输出。

    伴随式译码的优点是译码过程相对简单,特别是对于码长较短的码。缺点是对于码长较长的码,标准伴随式译码表会非常大(\( 2^{n-k} \) 行),存储和查找的开销会很高。因此,对于长码,通常采用其他更高效的译码算法。

    7.4 汉明码 (Hamming Codes)

    汉明码 (Hamming Codes) 是一类重要的线性分组码,由 Richard Hamming 在 1950 年提出。它们是完美码 (Perfect Code) 的一个例子,意味着它们能够纠正所有单个错误,并且在给定码长和纠错能力下,具有最大的码率。

    一个二元汉明码通常记为 \( \text{Ham}(r, 2) \),其中 \( r \ge 2 \) 是一个整数。它的参数是:
    ⚝ 码字长度 \( n = 2^r - 1 \)
    ⚝ 信息位长度 \( k = n - r = 2^r - 1 - r \)
    ⚝ 监督位长度 \( n-k = r \)
    ⚝ 最小距离 \( d_{\min} = 3 \)

    由于最小距离为 3,汉明码可以纠正任意单个错误 (\( t = \lfloor (3-1)/2 \rfloor = 1 \)),并检测任意两个错误。

    汉明码的校验矩阵 \( \mathbf{H} \) 是一个 \( r \times (2^r - 1) \) 的矩阵,其列由所有非零的 \( r \) 维二元向量组成,且每列只出现一次。例如,对于 \( r=3 \),汉明码 \( \text{Ham}(3, 2) \) 的参数是 \( n = 2^3 - 1 = 7 \),\( k = 7 - 3 = 4 \)。这是一个 \( (7, 4) \) 汉明码。其校验矩阵 \( \mathbf{H} \) 是一个 \( 3 \times 7 \) 的矩阵,列向量是所有 7 个非零的 3 维二元向量:
    \[ \mathbf{H} = \begin{pmatrix} 0 & 0 & 0 & 1 & 1 & 1 & 1 \\ 0 & 1 & 1 & 0 & 0 & 1 & 1 \\ 1 & 0 & 1 & 0 & 1 & 0 & 1 \end{pmatrix} \]
    注意,列的顺序可以不同,但通常按照其二进制表示的数值顺序排列(例如,从 001 到 111)。

    对于 \( (7, 4) \) 汉明码,信息字长度 \( k=4 \),码字长度 \( n=7 \)。信息字 \( \mathbf{m} = (m_1, m_2, m_3, m_4) \)。如果采用系统码形式,码字 \( \mathbf{c} = (m_1, m_2, m_3, m_4, p_1, p_2, p_3) \),其中 \( p_1, p_2, p_3 \) 是监督位。系统生成矩阵 \( \mathbf{G} = [\mathbf{I}_4 | \mathbf{P}] \),其中 \( \mathbf{P} \) 是 \( 4 \times 3 \) 矩阵,由 \( \mathbf{H} = [\mathbf{P}^T | \mathbf{I}_3] \) 确定。从 \( \mathbf{H} \) 可以看出 \( \mathbf{P}^T \) 是 \( \mathbf{H} \) 的前 4 列,即
    \[ \mathbf{P}^T = \begin{pmatrix} 0 & 0 & 0 & 1 \\ 0 & 1 & 1 & 0 \\ 1 & 0 & 1 & 0 \end{pmatrix} \]
    所以 \( \mathbf{P} = \begin{pmatrix} 0 & 0 & 1 \\ 0 & 1 & 0 \\ 0 & 1 & 1 \\ 1 & 0 & 0 \end{pmatrix} \)。
    系统生成矩阵为:
    \[ \mathbf{G} = \begin{pmatrix} 1 & 0 & 0 & 0 & 0 & 0 & 1 \\ 0 & 1 & 0 & 0 & 0 & 1 & 0 \\ 0 & 0 & 1 & 0 & 0 & 1 & 1 \\ 0 & 0 & 0 & 1 & 1 & 0 & 0 \end{pmatrix} \]
    (注意:这里的 \( \mathbf{G} \) 是根据 \( \mathbf{H} = [\mathbf{P}^T | \mathbf{I}_{n-k}] \) 且 \( \mathbf{G} = [\mathbf{I}_k | \mathbf{P}] \) 推导的,需要确保 \( \mathbf{G} \mathbf{H}^T = \mathbf{0} \)。根据上面的 \( \mathbf{P} \),\( \mathbf{G} = \begin{pmatrix} \mathbf{I}_4 & \mathbf{P} \end{pmatrix} = \begin{pmatrix} 1 & 0 & 0 & 0 & 0 & 0 & 1 \\ 0 & 1 & 0 & 0 & 0 & 1 & 0 \\ 0 & 0 & 1 & 0 & 0 & 1 & 1 \\ 0 & 0 & 0 & 1 & 1 & 0 & 0 \end{pmatrix} \)。而 \( \mathbf{H}^T = \begin{pmatrix} 0 & 0 & 1 \\ 0 & 1 & 0 \\ 0 & 1 & 1 \\ 1 & 0 & 0 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\ 1 & 1 & 1 \end{pmatrix} \)。计算 \( \mathbf{G} \mathbf{H}^T \) 发现并不为零。这是因为 \( \mathbf{H} = [\mathbf{P}^T | \mathbf{I}_{n-k}] \) 对应的系统生成矩阵是 \( \mathbf{G} = [\mathbf{I}_k | \mathbf{P}] \)。如果 \( \mathbf{H} \) 的系统形式是 \( [\mathbf{I}_{n-k} | \mathbf{P}'] \),则 \( \mathbf{G} = [\mathbf{P}'^T | \mathbf{I}_k] \)。汉明码的校验矩阵通常写成 \( [\mathbf{P}^T | \mathbf{I}_r] \) 的形式,其中 \( \mathbf{P}^T \) 是由所有重量大于等于 2 的 \( r \) 维向量组成的矩阵。例如,对于 \( (7,4) \) 汉明码,如果 \( \mathbf{H} = [\mathbf{I}_3 | \mathbf{P}'] \),则 \( \mathbf{P}' \) 是 \( 3 \times 4 \) 矩阵,其列是所有重量大于等于 2 的 3 维向量。
    \[ \mathbf{H} = \begin{pmatrix} 1 & 0 & 0 & 0 & 1 & 1 & 1 \\ 0 & 1 & 0 & 1 & 0 & 1 & 1 \\ 0 & 0 & 1 & 1 & 1 & 0 & 1 \end{pmatrix} \]
    此时 \( \mathbf{P}' = \begin{pmatrix} 0 & 1 & 1 & 1 \\ 1 & 0 & 1 & 1 \\ 1 & 1 & 0 & 1 \end{pmatrix}^T = \begin{pmatrix} 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\ 1 & 1 & 1 \end{pmatrix} \)。
    系统生成矩阵为 \( \mathbf{G} = [\mathbf{P}'^T | \mathbf{I}_4] = \begin{pmatrix} 0 & 1 & 1 & 1 & 1 & 0 & 0 & 0 \\ 1 & 0 & 1 & 1 & 0 & 1 & 0 & 0 \\ 1 & 1 & 0 & 1 & 0 & 0 & 1 & 0 \\ 1 & 1 & 1 & 0 & 0 & 0 & 0 & 1 \end{pmatrix} \)。
    这两种系统形式都可以,取决于如何定义信息位和监督位的位置。通常,汉明码的校验矩阵 \( \mathbf{H} \) 的列是所有非零 \( r \)-维向量。

    汉明码的伴随式译码非常直观。接收到向量 \( \mathbf{r} \),计算伴随式 \( \mathbf{s} = \mathbf{r} \mathbf{H}^T \)。由于 \( \mathbf{H} \) 的列是所有非零 \( r \)-维向量,如果只发生一个错误,即 \( \mathbf{e} \) 只有一个非零位(假设在第 \( i \) 位),则 \( \mathbf{e} \) 是一个单位向量 \( \mathbf{u}_i \),\( \mathbf{s} = \mathbf{u}_i \mathbf{H}^T \),这恰好是 \( \mathbf{H} \) 的第 \( i \) 列。因此,伴随式 \( \mathbf{s} \) 的值直接指示了发生错误的比特位置。如果 \( \mathbf{s} = \mathbf{0} \),没有错误;如果 \( \mathbf{s} \neq \mathbf{0} \),且 \( \mathbf{s} \) 是 \( \mathbf{H} \) 的第 \( i \) 列,则错误发生在第 \( i \) 位。译码器只需翻转接收向量 \( \mathbf{r} \) 的第 \( i \) 位即可得到估计的码字 \( \hat{\mathbf{c}} \)。

    例如,对于 \( (7, 4) \) 汉明码,使用上面第二个 \( \mathbf{H} \)。如果发送码字 \( \mathbf{c} = (0, 0, 0, 0, 0, 0, 0) \),接收到 \( \mathbf{r} = (0, 0, 1, 0, 0, 0, 0) \)(第三位发生错误)。
    伴随式 \( \mathbf{s} = \mathbf{r} \mathbf{H}^T = (0, 0, 1, 0, 0, 0, 0) \begin{pmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \\ 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\ 1 & 1 & 1 \end{pmatrix} = (0 \cdot 1 + 0 \cdot 0 + 1 \cdot 0 + 0 \cdot 0 + 0 \cdot 1 + 0 \cdot 1 + 0 \cdot 1, \dots) = (0, 0, 1) \)。
    伴随式 \( \mathbf{s} = (0, 0, 1) \)。查找 \( \mathbf{H} \) 的列,发现 \( (0, 0, 1)^T \) 是 \( \mathbf{H} \) 的第三列。因此,错误发生在第三位。译码器将 \( \mathbf{r} \) 的第三位翻转,得到 \( \hat{\mathbf{c}} = (0, 0, 0, 0, 0, 0, 0) \),成功纠错。

    汉明码是理解线性码和伴随式译码的绝佳例子,它们在早期数字通信和存储系统中得到了广泛应用。

    7.5 循环码初步 (Introduction to Cyclic Codes)

    循环码 (Cyclic Codes) 是一类特殊的线性分组码,它们具有额外的代数结构,使得编码和译码更加高效。一个 \( (n, k) \) 线性分组码 \( \mathcal{C} \) 如果满足以下性质,则称为循环码:

    如果 \( \mathbf{c} = (c_0, c_1, \dots, c_{n-1}) \) 是一个码字,那么它的循环移位 (Cyclic Shift) \( \mathbf{c}' = (c_{n-1}, c_0, c_1, \dots, c_{n-2}) \) 也是一个码字。

    这个性质意味着,如果一个向量在码字集合中,那么通过将它的分量循环移动得到的向量也一定在码字集合中。

    循环码的代数结构可以通过多项式 (Polynomial) 来描述。我们将长度为 \( n \) 的二元向量 \( \mathbf{v} = (v_0, v_1, \dots, v_{n-1}) \) 对应于一个次数小于 \( n \) 的多项式 \( v(x) = v_0 + v_1 x + \dots + v_{n-1} x^{n-1} \),其系数在 \( \mathbb{F}_2 \) 上。向量的模 2 加法对应于多项式的模 2 加法。向量的循环移位对应于多项式乘以 \( x \) 再模 \( x^n - 1 \)。具体来说,向量 \( (c_{n-1}, c_0, \dots, c_{n-2}) \) 对应的多项式是 \( c_{n-1} + c_0 x + \dots + c_{n-2} x^{n-2} \)。而 \( x \cdot c(x) \pmod{x^n - 1} = x(c_0 + c_1 x + \dots + c_{n-1} x^{n-1}) \pmod{x^n - 1} = c_0 x + c_1 x^2 + \dots + c_{n-1} x^n \pmod{x^n - 1} \)。由于 \( x^n \equiv 1 \pmod{x^n - 1} \),所以 \( c_{n-1} x^n \equiv c_{n-1} \pmod{x^n - 1} \)。因此,\( x \cdot c(x) \pmod{x^n - 1} = c_0 x + c_1 x^2 + \dots + c_{n-2} x^{n-1} + c_{n-1} \),这正是循环移位后的向量对应的多项式。

    在一个 \( (n, k) \) 循环码中,码字对应的多项式集合构成了多项式环 \( \mathbb{F}_2[x] / (x^n - 1) \) 的一个理想 (Ideal)。这个理想是由一个唯一的、次数为 \( n-k \) 的多项式生成的,称为生成多项式 (Generator Polynomial),记为 \( g(x) \)。生成多项式 \( g(x) \) 是 \( x^n - 1 \) 的一个因式 (Factor)。

    编码过程:信息字 \( \mathbf{m} = (m_0, m_1, \dots, m_{k-1}) \) 对应信息多项式 \( m(x) = m_0 + m_1 x + \dots + m_{k-1} x^{k-1} \)。码字多项式 \( c(x) \) 由信息多项式乘以生成多项式得到:
    \[ c(x) = m(x) g(x) \]
    这种编码方式生成的码字不一定是系统码。为了得到系统码,可以使用另一种编码方式:将信息多项式 \( m(x) \) 乘以 \( x^{n-k} \),然后除以 \( g(x) \),得到商 \( q(x) \) 和余式 \( r(x) \):
    \[ x^{n-k} m(x) = q(x) g(x) + r(x) \]
    其中 \( \text{deg}(r(x)) < \text{deg}(g(x)) = n-k \)。将余式移项:
    \[ r(x) + x^{n-k} m(x) = q(x) g(x) \]
    令 \( c(x) = r(x) + x^{n-k} m(x) \)。由于 \( c(x) \) 是 \( g(x) \) 的倍数,所以它是一个码字多项式。对应的码字向量的前 \( n-k \) 位由 \( r(x) \) 的系数组成(对应监督位),后 \( k \) 位由 \( x^{n-k} m(x) \) 的系数组成(对应信息位)。由于 \( \text{deg}(m(x)) \le k-1 \),\( \text{deg}(x^{n-k} m(x)) \le n-k+k-1 = n-1 \),且最低次项是 \( x^{n-k} \),所以 \( x^{n-k} m(x) \) 的前 \( n-k \) 个系数为零,后 \( k \) 个系数就是 \( m(x) \) 的系数。因此,码字向量的形式为 \( (r_0, \dots, r_{n-k-1}, m_0, \dots, m_{k-1}) \),这是一个系统码。

    循环码的译码可以利用其代数结构实现,例如使用伴随式译码。接收多项式 \( r(x) = c(x) + e(x) \),其中 \( e(x) \) 是错误多项式。计算伴随式多项式 (Syndrome Polynomial):
    \[ s(x) = r(x) \pmod{g(x)} \]
    如果 \( s(x) = 0 \),则认为没有错误。如果 \( s(x) \neq 0 \),则根据 \( s(x) \) 来确定最可能的错误多项式 \( \hat{e}(x) \)。循环码的伴随式译码可以通过移位寄存器 (Shift Register) 和反馈电路高效实现,这比通用线性码的伴随式译码表查找要简单得多。

    循环码包括许多重要的码类,如 BCH 码 (Bose-Chaudhuri-Hocquenghem Codes) 和 Reed-Solomon 码 (Reed-Solomon Codes),它们在通信和存储系统中有着广泛的应用。对循环码的深入研究需要更多的代数知识,特别是有限域 (Finite Field) 理论。本节仅作为初步介绍,为后续学习打下基础。

    8. chapter 8: 卷积码 (Convolutional Codes)

    欢迎来到本书关于信道编码的第二部分。在上一章中,我们深入探讨了线性分组码,了解了它们如何通过在信息比特中加入冗余来检测和纠正传输错误。线性分组码是一种“块”编码,即它们将输入数据分成固定长度的块进行独立编码。本章将介绍另一种重要的信道编码技术——卷积码 (Convolutional Codes)。与分组码不同,卷积码是一种“流”编码,它通过将当前输入比特与之前输入的比特进行卷积运算来生成编码输出,因此编码过程具有记忆性。这种记忆性使得卷积码在许多应用中表现出优异的纠错性能,尤其是在无线通信等噪声较大的信道中。

    卷积码由彼得·伊利亚斯 (Peter Elias) 于1955年提出,并在随后的几十年里得到了广泛研究和应用。它们是现代通信系统中的基石之一,例如在卫星通信、深空探测、移动通信标准(如3G、4G)中都有广泛应用。理解卷积码的编码原理、表示方法以及高效的译码算法,对于掌握现代通信系统的差错控制技术至关重要。

    在本章中,我们将首先介绍卷积码的编码器结构,理解其基于移位寄存器 (Shift Register) 的工作原理。接着,我们将学习如何使用状态图 (State Diagram) 和网格图 (Trellis Diagram) 来描述卷积码的编码过程和特性,特别是网格图,它是理解和实现卷积码译码算法的关键工具。然后,我们将重点讲解最常用的卷积码译码算法——维特比译码算法 (Viterbi Decoding Algorithm),这是一种基于动态规划 (Dynamic Programming) 的最大似然译码 (Maximum Likelihood Decoding) 方法。最后,我们将初步介绍序列译码 (Sequential Decoding) 作为另一种适用于长约束长度卷积码的译码技术。

    通过本章的学习,您将能够:

    ⚝ 理解卷积码与分组码的区别及其优势。
    ⚝ 掌握卷积码编码器的结构和工作原理。
    ⚝ 学会使用状态图和网格图表示卷积码。
    ⚝ 深入理解维特比译码算法的原理和步骤。
    ⚝ 初步了解序列译码的基本思想。

    准备好了吗?让我们一起进入卷积码的精彩世界!🚀

    8.1 卷积码的编码器结构 (Convolutional Encoder Structure)

    卷积码的编码过程可以看作是输入信息序列与编码器的脉冲响应 (Impulse Response) 进行卷积。一个典型的二进制卷积码编码器由一个或多个移位寄存器和若干个模2加法器 (Modulo-2 Adders) 组成。

    移位寄存器 (Shift Register):用于存储当前输入的比特以及之前输入的若干个比特。移位寄存器的长度决定了编码器的记忆性,通常用约束长度 (Constraint Length) \(K\) 或记忆长度 (Memory Length) \(m = K-1\) 来衡量。约束长度 \(K\) 表示一个输出比特受到当前输入比特和前 \(K-1\) 个输入比特的影响。
    模2加法器 (Modulo-2 Adders):根据预定的连接方式,将移位寄存器中特定位置的比特进行模2加运算,产生编码输出比特。

    一个 \( (n, k, K) \) 卷积码表示:
    ⚝ \(k\):每次输入的比特数(通常 \(k=1\))。
    ⚝ \(n\):每次输出的编码比特数。
    ⚝ \(K\):约束长度。

    对于一个 \( (n, 1, K) \) 卷积码,编码器有一个输入比特,\(n\) 个输出比特,以及一个长度为 \(K-1\) 的移位寄存器(总共 \(K\) 个存储单元,包括当前输入)。编码器的连接方式可以通过生成多项式 (Generator Polynomials) 或生成序列 (Generator Sequences) 来描述。对于 \( (n, 1, K) \) 码,有 \(n\) 个生成多项式 \(g_1(D), g_2(D), \dots, g_n(D)\),其中 \(D\) 是延迟算子 (Delay Operator),\(D^i\) 表示延迟 \(i\) 个时间单位。生成多项式的系数表示移位寄存器中哪些位置的比特参与了对应输出比特的模2加运算。

    例如,考虑一个 \( (2, 1, 3) \) 卷积码。这意味着 \(k=1\), \(n=2\), \(K=3\)。移位寄存器长度为 \(K-1=2\)。编码器结构如下:

    输入比特 \(u_i\) 进入移位寄存器。移位寄存器有三个位置:当前输入 \(u_i\),前一个输入 \(u_{i-1}\),前两个输入 \(u_{i-2}\)。
    假设生成多项式为:
    \(g_1(D) = 1 + D^2\) (或二进制表示 101)
    \(g_2(D) = 1 + D + D^2\) (或二进制表示 111)

    输出比特 \(v_{i}^{(1)}\) 和 \(v_{i}^{(2)}\) 的计算方式为:
    \(v_{i}^{(1)} = u_i \oplus u_{i-2}\)
    \(v_{i}^{(2)} = u_i \oplus u_{i-1} \oplus u_{i-2}\)
    其中 \(\oplus\) 表示模2加。

    这个编码器可以用下图表示(概念图,非严格电路图):

    1.双击鼠标左键复制此行;2.单击复制所有代码。
                                    
                                        
    1 u_i
    2 |
    3 V
    4 +-----+-----+-----+
    5 | SR0 | SR1 | SR2 | <-- Shift Register (SR0=current input, SR1=u_{i-1}, SR2=u_{i-2})
    6 +-----+-----+-----+
    7 | | |
    8 | | |
    9 | | |
    10 +-----+-----+-----+ <-- Connections for v_i^(1) (1+D^2)
    11 | |
    12 V V
    13 (Mod 2 Adder)
    14 |
    15 V
    16 v_i^(1)
    17
    18 | | |
    19 | | |
    20 | | |
    21 +-----+-----+-----+ <-- Connections for v_i^(2) (1+D+D^2)
    22 | | |
    23 V V V
    24 (Mod 2 Adder)
    25 |
    26 V
    27 v_i^(2)

    当输入比特序列 \(u = (u_0, u_1, u_2, \dots)\) 进入编码器时,输出的编码比特序列 \(v = (v_0^{(1)}v_0^{(2)}, v_1^{(1)}v_1^{(2)}, v_2^{(1)}v_2^{(2)}, \dots)\) 会随时间产生。

    例如,输入序列 \(u = (1, 0, 1, 1, \dots)\),初始移位寄存器状态为全0。

    ① \(i=0\),输入 \(u_0=1\)。SR状态:(1, 0, 0)。
    \(v_0^{(1)} = u_0 \oplus u_{-2} = 1 \oplus 0 = 1\)
    \(v_0^{(2)} = u_0 \oplus u_{-1} \oplus u_{-2} = 1 \oplus 0 \oplus 0 = 1\)
    输出:(1, 1)。SR状态更新为 (0, 1, 0)。

    ② \(i=1\),输入 \(u_1=0\)。SR状态:(0, 1, 0)。
    \(v_1^{(1)} = u_1 \oplus u_{-1} = 0 \oplus 0 = 0\)
    \(v_1^{(2)} = u_1 \oplus u_0 \oplus u_{-1} = 0 \oplus 1 \oplus 0 = 1\)
    输出:(0, 1)。SR状态更新为 (0, 0, 1)。

    ③ \(i=2\),输入 \(u_2=1\)。SR状态:(1, 0, 1)。
    \(v_2^{(1)} = u_2 \oplus u_0 = 1 \oplus 1 = 0\)
    \(v_2^{(2)} = u_2 \oplus u_1 \oplus u_0 = 1 \oplus 0 \oplus 1 = 0\)
    输出:(0, 0)。SR状态更新为 (0, 1, 0)。

    编码过程持续进行,直到所有信息比特被处理。为了使编码器回到全0状态,通常需要在信息序列末尾添加 \(K-1\) 个尾随零 (Tail Bits)。

    8.2 状态图 (State Diagram) 与网格图 (Trellis Diagram)

    描述卷积码编码器行为的有力工具是状态图和网格图。

    8.2.1 状态图 (State Diagram)

    编码器的状态由移位寄存器中的内容决定。对于一个 \( (n, 1, K) \) 码,移位寄存器有 \(K-1\) 个存储单元,每个单元可以是0或1,因此共有 \(2^{K-1}\) 种可能的状态。状态图是一个有向图,节点表示编码器的状态,边表示输入比特引起的从一个状态到另一个状态的转移。每条边上标记了输入比特和对应的输出编码比特。

    对于前面提到的 \( (2, 1, 3) \) 码,\(K-1=2\),共有 \(2^2=4\) 个状态。状态可以表示为移位寄存器后两个单元的内容 \((SR1, SR2)\)。
    状态:
    00 (\(u_{i-1}=0, u_{i-2}=0\))
    01 (\(u_{i-1}=0, u_{i-2}=1\))
    10 (\(u_{i-1}=1, u_{i-2}=0\))
    11 (\(u_{i-1}=1, u_{i-2}=1\))

    转移规则:当前状态 \((s_1, s_2)\),输入 \(u_i\),下一状态为 \((u_i, s_1)\)。输出 \(v_i^{(1)} = u_i \oplus s_2\),\(v_i^{(2)} = u_i \oplus s_1 \oplus s_2\)。

    例如,从状态 00 (\(s_1=0, s_2=0\)):
    ⚝ 输入 \(u_i=0\): 下一状态 \((0, 0)\)。输出 \(v_i^{(1)} = 0 \oplus 0 = 0\),\(v_i^{(2)} = 0 \oplus 0 \oplus 0 = 0\)。边标记:0/00。
    ⚝ 输入 \(u_i=1\): 下一状态 \((1, 0)\)。输出 \(v_i^{(1)} = 1 \oplus 0 = 1\),\(v_i^{(2)} = 1 \oplus 0 \oplus 0 = 1\)。边标记:1/11。

    状态图可以清晰地展示所有可能的状态转移和对应的输出,但对于较长的输入序列,状态图无法直观地表示编码过程随时间展开的情况。

    8.2.2 网格图 (Trellis Diagram)

    网格图是状态图在时间轴上的展开。它是一个二维图,水平轴表示时间(或输入比特索引),垂直轴表示编码器的状态。在每个时间步长 \(i\),图中有 \(2^{K-1}\) 个节点,对应于该时刻编码器可能处于的所有状态。从时间 \(i\) 的状态到时间 \(i+1\) 的状态之间的连线表示一个可能的转移,这条连线上标记了导致该转移的输入比特和对应的输出编码比特。

    网格图的优点在于它直观地展示了所有可能的编码序列路径。每一条从起始状态(通常是全0状态)到结束状态(通常也是全0状态,通过加尾随零实现)的路径都对应一个唯一的输入信息序列和相应的编码输出序列。

    对于 \( (2, 1, 3) \) 码,网格图如下(部分):

    1.双击鼠标左键复制此行;2.单击复制所有代码。
                                    
                                        
    1 时间 i=0 i=1 i=2 i=3
    2 状态
    3 00 (00) ----> 00 (00) ----> 00 (00) ----> ... (输入0/输出00)
    4 \ / \ / \ / \ / \ / \ / X X X
    5 / \ / \ / / \ / \ / / \ / \ / 00 (00) ----> 10 (10) ----> 10 (10) ----> ... (输入1/输出11)
    6 \ / \ / \ / \ / \ / \ / X X X
    7 / \ / \ / / \ / \ / / \ / \ / 10 (10) ----> 01 (01) ----> 01 (01) ----> ... (输入0/输出01)
    8 \ / \ / \ / \ / \ / \ / X X X
    9 / \ / \ / / \ / \ / / \ / \ / 10 (10) ----> 11 (11) ----> 11 (11) ----> ... (输入1/输出10)
    10 ... (其他状态转移类似)

    (注:图示简化,实际网格图包含所有状态之间的合法转移)

    网格图是理解维特比译码算法的基础,因为维特比算法正是在网格图上寻找最优路径。

    8.3 维特比译码算法 (Viterbi Decoding Algorithm)

    维特比算法是一种用于在网格图上寻找最大似然路径的动态规划算法。它由安德鲁·维特比 (Andrew Viterbi) 于1967年提出,最初用于卷积码的译码,后来被广泛应用于其他领域,如隐马尔可夫模型 (Hidden Markov Models)、语音识别、生物信息学等。

    最大似然译码 (Maximum Likelihood Decoding, MLD) 的目标是找到一个编码序列 \(\hat{v}\),使得在接收到序列 \(r\) 时,条件概率 \(P(r | \hat{v})\) 最大。对于无记忆信道 (Memoryless Channel),这等价于最小化接收序列 \(r\) 与所有可能的编码序列 \(v\) 之间的距离。对于二进制对称信道 (Binary Symmetric Channel, BSC),距离通常使用汉明距离 (Hamming Distance);对于加性高斯白噪声 (AWGN) 信道,距离通常使用欧氏距离 (Euclidean Distance) 的平方。

    维特比算法通过在网格图上逐级计算到达每个状态的最短(或最长,取决于度量)路径,并丢弃非最优路径(幸存路径,Survivor Path),从而避免了穷举搜索所有可能的路径。

    算法步骤(以最小化汉明距离为例,适用于BSC):

    初始化 (Initialization)
    在时间 \(i=0\),编码器通常从全0状态开始。将到达状态00...0的路径度量 (Path Metric) 初始化为0,到达其他所有状态的路径度量初始化为无穷大。

    递归 (Recursion)
    对于时间步长 \(i = 1, 2, \dots, L\) (L为编码序列长度):
    对于时间 \(i\) 的每一个状态 \(S_j\),考虑所有可能转移到 \(S_j\) 的时间 \(i-1\) 的状态 \(S_k\)。
    对于从 \(S_k\) 到 \(S_j\) 的每一条转移路径,计算其分支度量 (Branch Metric)。分支度量是接收到的 \(i\) 时刻的编码比特 \(r_i\) 与该路径对应的理论编码比特 \(v_i\) 之间的距离(例如,汉明距离)。
    计算通过 \(S_k \to S_j\) 这条路径到达 \(S_j\) 的总路径度量:\(PM(S_j, i) = PM(S_k, i-1) + BM(S_k \to S_j)\)。
    对于到达状态 \(S_j\) 的所有可能路径,选择具有最小总路径度量的那条路径作为到达 \(S_j\) 的幸存路径。记录这条幸存路径及其对应的路径度量。如果有多条路径具有相同的最小度量,随机选择一条。

    终止 (Termination)
    如果使用了尾随零,编码器最终会回到全0状态。在处理完所有编码比特后,到达最终全0状态的幸存路径即为最大似然路径。
    如果未使用尾随零,可以选择到达最后一时刻具有最小路径度量的状态,并将其幸存路径作为最优路径。

    回溯 (Traceback)
    从最终状态沿着幸存路径记录的指针回溯到起始状态。回溯过程中记录的输入比特序列即为译码输出。

    维特比算法的复杂度
    时间复杂度:与网格图的节点数和边数成正比。对于 \( (n, 1, K) \) 码,每个时间步长有 \(2^{K-1}\) 个状态,每个状态有两条输入边。总复杂度约为 \(O(L \cdot 2^{K-1})\),其中 \(L\) 是编码序列长度。
    空间复杂度:需要存储每个状态的幸存路径和路径度量。空间复杂度约为 \(O(L \cdot 2^{K-1})\) 或 \(O(K \cdot 2^{K-1})\) (如果只存储回溯所需的有限深度)。

    维特比算法的性能接近最大似然界,但其复杂度随着约束长度 \(K\) 的增加呈指数增长,这限制了它在硬件实现中的应用。对于较大的 \(K\),需要采用其他译码算法。

    8.4 序列译码 (Sequential Decoding) 初步

    当卷积码的约束长度 \(K\) 较大时,维特比算法的复杂度变得难以承受。序列译码是一类次优的译码算法,其复杂度与 \(K\) 的增长呈多项式关系,而不是指数关系。序列译码的核心思想是在码树 (Code Tree) 或网格图上进行启发式搜索,而不是像维特比算法那样计算并存储所有状态的幸存路径。

    码树是网格图的另一种表示形式,它展开了所有可能的编码路径,但没有合并相同状态的节点。对于一个 \( (n, 1, K) \) 码,码树的深度对应于输入比特的数量,每一层有两个分支(对应输入0或1),总共有 \(2^L\) 条路径对应于长度为 \(L\) 的输入序列。

    序列译码算法(如 Fano 算法或 Stack 算法)通过计算路径度量(通常使用 Fano 度量,它结合了信道概率和码率信息)来评估码树上的路径。算法会沿着看起来最有希望(度量较高)的路径前进,如果路径度量下降过多,则回溯并尝试其他分支。

    序列译码的优点是平均计算量远小于维特比算法,尤其是在信道噪声较低时。然而,其计算量是随机变化的,最坏情况下可能非常大,并且可能存在译码延迟和路径搜索失败的风险。

    序列译码在早期深空通信等对译码复杂度要求不那么苛刻但需要较强纠错能力的场景中得到应用。随着计算能力的提升和现代迭代译码算法(如Turbo码和LDPC码)的出现,序列译码的应用相对减少,但其启发式搜索的思想对理解其他搜索算法仍有价值。

    本章我们学习了卷积码的基本概念、编码器结构、状态图和网格图表示,以及最重要的维特比译码算法。卷积码及其维特比译码是信道编码领域的经典成果,为后续更强大的编码技术奠定了基础。在下一章中,我们将探索现代信道编码技术,如Turbo码和LDPC码,它们通过迭代译码的方式逼近香农极限。

    9. chapter 9: 现代信道编码 (Modern Channel Coding)

    在前面的章节中,我们探讨了信息论的基本概念、信源编码以及传统的信道编码方法,如线性分组码和卷积码。这些传统方法在通信系统中发挥了重要作用,但随着通信技术对更高传输速率和更低误码率的需求不断增长,它们逐渐显露出性能上的局限性,尤其是在逼近香农极限(Shannon Limit)方面。香农信道编码定理告诉我们,存在一种编码方式,可以在信道容量以下以任意低的误码率进行可靠通信,但定理本身并未给出构造这种“理想”编码的具体方法。

    现代信道编码技术,如Turbo码和低密度奇偶校验码(LDPC码),正是为了逼近香农极限而诞生的。它们通常采用复杂的编码结构和强大的迭代译码算法,能够在较低的信噪比(SNR)下实现接近理论极限的性能。本章将深入探讨这些现代编码技术的原理、结构和译码方法,并比较它们的性能与应用。

    9.1 迭代译码 (Iterative Decoding) 的思想

    迭代译码是现代信道编码的核心思想之一。它不同于传统的硬判决译码或基于网格图(Trellis Diagram)的维特比译码(Viterbi Decoding),后者通常一次性完成译码过程。迭代译码的核心在于通过多次迭代,在编码器的不同组成部分(或不同的码字约束)之间交换“软信息”(Soft Information),逐步提高译码的可靠性。

    软信息通常表示为对某个比特是0还是1的概率或对数似然比(Log-Likelihood Ratio, LLR)。在迭代译码过程中,译码器的一部分基于接收到的信号和来自其他部分的先验信息,计算出关于每个比特的外部信息(Extrinsic Information),然后将这些外部信息传递给其他部分作为新的先验信息。这个过程反复进行,直到满足某个停止准则(例如,译码结果不再改变,或者达到最大迭代次数)。

    迭代译码的优势在于:
    ⚝ 能够利用软信息,从而获得更好的译码性能。
    ⚝ 可以应用于由简单分量码(Component Codes)通过某种方式组合而成的复杂编码结构。
    ⚝ 译码复杂度通常随着迭代次数线性增长,而不是像某些最优译码算法那样呈指数增长。

    迭代译码的思想为Turbo码和LDPC码的成功奠定了基础。

    9.2 Turbo码 (Turbo Codes)

    Turbo码是第一个被证明能够逼近香农极限的实用编码方案,由法国电信公司的Berrou、Glavieux和Thitimajshima于1993年提出。它的名字来源于其译码器中反馈环路的结构,类似于涡轮增压器(Turbocharger)。

    9.2.1 并行级联卷积码 (Parallel Concatenated Convolutional Codes)

    典型的Turbo编码器由两个(或更多)并行级联的递归系统卷积码(Recursive Systematic Convolutional, RSC)组成,中间通过一个交织器(Interleaver)连接。

    一个基本的Turbo编码器结构如下:
    ① 输入信息比特序列 \( \mathbf{u} \)。
    ② 第一个RSC编码器对 \( \mathbf{u} \) 进行编码,输出系统比特 \( \mathbf{u} \) 和第一个奇偶校验比特序列 \( \mathbf{p}_1 \)。
    ③ 交织器对 \( \mathbf{u} \) 进行置换,得到交织后的序列 \( \mathbf{u}' \)。
    ④ 第二个RSC编码器对 \( \mathbf{u}' \) 进行编码,输出系统比特 \( \mathbf{u}' \) 和第二个奇偶校验比特序列 \( \mathbf{p}_2 \)。注意,由于RSC码是系统的, \( \mathbf{u}' \) 实际上是 \( \mathbf{u} \) 的置换,因此通常只传输一次系统比特。
    ⑤ 最终的Turbo码字由系统比特 \( \mathbf{u} \)(或其置换)和两个奇偶校验比特序列 \( \mathbf{p}_1 \) 和 \( \mathbf{p}_2 \) 组成。为了提高码率,通常会对奇偶校验比特进行打孔(Puncturing)。

    这种并行级联结构和交织器的使用是Turbo码的关键。交织器使得两个分量码对输入序列的不同排列进行编码,从而产生具有不同错误模式的奇偶校验比特。这有助于在译码时分散错误,提高纠错能力。

    9.2.2 迭代译码原理 (Principle of Iterative Decoding)

    Turbo码的译码器采用迭代译码算法,通常是基于软输入软输出(Soft-Input Soft-Output, SISO)模块的算法,如BCJR算法(也称为最大后验概率,MAP算法)或其简化版本(如SOVA算法)。

    译码过程如下:
    ① 接收端收到带有噪声的信号。
    ② 信号被解调,产生关于每个接收符号的软信息(例如,LLR)。
    ③ 译码器包含两个(或更多)与编码器结构对应的SISO模块,以及一个交织器和解交织器(Deinterleaver)。
    ④ 第一个SISO模块(对应于第一个RSC码)接收来自信道的关于系统比特和第一个奇偶校验比特的软信息,以及来自第二个SISO模块的关于系统比特的先验信息(初始时为零)。它计算出关于系统比特的外部信息,并将其通过交织器传递给第二个SISO模块。
    ⑤ 第二个SISO模块(对应于第二个RSC码)接收来自信道的关于交织后的系统比特和第二个奇偶校验比特的软信息,以及来自第一个SISO模块的关于交织后系统比特的先验信息。它计算出关于交织后系统比特的外部信息,并通过解交织器传递回第一个SISO模块作为新的先验信息。
    ⑥ 这个过程反复迭代。在每次迭代中,SISO模块利用接收到的信道信息和来自另一个模块的先验信息,生成更精确的关于系统比特的外部信息。
    ⑦ 经过一定次数的迭代后,译码器根据最终的软信息(通常是先验信息加上外部信息)对每个比特进行硬判决,输出译码结果。

    迭代译码的关键在于模块之间交换的外部信息。外部信息是某个模块基于其接收到的信息和先验信息,对某个比特的额外了解,且不包含该比特本身的信道信息或先验信息。这种信息交换使得两个分量译码器能够相互“学习”和修正,共同逼近最优译码结果。

    Turbo码在低信噪比下表现出色,其性能曲线在接近香农极限处呈现“瀑布区”(Waterfall Region),误码率急剧下降。然而,Turbo码的译码复杂度相对较高,且存在“差错平台”(Error Floor)现象,即在较高信噪比下误码率下降变缓,无法无限接近零。

    9.3 低密度奇偶校验码 (Low-Density Parity-Check, LDPC) 码

    LDPC码是一种线性分组码,由Robert Gallager于1962年在其博士论文中提出,但由于当时计算能力的限制,并未引起广泛关注。直到1990年代后期,随着迭代译码和图论方法的兴起,LDPC码才被重新发现并证明其性能可以与Turbo码媲美,甚至在某些方面更优。

    LDPC码的名称来源于其校验矩阵(Parity-Check Matrix) \( \mathbf{H} \) 是一个稀疏矩阵,即矩阵中非零元素的数量远少于零元素的数量。

    9.3.1 LDPC码的图表示 (Graph Representation of LDPC Codes)

    LDPC码的稀疏校验矩阵可以用二分图(Bipartite Graph)来表示,称为Tanner图(Tanner Graph)。Tanner图包含两种类型的节点:
    ⚝ 变量节点(Variable Nodes):对应于码字中的每个比特。
    ⚝ 校验节点(Check Nodes):对应于校验矩阵中的每一行,即每一个校验方程。

    变量节点和校验节点之间的连线表示校验矩阵中对应位置的元素是否为非零。如果校验矩阵 \( H_{ij} \neq 0 \),则在变量节点 \( v_j \) 和校验节点 \( c_i \) 之间存在一条连线。对于二进制LDPC码, \( H_{ij} = 1 \) 表示变量节点 \( v_j \) 参与校验方程 \( c_i \)。

    Tanner图的稀疏性意味着每个变量节点只连接到少数几个校验节点,每个校验节点也只连接到少数几个变量节点。这种稀疏连接结构是LDPC码能够进行高效迭代译码的关键。

    LDPC码可以分为正则(Regular)LDPC码和非正则(Irregular)LDPC码。正则LDPC码的Tanner图中,所有变量节点具有相同的度(连接的校验节点数量),所有校验节点也具有相同的度。非正则LDPC码则允许节点具有不同的度分布。研究表明,精心设计的非正则LDPC码通常比正则LDPC码具有更好的性能。

    9.3.2 消息传递译码算法 (Message Passing Decoding Algorithms)

    LDPC码的译码通常采用基于Tanner图的消息传递算法(Message Passing Algorithm),也称为置信传播(Belief Propagation, BP)算法或和积算法(Sum-Product Algorithm, SPA)。这是一种典型的迭代译码算法。

    译码过程在Tanner图上进行,节点之间传递软信息(通常是LLR)。消息传递算法主要包含两个阶段,在每次迭代中重复进行:

    变量节点到校验节点的消息更新:每个变量节点 \( v_j \) 向其连接的每个校验节点 \( c_i \) 发送一个消息。这个消息表示变量节点 \( v_j \) 基于其接收到的信道信息以及从 其他 校验节点接收到的信息,对自身取值的置信度。具体来说,变量节点 \( v_j \) 发送给校验节点 \( c_i \) 的消息 \( m_{v_j \to c_i} \) 是其信道信息 \( L_{ch}(v_j) \) 加上从所有 其他 与 \( v_j \) 相连的校验节点 \( c_{k \neq i} \) 接收到的消息之和。

    校验节点到变量节点的消息更新:每个校验节点 \( c_i \) 向其连接的每个变量节点 \( v_j \) 发送一个消息。这个消息表示校验节点 \( c_i \) 基于其校验方程以及从所有 其他 与 \( c_i \) 相连的变量节点接收到的信息,对变量节点 \( v_j \) 取值应满足校验方程的置信度。对于二进制LDPC码,校验节点 \( c_i \) 发送给变量节点 \( v_j \) 的消息 \( m_{c_i \to v_j} \) 的计算涉及到与其相连的所有 其他 变量节点 \( v_{k \neq j} \) 发送来的消息的组合,通常使用一种称为“box-plus”或“check-node update”的运算,该运算保证了校验方程的奇偶性约束。

    这些消息在变量节点和校验节点之间来回传递,不断更新对每个比特的后验概率(或LLR)。经过多次迭代后,每个变量节点会计算一个最终的后验LLR,然后根据其符号进行硬判决。

    消息传递算法的性能很大程度上取决于Tanner图的结构,特别是图中环(Cycles)的存在。短环会降低算法的性能,因为消息会在短环中快速循环,导致信息的相关性增加,违反了BP算法假设消息是独立的条件。因此,好的LDPC码设计通常会避免短环。

    LDPC码具有接近香农极限的优异性能,且在硬件实现上比Turbo码更具优势,特别是在高速通信系统中。它们在许多现代通信标准中得到了广泛应用,如Wi-Fi (802.11n/ac/ax)、4G (LTE) 和 5G。

    9.4 现代编码的性能比较与应用 (Performance Comparison and Applications of Modern Codes)

    Turbo码和LDPC码是现代通信系统中最重要的两种信道编码技术。它们都通过迭代译码逼近香农极限,但在性能、复杂度和应用场景上存在一些差异。

    性能比较:
    逼近香农极限: 在较低的误码率区域(例如 \( 10^{-5} \) 或更低),精心设计的LDPC码通常比Turbo码更接近香农极限,并且没有明显的差错平台。Turbo码在较低信噪比区域的“瀑布区”性能优异,但在高信噪比下存在差错平台。
    差错平台: Turbo码存在差错平台,这是由于其编码结构中的短环(由交织器引入)和分量码的最小距离特性引起的。LDPC码通过避免短环设计可以有效降低或消除差错平台。
    译码复杂度: 在相同性能下,LDPC码的译码算法(如SPA)通常比Turbo码的译码算法(如MAP)具有更低的计算复杂度,并且更容易进行并行实现,这使得LDPC码更适合高速硬件实现。

    应用:
    Turbo码: 由于其优异的低信噪比性能,Turbo码在早期的一些通信标准中得到了应用,例如3G (UMTS) 和卫星通信。
    LDPC码: 凭借其接近香农极限的性能、无差错平台特性以及更适合硬件实现的特点,LDPC码在许多最新的通信标准中成为首选,包括:
    ⚝ 无线局域网 (WLAN): IEEE 802.11n/ac/ax (Wi-Fi 4/5/6)
    ⚝ 蜂窝移动通信: 4G (LTE) 的某些模式,5G (NR) 的数据信道
    ⚝ 卫星通信: DVB-S2/S2X
    ⚝ 有线通信: DOCSIS 3.1 (有线电视网络)
    ⚝ 数据存储: 固态硬盘 (SSD) 的错误纠正

    总的来说,现代信道编码技术极大地提升了通信系统的可靠性和效率。它们的设计和分析依赖于信息论、概率论、图论和算法等多个领域的知识。随着通信系统向更高频率、更大带宽和更复杂场景发展,对编码技术的要求也越来越高,现代编码的研究和应用仍是信息论和通信领域的重要方向。

    10. chapter 10: 有损信源编码与率失真理论 (Lossy Source Coding and Rate-Distortion Theory)

    欢迎来到本书的第10章!在前几章中,我们深入探讨了信息论的基础概念,包括熵、互信息,以及无损信源编码(数据压缩)和信道编码(差错控制)的基本原理和技术。我们了解到,对于离散无记忆信源,其可压缩的极限由熵决定;对于离散无记忆信道,其可靠传输的极限由信道容量决定。这些理论构成了信息论的基石。

    然而,在许多实际应用中,特别是处理图像、音频、视频等连续或高维数据时,无损压缩往往无法达到我们期望的压缩比。例如,一张高分辨率的图片可能包含数百万甚至数千万像素,即使进行无损压缩,文件大小仍然可能非常大,不便于存储和传输。这时,我们就需要考虑有损压缩 (Lossy Compression)

    有损压缩允许在压缩过程中丢失一部分信息,但这种丢失是可控的,并且通常是人眼或人耳难以察觉的。通过牺牲一定的保真度(fidelity),我们可以获得更高的压缩比。本章将聚焦于有损信源编码,并引入信息论中一个同样深刻且重要的理论——率失真理论 (Rate-Distortion Theory),它为有损压缩设定了理论极限。

    我们将从有损压缩的基本原理出发,讨论如何衡量信息丢失带来的失真,然后引出率失真函数的概念,理解它如何刻画可达到的最低传输速率与允许的最大失真之间的关系。最后,我们将介绍一些基本的有损编码技术,如量化和变换编码。

    本章的学习将帮助大家理解:
    ⚝ 有损压缩与无损压缩的本质区别。
    ⚝ 如何量化信息丢失带来的“失真”。
    ⚝ 率失真理论如何为有损压缩设定性能界限。
    ⚝ 一些基本的有损编码技术的工作原理。

    准备好了吗?让我们一起探索有损信源编码的奇妙世界!

    10.1 有损压缩的原理 (Principles of Lossy Compression)

    有损压缩的核心思想是,并非信源产生的所有信息都对最终用户同等重要。通过识别并去除那些对感知影响较小或冗余的信息,可以在允许一定失真的前提下显著降低表示数据的比特率。

    与无损压缩(如霍夫曼编码、算术编码)旨在完全恢复原始数据不同,有损压缩的目标是在给定允许失真水平下,最小化表示数据的比特率;或者在给定比特率下,最小化失真。

    有损压缩通常包含以下几个关键步骤:

    变换 (Transform):将原始数据从一个域转换到另一个域,以便更好地分离重要信息和不重要信息。例如,在图像和音频处理中,常常使用傅里叶变换 (Fourier Transform) 或离散余弦变换 (Discrete Cosine Transform, DCT) 将数据从时域或空域转换到频域。在频域中,能量通常集中在低频分量,而高频分量往往对应细节或噪声,对感知影响较小。
    量化 (Quantization):这是有损压缩中最关键的一步。量化是将连续或大范围离散的数值映射到有限个离散值的过程。通过减少表示每个样本所需的比特数,量化引入了不可逆的失真。例如,将一个浮点数四舍五入到最接近的整数,或者将一个像素的24位颜色值减少到8位。
    编码 (Encoding):对量化后的数据进行无损编码,进一步去除数据中的统计冗余。常用的无损编码方法包括霍夫曼编码、算术编码等。

    有损压缩的特点:

    不可逆性 (Irreversibility):解压缩后的数据与原始数据不完全相同,存在失真。
    高压缩比 (High Compression Ratio):相对于无损压缩,通常能达到更高的压缩比。
    感知优化 (Perceptual Optimization):设计时常常考虑人类的感知特性(如人眼对高频信息的敏感度低于低频信息,人耳对某些频率的声音更敏感),以便将失真引入到感知不敏感的部分。

    有损压缩的成功应用遍布现代通信和多媒体领域,例如:
    ⚝ 图像压缩:JPEG
    ⚝ 音频压缩:MP3, AAC
    ⚝ 视频压缩:MPEG系列 (MPEG-1, MPEG-2, MPEG-4, H.264, HEVC)

    理解有损压缩的原理,特别是量化引入失真的机制,是理解率失真理论的基础。

    10.2 失真度量 (Distortion Measures)

    在有损压缩中,我们需要一种方法来量化原始数据 \(X\) 与其压缩-解压缩后的近似数据 \(\hat{X}\) 之间的差异,即失真 (Distortion)。选择合适的失真度量对于设计有效的有损编码方案至关重要。失真度量通常是一个非负函数 \(d(x, \hat{x})\),表示单个样本 \(x\) 与其近似值 \(\hat{x}\) 之间的失真。对于整个信源序列或块,总失真可以是单个样本失真的平均值。

    常用的失真度量包括:

    平方误差 (Squared Error)
    这是最常用的失真度量之一,特别是在理论分析中。对于单个样本,失真定义为 \(d(x, \hat{x}) = (x - \hat{x})^2\)。对于一个序列或向量 \(x = (x_1, \dots, x_n)\) 和 \(\hat{x} = (\hat{x}_1, \dots, \hat{x}_n)\),总失真通常是平均平方误差 (Mean Squared Error, MSE):
    \[ D = \frac{1}{n} \sum_{i=1}^n (x_i - \hat{x}_i)^2 \]
    或者对于随机变量,是期望平方误差:
    \[ D = E[(X - \hat{X})^2] \]
    平方误差在数学上易于处理,并且与高斯信源和平方失真度量下的率失真函数有紧密联系。然而,平方误差并不总是与人类感知到的失真完全一致。

    绝对误差 (Absolute Error)
    对于单个样本,失真定义为 \(d(x, \hat{x}) = |x - \hat{x}|\)。对于序列或向量,是平均绝对误差 (Mean Absolute Error, MAE):
    \[ D = \frac{1}{n} \sum_{i=1}^n |x_i - \hat{x}_i| \]
    或者期望绝对误差:
    \[ D = E[|X - \hat{X}|] \]
    绝对误差对离群值 (outliers) 不如平方误差敏感。

    汉明失真 (Hamming Distortion)
    主要用于离散信源,特别是二进制信源。对于二进制序列 \(x = (x_1, \dots, x_n)\) 和 \(\hat{x} = (\hat{x}_1, \dots, \hat{x}_n)\),汉明失真定义为两个序列中不同位置的数量,即汉明距离 (Hamming Distance):
    \[ d(x, \hat{x}) = \sum_{i=1}^n I(x_i \neq \hat{x}_i) \]
    其中 \(I(\cdot)\) 是指示函数 (indicator function)。平均汉明失真就是比特差错率 (Bit Error Rate, BER)。
    \[ D = \frac{1}{n} \sum_{i=1}^n I(x_i \neq \hat{x}_i) \]
    或者期望汉明失真:
    \[ D = P(X \neq \hat{X}) \]
    汉明失真适用于衡量符号错误的概率。

    感知失真度量 (Perceptual Distortion Measures)
    对于图像、音频、视频等媒体数据,基于平方误差或绝对误差的度量往往不能很好地反映人类主观感受到的质量。因此,发展了许多考虑人类视觉系统 (Human Visual System, HVS) 或人类听觉系统 (Human Auditory System, HAS) 特性的感知失真度量。例如:
    峰值信噪比 (Peak Signal-to-Noise Ratio, PSNR):基于MSE计算,但以分贝 (dB) 为单位表示,常用于图像和视频质量评估。PSNR越高表示失真越小。
    \[ \text{PSNR} = 10 \log_{10} \left( \frac{\text{MAX}^2}{\text{MSE}} \right) \]
    其中 MAX 是信号的最大可能取值(例如,对于8位灰度图像,MAX=255)。
    结构相似性指数 (Structural Similarity Index Measure, SSIM):考虑了图像的亮度、对比度和结构信息,旨在更好地反映人眼对图像质量的感知。

    在率失真理论中,我们通常假设失真度量 \(d(x, \hat{x})\) 是给定的,并且满足一些基本性质(如非负性,当 \(x=\hat{x}\) 时 \(d(x, \hat{x})=0\))。选择合适的失真度量是连接理论与实际应用的重要桥梁。

    10.3 率失真函数 (Rate-Distortion Function)

    率失真理论的核心概念是率失真函数 (Rate-Distortion Function),记为 \(R(D)\)。它定义了对于一个给定的信源和给定的失真度量,在允许最大平均失真为 \(D\) 的条件下,表示该信源所需的最小平均比特率 (minimum average bit rate)

    形式上,对于一个信源 \(X \sim p(x)\) 和一个失真度量 \(d(x, \hat{x})\),率失真函数 \(R(D)\) 定义为:
    \[ R(D) = \min_{p(\hat{x}|x): E[d(X, \hat{X})] \le D} I(X; \hat{X}) \]
    其中:
    ⚝ \(I(X; \hat{X})\) 是信源 \(X\) 和其近似 \(\hat{X}\) 之间的互信息 (Mutual Information)。互信息 \(I(X; \hat{X})\) 可以理解为通过观察 \(\hat{X}\) 获得的关于 \(X\) 的信息量,它衡量了 \(\hat{X}\) 对 \(X\) 的描述程度。
    ⚝ 最小化是在所有满足平均失真约束 \(E[d(X, \hat{X})] \le D\) 的条件概率分布 \(p(\hat{x}|x)\) 上进行的。这里的 \(p(\hat{x}|x)\) 可以看作是一个“虚拟信道”,它描述了如何从原始信源符号 \(x\) 产生其近似符号 \(\hat{x}\)。这个虚拟信道的设计目标是在满足失真要求的前提下,使得 \(I(X; \hat{X})\) 最小。

    为什么是互信息?

    根据信息论,互信息 \(I(X; \hat{X}) = H(X) - H(X|\hat{X})\)。
    ⚝ \(H(X)\) 是信源的熵,表示信源本身的不确定性。
    ⚝ \(H(X|\hat{X})\) 是给定 \(\hat{X}\) 后 \(X\) 的条件熵,表示在知道近似值 \(\hat{X}\) 后,关于 \(X\) 剩余的不确定性。这部分不确定性正是由于有损压缩引入的失真所导致的。
    因此,\(I(X; \hat{X})\) 表示通过 \(\hat{X}\) 消除了多少关于 \(X\) 的不确定性。在有损压缩中,我们用 \(\hat{X}\) 来表示 \(X\),所需的比特率至少要能够传输 \(\hat{X}\) 所包含的关于 \(X\) 的信息量。率失真函数寻找的是在允许最大失真 \(D\) 的前提下,表示 \(X\) 所需的最少信息量,这对应于最小化 \(I(X; \hat{X})\)。

    率失真函数的性质:

    ① \(R(D)\) 是一个非负、单调递减的凸函数 (convex function)。
    ⚝ 非负性:比特率不可能为负。
    ⚝ 单调递减:允许的失真 \(D\) 越大,所需的最小比特率 \(R(D)\) 越小。
    ⚝ 凸性:这保证了可以通过凸优化技术来求解 \(R(D)\)。
    ② \(R(0)\) 等于信源的熵 \(H(X)\)(对于离散信源)或微分熵的极限(对于连续信源)。这意味着要实现零失真(无损压缩),所需的最小比特率等于信源的熵,这与无损信源编码定理一致。
    ③ 当 \(D\) 达到某个最大允许失真 \(D_{max}\) 时,\(R(D_{max}) = 0\)。这意味着当允许的失真足够大时,我们甚至不需要传输任何信息(例如,总是输出一个固定的值),就可以满足失真要求。\(D_{max}\) 通常是信源方差或某个与信源分布相关的量。

    计算率失真函数:

    计算率失真函数通常是一个复杂的优化问题。对于一些简单的信源和失真度量,可以得到闭合形式的解。

    二进制信源 (Binary Source) 与汉明失真 (Hamming Distortion)
    考虑一个伯努利信源 \(X \sim \text{Bernoulli}(p)\),即 \(P(X=1)=p, P(X=0)=1-p\)。失真度量为汉明失真 \(d(x, \hat{x}) = I(x \neq \hat{x})\)。允许的最大平均失真为 \(D\),其中 \(0 \le D \le \min(p, 1-p)\)。
    其率失真函数为:
    \[ R(D) = H(p) - H(D) \]
    其中 \(H(p) = -p \log_2 p - (1-p) \log_2 (1-p)\) 是二元熵函数 (binary entropy function)。
    这个公式表明,要将一个熵为 \(H(p)\) 的二元信源压缩到平均失真不超过 \(D\),至少需要 \(H(p) - H(D)\) 比特/符号。当 \(D=0\) 时,\(R(0) = H(p) - H(0) = H(p)\),回到无损压缩的结论。当 \(D = \min(p, 1-p)\) 时,\(R(D) = H(p) - H(\min(p, 1-p))\)。如果 \(p=0.5\),\(H(0.5)=1\),\(D_{max}=0.5\),\(H(0.5)=1\),则 \(R(0.5) = 1-1=0\)。

    高斯信源 (Gaussian Source) 与平方误差 (Squared Error)
    考虑一个零均值、方差为 \(\sigma^2\) 的高斯信源 \(X \sim N(0, \sigma^2)\)。失真度量为平方误差 \(d(x, \hat{x}) = (x - \hat{x})^2\)。允许的最大平均失真为 \(D\),其中 \(0 \le D \le \sigma^2\)。
    其率失真函数为:
    \[ R(D) = \frac{1}{2} \log_2 \left( \frac{\sigma^2}{D} \right) \quad \text{for } 0 \le D \le \sigma^2 \]
    当 \(D > \sigma^2\) 时,\(R(D) = 0\)。
    这个公式非常重要,它表明对于高斯信源,在允许失真 \(D\) 的情况下,所需的最小比特率与 \(\log_2(\sigma^2/D)\) 成正比。这与我们后面将看到的AWGN信道容量公式有惊人的相似性,体现了信息论的对偶性 (duality)。

    率失真函数 \(R(D)\) 给出了有损压缩的理论极限。任何实际的有损编码方案,其性能(比特率 \(R\) 和失真 \(D\))只能达到 \(R \ge R(D)\)。好的有损编码方案应该尽可能接近 \(R(D)\) 曲线。

    10.4 率失真理论的意义 (Significance of Rate-Distortion Theory)

    率失真理论在信息论和通信系统中具有极其重要的意义:

    设定理论极限 (Setting Theoretical Limits)
    正如信源编码定理为无损压缩设定了熵的极限,信道编码定理为可靠传输设定了信道容量的极限一样,率失真理论为有损信源编码设定了在给定失真下的最小可达比特率极限 \(R(D)\)。它告诉我们,无论编码方案多么巧妙,都不可能在平均失真不超过 \(D\) 的情况下,将信源的平均表示比特率降低到 \(R(D)\) 以下。

    指导编码方案设计 (Guiding Code Design)
    率失真函数 \(R(D)\) 的推导过程(虽然通常很复杂)以及其性质,为设计高性能的有损编码器提供了理论指导。例如,它揭示了为了达到率失真界限,编码器应该如何处理信源的统计特性和失真度量。理想的有损编码器应该使得编码后的表示 \(\hat{X}\) 尽可能多地保留关于 \(X\) 的信息(即最大化 \(I(X; \hat{X})\)),同时满足失真约束。

    评估编码方案性能 (Evaluating Code Performance)
    率失真函数提供了一个基准,用于评估实际有损编码方案的效率。一个编码方案的性能通常用其率失真曲线(Rate-Distortion Curve,即在不同比特率下达到的失真水平)来表示。将实际编码方案的率失真曲线与理论的 \(R(D)\) 曲线进行比较,可以了解该方案距离理论最优还有多大差距。性能越接近 \(R(D)\) 曲线的方案越好。

    揭示信息压缩与失真之间的基本权衡 (Revealing the Fundamental Trade-off)
    率失真函数 \(R(D)\) 直观地展示了比特率(率)与失真之间的基本权衡关系。要降低比特率(提高压缩比),就必须允许更大的失真;要减小失真(提高保真度),就必须增加比特率。这种权衡是所有有损压缩系统的核心。

    连接信源编码与信道编码 (Connecting Source Coding and Channel Coding)
    香农的联合信源-信道编码定理 (Joint Source-Channel Coding Theorem) 表明,如果信源的率失真函数在失真 \(D\) 处的值 \(R(D)\) 小于信道的容量 \(C\),即 \(R(D) \le C\),那么原则上存在一种联合编码方案,可以在该信道上以任意低的错误概率传输信源,并使得平均失真不超过 \(D\)。反之,如果 \(R(D) > C\),则不可能在平均失真不超过 \(D\) 的情况下实现可靠传输。这个定理强调了信源编码(压缩)和信道编码(抗噪)之间的关系,并指出只要信道容量大于信源的“有效信息率”(由 \(R(D)\) 衡量),就可以实现可靠传输。

    率失真理论是信息论中一个深刻且优美的分支,它为理解和设计高效的有损数据压缩系统提供了坚实的理论基础。尽管计算 \(R(D)\) 本身可能很困难,但其存在性和性质对于指导实践具有不可估量的价值。

    10.5 量化 (Quantization)

    量化 (Quantization) 是有损压缩中最基本也是最核心的操作之一。它将连续或取值范围很大的离散信号的幅度映射到有限个离散的量化电平 (quantization levels)。这个过程是不可逆的,因为它将多个不同的输入值映射到同一个输出值,从而引入了失真,即量化噪声 (Quantization Noise)

    量化的分类:

    标量量化 (Scalar Quantization):一次处理一个样本值。
    矢量量化 (Vector Quantization, VQ):一次处理多个样本组成的向量。VQ 通常比标量量化能获得更好的性能,因为它能捕捉到样本之间的相关性,但设计和实现更复杂。

    本节我们主要讨论标量量化。

    标量量化的组成部分:

    一个标量量化器 \(Q\) 可以描述为一个函数,将输入空间 \(\mathcal{X}\)(通常是实数集 \(\mathbb{R}\) 或其子集)映射到有限的输出空间 \(\mathcal{Y} = \{y_1, y_2, \dots, y_N\}\),其中 \(y_i\) 是量化电平。
    \[ Q: \mathcal{X} \to \mathcal{Y} \]
    标量量化器由两个部分定义:
    划分区域 (Partition Regions):将输入空间 \(\mathcal{X}\) 划分为 \(N\) 个不相交的区域 \(R_1, R_2, \dots, R_N\),使得 \(\cup_{i=1}^N R_i = \mathcal{X}\) 且 \(R_i \cap R_j = \emptyset\) for \(i \neq j\)。对于输入 \(x \in R_i\),量化器输出 \(Q(x) = y_i\)。
    代表点/量化电平 (Representative Points/Quantization Levels):每个区域 \(R_i\) 对应一个输出值 \(y_i \in \mathcal{Y}\)。

    对于一维输入 \(x\),划分区域通常由一组边界点 (boundary points) \(b_0, b_1, \dots, b_N\) 定义,其中 \(b_0 < b_1 < \dots < b_N\)。区域 \(R_i\) 通常是区间 \([b_{i-1}, b_i)\) 或 \((b_{i-1}, b_i]\)。量化电平 \(y_i\) 位于区域 \(R_i\) 内。

    量化器的设计目标:

    在给定输出电平数量 \(N\)(这决定了表示每个量化值所需的比特数,通常为 \(\log_2 N\) 比特/样本)的情况下,设计最优的划分区域和代表点,使得平均失真最小。或者,在给定允许的平均失真下,最小化 \(N\)。

    对于平方误差失真度量 \(d(x, \hat{x}) = (x - \hat{x})^2\),最优量化器的条件由 Lloyd-Max 算法给出:
    最优代表点 (Optimal Representative Points):给定划分区域 \(R_i\),最优的代表点 \(y_i\) 应该是该区域内输入值的条件期望 (conditional expectation):
    \[ y_i = E[X | X \in R_i] = \frac{\int_{R_i} x p(x) dx}{\int_{R_i} p(x) dx} \]
    对于均匀分布或高斯分布等对称分布,且区域对称,\(y_i\) 通常是区域 \(R_i\) 的质心 (centroid)。
    最优划分区域 (Optimal Partition Regions):给定代表点 \(y_i\),最优的划分区域 \(R_i\) 应该包含所有距离 \(y_i\) 比距离其他任何 \(y_j\) 更近的输入值 \(x\)。对于平方误差,这意味着 \(R_i\) 是由 \(y_i\) 定义的 Voronoi 区域:
    \[ R_i = \{x \in \mathcal{X} : d(x, y_i) \le d(x, y_j) \text{ for all } j \neq i\} \]
    对于一维平方误差,边界点 \(b_i\) 应该位于相邻代表点 \(y_i\) 和 \(y_{i+1}\) 的中点:
    \[ b_i = \frac{y_i + y_{i+1}}{2} \]

    Lloyd-Max 算法通过迭代优化划分区域和代表点来寻找局部最优解。

    均匀量化 (Uniform Quantization) 与非均匀量化 (Non-uniform Quantization)

    均匀量化:划分区域的宽度相等(除了边界区域)。实现简单,但对于输入信号分布不均匀(如幅度集中在零附近)时,效率不高。
    非均匀量化:划分区域的宽度不等。通过在输入信号概率密度较高的区域使用更窄的量化间隔,在概率密度较低的区域使用更宽的量化间隔,可以减小平均失真。对数量化器(如 \(\mu\)-law 和 A-law)是常用的非均匀量化器,用于语音信号编码。

    量化是引入失真的主要环节,其设计直接影响有损压缩的性能。通过优化量化器的参数(划分区域和代表点),可以在给定比特率下最小化失真,或在给定失真下最小化比特率,从而逼近率失真函数。

    10.6 变换编码初步 (Introduction to Transform Coding)

    变换编码 (Transform Coding) 是一种常用的有损压缩技术,特别适用于具有相关性的信源,如图像和音频信号。其基本思想是将原始信号通过一个可逆的线性变换 (linear transform) 转换到一个新的域,在这个新域中,信号的能量或信息更加集中,并且不同分量之间的相关性降低。然后,对变换后的系数进行量化和编码。

    变换编码的基本流程:

    分块 (Blocking):将原始信号(如图像)分割成小的、不重叠的块。这是因为许多变换是定义在有限长度序列上的。
    变换 (Transform):对每个块应用一个线性变换。常用的变换包括:
    ▮▮▮▮⚝ 离散傅里叶变换 (Discrete Fourier Transform, DFT) 及其变种。
    ▮▮▮▮⚝ 离散余弦变换 (Discrete Cosine Transform, DCT):在图像和视频编码中非常流行(如JPEG, MPEG),因为它具有“能量集中”特性,并且对于实数信号是正交变换。
    ▮▮▮▮⚝ 离散小波变换 (Discrete Wavelet Transform, DWT):在图像压缩(如JPEG2000)中也有应用,它能提供多分辨率分析。
    变换的目的是将信号转换到能量更集中的域,使得少量变换系数包含大部分信号信息。
    量化 (Quantization):对变换系数进行量化。这是引入失真的主要步骤。通常采用非均匀量化,对能量较高的系数使用更精细的量化(更多比特),对能量较低或对应高频细节的系数使用更粗糙的量化(更少比特甚至直接置零,称为阈值处理 (thresholding)系数丢弃 (coefficient dropping))。这种基于感知的量化策略利用了人眼或人耳对不同频率分量的敏感度差异。
    扫描与重排 (Scanning and Reordering):将量化后的二维变换系数(如图像块的DCT系数)按照特定顺序(如“Z”字形扫描)排列成一维序列,以便于后续的无损编码。
    无损编码 (Lossless Encoding):对量化并重排后的系数进行无损压缩,去除统计冗余。常用的方法包括行程编码 (Run-Length Encoding, RLE)(用于压缩连续的零值)和熵编码 (Entropy Coding)(如霍夫曼编码或算术编码)。

    变换编码的优点:

    能量集中 (Energy Compaction):通过变换,信号的能量集中在少数几个系数上,便于后续的量化和编码。
    去相关性 (Decorrelation):变换可以降低信号样本之间的相关性,使得对变换系数进行独立量化和编码更加有效。
    感知适应性 (Perceptual Adaptation):可以在变换域中根据人类感知特性进行有选择的量化,将失真引入到感知不敏感的部分。

    变换编码的缺点:

    分块效应 (Blocking Artifacts):由于对信号进行分块处理,块与块之间可能出现不连续,导致图像或视频出现块状伪影。
    计算复杂度 (Computational Complexity):变换本身需要一定的计算量。

    变换编码是现代有损压缩标准(如JPEG, MPEG)的核心技术之一。通过结合合适的变换、量化和无损编码技术,可以在比特率和感知质量之间实现有效的权衡。

    本章我们学习了有损压缩的基本原理、失真度量、率失真理论及其意义,以及量化和变换编码这两种重要的有损编码技术。率失真理论为有损压缩设定了理论极限,而实际的编码技术则不断努力逼近这个极限。在下一章中,我们将把信息论的知识应用于通信系统的具体实例中。

    11. chapter 11: 信息论在通信系统中的应用实例 (Application Examples of Information Theory in Communication Systems)

    欢迎来到本书的第11章!在前几章中,我们系统地学习了信息论的基本概念、信源编码以及信道容量理论。我们理解了信息是如何度量的,数据压缩的极限在哪里,以及在给定信道条件下,可靠通信的最高速率是多少。然而,理论的价值最终体现在其应用中。本章将把信息论的强大工具箱带入实际的通信系统,探讨信息论原理如何在各种通信技术中得到体现和应用,从而帮助我们更深入地理解现代通信系统的设计理念和性能极限。我们将从调制方式、多址接入技术以及无线信道的特性等多个角度,展示信息论的实际指导意义。

    11.1 调制方式的信息论视角 (Information-Theoretic View of Modulation Schemes)

    调制 (Modulation) 是通信系统中将数字信息转换为适合在信道上传输的模拟信号的关键步骤。不同的调制方式,如相移键控 (Phase Shift Keying, PSK)、正交幅度调制 (Quadrature Amplitude Modulation, QAM) 等,本质上是在信号空间中选择不同的信号点来表示不同的比特组合。从信息论的角度看,调制方式的选择直接影响了每个符号 (Symbol) 能够携带的信息量,进而影响了通信系统的传输速率和可靠性。

    考虑一个离散输入、连续输出的信道模型,其中输入是调制符号,输出是经过信道传输并叠加噪声后的信号。对于一个具有 \( M \) 个信号点的调制星座图 (Constellation Diagram),每个符号可以携带 \( \log_2 M \) 比特 (bits) 的信息。例如,二进制相移键控 (Binary Phase Shift Keying, BPSK) 使用2个信号点,每个符号携带 \( \log_2 2 = 1 \) 比特;正交相移键控 (Quadrature Phase Shift Keying, QPSK) 使用4个信号点,每个符号携带 \( \log_2 4 = 2 \) 比特;16-QAM 使用16个信号点,每个符号携带 \( \log_2 16 = 4 \) 比特。

    然而,实际信道中存在噪声,接收端无法完美区分这些信号点。噪声的存在导致接收到的信号与发送的信号之间存在不确定性,这会降低每个符号实际携带的信息量,即互信息 (Mutual Information)。对于一个给定的信噪比 (Signal-to-Noise Ratio, SNR),调制星座点越多(即 \( M \) 越大),虽然每个符号携带的潜在信息量越大,但信号点之间的距离越近,噪声更容易导致误判,从而降低了可靠性。

    信息论中的信道容量 (Channel Capacity) 给出了在给定信道条件下,理论上可以实现的最高可靠传输速率。对于加性高斯白噪声 (Additive White Gaussian Noise, AWGN) 信道,香农-哈特利定理 (Shannon-Hartley Theorem) 告诉我们容量 \( C \) 为:
    \[ C = B \log_2 \left( 1 + \frac{S}{N} \right) \]
    其中 \( B \) 是信道带宽 (Bandwidth),\( S \) 是信号功率 (Signal Power),\( N \) 是噪声功率 (Noise Power),\( S/N \) 即为信噪比。

    调制方式的设计目标就是在保证一定误码率 (Bit Error Rate, BER) 或符号误码率 (Symbol Error Rate, SER) 的前提下,尽可能地提高传输速率,即逼近信道容量。高阶调制(如16-QAM, 64-QAM)可以在相同的带宽下传输更多的信息,但需要更高的信噪比才能达到与低阶调制(如BPSK, QPSK)相同的可靠性水平。这是因为高阶调制的信号点更密集,对噪声更敏感。

    从信息论的视角看,调制方式的选择是速率 (Rate) 和可靠性 (Reliability) 之间的一种权衡。在信道条件好(信噪比高)时,可以选择高阶调制以提高速率;在信道条件差(信噪比低)时,应选择低阶调制以保证可靠性。现代通信系统,如Wi-Fi和蜂窝网络,通常采用自适应调制和编码 (Adaptive Modulation and Coding, AMC) 技术,根据实时的信道质量动态调整调制阶数和编码方案,以最大化吞吐量 (Throughput),同时维持可接受的误码率,这正是信息论原理在实际系统中的灵活应用。AMC的目标就是让系统的传输速率尽可能地接近瞬时信道容量。

    11.2 多址接入技术 (Multiple Access Techniques)

    在共享通信资源的系统中,如蜂窝网络、卫星通信或无线局域网,多个用户需要同时访问同一个信道。多址接入 (Multiple Access) 技术就是解决如何有效地分配和管理这些共享资源,使得多个用户能够同时进行通信的技术。信息论为分析和设计多址接入系统提供了理论框架,特别是关于多用户信道容量的研究。

    多址接入技术可以从不同的维度划分资源,例如:

    11.2.1 FDMA, TDMA, CDMA

    ① 频分多址 (Frequency Division Multiple Access, FDMA)
    FDMA 将总的可用带宽划分为若干个互不重叠的子频带 (Sub-bands),每个用户被分配一个或多个子频带进行通信。不同用户在不同的频率上传输,因此它们之间的干扰主要来自邻频干扰 (Adjacent Channel Interference)。从信息论角度看,FDMA 将一个宽带信道分解为多个窄带子信道,每个用户独享其分配的子信道容量。总的系统容量是所有用户子信道容量之和(忽略干扰)。

    ② 时分多址 (Time Division Multiple Access, TDMA)
    TDMA 将时间划分为一系列时隙 (Time Slots),每个用户被分配特定的时隙来发送或接收数据。不同用户在不同的时间传输,但在相同的频率上。用户轮流使用信道,避免了用户间的直接干扰(理想情况下)。从信息论角度看,TDMA 允许用户在分配的时隙内独享整个带宽的信道容量,但每个用户只能在部分时间内传输。系统的总容量可以看作是所有用户在各自时隙内传输容量的平均。

    ③ 码分多址 (Code Division Multiple Access, CDMA)
    CDMA 允许多个用户在同一时间、同一频率上使用信道。用户通过使用具有良好自相关和互相关特性的伪随机码序列 (Pseudo-random Code Sequences) 来区分彼此的信号。每个用户的数据信号与一个独特的伪随机码序列相乘进行扩频 (Spread Spectrum)。接收端使用相同的码序列对接收到的信号进行解扩 (Despreading),从而提取出期望用户的信号,并将其他用户的信号视为噪声或干扰。从信息论角度看,CDMA 系统中的用户信号是相互干扰的,这是一种多址干扰 (Multiple Access Interference, MAI)。系统的总容量不是简单相加,而是取决于用户数量、功率控制以及码序列的设计。多用户信息论 (Multiuser Information Theory) 中的多址信道 (Multiple Access Channel, MAC) 容量区域 (Capacity Region) 描述了在给定条件下,多个用户可以同时实现的可靠传输速率的集合。CDMA 系统的容量分析比 FDMA 和 TDMA 更复杂,它涉及到如何处理和抑制 MAI,以及如何逼近 MAC 的容量极限。

    11.2.2 OFDMA 与 SC-FDMA

    现代通信系统,如4G (LTE) 和5G,广泛采用了正交频分多址 (Orthogonal Frequency Division Multiple Access, OFDMA) 和单载波频分多址 (Single Carrier Frequency Division Multiple Access, SC-FDMA) 技术。

    ① 正交频分多址 (OFDMA)
    OFDMA 是 OFDM (Orthogonal Frequency Division Multiplexing) 技术在多址接入上的扩展。OFDM 将宽带信道分解为大量窄带正交子载波 (Subcarriers)。OFDMA 将这些子载波分配给不同的用户。用户可以在不同的时间使用不同的子载波集合。这是一种灵活的频域和时域资源分配方式。从信息论角度看,OFDMA 可以根据每个子载波的信道质量(信噪比)动态地将子载波分配给最适合的用户,并采用自适应调制和编码。这使得系统能够更有效地利用频率选择性衰落 (Frequency-Selective Fading) 信道的容量,逼近多载波信道的容量极限。每个子载波可以看作是一个独立的窄带信道,其容量由香农-哈特利定理给出。通过智能的资源分配,OFDMA 系统可以最大化总的系统吞吐量。

    ② 单载波频分多址 (SC-FDMA)
    SC-FDMA 是 LTE 上行链路 (Uplink) 中采用的一种多址技术。它结合了单载波传输的优点(较低的峰均功率比,Peak-to-Average Power Ratio, PAPR)和 OFDMA 的多址接入灵活性。SC-FDMA 在频域上分配资源块 (Resource Blocks),但用户的数据在分配的子载波上进行单载波调制。从信息论角度看,SC-FDMA 在资源分配上与 OFDMA 类似,可以利用频率选择性调度 (Frequency-Selective Scheduling) 来提高系统容量。虽然其单载波特性可能在某些方面略逊于 OFDMA 的多载波优势,但在降低终端设备的功耗方面具有优势。

    总的来说,多址接入技术的设计目标是最大化共享信道的总容量,并公平有效地分配资源。信息论,特别是多用户信息论,提供了分析不同多址方案性能极限的工具,并指导了资源分配策略的设计。

    11.3 无线信道的信息论特性 (Information-Theoretic Properties of Wireless Channels)

    无线信道与有线信道有显著不同,其特性复杂且随时间、空间和频率变化。理解无线信道的信息论特性对于设计高性能的无线通信系统至关重要。

    11.3.1 衰落信道 (Fading Channels)

    无线信号在传播过程中会受到多径效应 (Multipath Effect)、阴影效应 (Shadowing) 和路径损耗 (Path Loss) 等影响,导致接收信号的幅度、相位和时延发生随机变化,这种现象称为衰落 (Fading)。衰落信道是时变的,其信噪比也是随机的。

    对于衰落信道,信道容量不再是一个固定的值,而是一个随机变量。我们可以讨论衰落信道的平均容量 (Average Capacity) 或中断容量 (Outage Capacity)。

    ① 平均容量:指对所有可能的信道状态取平均得到的容量。
    ② 中断容量:指在给定一个允许的中断概率 (Outage Probability) 下,可以实现的最高传输速率。例如,中断概率为 \( \epsilon \) 的中断容量 \( C_\epsilon \) 是指在 \( (1-\epsilon) \) 的时间内,瞬时信道容量大于或等于 \( C_\epsilon \)。

    对于瑞利衰落 (Rayleigh Fading) 信道,如果没有信道状态信息 (Channel State Information, CSI) 在发送端,只有在接收端已知 CSI 的情况下,信道容量才有一个相对简单的表达式。如果发送端和接收端都已知 CSI,则可以通过自适应传输(如调整功率、调制和编码)来显著提高平均容量。

    信息论告诉我们,衰落信道的容量通常低于相同平均信噪比下的 AWGN 信道容量。这是因为衰落引入了额外的不确定性。然而,通过利用衰落信道的特性,例如通过分集 (Diversity) 技术(如时间分集、频率分集、空间分集)来对抗衰落,或者通过自适应技术来跟踪信道变化,可以有效地提高通信系统的性能,逼近衰落信道的容量极限。

    11.3.2 多输入多输出 (MIMO) 系统容量初步

    多输入多输出 (Multiple-Input Multiple-Output, MIMO) 技术是现代无线通信系统中的一项关键技术,它在发送端和接收端都使用多个天线。MIMO 技术可以显著提高系统的容量和可靠性,尤其是在衰落信道中。

    从信息论角度看,一个具有 \( N_t \) 个发送天线和 \( N_r \) 个接收天线的 MIMO 系统可以看作是一个多输入多输出信道。在理想情况下(例如,独立同分布的瑞利衰落,发送端已知信道协方差,接收端已知瞬时信道状态),MIMO 信道的容量可以随着天线数量的增加而线性增长(在信噪比足够高时)。

    对于一个 \( N_t \times N_r \) 的 MIMO 系统,如果信道矩阵为 \( \mathbf{H} \),发送信号协方差矩阵为 \( \mathbf{Q} \),噪声为单位方差的 AWGN,则在发送端已知信道协方差、接收端已知瞬时信道状态的情况下,MIMO 信道的容量为:
    \[ C = \max_{\mathbf{Q} \ge 0, \text{tr}(\mathbf{Q}) \le P} \log_2 \det \left( \mathbf{I}_{N_r} + \frac{1}{\sigma^2} \mathbf{H} \mathbf{Q} \mathbf{H}^H \right) \]
    其中 \( P \) 是总的发送功率,\( \sigma^2 \) 是噪声方差,\( \mathbf{I}_{N_r} \) 是 \( N_r \times N_r \) 的单位矩阵,\( \mathbf{H}^H \) 是 \( \mathbf{H} \) 的共轭转置。最大化容量的 \( \mathbf{Q} \) 可以通过注水算法 (Water-filling Algorithm) 得到。

    这个公式表明,MIMO 信道的容量取决于信道矩阵 \( \mathbf{H} \) 的特性。通过多天线,MIMO 系统创建了多个并行的空间子信道 (Spatial Subchannels),每个子信道的容量可以独立计算。总容量是这些子信道容量之和。在丰富的多径环境下,信道矩阵 \( \mathbf{H} \) 通常具有较高的秩 (Rank),从而可以支持更多的并行数据流,显著提高容量。

    MIMO 技术利用了无线信道的空间维度,通过空间复用 (Spatial Multiplexing) 来提高数据速率,或者通过空间分集来提高可靠性。信息论为 MIMO 系统的容量分析和最优传输策略(如预编码 Precoding)设计提供了坚实的理论基础。现代通信标准,如 Wi-Fi 4/5/6 和 4G/5G,都将 MIMO 作为核心技术,正是信息论指导下的巨大成功。

    本章通过几个典型的通信系统应用实例,展示了信息论在理解系统性能极限、指导系统设计和优化资源分配方面的核心作用。从调制方式的选择到多址接入方案的设计,再到无线信道特性的利用,信息论的原理无处不在,为通信工程师提供了强大的理论支撑和设计思路。

    12. chapter 12: 高级主题与未来展望 (Advanced Topics and Future Perspectives)

    信息论自香农创立以来,不仅深刻地改变了通信系统的设计与分析,更作为一门基础理论,渗透到了计算机科学、统计学、物理学、生物学等众多领域。本书前面章节系统地介绍了信息论在点对点通信系统中的核心概念、理论和编码技术。然而,信息世界远不止简单的点对点通信。现代通信网络日益复杂,涉及多个用户、多个节点之间的信息交互;数据爆炸式增长,机器学习和人工智能成为热点;信息安全和量子计算等前沿领域也与信息论紧密相连。

    本章将带领读者初步探索信息论在这些高级和新兴领域的应用与发展。我们将简要介绍网络信息论的基础概念,探讨信息论在机器学习中的独特视角,审视信息论在信息安全领域的关键作用,并对量子信息论进行初步的展望。这些内容旨在拓宽读者的视野,激发对信息论更广泛应用的兴趣,并为进一步深入研究提供指引。

    12.1 网络信息论基础 (Fundamentals of Network Information Theory)

    传统的香农理论主要关注点对点通信,即一个发送者向一个接收者传输信息。然而,现实世界的通信系统往往涉及多个发送者、多个接收者,以及中间的转发节点,构成复杂的通信网络。网络信息论 (Network Information Theory) 正是研究这类多用户、多节点通信系统信息传输极限的理论。

    网络信息论的核心问题是确定网络的容量区域 (Capacity Region),即所有用户能够同时可靠传输信息的速率向量集合。与点对点信道容量是一个单一数值不同,网络容量通常是一个多维区域,描述了不同用户之间可达速率的权衡关系。

    网络信息论中有几个典型的基本模型:

    ⚝ 多址接入信道 (Multiple Access Channel, MAC):多个发送者向一个接收者发送信息。例如,蜂窝通信的上行链路,多个手机向基站发送数据。
    ⚝ 广播信道 (Broadcast Channel, BC):一个发送者向多个接收者发送信息。例如,电视广播或蜂窝通信的下行链路,基站向多个手机发送数据。
    ⚝ 中继信道 (Relay Channel):一个发送者通过一个或多个中间节点(中继)向接收者发送信息。中继节点可以协助传输,例如放大、转发或编码。
    ⚝ 两跳信道 (Two-Hop Channel):发送者通过一个中继到达接收者,是中继信道的简化版。
    ⚝ 干扰信道 (Interference Channel):多个发送者向多个接收者发送信息,且每个接收者都受到来自非目标发送者的干扰。例如,相邻的Wi-Fi网络之间的干扰。
    ⚝ 网络编码 (Network Coding):在网络节点不仅仅进行简单的转发,而是对接收到的信息进行编码处理后再发送,以提高网络的吞吐量或鲁性。

    对于这些网络模型,确定其容量区域通常比计算点对点信道容量困难得多。许多网络模型的容量区域至今仍是开放问题。网络信息论的研究方法包括:

    ① 外界界限 (Outer Bounds):证明某些速率向量是不可达的,从而确定容量区域的外部边界。常用的方法包括芬斯勒不等式 (Fano's Inequality)、数据处理不等式 (Data Processing Inequality) 等信息论工具。
    ② 内界界限 (Inner Bounds):通过设计具体的编码和解码方案,证明某些速率向量是可达的,从而确定容量区域的内部边界。常用的方案包括时分多址 (TDMA)、频分多址 (FDMA)、码分多址 (CDMA)、叠加编码 (Superposition Coding)、脏纸编码 (Dirty Paper Coding) 等。

    网络信息论是当前信息论研究最活跃的领域之一,其理论成果对现代通信网络的设计,如无线通信、传感器网络、分布式存储等具有重要的指导意义。

    12.2 信息论在机器学习中的应用 (Applications of Information Theory in Machine Learning)

    信息论与机器学习 (Machine Learning) 之间存在着深刻的联系。信息论的概念和工具为理解、设计和分析机器学习算法提供了独特的视角和强大的手段。

    熵 (Entropy) 与不确定性度量:在机器学习中,熵常用于度量随机变量的不确定性。例如,在决策树 (Decision Tree) 算法中,信息增益 (Information Gain)(基于熵或条件熵)被用来选择最佳的划分特征,目标是最大程度地减少划分后的不确定性。
    \[ \text{信息增益}(S, A) = H(S) - H(S|A) \]
    其中 \(H(S)\) 是数据集 \(S\) 的熵,\(H(S|A)\) 是在已知特征 \(A\) 的条件下数据集 \(S\) 的条件熵。

    互信息 (Mutual Information) 与特征选择:互信息度量了两个随机变量之间的相互依赖程度,即一个变量包含的关于另一个变量的信息量。在特征选择 (Feature Selection) 中,互信息可以用来评估特征与目标变量之间的相关性,选择互信息较高的特征作为模型的输入。
    \[ I(X; Y) = H(X) - H(X|Y) = H(Y) - H(Y|X) = H(X) + H(Y) - H(X, Y) \]
    高 \(I(X; Y)\) 表示特征 \(X\) 包含关于目标 \(Y\) 的更多信息。

    KL散度 (KL Divergence) 与概率分布比较:KL散度(Kullback-Leibler Divergence),也称为相对熵 (Relative Entropy),度量了两个概率分布之间的差异。在机器学习中,它常被用作损失函数 (Loss Function),例如在变分自编码器 (Variational Autoencoder, VAE) 和生成对抗网络 (Generative Adversarial Network, GAN) 中,用于衡量模型输出分布与真实数据分布之间的接近程度。
    \[ D_{\text{KL}}(P || Q) = \sum_{x} P(x) \log \frac{P(x)}{Q(x)} \]
    注意KL散度不是一个真正的距离度量,因为它不满足对称性和三角不等式。

    交叉熵 (Cross-Entropy) 与分类任务:交叉熵常被用作分类任务的损失函数,尤其是在使用 Softmax 输出层的神经网络中。最小化交叉熵等价于最大化模型预测概率与真实标签之间的似然。
    \[ H(P, Q) = -\sum_{x} P(x) \log Q(x) \]
    当 \(P\) 是真实分布(通常是one-hot编码),\(Q\) 是模型预测分布时,最小化 \(H(P, Q)\) 促使 \(Q\) 接近 \(P\)。交叉熵与KL散度、熵的关系为 \(H(P, Q) = D_{\text{KL}}(P || Q) + H(P)\)。对于固定的真实分布 \(P\),最小化交叉熵等价于最小化KL散度。

    信息瓶颈原理 (Information Bottleneck Principle):该原理提出了一种学习表示的方法,目标是找到一个压缩的表示 \(Z\),它在压缩输入变量 \(X\) 的同时,最大程度地保留关于目标变量 \(Y\) 的信息。这可以形式化为优化一个目标函数,该函数平衡了 \(I(X; Z)\)(表示压缩程度)和 \(I(Z; Y)\)(表示相关信息量)。

    最小描述长度 (Minimum Description Length, MDL) 原则:MDL原则认为,最好的模型是对数据提供最短编码的模型。这与信息论中的数据压缩思想紧密相关,鼓励模型在拟合数据的同时保持简单性,从而避免过拟合 (Overfitting)。

    信息论为机器学习提供了坚实的理论基础和有效的工具,帮助我们理解模型的复杂性、数据的内在结构以及学习过程的本质。

    12.3 信息论与信息安全 (Information Theory and Information Security)

    信息安全 (Information Security) 的核心目标之一是保护信息的机密性 (Confidentiality)、完整性 (Integrity) 和可用性 (Availability)。信息论,特别是香农的信息论,为理解和分析信息机密性提供了深刻的理论框架。

    完美保密性 (Perfect Secrecy):香农在其开创性论文中定义了完美保密性。一个密码系统 (Cryptosystem) 达到完美保密性,意味着密文 (Ciphertext) 不包含关于明文 (Plaintext) 的任何信息。用信息论的语言来说,就是明文随机变量 \(M\) 与密文随机变量 \(C\) 之间的互信息为零:
    \[ I(M; C) = 0 \]
    香农证明了,要实现完美保密性,密钥 (Key) 的熵 \(H(K)\) 必须大于或等于明文的熵 \(H(M)\),即 \(H(K) \ge H(M)\)。一次性密码本 (One-Time Pad) 是一个满足完美保密性的经典例子,其密钥与明文等长且随机,且每个密钥只使用一次。

    混淆度 (Equivocation):在密码学中,混淆度通常指在已知密文 \(C\) 的情况下,关于明文 \(M\) 或密钥 \(K\) 的不确定性。这可以用条件熵来度量:
    ⚝ 关于明文的混淆度:\(H(M|C)\)
    ⚝ 关于密钥的混淆度:\(H(K|C)\)
    一个安全的密码系统应该使得攻击者在截获密文后,关于明文或密钥的混淆度尽可能大,理想情况下等于其先验熵 \(H(M)\) 或 \(H(K)\)。

    密钥分发 (Key Distribution):信息论也为安全密钥分发提供了理论基础。例如,物理层安全 (Physical Layer Security) 利用无线信道的随机性和独特性(如衰落、噪声)来生成和分发密钥,其安全性分析往往依赖于信息论中的信道容量、互信息等概念。

    信息论安全 (Information-Theoretic Security):与计算安全 (Computational Security) 不同,信息论安全不依赖于攻击者的计算能力限制,而是基于信息本身的属性。如果一个密码系统在信息论意义上是安全的,那么即使攻击者拥有无限的计算资源,也无法获取关于秘密信息的任何知识。完美保密性就是信息论安全的一个例子。虽然实现信息论安全通常需要较大的开销(如一次性密码本),但在某些对安全性要求极高的场景下(如军事通信),它仍然具有重要价值。

    信息论为信息安全提供了坚实的理论基石,帮助我们理解安全通信的本质限制,设计和分析安全的密码系统和协议。

    12.4 量子信息论初步 (Introduction to Quantum Information Theory)

    随着量子计算 (Quantum Computing) 和量子通信 (Quantum Communication) 的兴起,信息论也迈入了量子时代,形成了量子信息论 (Quantum Information Theory)。量子信息论研究如何利用量子力学的原理来处理和传输信息。

    量子比特 (Qubit):经典信息的基本单位是比特 (Bit),只能处于0或1的状态。量子信息的基本单位是量子比特 (Qubit),它可以处于0态 \(|0\rangle\)、1态 \(|1\rangle\) 或它们的任意叠加态 (Superposition):
    \[ |\psi\rangle = \alpha |0\rangle + \beta |1\rangle \]
    其中 \(\alpha\) 和 \(\beta\) 是复数,且满足 \(|\alpha|^2 + |\beta|^2 = 1\)。\(|\alpha|^2\) 表示测量时得到0态的概率,\(|\beta|^2\) 表示测量时得到1态的概率。叠加态使得一个量子比特可以同时表示多个经典状态,这是量子计算并行性的来源之一。

    纠缠 (Entanglement):纠缠是量子力学中一种奇特的关联现象。两个或多个量子比特可以处于纠缠态,使得它们的状态紧密关联,无论它们相距多远。测量其中一个纠缠比特的状态会瞬间影响其他纠缠比特的状态。纠缠是量子通信和量子计算中的重要资源。例如,贝尔态 (Bell State) 是一种典型的两比特纠缠态:
    \[ |\Phi^+\rangle = \frac{1}{\sqrt{2}}(|00\rangle + |11\rangle) \]

    量子熵 (Quantum Entropy):经典信息论使用香农熵度量经典信息的随机性或不确定性。在量子信息论中,冯·诺依曼熵 (Von Neumann Entropy) 是度量量子态不确定性的主要工具。对于一个密度矩阵 (Density Matrix) \(\rho\)(描述量子态的数学工具),其冯·诺依曼熵定义为:
    \[ S(\rho) = -\text{Tr}(\rho \log_2 \rho) \]
    其中 \(\text{Tr}\) 表示矩阵的迹。对于纯态 (Pure State)(完全确定的量子态),冯·诺依曼熵为0;对于混合态 (Mixed State)(不确定性存在的量子态),冯·诺依曼熵大于0。

    量子信道 (Quantum Channel):量子信道描述了量子信息在传输过程中可能发生的演化和噪声影响。量子信道的容量 (Quantum Channel Capacity) 研究的是通过量子信道可靠传输量子信息或经典信息的最大速率。

    量子密钥分发 (Quantum Key Distribution, QKD):QKD利用量子力学的原理(如单光子、纠缠、不可克隆定理)来分发安全的密钥。其安全性基于物理定律而非计算复杂度,理论上可以实现无条件安全。著名的QKD协议包括BB84协议和E91协议。

    量子纠错码 (Quantum Error Correction Codes):类似于经典信道编码,量子纠错码用于保护量子信息免受噪声和退相干 (Decoherence) 的影响。由于量子信息的脆弱性和量子测量的特殊性,量子纠错码的设计比经典纠错码更具挑战性。

    量子信息论是一个迅速发展的交叉领域,它不仅为量子计算和量子通信提供了理论基础,也为我们重新理解信息、计算和物理世界提供了全新的视角。

    信息论的旅程远未结束。从最初的点对点通信,到复杂的网络、智能的机器、安全的通信以及未来的量子世界,信息论始终是理解信息本质、探索信息处理极限的强大工具。

    13. chapter 13: 总结与进一步学习建议 (Summary and Suggestions for Further Study)

    亲爱的同学们,我们已经一同走过了信息论与通信系统这片广袤而迷人的知识海洋。从信息的基本度量到信源编码的压缩艺术,从信道容量的极限探索到信道编码的纠错魔法,再到信息论在现代通信系统中的璀璨应用,我们系统地学习了信息传输与处理的根本原理。本章作为全书的终结,旨在帮助大家回顾核心要点,展望未来的研究方向,并为大家提供进一步深入学习的指引。

    13.1 全书要点回顾 (Review of Key Points)

    信息论(Information Theory)由克劳德·香农(Claude Shannon)于20世纪中期创立,它为通信系统(Communication Systems)的设计与分析提供了坚实的理论基础和性能极限。本书围绕这一核心主题,逐步展开了以下关键概念和理论:

    信息的基本度量 (Basic Measures of Information)
    ▮▮▮▮ⓑ 我们学习了自信息(Self-Information)来量化单个事件的不确定性,以及熵(Entropy)来度量随机变量的平均不确定性或信息量。
    ▮▮▮▮ⓒ 联合熵(Joint Entropy)和条件熵(Conditional Entropy)描述了多个随机变量之间的不确定性关系。
    ▮▮▮▮ⓓ 互信息(Mutual Information)是衡量两个随机变量之间共享信息量的关键概念,它反映了通过观察一个变量来减少另一个变量不确定性的程度。
    ▮▮▮▮ⓔ 交叉熵(Cross-Entropy)和KL散度(KL Divergence)则常用于衡量概率分布之间的差异,在统计推断和机器学习中有着广泛应用。

    信源编码 (Source Coding)
    ▮▮▮▮ⓑ 信源编码的目的是对信息源产生的数据进行压缩,去除冗余,以便更有效地存储或传输。
    ▮▮▮▮ⓒ 对于离散无记忆信源(Discrete Memoryless Source, DMS),香农的信源编码定理(Source Coding Theorem)指出,任何可压缩的无损编码的平均码长(Average Codeword Length)不可能小于信源的熵。
    ▮▮▮▮ⓓ 我们探讨了实现接近熵极限的编码方法,如霍夫曼编码(Huffman Coding)、香农-范诺-伊利亚斯编码(Shannon-Fano-Elias Coding)和算术编码(Arithmetic Coding)。
    ▮▮▮▮ⓔ 对于允许一定失真的有损信源编码(Lossy Source Coding),率失真理论(Rate-Distortion Theory)给出了在给定允许失真度(Distortion)下的最小平均码率(Rate),即率失真函数(Rate-Distortion Function)。量化(Quantization)和变换编码(Transform Coding)是常见的有损编码技术。

    信道容量 (Channel Capacity)
    ▮▮▮▮ⓑ 信道(Channel)是传输信息的媒介,它可能引入噪声(Noise)或失真。
    ▮▮▮▮ⓒ 信道容量(Channel Capacity)是信息论中最核心的概念之一,它定义了在给定信道上,以任意低的错误概率(Error Probability)传输信息的最大平均速率。
    ▮▮▮▮ⓓ 对于离散无记忆信道(Discrete Memoryless Channel, DMC),信道容量等于输入和输出之间的最大互信息。
    ▮▮▮▮ⓔ 对于连续信道(Continuous Channel),特别是加性高斯白噪声(Additive White Gaussian Noise, AWGN)信道,香农-哈特利定理(Shannon-Hartley Theorem)给出了其容量公式:\( C = B \log_2(1 + \frac{S}{N}) \) 比特/秒(bits/s),其中 \( B \) 是带宽(Bandwidth),\( S/N \) 是信噪比(Signal-to-Noise Ratio, SNR)。
    ▮▮▮▮ⓕ 信道容量是通信系统性能的终极理论极限,任何实际系统的传输速率都不能超过信道容量。

    信道编码 (Channel Coding)
    ▮▮▮▮ⓑ 信道编码的目的是在信息中加入受控的冗余(Redundancy),以对抗信道引入的差错(Errors),实现可靠传输。
    ▮▮▮▮ⓒ 香农信道编码定理(Channel Coding Theorem)指出,只要传输速率低于信道容量,就存在一种编码方案,使得错误概率可以任意小。反之,如果速率超过容量,则无法实现可靠传输。
    ▮▮▮▮ⓓ 我们学习了信道编码的基础概念,如码率(Code Rate)、汉明距离(Hamming Distance)和最小距离(Minimum Distance),以及检错(Error Detection)和纠错(Error Correction)能力。
    ▮▮▮▮ⓔ 经典的信道编码包括线性分组码(Linear Block Codes)(如汉明码(Hamming Codes))和卷积码(Convolutional Codes)。我们探讨了它们的编码结构和译码算法(如伴随式译码(Syndrome Decoding)和维特比译码(Viterbi Decoding))。
    ▮▮▮▮ⓕ 现代信道编码(Modern Channel Coding),如Turbo码(Turbo Codes)和低密度奇偶校验码(Low-Density Parity-Check, LDPC)码,通过迭代译码(Iterative Decoding)技术,能够逼近香农极限,是当前通信系统(如5G/6G)中广泛使用的核心技术。

    信息论在通信系统中的应用 (Applications in Communication Systems)
    ▮▮▮▮ⓑ 信息论为调制(Modulation)、多址接入(Multiple Access)(如FDMA, TDMA, CDMA, OFDMA, SC-FDMA)等通信技术提供了理论指导。
    ▮▮▮▮ⓒ 我们初步了解了无线信道(Wireless Channels)的特性,如衰落信道(Fading Channels),以及多输入多输出(Multiple-Input Multiple-Output, MIMO)系统如何利用空间维度提高信道容量。

    高级主题与未来展望 (Advanced Topics and Future Perspectives)
    ▮▮▮▮ⓑ 我们简要介绍了网络信息论(Network Information Theory)的基础概念,它研究多用户、多节点网络中的信息传输与处理极限。
    ▮▮▮▮ⓒ 信息论的思想和工具在机器学习(Machine Learning)、信息安全(Information Security)等领域也有着重要的应用。
    ▮▮▮▮ⓓ 量子信息论(Quantum Information Theory)则将信息论扩展到量子力学领域,探索量子计算和量子通信的可能性。

    回顾这些要点,我们可以看到信息论提供了一个统一的框架,用于理解和解决信息传输与处理中的根本问题。它不仅揭示了通信系统的性能极限,还为设计逼近这些极限的实际系统提供了理论指导。

    13.2 开放问题与研究方向 (Open Problems and Research Directions)

    尽管信息论已经取得了巨大的成功,但许多挑战依然存在,新的研究方向不断涌现。对于有志于在信息论或相关领域深造的同学们,以下是一些值得关注的开放问题和研究方向:

    网络信息论的深化 (Deepening Network Information Theory)
    ▮▮▮▮⚝ 复杂网络拓扑下的容量区域(Capacity Region)刻画:如何精确确定具有任意结构的多用户信道(Multi-user Channels)或网络(Networks)的容量区域,特别是对于非线性或干扰严重的场景。
    ▮▮▮▮⚝ 分布式信源编码(Distributed Source Coding)与网络编码(Network Coding):如何设计高效的分布式压缩和网络传输方案,以应对大规模传感器网络、物联网(Internet of Things, IoT)等应用的需求。
    ▮▮▮▮⚝ 具有计算约束(Computation Constraints)或隐私约束(Privacy Constraints)的网络信息理论:如何在考虑节点计算能力有限或需要保护用户隐私的情况下,分析和优化网络性能。

    信息论在新兴技术中的应用 (Applications in Emerging Technologies)
    ▮▮▮▮⚝ 5G/6G及未来通信系统:如何利用信息论工具解决超高可靠低时延通信(Ultra-Reliable Low-Latency Communication, URLLC)、大规模连接(Massive Connectivity)、人工智能赋能通信(AI-enabled Communications)等新挑战。
    ▮▮▮▮⚝ 人工智能与信息论的交叉 (Intersection of AI and Information Theory):
    ▮▮▮▮▮▮▮▮⚝ 信息论在深度学习(Deep Learning)中的理论解释与优化:例如,互信息在神经网络训练、特征选择、模型压缩中的应用。
    ▮▮▮▮▮▮▮▮⚝ 利用机器学习方法设计和优化通信系统:例如,基于学习的信道编码/译码、资源分配等。
    ▮▮▮▮⚝ 区块链(Blockchain)与分布式账本技术:信息论如何分析其安全性和效率,以及如何设计更高效的共识机制。
    ▮▮▮▮⚝ 边缘计算(Edge Computing)与联邦学习(Federated Learning):如何在分布式计算环境中优化数据传输、模型聚合和隐私保护。

    信息论的跨学科应用 (Interdisciplinary Applications of Information Theory)
    ▮▮▮▮⚝ 生物信息学(Bioinformatics)与神经科学(Neuroscience):利用信息论分析基因序列、蛋白质结构、神经网络活动等。
    ▮▮▮▮⚝ 复杂系统(Complex Systems):将信息论概念应用于分析社会网络、经济系统、物理系统等。

    量子信息论的深入研究 (In-depth Research in Quantum Information Theory)
    ▮▮▮▮⚝ 量子信道容量(Quantum Channel Capacity):研究不同量子信道的容量,包括经典信息容量、量子信息容量和纠缠辅助容量。
    ▮▮▮▮⚝ 量子纠错码(Quantum Error Correction Codes):设计和分析能够保护量子信息免受噪声影响的编码方案。
    ▮▮▮▮⚝ 量子网络(Quantum Networks):研究如何在量子网络中实现可靠的量子态传输和分布式量子计算。

    信息安全与隐私 (Information Security and Privacy)
    ▮▮▮▮⚝ 基于信息论的安全(Information-Theoretic Security):研究不依赖于计算复杂度的绝对安全通信方案,如物理层安全(Physical Layer Security)。
    ▮▮▮▮⚝ 差分隐私(Differential Privacy)与信息论:如何利用信息论工具量化和保证数据分析过程中的隐私泄露风险。

    这些仅仅是信息论领域众多研究方向中的一部分。信息论作为一门基础学科,其思想和方法论具有强大的普适性,能够不断地与其他学科交叉融合,产生新的理论和应用。

    13.3 推荐的进一步阅读材料 (Recommended Further Reading Materials)

    本书旨在为大家构建信息论与通信系统的基础知识框架。如果希望在特定方向深入研究,以下是一些经典教材、专著和期刊,供大家参考:

    经典教材与专著 (Classic Textbooks and Monographs)
    ▮▮▮▮ⓑ Thomas M. Cover, Joy A. Thomas. Elements of Information Theory. 2nd Edition. Wiley, 2006. (信息论领域的圣经,内容全面,理论严谨,适合深入学习。)
    ▮▮▮▮ⓒ David J. C. MacKay. Information Theory, Inference, and Learning Algorithms. Cambridge University Press, 2003. (内容丰富,涵盖信息论、机器学习和推理,风格独特,提供了很多直观的解释和例子。)
    ▮▮▮▮ⓓ Robert G. Gallager. Information Theory and Reliable Communication. Wiley, 1968. (虽然年代较早,但对信道编码等基础理论的阐述非常经典和深刻。)
    ▮▮▮▮ⓔ Stephen B. Wicker. Turbo Codes. Kluwer Academic Publishers, 1999. (关于Turbo码的经典专著。)
    ▮▮▮▮ⓕ Todd K. Moon. Error Correction Coding: Mathematical Methods and Algorithms. Wiley-Interscience, 2005. (信道编码领域的优秀教材,涵盖线性码、循环码、BCH码、RS码、LDPC码等。)
    ▮▮▮▮⚝ 国内优秀教材:国内也有许多优秀的中文信息论教材,建议参考各高校相关课程的推荐书目,选择适合自己风格的教材进行补充学习。

    重要论文与期刊 (Important Papers and Journals)
    ▮▮▮▮ⓑ Claude E. Shannon. A Mathematical Theory of Communication. Bell System Technical Journal, 1948. (信息论的开山之作,虽然阅读有一定难度,但理解其核心思想非常有益。)
    ▮▮▮▮ⓒ IEEE Transactions on Information Theory:信息论领域最顶级的学术期刊,发表最新的研究成果。
    ▮▮▮▮ⓓ IEEE Journal on Selected Areas in Communications (JSAC):涵盖通信系统各个领域,常有信息论在实际系统中的应用研究。
    ▮▮▮▮ⓔ IEEE Transactions on Communications:通信领域的综合性期刊。
    ▮▮▮▮ⓕ International Symposium on Information Theory (ISIT):信息论领域最重要的年度国际会议,汇集了最新的研究进展。
    ▮▮▮▮⚝ 其他相关期刊和会议:根据具体研究方向,还可以关注如通信、信号处理、机器学习、量子计算等领域的专业期刊和会议。

    在线资源 (Online Resources)
    ▮▮▮▮ⓑ 各大高校的公开课(如MIT OpenCourseware, Stanford Online等)常有信息论或通信相关的课程视频和讲义。
    ▮▮▮▮ⓒ ArXiv预印本网站(arxiv.org):许多最新的研究论文会先发布在此。
    ▮▮▮▮ⓓ 专业社区和论坛:参与讨论,与同行交流学习经验。

    学习信息论是一个持续探索的过程。理论的严谨性要求扎实的数学基础,而其在通信系统中的应用则需要结合具体的工程问题。希望本书能够成为大家探索信息论世界的起点,激发大家对信息科学的兴趣。祝愿大家在未来的学习和研究道路上取得丰硕的成果!

    14. chapter 14: 附录 (Appendices)

    本附录旨在为读者提供一些必要的数学基础回顾和关键定理的证明选讲,以帮助读者更好地理解信息论与通信系统中的核心概念和理论。信息论和通信系统是建立在坚实的数学基础之上的,特别是概率论和线性代数。虽然本书正文部分尽量避免过度依赖复杂的数学推导,但对这些基础知识的掌握将极大地加深对理论的理解。此外,本附录还精选了一些关键定理的证明,这些证明不仅有助于理解定理本身,更能展现信息论独特的数学魅力和证明技巧。

    14.1 常用概率分布 (Common Probability Distributions)

    概率论是信息论的基石。本节回顾一些在信息论和通信系统中常用的概率分布。

    概率分布 (Probability Distribution):描述随机变量取不同数值的概率。对于离散随机变量,用概率质量函数 (Probability Mass Function, PMF) \( P(x) = P(X=x) \) 表示;对于连续随机变量,用概率密度函数 (Probability Density Function, PDF) \( f(x) \) 表示。

    期望 (Expectation):随机变量的平均值。
    ▮▮▮▮⚝ 离散随机变量 \( X \):\( E[X] = \sum_x x P(x) \)
    ▮▮▮▮⚝ 连续随机变量 \( X \):\( E[X] = \int_{-\infty}^{\infty} x f(x) dx \)

    方差 (Variance):衡量随机变量与其期望值的偏离程度。
    ▮▮▮▮⚝ \( Var(X) = E[(X - E[X])^2] = E[X^2] - (E[X])^2 \)

    14.1.1 离散概率分布 (Discrete Probability Distributions)

    伯努利分布 (Bernoulli Distribution)
    ▮▮▮▮⚝ 描述单次试验只有两种可能结果(成功或失败)的概率分布。
    ▮▮▮▮⚝ 参数:成功概率 \( p \in [0, 1] \)。
    ▮▮▮▮⚝ 随机变量 \( X \) 取值:1 (成功) 或 0 (失败)。
    ▮▮▮▮⚝ PMF:
    \[ P(x) = \begin{cases} p & \text{if } x = 1 \\ 1-p & \text{if } x = 0 \end{cases} \]
    ▮▮▮▮⚝ 期望:\( E[X] = p \)
    ▮▮▮▮⚝ 方差:\( Var(X) = p(1-p) \)
    ▮▮▮▮⚝ 应用:二进制信源、二进制对称信道中的错误。

    二项分布 (Binomial Distribution)
    ▮▮▮▮⚝ 描述在 \( n \) 次独立的伯努利试验中,成功次数的概率分布。
    ▮▮▮▮⚝ 参数:试验次数 \( n \in \mathbb{N}^+ \),单次成功概率 \( p \in [0, 1] \)。
    ▮▮▮▮⚝ 随机变量 \( X \) 取值:\( k \in \{0, 1, \dots, n\} \)。
    ▮▮▮▮⚝ PMF:
    \[ P(X=k) = \binom{n}{k} p^k (1-p)^{n-k} \]
    ▮▮▮▮⚝ 期望:\( E[X] = np \)
    ▮▮▮▮⚝ 方差:\( Var(X) = np(1-p) \)
    ▮▮▮▮⚝ 应用:信道编码中一个码字传输后发生错误的位数。

    几何分布 (Geometric Distribution)
    ▮▮▮▮⚝ 描述在伯努利试验序列中,第一次成功所需的试验次数的概率分布。
    ▮▮▮▮⚝ 参数:单次成功概率 \( p \in (0, 1] \)。
    ▮▮▮▮⚝ 随机变量 \( X \) 取值:\( k \in \{1, 2, 3, \dots\} \)。
    ▮▮▮▮⚝ PMF:\( P(X=k) = (1-p)^{k-1} p \)
    ▮▮▮▮⚝ 期望:\( E[X] = 1/p \)
    ▮▮▮▮⚝ 方差:\( Var(X) = (1-p)/p^2 \)
    ▮▮▮▮⚝ 应用:重传协议中第一次成功传输所需的尝试次数。

    泊松分布 (Poisson Distribution)
    ▮▮▮▮⚝ 描述在固定时间或空间间隔内,某个事件发生次数的概率分布,该事件以已知平均速率发生,且各次发生之间独立。
    ▮▮▮▮⚝ 参数:平均发生率 \( \lambda > 0 \)。
    ▮▮▮▮⚝ 随机变量 \( X \) 取值:\( k \in \{0, 1, 2, \dots\} \)。
    ▮▮▮▮⚝ PMF:
    \[ P(X=k) = \frac{e^{-\lambda} \lambda^k}{k!} \]
    ▮▮▮▮⚝ 期望:\( E[X] = \lambda \)
    ▮▮▮▮⚝ 方差:\( Var(X) = \lambda \)
    ▮▮▮▮⚝ 应用:通信网络中到达的呼叫次数、突发噪声脉冲的次数。

    14.1.2 连续概率分布 (Continuous Probability Distributions)

    均匀分布 (Uniform Distribution)
    ▮▮▮▮⚝ 描述在给定区间内,任意等长子区间内取值的概率相等的概率分布。
    ▮▮▮▮⚝ 参数:区间 \( [a, b] \),其中 \( a < b \)。
    ▮▮▮▮⚝ 随机变量 \( X \) 取值:\( x \in [a, b] \)。
    ▮▮▮▮⚝ PDF:
    \[ f(x) = \begin{cases} \frac{1}{b-a} & \text{if } a \le x \le b \\ 0 & \text{otherwise} \end{cases} \]
    ▮▮▮▮⚝ 期望:\( E[X] = \frac{a+b}{2} \)
    ▮▮▮▮⚝ 方差:\( Var(X) = \frac{(b-a)^2}{12} \)
    ▮▮▮▮⚝ 应用:量化误差的简化模型。

    高斯分布 (Gaussian Distribution) / 正态分布 (Normal Distribution)
    ▮▮▮▮⚝ 最重要的连续概率分布之一,其重要性源于中心极限定理 (Central Limit Theorem)。
    ▮▮▮▮⚝ 参数:均值 \( \mu \in \mathbb{R} \),方差 \( \sigma^2 > 0 \)。记作 \( X \sim N(\mu, \sigma^2) \)。
    ▮▮▮▮⚝ 随机变量 \( X \) 取值:\( x \in \mathbb{R} \)。
    ▮▮▮▮⚝ PDF:
    \[ f(x) = \frac{1}{\sqrt{2\pi\sigma^2}} e^{-\frac{(x-\mu)^2}{2\sigma^2}} \]
    ▮▮▮▮⚝ 期望:\( E[X] = \mu \)
    ▮▮▮▮⚝ 方差:\( Var(X) = \sigma^2 \)
    ▮▮▮▮⚝ 标准正态分布 (Standard Normal Distribution):\( \mu=0, \sigma^2=1 \),记作 \( Z \sim N(0, 1) \)。
    ▮▮▮▮⚝ 应用:加性高斯白噪声 (Additive White Gaussian Noise, AWGN) 信道模型,信号处理中的许多随机现象。

    指数分布 (Exponential Distribution)
    ▮▮▮▮⚝ 描述泊松过程中,事件发生间隔时间的概率分布。具有无记忆性 (Memoryless Property)。
    ▮▮▮▮⚝ 参数:速率参数 \( \lambda > 0 \)。
    ▮▮▮▮⚝ 随机变量 \( X \) 取值:\( x \ge 0 \)。
    ▮▮▮▮⚝ PDF:
    \[ f(x) = \begin{cases} \lambda e^{-\lambda x} & \text{if } x \ge 0 \\ 0 & \text{otherwise} \end{cases} \]
    ▮▮▮▮⚝ 期望:\( E[X] = 1/\lambda \)
    ▮▮▮▮⚝ 方差:\( Var(X) = 1/\lambda^2 \)
    ▮▮▮▮⚝ 应用:通信系统中设备寿命、呼叫持续时间等。

    14.2 线性代数基础 (Fundamentals of Linear Algebra)

    线性代数在信道编码(特别是线性分组码)中扮演着核心角色。本节回顾一些基本的线性代数概念,重点关注在有限域 (Finite Field) 上的向量空间。

    域 (Field):一个集合,其中定义了加法和乘法运算,且这些运算满足交换律、结合律、分配律,存在加法和乘法的单位元,每个元素都有加法逆元,非零元素有乘法逆元。
    ▮▮▮▮⚝ 例子:实数域 \( \mathbb{R} \),复数域 \( \mathbb{C} \)。
    ▮▮▮▮⚝ 有限域 \( \mathbb{F}_q \) 或 \( GF(q) \):包含有限个元素的域。在信道编码中,最常用的是二元域 \( \mathbb{F}_2 = \{0, 1\} \),其加法和乘法遵循模2运算。
    ▮▮▮▮▮▮▮▮❶ \( 0+0=0, 0+1=1, 1+0=1, 1+1=0 \) (异或运算 XOR)
    ▮▮▮▮▮▮▮▮❷ \( 0 \times 0=0, 0 \times 1=0, 1 \times 0=0, 1 \times 1=1 \) (与运算 AND)

    向量空间 (Vector Space):一个集合 \( V \) (向量的集合) 和一个域 \( F \) (标量的集合),定义了向量加法和标量乘法,并满足一系列公理。
    ▮▮▮▮⚝ 在信道编码中,我们主要关注 \( \mathbb{F}_2 \) 上的 \( n \) 维向量空间 \( \mathbb{F}_2^n \),其元素是长度为 \( n \) 的二进制向量 \( \mathbf{v} = (v_1, v_2, \dots, v_n) \),其中 \( v_i \in \mathbb{F}_2 \)。
    ▮▮▮▮⚝ 向量加法:\( \mathbf{u} + \mathbf{v} = (u_1+v_1, u_2+v_2, \dots, u_n+v_n) \),其中加法是 \( \mathbb{F}_2 \) 上的加法。
    ▮▮▮▮⚝ 标量乘法:\( c \mathbf{v} = (c v_1, c v_2, \dots, c v_n) \),其中 \( c \in \mathbb{F}_2 \),乘法是 \( \mathbb{F}_2 \) 上的乘法。

    线性组合 (Linear Combination):向量 \( \mathbf{v} \) 是向量集 \( \{\mathbf{v}_1, \dots, \mathbf{v}_k\} \) 的线性组合,如果存在标量 \( c_1, \dots, c_k \in F \),使得 \( \mathbf{v} = c_1 \mathbf{v}_1 + \dots + c_k \mathbf{v}_k \)。

    线性独立 (Linear Independence):向量集 \( \{\mathbf{v}_1, \dots, \mathbf{v}_k\} \) 是线性独立的,如果方程 \( c_1 \mathbf{v}_1 + \dots + c_k \mathbf{v}_k = \mathbf{0} \) 只有唯一的解 \( c_1 = \dots = c_k = 0 \)。否则,向量集是线性相关的 (Linearly Dependent)。

    生成空间 (Span):向量集 \( S \) 的生成空间是 \( S \) 中所有向量的线性组合的集合,记作 \( Span(S) \)。生成空间是向量空间的一个子空间 (Subspace)。

    基 (Basis):向量空间 \( V \) 的一个基是一个线性独立的向量集,它能生成 \( V \)。
    ▮▮▮▮⚝ 向量空间的任意两个基包含相同数量的向量,这个数量称为向量空间的维数 (Dimension),记作 \( dim(V) \)。
    ▮▮▮▮⚝ 对于 \( \mathbb{F}_2^n \),标准基是 \( \{(1,0,\dots,0), (0,1,\dots,0), \dots, (0,0,\dots,1)\} \),其维数是 \( n \)。

    矩阵 (Matrix):由域 \( F \) 中的元素排列成的矩形阵列。
    ▮▮▮▮⚝ \( m \times n \) 矩阵有 \( m \) 行和 \( n \) 列。
    ▮▮▮▮⚝ 矩阵加法、标量乘法、矩阵乘法:定义与实数矩阵类似,但运算在域 \( F \) 中进行。
    ▮▮▮▮⚝ 矩阵转置 (Transpose):将矩阵的行和列互换。

    行空间 (Row Space):矩阵的行向量生成的向量空间。
    列空间 (Column Space):矩阵的列向量生成的向量空间。
    零空间 (Null Space) / 核 (Kernel):对于 \( m \times n \) 矩阵 \( A \),其零空间是所有满足 \( A\mathbf{x} = \mathbf{0} \) 的向量 \( \mathbf{x} \in F^n \) 的集合。零空间是 \( F^n \) 的一个子空间。
    ▮▮▮▮⚝ 零空间的维数称为零化度 (Nullity)。

    秩 (Rank):矩阵的行空间或列空间的维数。行秩等于列秩。
    秩-零化度定理 (Rank-Nullity Theorem):对于 \( m \times n \) 矩阵 \( A \),\( rank(A) + nullity(A) = n \)。

    在信道编码中的应用
    ▮▮▮▮⚝ 线性分组码的码字构成 \( \mathbb{F}_2^n \) 的一个 \( k \) 维子空间。
    ▮▮▮▮⚝ 生成矩阵 \( G \) 的行向量是码字空间的基。码字 \( \mathbf{c} = \mathbf{m} G \),其中 \( \mathbf{m} \) 是信息向量。
    ▮▮▮▮⚝ 校验矩阵 \( H \) 的零空间是码字空间。码字 \( \mathbf{c} \) 满足 \( H \mathbf{c}^T = \mathbf{0} \)。
    ▮▮▮▮⚝ 伴随式 (Syndrome) \( \mathbf{s} = H \mathbf{r}^T \),其中 \( \mathbf{r} \) 是接收向量。伴随式用于检错和译码。

    14.3 关键定理证明选讲 (Selected Proofs of Key Theorems)

    本节提供一些书中关键定理的证明或证明思路,以加深理解。

    14.3.1 克拉夫特不等式 (Kraft's Inequality) 的证明 (针对前缀码)

    定理 (克拉夫特不等式):对于一个具有 \( D \) 个字母的码本,如果存在一个由 \( N \) 个码字 \( c_1, \dots, c_N \) 组成的前缀码 (Prefix Code),其码字长度分别为 \( l_1, \dots, l_N \),则必满足:
    \[ \sum_{i=1}^N D^{-l_i} \le 1 \]

    证明思路
    考虑一棵 \( D \) 叉树,树的根节点代表空字符串。每个节点代表一个字符串,从根节点到该节点的路径上的分支代表字符串的字母。前缀码的性质是任何码字都不是另一个码字的前缀。这意味着在前缀码对应的 \( D \) 叉树中,没有码字节点是另一个码字节点的祖先。因此,所有码字节点必须是叶节点 (Leaf Node) 或只拥有后代的内部节点,但其后代中没有其他码字节点。更强的性质是,如果一个节点代表一个码字,则该节点的整个子树中不能包含其他码字节点。

    假设码字 \( c_i \) 的长度为 \( l_i \)。在 \( D \) 叉树中,从根节点到深度 \( l_i \) 的路径对应于码字 \( c_i \)。以 \( c_i \) 结尾的节点是一个深度为 \( l_i \) 的节点。由于 \( c_i \) 是前缀码的码字,以该节点为根的子树中不能包含其他码字节点。

    考虑深度为 \( L = \max(l_1, \dots, l_N) \) 的所有节点。总共有 \( D^L \) 个深度为 \( L \) 的节点。
    对于每个码字 \( c_i \) (长度为 \( l_i \)),它对应于深度 \( l_i \) 的一个节点。以这个节点为根的子树包含 \( D^{L-l_i} \) 个深度为 \( L \) 的节点。
    由于前缀码的性质,不同码字对应的子树在深度 \( L \) 处所包含的节点集合是互不相交的。
    例如,如果 \( c_1 \) 和 \( c_2 \) 是两个不同的码字,\( l_1 \le l_2 \),如果 \( c_1 \) 是 \( c_2 \) 的前缀,则 \( c_1 \) 对应的节点是 \( c_2 \) 对应节点的祖先,这违反了前缀码的定义。因此,如果 \( c_1 \) 和 \( c_2 \) 是前缀码的码字,它们对应的节点不可能是祖先-后代关系。这意味着以它们为根的子树在任何深度上都是不相交的。特别地,它们在深度 \( L \) 处的后代节点集合是互不相交的。

    所有码字 \( c_1, \dots, c_N \) 对应的深度为 \( l_i \) 的节点,它们各自“占据”了 \( D^{L-l_i} \) 个深度为 \( L \) 的节点。由于这些集合互不相交,它们占据的深度为 \( L \) 的总节点数不能超过深度 \( L \) 的总节点数 \( D^L \)。
    因此,所有码字占据的深度为 \( L \) 的节点总数是 \( \sum_{i=1}^N D^{L-l_i} \)。
    我们有:
    \[ \sum_{i=1}^N D^{L-l_i} \le D^L \]
    将不等式两边同除以 \( D^L \) (注意 \( D^L > 0 \)):
    \[ \sum_{i=1}^N \frac{D^{L-l_i}}{D^L} \le \frac{D^L}{D^L} \]
    \[ \sum_{i=1}^N D^{L-l_i - L} \le 1 \]
    \[ \sum_{i=1}^N D^{-l_i} \le 1 \]
    证毕。

    14.3.2 熵的性质证明选讲 (Selected Proofs of Entropy Properties)

    定理 1:条件熵不大于熵,即 \( H(X|Y) \le H(X) \),等号成立当且仅当 \( X \) 和 \( Y \) 相互独立。

    证明
    我们需要证明 \( H(X) - H(X|Y) \ge 0 \)。根据互信息的定义,\( I(X;Y) = H(X) - H(X|Y) \)。所以定理等价于证明 \( I(X;Y) \ge 0 \)。
    互信息的定义为:
    \[ I(X;Y) = \sum_{x \in \mathcal{X}} \sum_{y \in \mathcal{Y}} p(x,y) \log \frac{p(x,y)}{p(x)p(y)} \]
    其中 \( p(x,y) \) 是联合概率质量函数,\( p(x) \) 和 \( p(y) \) 是边缘概率质量函数。
    我们可以将对数项写成 \( \log \frac{p(x,y)}{p(x)p(y)} = - \log \frac{p(x)p(y)}{p(x,y)} \)。
    所以,
    \[ I(X;Y) = - \sum_{x,y} p(x,y) \log \frac{p(x)p(y)}{p(x,y)} \]
    令 \( q(x,y) = p(x)p(y) \) 和 \( p(x,y) \)。注意 \( \sum_{x,y} p(x,y) = 1 \) 且 \( \sum_{x,y} q(x,y) = \sum_x p(x) \sum_y p(y) = 1 \times 1 = 1 \)。
    互信息可以看作是联合分布 \( p(x,y) \) 与边缘分布乘积 \( p(x)p(y) \) 之间的KL散度的负值:
    \[ I(X;Y) = - \sum_{x,y} p(x,y) \log \frac{q(x,y)}{p(x,y)} = D(p(x,y) || q(x,y)) \]
    \[ I(X;Y) = D(P_{XY} || P_X P_Y) \]
    根据KL散度的非负性 (Information Inequality),\( D(P || Q) \ge 0 \),且等号成立当且仅当 \( P=Q \)。
    所以,\( I(X;Y) \ge 0 \)。
    等号 \( I(X;Y) = 0 \) 成立当且仅当 \( p(x,y) = p(x)p(y) \) 对于所有 \( x,y \) 都成立,这正是 \( X \) 和 \( Y \) 相互独立的定义。
    因此,\( H(X|Y) \le H(X) \),等号成立当且仅当 \( X \) 和 \( Y \) 相互独立。
    证毕。

    定理 2:互信息与KL散度的关系:\( I(X;Y) = D(P_{XY} || P_X P_Y) \)。

    证明
    根据定义:
    \[ I(X;Y) = \sum_{x \in \mathcal{X}} \sum_{y \in \mathcal{Y}} p(x,y) \log \frac{p(x,y)}{p(x)p(y)} \]
    KL散度的定义:
    \[ D(P || Q) = \sum_z p(z) \log \frac{p(z)}{q(z)} \]
    将 \( z \) 替换为 \( (x,y) \),\( p(z) \) 替换为 \( p(x,y) \),\( q(z) \) 替换为 \( p(x)p(y) \),我们得到:
    \[ D(P_{XY} || P_X P_Y) = \sum_{x,y} p(x,y) \log \frac{p(x,y)}{p(x)p(y)} \]
    这与互信息的定义完全一致。
    证毕。

    14.3.3 线性码最小距离与最小重量的关系证明 (Proof of Relationship between Minimum Distance and Minimum Weight for Linear Codes)

    定理:对于一个非零码字存在的线性码 \( \mathcal{C} \),其最小汉明距离 (Minimum Hamming Distance) \( d_{min} \) 等于其非零码字的最小汉明重量 (Minimum Hamming Weight) \( w_{min} \)。

    定义回顾
    ⚝ 汉明距离 \( d(\mathbf{u}, \mathbf{v}) \):两个等长向量 \( \mathbf{u} \) 和 \( \mathbf{v} \) 在对应位置上不同的分量个数。
    ⚝ 汉明重量 \( w(\mathbf{v}) \):向量 \( \mathbf{v} \) 中非零分量的个数。
    ⚝ 线性码 \( \mathcal{C} \):是向量空间 \( \mathbb{F}_q^n \) 的一个子空间。
    ⚝ 最小距离 \( d_{min}(\mathcal{C}) = \min \{ d(\mathbf{c}_i, \mathbf{c}_j) \mid \mathbf{c}_i, \mathbf{c}_j \in \mathcal{C}, \mathbf{c}_i \ne \mathbf{c}_j \} \)。
    ⚝ 最小重量 \( w_{min}(\mathcal{C}) = \min \{ w(\mathbf{c}) \mid \mathbf{c} \in \mathcal{C}, \mathbf{c} \ne \mathbf{0} \} \)。

    证明
    我们需要证明 \( d_{min} = w_{min} \)。

    ① 证明 \( d_{min} \ge w_{min} \):
    设 \( \mathbf{c}_i \) 和 \( \mathbf{c}_j \) 是 \( \mathcal{C} \) 中任意两个不同的码字。它们的汉明距离是 \( d(\mathbf{c}_i, \mathbf{c}_j) \)。
    由于 \( \mathcal{C} \) 是线性码,根据线性码的性质,如果 \( \mathbf{c}_i, \mathbf{c}_j \in \mathcal{C} \),则它们的差 \( \mathbf{c}_i - \mathbf{c}_j \) 也属于 \( \mathcal{C} \)。
    因为 \( \mathbf{c}_i \ne \mathbf{c}_j \),所以 \( \mathbf{c}_i - \mathbf{c}_j \ne \mathbf{0} \)。
    汉明距离 \( d(\mathbf{u}, \mathbf{v}) \) 等于向量 \( \mathbf{u} - \mathbf{v} \) 的汉明重量 \( w(\mathbf{u} - \mathbf{v}) \)。这是因为 \( (\mathbf{u} - \mathbf{v})_k = u_k - v_k \),在 \( \mathbb{F}_q \) 中,\( u_k - v_k \ne 0 \) 当且仅当 \( u_k \ne v_k \)。
    所以,\( d(\mathbf{c}_i, \mathbf{c}_j) = w(\mathbf{c}_i - \mathbf{c}_j) \)。
    由于 \( \mathbf{c}_i - \mathbf{c}_j \) 是 \( \mathcal{C} \) 中的一个非零码字,其重量 \( w(\mathbf{c}_i - \mathbf{c}_j) \) 必然大于或等于 \( \mathcal{C} \) 中非零码字的最小重量 \( w_{min} \)。
    即 \( d(\mathbf{c}_i, \mathbf{c}_j) \ge w_{min} \) 对于任意 \( \mathbf{c}_i \ne \mathbf{c}_j \) 都成立。
    因此,最小距离 \( d_{min} = \min_{\mathbf{c}_i \ne \mathbf{c}_j} d(\mathbf{c}_i, \mathbf{c}_j) \ge w_{min} \)。

    ② 证明 \( d_{min} \le w_{min} \):
    设 \( \mathbf{c}^* \) 是 \( \mathcal{C} \) 中一个达到最小重量的非零码字,即 \( w(\mathbf{c}^*) = w_{min} \)。
    考虑码字 \( \mathbf{c}^* \) 和零向量 \( \mathbf{0} \)。零向量 \( \mathbf{0} \) 总是线性码 \( \mathcal{C} \) 的一个码字。
    \( \mathbf{c}^* \ne \mathbf{0} \)。
    计算它们之间的汉明距离:\( d(\mathbf{c}^*, \mathbf{0}) = w(\mathbf{c}^* - \mathbf{0}) = w(\mathbf{c}^*) = w_{min} \)。
    由于 \( \mathbf{c}^* \) 和 \( \mathbf{0} \) 是 \( \mathcal{C} \) 中两个不同的码字,它们之间的距离 \( d(\mathbf{c}^*, \mathbf{0}) \) 必然大于或等于 \( \mathcal{C} \) 的最小距离 \( d_{min} \)。
    即 \( w_{min} \ge d_{min} \)。

    综合 ① 和 ②,我们得到 \( d_{min} \ge w_{min} \) 且 \( w_{min} \ge d_{min} \),因此 \( d_{min} = w_{min} \)。
    证毕。

    这个定理在线性码中非常有用,因为它将计算最小距离(需要比较所有不同的码字对)的问题简化为计算非零码字的最小重量(只需要计算所有非零码字的重量)。

    15. chapter 15: 参考文献 (References)

    本章列出了撰写本书时参考的重要文献,包括经典教材、专著、以及具有里程碑意义的论文和相关期刊。这些文献是信息论与通信系统领域的基石,也是读者进一步深入学习和研究的宝贵资源。

    15.1 经典教材与专著 (Classic Textbooks and Monographs)

    以下是一些信息论和通信系统领域的经典教材和专著,它们为本书提供了理论基础和结构框架。建议读者根据自己的兴趣和需求,选择性地进行深入阅读。

    ① Cover, T. M., & Thomas, J. A. (2006). Elements of Information Theory (2nd ed.). Wiley-Interscience.
    ⚝ 这是信息论领域最广泛使用的经典教材之一,内容全面,涵盖了信息论的各个核心概念,包括熵、互信息、信源编码、信道容量、率失真理论等。适合从初学者到研究人员的各个层次读者。

    ② Gallager, R. G. (1968). Information Theory and Reliable Communication. John Wiley & Sons.
    ⚝ 另一本信息论领域的早期经典著作,由LDPC码的发明者撰写。虽然年代较早,但其对信道编码和可靠通信的深刻洞察至今仍有重要价值。

    ③ MacKay, D. J. C. (2003). Information Theory, Inference, and Learning Algorithms. Cambridge University Press.
    ⚝ 这本书不仅涵盖了传统信息论,还将其与机器学习、贝叶斯推理等领域紧密结合,提供了现代视角。内容丰富且深入,附带了大量的例子和习题。

    ④ Wozencraft, J. M., & Jacobs, I. M. (1965). Principles of Communication Engineering. John Wiley & Sons.
    ⚝ 通信工程领域的经典教材,虽然不是纯粹的信息论书籍,但其对通信系统基本原理的阐述,特别是对信道编码和调制技术的分析,与信息论紧密相关。

    ⑤ Proakis, J. G., & Salehi, S. (2008). Digital Communications (5th ed.). McGraw-Hill.
    ⚝ 数字通信领域的权威教材,详细介绍了数字通信系统的各个组成部分,包括调制、解调、信道编码、同步等。从工程实现的角度阐述了许多与信息论相关的概念。

    ⑥ Lin, S., & Costello Jr, D. J. (2004). Error Control Coding (2nd ed.). Prentice Hall.
    ⚝ 专注于差错控制编码的经典教材,系统介绍了各种重要的信道编码技术,包括线性分组码、循环码、卷积码、Turbo码和LDPC码等。

    ⑦ Yeung, R. W. (2008). Information Theory and Network Coding. Springer.
    ⚝ 这本书在传统信息论的基础上,深入探讨了网络信息论和网络编码等前沿领域,适合对多用户通信和网络应用感兴趣的读者。

    ⑧ 李晓峰. (2011). 信息论基础. 电子工业出版社.
    ⚝ 国内优秀的信息论教材,内容系统,讲解清晰,适合中文读者入门和学习信息论基础知识。

    ⑨ 樊昌信, 曹丽娜. (2012). 通信原理 (第7版). 电子工业出版社.
    ⚝ 国内广泛使用的通信原理教材,全面介绍了通信系统的基本概念、原理和技术,为理解信息论在通信中的应用提供了必要的背景知识。

    15.2 重要论文与期刊 (Important Papers and Journals)

    以下列出了一些信息论领域的开创性论文以及该领域的重要期刊,它们代表了信息论研究的里程碑和前沿方向。

    ① Shannon, C. E. (1948). A Mathematical Theory of Communication. Bell System Technical Journal, 27(3), 379-423; 27(4), 623-656.
    ⚝ 信息论领域的奠基之作,查农(Shannon)在这篇论文中首次提出了信息熵、信道容量等核心概念,并证明了信源编码定理和信道编码定理,开创了信息论这一学科。

    ② Hamming, R. W. (1950). Error Detecting and Error Correcting Codes. Bell System Technical Journal, 29(2), 147-160.
    ⚝ 汉明(Hamming)在这篇论文中提出了汉明码,是最早的有效的差错控制码之一,奠定了信道编码实践的基础。

    ③ Viterbi, A. J. (1967). Error Bounds for Convolutional Codes and an Asymptotically Optimum Decoding Algorithm. IEEE Transactions on Information Theory, 13(2), 260-269.
    ⚝ 维特比(Viterbi)在这篇论文中提出了维特比算法,是一种对卷积码进行最大似然译码的有效算法,对数字通信产生了深远影响。

    ④ Berrou, C., Glavieux, A., & Thitimajshima, P. (1993). Near Shannon Limit Error-Correcting Coding and Decoding: Turbo-Codes (1). In Proceedings of ICC'93 - IEEE International Conference on Communications (pp. 1064-1070).
    ⚝ 这篇论文首次提出了Turbo码,一种性能接近查农极限的强大信道编码技术,引发了现代信道编码研究的热潮。

    ⑤ Gallager, R. G. (1962). Low-Density Parity-Check Codes. MIT Press.
    ⚝ 虽然LDPC码的概念由查农的学生加拉格(Gallager)在1962年的博士论文中提出,但直到90年代末才因其优异的性能和可并行化的译码算法而受到广泛关注。这本书是其博士论文的出版物。

    重要期刊 (Important Journals):
    IEEE Transactions on Information Theory: 信息论领域的顶级期刊,发表最前沿的理论研究成果。
    IEEE Transactions on Communications: 通信领域的顶级期刊,涵盖通信系统的各个方面,包括信息论的应用。
    IEEE Journal on Selected Areas in Communications (JSAC): 专注于通信领域特定主题的高水平期刊。
    Entropy: 涵盖信息论及其在多学科应用的开放获取期刊。

    这些文献和期刊是信息论与通信系统领域的宝库,深入研读它们将极大地提升您对该领域的理解和掌握。