# 1. Hopcroft-Karp 在二分图上的 BFS 分层、DFS 阻塞与时间复杂度 O(E√V) 的推导如何走通? A 它只使用 BFS 而不使用 DFS,复杂度为 O(E log V) B BFS 分层图可以随意复用在后续轮次中不用重建 C 它的最坏复杂度是 O(VE),与朴素增广路相同 D 匹配数至少增加 √V 后,最短增广路长度必然超过 √V,从而只需 O(√V) 轮 ✓ 正确答案
# 2. Tarjan 的强连通分量算法如何在单次 DFS 内同时记录时间戳、低值、根栈与回溯? A 算法需要两遍 DFS,第一遍排序第二遍反图上跑 B low[v] 只由树边更新,不看回边 C 当 dfn[v]==low[v] 时说明 v 及其子树已全部是一个 SCC,可弹出栈 ✓ 正确答案 D 跳出栈的条件是 low[v]==0
# 3. 后缀数组与后缀树中如何用后缀数组实现最长重复子串与模式匹配,构造算法复杂度? A SA 无法表达 LCP 信息 B 后缀数组匹配模式复杂度是 O(n log n) C 后缀树必须用 O(n log n) 构造,无法线性完成 D 最长重复子串长度等于 height 数组的最大值 ✓ 正确答案
# 4. LSD 与 MSD 基数排序用于字符串排序中 LSD 要求稳定排序,MSD 递归切分时如何控制递归深度与内存? A LSD 的每次低位排序必须稳定,才能保证高位权优先 ✓ 正确答案 B MSD 无需递归,是纯迭代算法 C LSD 对共享长前缀的串效率最高 D MSD 的递归深度与字符串数量成正比
# 5. 后缀数组的用途汇总中最长重复子串、不同子串计数与模式出现次数如何用 SA 加 LCP 在 O(n) 回答? A height 数组需要用 O(n log n) 才能构造 B 最长重复子串等于 height 的最小值 C 模式出现次数无法用 SA 区间表示 D 本质不同子串数 = n(n+1)/2 − Σ height ✓ 正确答案
# 6. Burrows-Wheeler Transform 的 LF-mapping、排序后缀数组与 run-length 编码为什么能提高压缩率? A BWT 与后缀数组无关 B BWT 是不可逆的,无法用于无损压缩 C LF-mapping 用于把文本展开成后缀数组 D BWT 把相同上下文的字符聚到相邻位置,从而利于 run-length 压缩 ✓ 正确答案
# 7. Ford-Fulkerson、Edmonds-Karp、Dinic、SAP、GAP 优化在 BFS/DFS 层数、阻塞流与 gap heuristic 上的迭代逻辑是什么? A Ford-Fulkerson 的时间复杂度与容量无关 B Edmonds-Karp 用 DFS 找增广路 C GAP 启发式是增加层数以加速 D Dinic 用 BFS 分层后 DFS 求阻塞流,复杂度上界 O(V²E) ✓ 正确答案
# 8. Gabow SCC 算法与 Kosaraju 算法的双 DFS 路径相比时间常数与栈深? A Kosaraju 的时间复杂度是 O(V+E) 但常数优于 Gabow B Gabow 需要两遍 DFS C Kosaraju 需要两遍 DFS 且需存储反图,常数大于单遍算法 ✓ 正确答案 D 所有 SCC 算法都必须建反图
# 9. Hopcroft-Karp 在 10^6 节点、10^7 边上为何需要 ELS、CSR、静态数组? A 动态分配在每次 BFS 中开销可忽略 B 链表邻接表在大图上比 CSR 更快 C CSR 用 offset+adj 两个数组紧凑存储邻接表,缓存友好 ✓ 正确答案 D ELS 是确保 BFS 正确性的必要条件
# 10. KMP 的 prefix function π[i] 与 Z-function 之间的等价性和边界下标如何互换? A π[i] 表示 s[i:] 与 s 的 LCP B Z[i] 表示 s[0..i] 的最长真 border C 两者描述同一信息,可在 O(n) 内互相转换 ✓ 正确答案 D 两者无法互相推导
# 11. LCP array 的 Kasai 算法、RMQ 区间最小查询、Phi/PLCP 数组如何服务 longest common substring? A Kasai 算法构造 height 需要 O(n log n) B 任意两后缀的 LCP 等于它们之间相邻 height 的最小值 ✓ 正确答案 C 最长公共子串与 height 无关 D RMQ 无法用于 LCP 查询
# 12. Manacher 算法如何在线性时间内同时给出奇偶回文半径?请对比 DP 与滚动哈希。 A 它必须用 DP 的 O(n²) 转移 B 它利用当前最右回文右端点与对称中心复用信息,达到 O(n) ✓ 正确答案 C 它只能处理奇回文 D 它的正确性依赖哈希无碰撞
# 13. RE2、grep、ICU、Boost regex 等引擎的自动机构造、回溯、NFA 模拟在指数爆炸上的不同选择是什么? A 所有引擎都采用 Thompson 构造 B 回溯引擎总能在最坏情况下线性完成 C 捕获组是 NFA 模拟引擎的天然特性 D NFA 模拟引擎(如 RE2)保证线性时间,避免指数回溯 ✓ 正确答案
# 14. 为什么 AC 自动机的 failure 边常使用 BFS 而非 DFS?请解释构造复杂度的差别。 A 用 BFS 可保证子节点的 failure 由已确定的父链递推,总复杂度 O(n) ✓ 正确答案 B DFS 构造 failure 的复杂度总是 O(n) C failure 指向最长前缀所在节点 D failure 边构造与遍历顺序无关
# 15. 2-SAT 的蕴含图、强连通分量、拓扑序与可行赋值如何在线性时间内求取? A 子句 (x∨y) 只产生一条蕴含边 B x 与 ¬x 在同一 SCC 时无解,否则按拓扑序可线性赋值 ✓ 正确答案 C 2-SAT 需要指数级时间判定 D 拓扑序赋值不保证正确性
# 16. FM-Index 的 occurrence array、checkpoint、backward search 与 bitvector rank/select 如何支持子串查询? A backward search 从 P 末字符开始用 LF 逐步扩展匹配区间 ✓ 正确答案 B occurrence 数组必须全量存储,无法压缩 C FM-Index 需要在查询时解压全文 D rank 操作用于构建后缀数组而非查询
# 17. Kuhn-Munkres 算法的可行顶点标号、相等子图、交替树、复杂度 O(n^3) 的关键不变量? A 交替树用于提高可行标号的值 B 可行标号要求 l(x)+l(y) ≤ w(x,y) C 相等子图中的完全匹配即全局最大权匹配 ✓ 正确答案 D KM 复杂度为 O(n²)
# 18. Trie 与 Ternary Search Trie 中字符集大时的存储优化与查找性能对比? A Trie 在大字符集下比 TST 更省内存 B Trie 每节点固定 3 个指针 C TST 查找时间与字符集大小成正比 D TST 每节点 3 个指针,用字符比较换空间,适合大字符集 ✓ 正确答案
# 19. Rabin-Karp 滚动哈希中哈希碰撞的概率分析与多重哈希防御? A 单模数越大碰撞概率越高 B 滚动哈希更新必须 O(k) C 碰撞不影响正确性,无需处理 D 单哈希碰撞概率约为 O(k/M),可加多个独立模数降低 ✓ 正确答案
# 20. 双哈希与生日悖论中单个 64 位哈希在 10 亿量级输入下碰撞概率不可忽略,双哈希如何把概率压到可忽略? A 64 位哈希在 10^9 输入下碰撞概率约 n²/2/2^64,不可忽略 ✓ 正确答案 B 双哈希把碰撞概率提高到单哈希的平方 C 生日悖论与哈希无关 D 64 位哈希在任何规模下碰撞概率都为 0
# 21. 正则表达式到 NFA、ε-NFA、DFA 的 Thompson 构造与子集构造在什么规模下必须切分或状态压缩? A ε-NFA 比 DFA 状态更少所以总优先构建 B Thompson 构造总是产生指数状态 C 子集构造可能使 DFA 状态数达到 2^|Q|,规模大时需切分或改 NFA 模拟 ✓ 正确答案 D DFA 状态数不会超过 NFA 状态数
# 22. 流式字符串匹配中固定 sliding window 与动态字典更新为何常使用滚动哈希 + 候选集? A 滚动哈希每次滑动都需重算整个窗口 B 滚动哈希让窗口滑动时 O(1) 更新,候选集只对同哈希模式校验 ✓ 正确答案 C 候选集必须包含字典中所有模式 D 动态字典更新会导致哈希失效
# 23. 给出 KMP 预处理的最坏情况下界,并对比 Boyer-Moore 坏字符/好后缀规则在英文/二进制模式上的实际胜率。 A KMP 预处理下界是 O(n) B BM 在英文大字符集上靠坏字符跳跃常比 KMP 快,但在二进制小字符集上优势减弱 ✓ 正确答案 C BM 最坏情况也是 O(n+m) D 坏字符规则在二进制上跳跃最大
# 24. AC 自动机在敏感词替换、IDS、DNA motif 扫描、模式字典容量 10k–10M 时的内存与初始化代价? A 初始化复杂度与字典中模式数无关 B 字符集越大内存越小 C 内存主要取决于节点数×字符集大小×指针,10M 模式可能需数 GB ✓ 正确答案 D DNA 字符集(4 字符)比 ASCII 更占内存
# 25. APX-hardness 与多项式时间近似方案 PTAS、FPTAS 的关系如何在 MAX-3SAT、METRIC-TSP 上落地? A PTAS 与近似常数无关 B FPTAS 复杂度关于 1/ε 指数增长 C METRIC-TSP 有任意 ε 的 PTAS D APX-hard 问题在 P≠NP 下无 PTAS,如 MAX-3SAT ✓ 正确答案
# 26. Aho-Corasick 自动机的 goto、failure、output 三表如何构造,并怎样在文本流上做增量匹配? A output 只在 goto 命中时报告,不经 failure B failure 表用 BFS 构建,指向最长真后缀对应的前缀状态 ✓ 正确答案 C 匹配时失配必须回退到 root 重新扫描 D AC 匹配复杂度为 O(n·m)
# 27. B 树与 LSM 在随机写、顺序写、压缩、读路径上的对比?分别适合什么 OLTP 负载? A 两者原地更新且读路径相同 B B 树随机写放大更大但读路径更慢 C LSM 点查无需检查多层 SSTable D LSM 把随机写转成顺序写,用压缩换写吞吐,适合写密集负载 ✓ 正确答案
# 28. B 树的阶、节点分裂、合并与延迟合并如何影响磁盘页 I/O 与写放大? A 分裂只发生在删除时 B 阶越大树越高 C 延迟合并会立即增加写放大 D 页大小决定树高与点查 I/O,分裂/合并频率影响写放大 ✓ 正确答案
# 29. Dinic 的当前弧优化、分层图压缩与并发/并行最大流在多核环境下的瓶颈是什么? A 分层图压缩会引入更多边 B 当前弧优化避免重复扫描已用尽边,每轮阻塞流降到 O(E) ✓ 正确答案 C 多核并行时共享容量数组无竞争 D 当前弧优化增加每轮复杂度
# 30. Huffman 编码的最优性证明、长度受限变体、范式 Huffman 与 B-ary 树如何兼顾压缩率和块大小? A 每步合并两个最小权可得到最优前缀码,压缩率最优 ✓ 正确答案 B 长度受限变体会降低压缩率到非最优 C 范式 Huffman 需要传完整码树 D B-ary 变体每步合并两个节点
# 31. Intractability 中“反多项式等价”与“反指数等价”分别在密码学与算法竞赛中的应用? A 反多项式等价与复杂度类无关 B 指数归约用于算法竞赛证明多项式可解 C 多项式归约保持多项式可解性,用于 NP 完全性;指数归约用于密码学困难性 ✓ 正确答案 D 归约只能单向保持难度
# 32. Intractability 中 co-NP、PSPACE、#P、APX、FPT、ETH 与 Strong ETH 的关系以及它们对应的难解类? A FPT 属于 APX 的子类 B NP ⊆ PSPACE,co-NP 是补问题的 NP,#P 是计数类 ✓ 正确答案 C ETH 断言 3SAT 存在多项式算法 D #P 比 NP 更简单
# 33. LZW 的码本初始大小、CODE_MAX、clear code 与 early change 在 GIF/TIFF 中的差异是什么? A 所有格式都用固定位宽 B GIF 用 clear code 重置码本并可能 early change,TIFF 无 clear code 用可变位宽 ✓ 正确答案 C clear code 用于增加码本 D LZW 码本从 2^32 开始
# 34. Planar separator、Lipton-Tarjan 定理与图划分、几何算法、近似算法中的递归切分如何用? A 递归切分不能用于近似算法 B 分离器大小为 O(n) C 分离器只适用于非平面图 D 任意 n 顶点平面图存在 O(√n) 分离器,可分治求解 ✓ 正确答案
# 35. Push-Relabel 的 FIFO、Highest-Label、Wave 与全局间隙启发式各自适合的网络类型? A Highest-Label 选择最高标号活动点,减少 relabel,适合深图 ✓ 正确答案 B FIFO 总是最快的 C gap 启发式增加标号层数 D Wave 用于单点处理
# 36. Push-Relabel 的 relabel、push、discharge 调度、highest-label 与 gap/全局重标对性能的影响是什么? A highest-label 总是增加 relabel B relabel 次数与性能无关 C gap 与全局重标能减少 relabel 次数,显著提升性能 ✓ 正确答案 D discharge 只做 push 不做 relabel
# 37. P、NP、NP-Hard、NP-Complete 四个复杂度类的定义、彼此关系与共同点反例? A P 是 NP 的真子集 B NP-Hard 问题一定属于 NP C NP-Complete = NP ∩ NP-Hard,而停机问题属于 NP-Hard 但不属于 NP ✓ 正确答案 D NP-Complete 一定属于 P
# 38. Rabin-Karp 的滚动哈希、模运算、double hashing 与多模式切分如何控制碰撞概率? A 模数越大碰撞概率越高 B 双哈希把碰撞概率降到单哈希的平方,逐字符确认消除误报 ✓ 正确答案 C 多模式切分会增加碰撞概率 D 滚动哈希无法更新窗口
# 39. Sentinel 字节、终止符、$符号在 suffix array 与 FM-Index 中为什么必须最小且唯一? A $ 必须最小且唯一,保证后缀两两不同且排序唯一 ✓ 正确答案 B $ 可以大于所有字符 C 终止符可以多次出现 D 无终止符时排序依然唯一
# 40. Steiner Tree 的 2-approximation(基于 MST)、11/7 近似、欧几里得平面下 PTAS 的核心思想与不可近似性边界? A 基于 MST 可得 2-近似,欧几里得平面有 PTAS,一般图 APX-hard ✓ 正确答案 B 一般图 Steiner Tree 有 PTAS C MST 长度恒等于最优 Steiner 树 D 欧几里得平面无近似算法
# 41. Suffix Array 与 Suffix Tree 在常数因子、易实现性、内存上的工程权衡是什么? A Suffix Tree 内存比 SA 更小 B SA 内存紧凑、易实现,是 Suffix Tree 的紧凑替代 ✓ 正确答案 C SA 无法配合 LCP 做查询 D Suffix Tree 构建比 SA 简单
# 42. Suffix Array 的 SA-IS、DC3、Skew 线性构造算法在内存与运行时间上的取舍是什么? A SA-IS 需要 O(n²) 空间 B DC3 常数比 SA-IS 更小 C 线性构造比 O(n log n) 倍增更慢 D SA-IS 用诱导排序,常数小、内存省,优于 DC3 的大常数 ✓ 正确答案
# 43. Suffix Automaton 的 SAM 性质、最小表示、子串出现次数统计、endpos 等价类如何证明? A 状态数与 n 成正比但常数可到 n² B 状态数 ≤2n−1,出现次数可由 link 树后序累加得到 ✓ 正确答案 C 出现次数无法从 SAM 统计 D endpos 等价类与状态无关
# 44. Suffix Automaton 的扩展树 link/cnext 结构和广义 SAM 如何支持多串查询? A 多串插入必须重建整个自动机 B link 边用于转移字符 C 广义 SAM 把多串并入同一自动机,支持多串子串统计 ✓ 正确答案 D 广义 SAM 无法统计出现次数
# 45. Z-function 的朴素 Z-array、Z-box 维护和与 prefix function 的转换关系是什么? A Z 与 π 无法转换 B 朴素 Z 实现已经是 O(n) C Z-box 维护最右匹配区间复用信息,总复杂度 O(n) ✓ 正确答案 D Z-box 使算法复杂度 O(n²)
# 46. 为什么 Huffman 对极端偏斜分布需要 length-limited 修正,否则编码长度可能爆炸? A length-limited 会增大码长到 n B 偏斜越长码长越短 C 码长与符号数无关 D 极端偏斜下最长码长可接近 n,需 length-limited 修正 ✓ 正确答案
# 47. 为什么 Karp 列表中的 STEINER-TREE 没有强不可近似性?请给近似比下界。 A 下界接近无穷大 B 它是强不可近似的,近似比无界 C 它有 PTAS D 它有常数近似(2/1.55)但 APX-hard,近似比下界为常数(如 96/95) ✓ 正确答案
# 48. 为什么“NP 完全问题没有多项式解”不直接等于“无法工程化”请给三个反例与可接受的近似。 A 有界树宽不会帮助求解 B NP 完全问题在任何实例上都无法求解 C 近似算法只在 P=NP 时有效 D NP 完全是最坏情况下界,实际实例可借规模/结构/近似/启发式求解 ✓ 正确答案
# 49. 为什么常用 SAP/GAP 模板实现 Dinic?请从常数因子、调试性和竞赛经验分析。 A GAP 启发式增加复杂度上界 B SAP 需要显式分层数组 C SAP+GAP 是 Dinic 的隐式标号实现,常数小、调试简单 ✓ 正确答案 D SAP 与 Dinic 复杂度不同
# 50. 为何 FM-Index 的查询是 O(|P|) 但常数很大,请说明 rank/select 块大小选择的影响? A 查询常数等于 O(1) B 块越小 rank 越慢 C rank 与块大小无关 D 查询 O(|P|) 但每步 rank 常数大,块大小是空间/时间权衡 ✓ 正确答案
# 51. 从 3SAT 到 HAMILTON-CYCLE、TSP、SUBSET-SUM 的多步归约如何避免中间问题泄漏? A 只要单向蕴含即可 B 归约需保证双向蕴含且构造多项式、可逆,避免语义泄漏 ✓ 正确答案 C 归约可以放大实例规模到指数 D 组件可互相干扰
# 52. 从 3SAT 到 INDEPENDENT-SET、VERTEX-COVER、CLIQUE、HAMPATH 的归约如何构造可逆映射? A 独立集与 3SAT 无关 B 只需建变量节点 C 每子句建三角形+变量冲突边,独立集大小=子句数当且仅当可满足 ✓ 正确答案 D 归约不是可逆的
# 53. 从 SUBSET-SUM 到 PARTITION、KNAPSACK、BIN-PACKING 的归约如何保持多项式与可逆性? A KNAPSACK 把每个数作物品、目标作容量,解可逆映射回子集 ✓ 正确答案 B PARTITION 与 SUBSET-SUM 无关 C 归约会改变元素集合 D 归约需要指数时间
# 54. 前缀/后缀混合搜索的 Indexing by FM-Index 与 hybrid Suffix Array-Tree 各有什么适用负载? A FM-Index 空间紧凑适合子串计数,hybrid SA-Tree 适合混合前缀/后缀查询 ✓ 正确答案 B FM-Index 无法做子串计数 C hybrid 结构空间更小 D 两者都只支持精确前缀
# 55. 单位容量网络、二部图匹配、最大匹配与最小点覆盖、Konig 定理在任务分配中的工程对应? A 最小点覆盖与最大匹配无关 B 二部图匹配需要非单位容量 C Konig 定理只适用于一般图 D 最大匹配=单位容量最大流,Konig 定理给出最大匹配=最小点覆盖 ✓ 正确答案
# 56. 外存模型的 cache-oblivious B 树、log-structured merge tree、buffered repository tree 的设计差异? A COB 树需要知道内存大小 B LSM 有最优单点读 C COB 树优化单点访问、LSM 适合写密集、buffered repository tree 适合批量操作 ✓ 正确答案 D buffered repository tree 不适合批量操作
# 57. 如何测试正则引擎在病态输入上的最坏情况?举出 cataclysmic backtracking 的真实反例。 A 回溯引擎对任何输入都线性 B 模式如 ^(a+)+$ 对 a 串加不匹配尾会指数级回溯 ✓ 正确答案 C 嵌套量词不会导致指数回溯 D NFA 模拟引擎也会指数回溯
# 58. 平面图的 Euler 公式、面着色、4 色定理与多项式时间分离器在子图同构中的作用? A 4 色定理保证平面图可任意着色 B 平面图子图同构是 NP 完全 C Euler 公式给出 E≤3V−6,平面分离器使平面子图同构可多项式 ✓ 正确答案 D 平面图无分离器性质
# 59. 怎样把目标识别问题归约到 3SAT 并验证归约的语义保真度? A 归约只需单向蕴含 B 只需编码约束无需验证 C 用变量编码决策、子句编码约束,Tseitin 变换得 3 子句并验证双向蕴含 ✓ 正确答案 D 3SAT 无法表达互斥约束
# 60. 怎样设计一组单元测试覆盖 B 树节点分裂与合并的左右边界? A 应覆盖分裂/合并的临界键数与左右兄弟方向及根特例 ✓ 正确答案 B 只测根节点即可 C 合并不会改变树高 D 分裂不需更新父键
# 61. 最大流最小割定理、Menger 定理、连通度、边/点割与有向/无向差异如何在工程问题中应用? A 有向图无割概念 B 连通度与最大流无关 C 最大流=最小割,Menger 给出连通度=最大不相交路径数 ✓ 正确答案 D 点割与边割等价
# 62. 网络流的最小费用流、successive shortest path、cycle canceling 与 cost scaling 在物流与排产中如何选型? A 三种算法复杂度相同 B cycle canceling 不适合负环 C cost scaling 复杂度与流量成正比 D 小规模用 successive shortest path,大规模成本差异大用 cost scaling ✓ 正确答案
# 63. Commentz-Walter 算法如何将 Boyer-Moore 思想扩展到多模式匹配,why does it not dominate AC? A 它扩展 BM 的跳跃到多模式,但最坏 O(n·m),不如 AC 稳健 ✓ 正确答案 B 它最坏线性且构造简单 C 它主导多模式匹配 D 它不需要 trie
# 64. Wu-Manber 算法的字符块大小、shift 表、hash 表、稀疏跳跃如何在大字典上控制误命中? A B 字符块哈希决定 shift 跳跃,稀疏 hash 表控制误命中与内存 ✓ 正确答案 B B 越大跳跃越少 C 它不需要 hash 表 D 它最坏线性
# 65. 弦图(Chordal Graph)、完美图、间隔图、平面图、强弦图、树宽、团数与最小填充的判定与构造? A 平面图是弦图 B 弦图由完美消除序判定,间隔图是弦图特例,树宽与最小填充相关 ✓ 正确答案 C 完美图不含弦图 D 最小填充与树宽无关
# 66. 怎样为一个 5GB 文本库选择 AC vs Wu-Manber vs Suffix Automaton 的索引? A 对 5GB 文本建 SAM 内存很小 B Wu-Manber 最坏线性适合全库 C 固定大量模式全库扫描首选 AC,最坏线性且内存可控 ✓ 正确答案 D AC 无法处理大模式集
# 67. 正则表达式匹配的自动机中 NFA 模拟与回溯式引擎的性能差异? A NFA 模拟线性但特性受限,回溯引擎功能丰富但最坏指数 ✓ 正确答案 B 回溯引擎最坏线性 C NFA 模拟支持反向引用 D 两者最坏相同
# 68. 最小表示法(Duval 算法)与 Lyndon 分解中如何在线性时间内求循环同构串的字典序最小者? A Duval 算法只能比较两个串 B 最小旋转需要 O(n²) C Lyndon 分解与最小表示无关 D Duval 算法在线性时间内求最小旋转,基于 Lyndon 分解 ✓ 正确答案