无向图子图计数
三元环计数
考虑给每个点赋一个排列权值 \(p_i\),使得 \(deg_x < deg_y \iff p_x < p_y\)
此时有一个重要的性质:对于点 \(x\),原图中 \(x\) 的邻边 \((x, y)\) 中仅有约 \(\sqrt{2m}\) 条使得 \(p_x < p_y\)
可以发现钦定原图上的三元环中 \(p_i\) 最小的与次小的边,取其出边中满足以上性质的并,即可 \(O(m \sqrt m)\)
四元环计数
钦定原图上的四元环中 \(p_i\) 最大的点对面的点 \(a\),枚举 \(a \to b \to c\) 使得 \(p_a < p_c, p_b < p_c\),两条 \(a \to b \to c, a \to d \to c\) 拼一起就对应了原图上的四元环,也是 \(O(m \sqrt m)\)
独立集/团计数(依赖于 \(n\))
团计数等价于补图上的独立集计数
搜索 \(f(S) = f(S / \{ v \}) + f(S / \{ v \} \cup N(v))\),\(|S| > n / 2\) 时只有 \(2 ^ {n / 2}\) 种分支,\(|S| \le n / 2\) 可以记搜,\(O(2 ^ {n / 2})\)
独立集/团计数(依赖于 \(m\))qoj7514
同上赋一个排列权值 \(p_i\),枚举每个点 \(x\) 作为团中编号最小的点
取出满足 \(p_x < p_y\) 的邻边 \((x, y)\),求所有 \(y\) 生成的子图的团个数
复杂度当度数为 \(\sqrt{2m}\) 的点越多时越大,故有复杂度为 \(O(\sqrt m \times 2 ^ {\sqrt{2m} / 2})\)
四元团 - 四元独立集计数 gym/103470K
考虑容斥原理,由于四元团里两两连了六条边,记 \(P_{S, i}\) 表示四元组 \(S\) 存在第 \(i\) 条边
则四元独立集的数量 \(\displaystyle \sum_{S} \prod_i (1 - [P_{S, i}]) = \sum_{T \subseteq 6} (-1) ^ {|T|} \sum_{S} \prod_{i \in T} [P_{S, i}]\)
此处有集合论定义 \(6 := \{0, 1, 2, 3, 4, 5\}\) (挨打)
将右侧 \(T = 6\) 的项移到左侧,答案即为 \(\displaystyle \sum_{T \subsetneq 6} (-1) ^ {|T|} \sum_{S} \prod_{i \in T} [P_{S, i}]\),可以发现能在 \(O(m \sqrt m)\) 内求出
四元团计数 qoj6354
同上赋一个排列权值 \(p_i\),枚举每个点 \(x\) 作为团中编号最小的点
取出所有以 \(x\) 为编号最小的点的三元环,取出所有 \(x\) 对应的边,在这些边上使用 \(nm / w\) 的三元环计数
分析复杂度,\(\displaystyle O\left( \sum \frac{deg_u num_u}{w} \right) = O(m ^ 2 / w)\)

浙公网安备 33010602011771号