Lecture 2 - 2025 / 2 / 20
Bipartite Matching
给定一个二分图 G=(V1,V2,E),且 ∣V1∣=∣V2∣=n,求 G 是否包含一个完美匹配?
Definition (Tutte matrix): 二分图 G 的 Tutte 矩阵定义为 n×n 矩阵 AG=[aij],其中如果 (i,j)∈G 那么 aij=xij 为一个变量,否则 aij=0。
Claim: G 包含完美匹配当且仅当 ∣AG∣=0。
由行列式定义
∣AG∣=σ∑sgn(σ)i=1∏naiσ(i)
G 包含完美匹配,也就是存在排列 σ 使得 ∀1≤i≤n,aiσ(i)=0。换言之 ∏i=1naiσ(i)=0。
根据 Tutte 矩阵的定义,每个 σ 对应的乘积包含的变量均不相同,因此只要有一项非 0,就有 ∣AG∣=0。反之亦然。
小知识:n×n 矩阵的行列式可以通过并行算法,在 O(n3.5) 个处理器上用 O(log2n) 的时间计算。
那么利用 Lecture 1 判定多项式是否为 0 的方法即可。
对于一般图?
Finding a Perfect Matching in Parallel
Lemma (Isolation Lemma): 设 S1,S2,⋯,Sk⊆S,给 S 中的每个元素均匀随机赋值 {1,2,⋯,l},则
Pr[∃unique Si of minimal sum of weights]≥(ll−1)∣S∣≥1−l∣S∣
我们可以不妨设集合是没有包含关系的。
我们记所有赋值方法 w={wx∣x∈S} 构成的集合为 W,如果 ∀x,wx>1,那么这样的赋值方法构成的集合为 W+。
易知 ∣W∣=l∣S∣。
接下来我们构造一个从 W+ 到“最小集合唯一的赋值方式”的单射。
对于 w∈W+,我们任取一个此时的最小集合 S∗,构造 w′ 为
wx′={wx−1wx(x∈S∗)(x∈/S∗)
此时 w′ 是一个有唯一最小集合(S∗)的赋值方式。
而且对于 w′,可以通过取出唯一最小集合 +1 返回得到 w,因此该映射为单射。从而“最小集合唯一的赋值方式”不少于 ∣W+∣=(l−1)∣S∣ 种。
由于 ∣W∣∣W+∣=l∣S∣(l−1)∣S∣,立刻得证。
于是我们给每条边 e 随机赋值 we∈{1,2,⋯,l},根据 Isolation Lemma 有很大把握认为最小权完美匹配是唯一的。假设确实唯一。
从而我们令 xij=2w(i,j),称带入值之后的为矩阵 B,则当 ∣AG∣=0 即完美匹配存在时:
lowbit(∣B∣)=2minimal weights perfect match
求出一个完美匹配的并行算法:
首先计算 2w=lowbit(∣B∣)。
然后并行的对于每条边 (i,j),如果
2w(i,j)×lowbit(∣Bij∣)=2w
那么输出 (i,j)。上式 Bij 表示余子式。
对于一般图?
Fingerprinting
给定 n-bit 数 a 和 b,判断是否相等。
假设这两个数可以快速取模,那么我们在不超过 T 的素数中,随机一个素数 p。
由于 ∣a−b∣ 的素因子个数不超过 log2∣a−b∣≤n 个,因此 a≡b(modp) 的概率不超过 π(T)n。
Theorem (Prime Number Theorem): 用 π(x) 表示 ≤x 的素数的个数,∀x≥17,lnxx≤π(x)≤1.26ln(x)x
我们随机生成一个不超过 T 的素数,发生错误的概率不超过 TnlnT。
因此取 T=cnlnn,则有错误概率 ≤c1+o(1)。
更紧的,有结论:n-bit 数的素因子数量不超过 π(n),因此取 T=cn 就能达到效果。
Fingerprinting 算法直接应用:Pattern matching。