Week 1信息论基础
📖核心知识点:**信息熵**(Shannon Entropy)的定义与计算——H(X) = -Σp(x)log₂p(x)。信息量、编码长度下界与数据压缩的理论极限。Source Coding Theorem——无损压缩的理论基础。Kraft 不等式与前缀码的存在性条件。⏰本周节奏:数学基础周,需熟练计算信息熵。🎯考试关联:熵计算与编码下界是期末必考题(约 10 分)。🧪Tutorial/Lab:手算不同分布的熵值。📌作业关联:Assignment 1 涉及基础编码实现。⚠️易错点:log 底数搞错(信息论用 log₂);混淆联合熵与条件熵。
Week 2Huffman 与算术编码
📖核心知识点:**Huffman Coding**——贪心构造最优前缀码,证明其最优性。自适应 Huffman 编码(FGK 算法)。**Arithmetic Coding**——将整个消息映射到 [0,1) 区间的连续编码方法。算术编码 vs Huffman:压缩率对比与实现复杂度权衡。⏰本周节奏:需实现两种编码算法。🎯考试关联:Huffman 树构造与算术编码的区间计算是高频考题。🧪Tutorial/Lab:手动构造 Huffman 树并计算算术编码区间。📌作业关联:Assignment 1——压缩算法实现。⚠️易错点:Huffman 树构造时等频字符的合并顺序影响结果;算术编码精度溢出。
Week 3字典压缩方法
📖核心知识点:**LZ77**(滑动窗口)与 **LZ78**(字典构建)的算法原理。LZW(Lempel-Ziv-Welch)——GIF 格式使用的压缩算法。Deflate 算法——LZ77 + Huffman 的组合(ZIP/gzip 的核心)。字典大小、窗口大小对压缩率与速度的影响。⏰本周节奏:理解字典压缩的核心思想——利用重复模式。🎯考试关联:LZ77/LZ78 的手动编码/解码是必考题。🧪Tutorial/Lab:手动模拟 LZ77 滑动窗口编码过程。📌作业关联:Assignment 1 可能包含 LZ 系列实现。⚠️易错点:LZ77 中最长匹配的贪心选择可能非全局最优;LZW 解码时字典延迟更新问题。
Week 4BWT 与后缀数组
📖核心知识点:**Burrows-Wheeler Transform (BWT)**——通过循环旋转排序实现可逆变换,使相似字符聚集以提高压缩率。BWT 的逆变换算法(LF Mapping)。**后缀数组 (Suffix Array)** 的定义与 O(n log n) 构造。BWT 与后缀数组的关系——BWT 是后缀数组最后一列。⏰本周节奏:BWT 是本课的核心算法之一,需深入理解。🎯考试关联:BWT 构造与逆变换是期末大题(约 15-20 分)。🧪Tutorial/Lab:手动构造 BWT 并执行逆变换。📌作业关联:Assignment 2 核心——BWT-based 压缩/搜索。⚠️易错点:BWT 逆变换的 LF Mapping 实现中排序稳定性要求;后缀数组构造的边界处理。
Week 5FM-Index 与压缩搜索
📖核心知识点:**FM-Index**——基于 BWT 的压缩全文索引。Backward Search 算法——利用 C[] 数组和 Occ() 函数在 BWT 上进行精确模式匹配。Wavelet Tree 加速 Occ() 查询。FM-Index 的空间复杂度分析——实现 O(n) 空间的全文索引。⏰本周节奏:FM-Index 是本课最重要的数据结构。🎯考试关联:FM-Index Backward Search 的手动模拟是期末必考大题。🧪Tutorial/Lab:手动执行 FM-Index 搜索并验证结果。📌作业关联:Assignment 2——实现 FM-Index 搜索。⚠️易错点:C[] 数组和 Occ() 的计算边界错误(off-by-one);忘记处理 $ 哨兵字符。
Week 6灵活性周 (Flex Week)
📖核心知识点:无新内容。深入复习 BWT、后缀数组、FM-Index,完善 Assignment 2 实现。⏰本周节奏:80% Assignment 编码与测试,20% 复习。🎯考试关联:BWT + FM-Index 相关内容占期末约 40%。🧪Tutorial/Lab:Assignment 答疑。📌作业关联:Assignment 2 截止通常在 Flex Week 附近。⚠️易错点:只测试小规模数据,未考虑大文件的性能与内存限制。
Week 7压缩后缀数组与 CSA
📖核心知识点:**Compressed Suffix Array (CSA)**——在压缩空间内支持后缀数组查询。Ψ 函数的定义与性质。Succinct Data Structures——Rank/Select 操作的 O(1) 实现。Bit Vector 的压缩表示——RRR 编码。理论下界——索引空间的信息论极限。⏰本周节奏:理论密度较高,需仔细消化。🎯考试关联:CSA 与 Succinct 结构是期末可能的论述题。🧪Tutorial/Lab:实现 Rank/Select 操作。📌作业关联:Assignment 3 可能涉及 CSA。⚠️易错点:Rank/Select 的 Superblock/Block 划分计算错误;空间分析时忘记计算辅助结构开销。
Week 8倒排索引与 Web 搜索
📖核心知识点:**Inverted Index**——Web 搜索引擎的核心数据结构。Posting List 的压缩——Variable Byte Encoding、Gamma/Delta Coding、PForDelta。Index Construction——Sort-based vs Merge-based 策略。TF-IDF 评分与 BM25 排序模型基础。⏰本周节奏:从压缩理论转向搜索引擎实践。🎯考试关联:倒排索引的构建与压缩方法是高频考题。🧪Tutorial/Lab:实现 Variable Byte 编码并构建小型倒排索引。📌作业关联:Assignment 3——搜索引擎组件。⚠️易错点:Posting List 压缩后解码时 Delta 累加错误;TF-IDF 归一化遗漏。
Week 9高级搜索技术
📖核心知识点:Query Processing 策略——**DAAT(Document-at-a-Time)vs TAAT(Term-at-a-Time)**。Top-k 查询优化——MaxScore、WAND 算法。短语查询(Phrase Query)与位置索引。近似搜索——Edit Distance 与 q-gram 索引。⏰本周节奏:理解搜索引擎查询优化策略。🎯考试关联:查询处理策略对比是可能的论述题。🧪Tutorial/Lab:实现 DAAT 查询处理。📌作业关联:Assignment 3 的查询处理模块。⚠️易错点:MaxScore 剪枝条件计算错误;位置索引的存储与查询开销被低估。
Week 10前沿主题与总复习
📖核心知识点:Grammar Compression(如 Re-Pair)、Repetitive Text 压缩(如 RLBWT)。Neural Text Compression 的最新进展。DNA 序列压缩与生物信息学应用。课程全面回顾——压缩理论 → 索引结构 → 搜索技术的知识体系。⏰本周节奏:总复习,整理全课知识脉络。🎯考试关联:期末覆盖全部 10 周,计算题与论述题各半。🧪Tutorial/Lab:Past Exam 练习与答疑。📌作业关联:所有 Assignment 已提交。⚠️易错点:只记算法步骤不理解为什么该算法能工作;忽略时间/空间复杂度的理论分析。