摘要: 我们平时说一个算法是 \(O(n)\)、\(O(n \log n)\)、\(O(\sqrt n)\),大多是在一种心照不宣的模型里说的:数组下标、整数加减、比较、取模,都算作一次“基本操作”。这套说法对大多数工程代码很有用。你在 64 位机器上排序一批整数,或者用哈希表查几个 key,通常不需要追问 阅读全文
posted @ 2026-05-29 16:41 Ofnoname 阅读(7) 评论(0) 推荐(0)
摘要: 很多算法的分析都会从一句熟悉的话开始:期望(平均)时间是 ……。这句话好用、干净,也常常是真的。 比如说,随机快速排序的期望时间是 \(O(n \log n)\),哈希表一次查找的期望时间是 \(O(1)\),跳表的期望查找时间是 \(O(\log n)\)。期望复杂度告诉我们,一个涉及随机性的程序 阅读全文
posted @ 2026-05-29 11:27 Ofnoname 阅读(104) 评论(0) 推荐(1)
摘要: 很多随机算法并不是靠“运气好”工作,而是靠候选空间里存在大量可用证据。只要证据足够密集,随机抽样就不再像碰运气,而更像一种低成本的搜索策略。 对于某个输入 \(x\),如果额外给出一段信息 \(w\),我们就能比直接求解更高效地验证某个结论。在计算复杂性中,这类辅助信息通常被称为 witness,也 阅读全文
posted @ 2026-05-28 14:22 Ofnoname 阅读(141) 评论(0) 推荐(1)
摘要: 随机算法并不是把正确性交给运气。更准确地说,它是在设计一种承诺:哪些东西必须保证,哪些东西允许带概率,概率又被限制在什么范围内。 有些随机算法把不确定性放在“答案质量”上。它会在规定时间内结束,但答案可能偶尔出错。另一些随机算法则反过来:答案一旦输出就一定正确,但具体运行多久由随机过程决定。它们被挂 阅读全文
posted @ 2026-05-27 21:52 Ofnoname 阅读(15) 评论(0) 推荐(0)
摘要: 在离散时间的量子演化里,我们经常面对一串小规模 dense 方阵。它们可能来自 Trotter 分解、分段常哈密顿量、控制脉冲序列,或者某个时间网格上的局部传播子。把这些矩阵记作 \(A_0, A_1, \dots, A_{n-1}\),最直接的问题是计算最终连乘 \(A_0 A_1 \cdots 阅读全文
posted @ 2026-05-27 17:07 Ofnoname 阅读(7) 评论(0) 推荐(0)
摘要: 哈希表通常被描述成“均摊 \(O(1)\)”的数据结构。这个说法在日常编程里很好用,但它暗含了一个前提:输入没有系统性地撞向同一批桶。只要这个前提失效,哈希表就会从一个轻快的工具变成一条很长的链表,或者一段反复探测的泥潭。 当输入可能很坏,或者你无法相信输入分布时,怎样用随机化把坏运气挡在门外。 确 阅读全文
posted @ 2026-05-27 11:55 Ofnoname 阅读(162) 评论(0) 推荐(0)
摘要: 很多概念都叫“哈希”:哈希表里的 hash,SHA-256 这样的密码学哈希,局部敏感哈希 LSH,一致性哈希,滚动哈希,Bloom Filter 里的多重哈希,甚至还有专门存密码用的 bcrypt、Argon2。它们名字相似,实际目标差得很远。 一个共同抽象可以写成:给定输入 \(x\),要设计哈 阅读全文
posted @ 2026-05-26 19:03 Ofnoname 阅读(17) 评论(0) 推荐(0)
摘要: 程序里经常会遇到一种看似朴素、实际很贵的问题:两个东西是不是一样? 它可能是两个字符串、两个文件、两个集合、一段文本里的子串,或者三个矩阵是否满足 \(A \cdot B = C\)。如果对象本身很大,尤其是在对象需要跨机器通信、被反复比较、以流式方式到达,或者比较结果只需要高概率可靠时,直接逐个字 阅读全文
posted @ 2026-05-26 18:30 Ofnoname 阅读(128) 评论(0) 推荐(0)
摘要: 石子合并大概是很多人学区间动态规划时遇到的第一道例题。题目很简单:一排石子,每次合并相邻两堆,代价是合并后的石子总数,问把所有石子合并成一堆的最小总代价。经典解法是设 \(\text{dp}[i][j]\) 为合并区间 \([i,j]\) 的最小代价,前缀和求出区间和 \(\text{cost}(i 阅读全文
posted @ 2026-05-25 16:16 Ofnoname 阅读(12) 评论(0) 推荐(0)
摘要: 矩阵乘法看起来太基础了,以至于很容易被当成一个已经“没有算法空间”的操作。两个 \(n \times n\) 矩阵相乘,按定义写三层循环,时间复杂度是 \(O(n^3)\): \[C_{ij} = \sum_{k=1}^{n} A_{ik}B_{kj} \]这个式子直接翻译成代码很自然:每个 \(C 阅读全文
posted @ 2026-05-24 21:52 Ofnoname 阅读(15) 评论(0) 推荐(0)