图论-生成树计数

来源:互联网 发布:js获取第二个子元素 编辑:程序博客网 时间:2024/05/18 02:50

好久没写博客了,对于ACM,也不刻意去刷题了,遇到一个问题就解决一个问题,脚踏实地的真真的有所收获

因为生成树计数问题需要运用线性代数的一些知识,虽说学过但是忘的差不多了,慢慢来解决这个问题吧,所以持续更新ing!↖(^ω^)↗

先来个简单的证明吧!

定义T(G)为图G生成树的个数。

对于图G:


那么不妨定义下面的这两个图:

G-e(此时e为边2到3)


G/e


那么有下面的递归式

T(G) = T(G-e) + T(G/e)

下面是证明:

当图G删除边e(u,v)时,那么在G-e的任何一个生成树中,不可能有边连接u和v这两个顶点,记G-e的生成树数目为T(G-e)

此时图G/e的所有生成树只有|v|-1个顶点,且默认G/e中的生成树必选去了边e,记G/e的生成树的数目为T(G/e)

不难看出,T(G-e)就是不包含边e的生成树的个数,T(G/e)就是包含边e的生成树的个数,所以证毕

利用上面的递归式便可以得到图G生成树的个数,只不过复杂度有点高!但是,某牛的论文说这个结论还是很重要的。

ps:自己的想法,利用T(G) = T(G-e) + T(G/e),用递归写,一共要调用的次数为|E|,然后每次递归还要处理G/e。

原创粉丝点击