zoukankan      html  css  js  c++  java
  • 组合数学简要整理

    部分内容引自TheLostWeak的博客



    $Prufer$序列

    对解决树上计数问题具有重要意义

    性质:

    1,$Prufer$序列与无根树一一对应

    下面基于这一性质给出无根树与其对应的$Prufer$序列的转化操作

    将无根树转化为$Prufer$序列

    找到编号最小的叶节点,删除这个节点,然后把与这个叶节点相连的点加入序列,直到这棵树只剩下两个节点,然后我们就得到了一个长度为$n-2$的序列,这就是$Prufer$序列

    将$Prufer$序列转化为无根树

    定义点集$S={1,2...n}$

    取出$Prufer$序列最前面的元素$x$,找到在$S$中且当前不在$Prufer$序列中的最小元素$y$,从$S$中删去$y$并在$x,y$之间连接一条边,重复以上操作直到$Prufer$序列为空

    最后,我们在点集中剩下的两个点之间连一条边即可得到该序列对应的无根树

    2,度数为$d_i$的节点会在$Prufer$序列中出现$d_i-1$次

    3,含有$n$个节点的不同形态的树个数为$n^{n-2}$(认为每个节点互不相同)

    对于一个$n$个点的无根树,它的$Prufer$序列长为$n-2$,而每个位置有$n$种可能性,因此可能的$Prufer$序列有$n^{n-2}$种,又由于$Prufer$序列与无根树一一对应,因此生成树个数应与$Prufer$序列种数相同,即$n^{n-2}$

    4,对于给定度数为$d_{1sim n}$的一棵无根树共有$frac{(n-2)!}{prod_{i=1}^n(d_i-1)!}$种不同形态(认为每个节点互不相同)

    第$i$个点在序列中出现$d_i-1$次,求解树的不同形态数等价于求解$Prufer$序列的不同排列数,由可重集排列可解

  • 相关阅读:
    java实现复制网站内容
    java实现复制网站内容
    java实现递归连续数
    java实现递归连续数
    java实现递归连续数
    java实现递归连续数
    java实现递归连续数
    java实现串中找数字
    java实现串中找数字
    java实现串中找数字
  • 原文地址:https://www.cnblogs.com/ivanovcraft/p/14978439.html
Copyright © 2011-2022 走看看