Description
求$N$个节点的无向连通图有多少个,节点有标号,编号为$1~N$.
$1<=N<=50$
Sol
在计数类$DP$中,通常要把一个问题划分成若干个子问题,以便于执行递推.
一个连通图不容易划分,而一个不连通的无向图则很容易划分成结点更少的两部分.所以我们把问题转化成用$N$个点的无向图总个数减去$N$个点的不连通无向图的个数.
$N$个点的无向图总个数显然是$2^{N*(N-1)/2}$,还是简单说下叭,就是$N$个点连成完全图的边数显然是$N*(N-1)/2$,然后每条边都可取可不取,所以就是$2^{N*(N-1)/2}$.
现在我们要把问题划分成互斥的子问题 $OvO$.不连通的图由若干个连通图构成.我们可以枚举$1$结点所在的联通块包含的结点数$k$,从$2~N$这$N-1$个结点中选出$k-1$个结点,显然有$C_{N-1}^{k-1}$种.剩余$N-k$个结点构成任意无向图,显然有$2^{(N-k)*(N-k-1)/2}$种.$F[i]$表示$i$个结点构成的无向连通图个数.
$F[i]=2^{i*(i-1)/2}-sum_{j=1}^{i-1}F[j]*C_{i-1}^{j-1}*2^{(i-j)*(i-j-1)/2}$
$F[1]=1$,答案为$F[N]$
Code
本来我已经信心满满地开始写了,突然发现还要高精 : )).我咕咕咕了.也许明天会写???