logo
COMP93196 学分

Web 数据压缩与搜索

新南威尔士大学·University of New South Wales·悉尼

COMP9319《Web 数据压缩与搜索》是 新南威尔士大学 的公开课程页面。当前可确认的信息包括 6 学分,难度 超难,公开通过率 78%。 页面已整理 10 周教学安排,3 个重点考核,方便你快速判断工作量、考核结构和适配度。 课程简介摘要:课程定位 COMP9319 是 UNSW 计算机硕士专业在‘高效存储与高性能索引’维度的顶尖硬核课。

💪 压力
5 / 5
⭐ 含金量
5 / 5
✅ 通过率
0%

📖 课程概览

选课速读: COMP9319《Web 数据压缩与搜索》是 新南威尔士大学 的公开课程页面。当前可确认的信息包括 6 学分,难度 超难,公开通过率 78%。 页面已整理 10 周教学安排,3 个重点考核,方便你快速判断工作量、考核结构和适配度。 课程简介摘要:课程定位 COMP9319 是 UNSW 计算机硕士专业在‘高效存储与高性能索引’维度的顶尖硬核课。
### 课程定位 COMP9319 是 UNSW 计算机硕士专业在‘高效存储与高性能索引’维度的顶尖硬核课。它解决了统治大数据时代最本质的矛盾:当数据量(如 Web 网页、DNA 序列)达到海量级时,如何在不解压的情况下进行极速搜索?如何设计占用内存极小但查询极快的索引结构?它是通往 Google 搜索引擎架构组、资深生物信息学开发、及高性能后端优化岗位的顶级通行证。它将高深的字符串算法、信息论压缩与现代自适应索引深度整合,是培养‘具备算法极致优化能力开发者’的必修课。 ### 技术栈与学习内容 课程以 C/C++ 为核心开发语言(追求极致性能)。学习内容涵盖:无损压缩算法(Huffman, Lempel-Ziv 族, Arithmetic Coding)、最为核心的‘后缀数组 (Suffix Arrays) 与后缀树’、最具现代感的‘BWT (Burrows-Wheeler Transform) 与 FM-index’——这是现代搜索引擎与 DNA 比对器的心脏。此外,课程重点研究了自索引 (Self-indexing) 技术以及高效的倒排索引压缩。学生将学习如何手写一个能在数秒内搜索数 GB 压缩文本的系统。课程强调‘内存占用、压缩率与查询速度的极限权衡’。 ### 课程结构 10 周理论高强度输出与两个极具挑战的算法项目结合。评估体系以‘工程硬核度’著称:包含针对压缩算法推演的每周 Lab、两个要求‘在极低内存约束下完成海量搜索’的大型编程项目(Major Project,涉及实现一个基于 FM-index 的模式匹配系统)、以及一场强调算法证明、BWT 变换分析与搜索代价判定的期末综合大考。该课极其强调‘手敲高性能 C 代码’的能力。 ### 适合人群 计算机硕士大三/大四、或打算从事搜索引擎底层优化的理工科生。必须具备极其扎实的算法与数据结构基础(COMP9024/2521)。如果你想在面试中谈论‘如何在不载入内存的情况下搜索 100GB 文本’、或者渴望在未来的基因组学搜索中建立核心算法优势,这门课是你的神功。建议每周投入 30 小时以上进行‘逐位 (Bit-level)’的代码优化。

🧠 大神解析

📊 课程难度与压力分析

COMP9319 是计算机系公认的‘智商与耐力’的双重巅峰。难点不在于代码量,而在于‘位级别的精确度 (Bit-level precision)’。当你手写一个算术编码器并涉及高精度浮点数转二进制区间时,如果你错了一位,你的整个解压过程就会报错。压力主要来自于 FM-index 项目,你需要在一个只有几十 MB 内存的虚拟环境中搜索几 GB 的文本,如果你的辅助数组(如 Occ 数组)设得太大,你的程序会因为‘内存溢出’而挂掉。及格极难,拿 HD 需要你对‘时间空间权衡 (Space-Time Trade-off)’有像素级的掌控力。挂科风险显著存在于对‘BWT 逆变换’物理本质的模糊认知上。

🎯 备考重点与高分策略

高分秘籍:‘得 FM-index 搜索路径者得 Distinction,得小波树证明者得 HD’。期末考试中,手动执行一个带 LCP 数组的后缀数组区间搜索是必考的 30 分大题。一定要练到能秒写出‘LF-mapping 的递归定义’。重点攻克‘如何利用 Rank/Select 操作优化 BWT 的 Occ 统计’,那是区分普通码农与顶级高性能算法专家的标志。备考时,教材《Compact Data Structures》(Gonzalo Navarro) 是唯一的圣经。对于项目,HD 的关键在于‘极简存储’——不仅功能对,还要通过代码证明你使用了 Bit-packing 来压榨每一位空间。重视 Tutorial 里的每一道熵权计算题。

📚 学习建议与资源推荐

神级资源:Gonzalo Navarro 的个人主页,那里有全球最先进的紧凑数据结构论文。如果 BWT 理解不了,强烈推荐去 YouTube 搜‘MIT - Algorithms for DNA Sequencing’专题。最重要的建议:养成‘先推导位掩码 (Bitmask),再写实现’的习惯。利用好 C++ 的 `std::bitset` 或手写位操作库。学会使用 `Valgrind --tool=massif` 监控你的堆内存占用。加入 UNSW 的算法研究组探讨高性能计算。

⚠️ 作业与 Lab 避坑指南

项目避坑:千万不要在第 10 周才去集群提交代码!由于评测环境通常基于特定的 Linux 内核和位宽,你的代码在 Mac 上能跑但在评测机上可能会报错。Assignment 写作中,严禁有任何冗余的数据结构副本,尽量使用‘原地 (In-place)’算法。此外,注意 Final 考试有 Hurdle,关于‘前缀编码基本定义’的基础证明如果错太多会直接挂。考试时,带好直尺和各色铅笔,画出的后缀树拓扑图必须清晰标准。注意:分清‘压缩搜索’与‘先解压再搜索’在效率上的数量级差异。

💬 过来人经验分享

学长建议:这门课是为你进入 Google 搜索架构部、Illumina 测序研发组或顶级量化交易(处理海量历史数据)拿的‘神谕通行证’。学完后,你眼中的数据不再是字节,而是一个由熵增限制、位流分布和后缀链接定义的完美信息压缩体。建议找一个同样追求‘算法极致美感’的队友共同打磨代码。拿 HD 的关键:在报告中展现出你对‘自索引结构在非易失性内存 (NVM) 中的潜在优化’的深刻理解。坚持住,通关 9319,你就真正具备了挑战计算科学最核心难题——效率——的底层基因。这张成绩单是进入全球顶级高性能开发部最有力的金字牌。记住:最好的存储,是能直接搜索的压缩。

📅 每周课程大纲

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 已提交。⚠️易错点:只记算法步骤不理解为什么该算法能工作;忽略时间/空间复杂度的理论分析。

📋 课程信息

学分
6 Credit Points
含金量
5 / 5
压力指数
5 / 5
课程类型
elective

💬 学生评价

💭

还没有同学评价这门课,成为第一个分享体验的人吧

写点评