奇怪的计数增加了
这里有一些常见的图计数套路 由于本人多项式功底为0, 所以不会优化式子. 如果你发现式子有问题或者是会优化式子, 麻烦直接[告诉我]http://t.me/mxr612. 无向图计数 节点的无向图有多少种? 为了提高根本没人会看的博客的阅读体验, 我们先从简单的开始. 考虑每个点最多向每个剩余点连一条边, 共条, 由于是无向图, 每条边会被两个端点各计算一次, 所以一张无向图最多有条边. 因为
这里有一些常见的图计数套路 由于本人多项式功底为0, 所以不会优化式子. 如果你发现式子有问题或者是会优化式子, 麻烦直接告诉我.
无向图计数
节点的无向图有多少种?
为了提高根本没人会看的博客的阅读体验, 我们先从简单的开始.
考虑每个点最多向每个剩余点连一条边, 共条,
由于是无向图, 每条边会被两个端点各计算一次,
所以一张无向图最多有条边.
因为每条边独立地有连和不连两种情况,
所以共有种连边方式.
Prufer序列
有标号的无根树有多少种?
Cayley公式
Cayley公式指出, 节点的无根树有种.
Prufer序列展示了一个数列如何与一棵有标号无根树双射,
也就是说, 符合某个规则的序列数量就是有标号无根树的数量.
Prufer序列是为了证明Cayley公式而设计的.
构造
尝试证明序列与有标号无根树之间的双射, 这可以帮助我们理解这个公式.
当然, 如此简单的公式我们也可以直接记忆.
如果给出一棵树, 如何构造它的Prufer序列?
根据Prufer序列的定义, 每次删去编号最小的叶节点并记录它所连的边, 直到剩余两个节点.
如果给出一个数列, 如何用Prufer方式构造一棵树?
观察构建方式, 我们得到一些信息:
- 剩下的两个点中必有号点.
- 点的度数是它在序列中出现次数.
- 根据上一条, 没出现在序列中的都是叶子节点.
当我们得到所有叶子节点之后, 就可以按照删点方式加点了.
序列第一个值就是最小叶节点的连边, 以此类推.
维护一个小顶堆, 如果有产生新的叶节点就将它加入堆.
最后剩下两个点, 直接连接.
可以发现, 一棵树可以构造出一个唯一的序列, 一个序列也可以构造出一棵唯一的树.
二叉树计数
N点的无标号二叉树有多少种?(二叉树默认有根,对称不算同一种)
递推方式
对于一个节点的二叉树, 我们可以枚举一棵子树的大小, 此时另一棵子树的大小也确定了.
设表示节点的子树构造方案.
Catalan数
我们发现上面那个式子就是Catalan数的递推式, 所以也可以直接用Catalan数公式求解.
我们可以考虑合法括号序与二叉树之间的双射.
考虑Catalan数递推式的由来, 每次添加一个括号时, 枚举括号内和括号右的合法括号序数量.
拓展到二叉树, 每次对第一个左括号做匹配, 括号内的就是左子树, 括号右就是右子树.
无向连通图计数
有标号无向连通图有多少种?
考虑一个容斥, 用所有连边方式减去不连通的连边方式.
我们钦定一个点, 枚举它所在的联通块大小.
设联通块的大小为, 组合一下选入的个点然后乘上个点连通图的方案数,
联通块外随便连就是.
这样我们就可以递推处理了.
二分图计数
点有标号联通块的二分图有多少种?
转换一下思路, 尝试求出染色后的二分图个数(不一定联通).
枚举一侧的点集, 然后两边任意连边.
同时我们设为个点个联通块的二分图数量,
用类似无向连通图计数的方式, 钦定一个点枚举联通块大小可以得到:
看到这里我们发现没办法求出, 别灰心, 我们尝试在和之间建立联系.
对于每个联通块我们有种染色方案, 个联通块就是种染色方案.
这里应该有个表格.
| j\i | 1 | 2 | 3 |
|---|---|---|---|
| 1 | 1 | ||
| 2 | 1 | ||
| 3 | 1 |
我们的是对一列的进行带参求和, 所以当我们得到了这一列除外的值, 我们就可以得到.
所有的都是显然的,
而的递推只需要用到且的值, 通过上述方法可以得到.
具体的, 我们第一维按升序枚举, 第二维按降序枚举.
当时我们直接递推, 当时我们通过求差得到.
基环树计数
有标号基环树有多少种?
这道题其实比上面那个简单QwQ.
如果我们得到了一个森林, 只要对所有树环排列即可.
那么设为个点棵树的方案数.
每次选个点作为一棵树加入答案: 用Cayley公式求解.
最后答案乘上环排列就好:
一道期望题
为什么会出现在这里呢? 大概是因为上课讲了就顺便放在这里吧.
数轴上个位置, 每个位置填括号使整个序列成为一个合法括号序. 问期望一对括号的距离是多少?
评论
0还没有评论。