zoukankan      html  css  js  c++  java
  • 自由树的计数 Labeled unrooted tree counting

    问题:

          4个标记为1,2,3,4的节点构成自由树(算法导论里的定义,连接着,无环,无向的图),一共有多少种构造方法?如果N个节点呢?

    解决方法:

         4个节点可以通过穷举的方式得到答案,一共有16中方式。

      第一类构造方式,取一个节点做中心,剩余三个节点与其相连,一共4种(每个节点做一次中心)。

      第二类构造方式,四个节点连成一条线,可以看成个排列,第一个有4种取法,第二个有3种,依次类推。但是因为例如1234与4321结构上是一样的,

    所以总的排列数除以2才是总共的构造数,即 $frac{4!}{2}$。(这个是基本的排列知识)

      图片来源 http://mathworld.wolfram.com/PrueferCode.html

                  图片来源

      下面讲解其中的一种Prufer Code 解法。

      它的思想就是计数里或者其他场合经常出现的——一对一映射的方法。每一颗自由树对应一个Prufer Code, 每一个Prufer Code对应一颗自由树。

    这样计算Prufer Code的个数就得到了自由树的个数。

      先给出公式, 自由树的总个数为$T(N) = N^(N-2)$

      参考资料

    1. Prüfer_sequence

    原文地址

  • 相关阅读:
    I Hate It HDU
    线段树为什么要开4倍空间
    敌兵布阵 HDU
    线段树 模板
    线段树原理详解
    HDU5037 Frog
    HDU5187 zhx's contest
    HDU5307 He is Flying
    UOJ#34. 多项式乘法
    Bzoj4766 文艺计算姬
  • 原文地址:https://www.cnblogs.com/celthi/p/4895666.html
Copyright © 2011-2022 走看看