4个标记为1,2,3,4的节点构成自由树(算法导论里的定义,链接着,无环,无向的图),一共有多少种构造方法?若是N个节点呢?html
4个节点能够经过穷举的方式获得答案,一共有16中方式。算法
第一类构造方式,取一个节点作中心,剩余三个节点与其相连,一共4种(每一个节点作一次中心)。spa
第二类构造方式,四个节点连成一条线,能够当作个排列,第一个有4种取法,第二个有3种,依次类推。可是由于例如1234与4321结构上是同样的,htm
因此总的排列数除以2才是总共的构造数,即 $\frac{4!}{2}$。(这个是基本的排列知识)blog
图片来源图片
下面讲解其中的一种Prufer Code 解法。get
它的思想就是计数里或者其余场合常常出现的——一对一映射的方法。每一颗自由树对应一个Prufer Code, 每个Prufer Code对应一颗自由树。it
这样计算Prufer Code的个数就获得了自由树的个数。方法
先给出公式, 自由树的总个数为$T(N) = N^(N-2)$im
参考资料