无向图子图计数

三元环计数

考虑给每个点赋一个排列权值 \(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)\)

posted @ 2024-01-31 19:48  JerryTcl  阅读(244)  评论(4)    收藏  举报