COMP5270 Assignment 2 Problem 2(d), 基于哈希函数去随机化的 MaxCut

COMP5270 Assignment 2 Problem 2(d), 基于哈希函数去随机化的 MaxCut

中文题目

实现基于哈希函数的去随机化近似算法求 MaxCut。对于 \(n=2\)\(100\),在 \(K_n\)\(C_n\) 上运行,记录结果(平均值、最小值、最大值、标准差),对结果进行简要评论。

原题

Implement the derandomised approximation algorithm for MaxCut based on hash functions...

知识点

  • 去随机化(derandomization)
  • 两两独立哈希函数(pairwise independent hash functions)
  • 期望的线性性
  • 条件化方法(method of conditional expectations)
  • 固定种子的去随机化

从随机化到去随机化

Problem 2(c) 的随机化算法依赖对每个顶点的独立随机抛硬币。去随机化(derandomization)的目标是:用确定性的算法模拟随机算法能达到的效果,而不真正使用随机性。

核心思路是:用两两独立(pairwise independent)的哈希函数替代完全独立的随机比特。虽然独立程度降低了,但足以保持可预测的期望性质。


为什么两两独立哈希函数够用

回想随机化算法的核心:每个顶点 \(v\)\(1/2\) 概率放入 \(S\),以 \(1/2\) 概率放入 \(T\)。我们希望:

\[ \mathbb{E}[\text{割大小}] = \frac{1}{2}|E|. \]

现在考虑用哈希函数 \(h: V \to \{0,1\}\) 来决定分配。关键观察:如果 \(h\) 是 pairwise independent 的,那么对任意不同的顶点 \(u,v\)\(h(u)\)\(h(v)\) 分布是独立的(或说"成对独立")。

对每条边 \((u,v)\),它被割开的概率是:

\[ P[h(u) \neq h(v)] = P[h(u)=0]P[h(v)=1] + P[h(u)=1]P[h(v)=0] = \frac{1}{2}. \]

即使只有成对的独立性,这个概率关系依然成立——因为我们只需要每条边两端比特独立的概率,而不是更多。


期望值的精确计算

更妙的是,由于 \(h\) 是确定性的(给定哈希函数后),我们可以直接计算任意给定 \(h\) 的割大小,不需要采样:

\[ \text{cut}(h) = \sum_{(u,v)\in E} \mathbf{1}[h(u) \neq h(v)]. \]

而对所有哈希函数(由随机种子决定)取平均,期望仍然是 \(|E|/2\)

所以我们可以遍历所有哈希函数(或者用某种确定性方式覆盖),找出割最大的那个。由于状态空间是有限的(对于 \(p\) 素数和哈希值范围 \(m\),共有 \((p-1)\cdot p\)\((a,b)\) 组合),这在实验规模下是完全可行的。

这就是为什么输出是确定性的(平均=最小=最大),因为我们选的是所有哈希函数中割最大的那一个。


算法步骤

  1. 固定哈希族参数:素数 \(p\),桶数 \(m=2\)(因为只需要把顶点映射到 \(\{0,1\}\)
  2. 对每一对可能的 \((a,b)\)
    • 定义哈希函数 \(h_{a,b}(v) = ((a \cdot v + b) \bmod p) \bmod 2\)
    • 计算该哈希函数产生的割大小
  3. 返回割大小最大的那个哈希函数对应的割值

实际上,由于课程里用的是 pairwise independent family,我们可以遍历所有 \((a,b)\) 组合。


实验结果的预期特征

指标 预期
平均值 等于最优值(因为我们选的是最大者)
最小值 与平均值相同
最大值 与平均值相同
标准差 \(0\)(三条线完全重合)

\(K_n\):割值应为 \(\lfloor n^2/4 \rfloor\)(完全图的全局最优割) 对 \(C_n\):割值应为 \(n\)\(n-1\)(环图交替染色的最优割)


与随机化版本的关键区别

随机化版本 哈希去随机化版本
结果是否确定 否(每次运行不同) 是(给定 \((a,b)\) 就确定)
标准差 \(>0\) \(=0\)
最优保证 期望 \(1/2\) 实际达到 \(1/2\) 以上
运行时间 每次 \(O(n^2)\) 需要遍历所有哈希函数,更慢

容易错的地方

  1. 混淆"随机选一个哈希函数"和"遍历所有哈希函数找最优":前者还是随机算法,后者才是确定性去随机化版本。题目要求的是后者。
  2. 哈希函数生成方式:必须保证 \(a \neq 0\)\(a \in \{1,\dots,p-1\}\)),\(b \in \{0,\dots,p-1\}\),用 randbelow(p-1)+1randbelow(p) 实现。
  3. 参数 \(p\) 的选择\(p\) 需要大于顶点数 \(n\),通常用一个大素数如 \(2147483647\)\(2^{31}-1\))。