• prufer 序列 学习笔记


    prufer 序列是一种无根树的序列,对于一个 (n) 个点的树,其 prufer 序列的长度为 (n-2)

    prufer 序列和原树之间都可以唯一地相互转化。


    构造

    构造 prufer 序列分为如下的步骤:

    1. 找到一个编号最小的度数为 (1) 的点;
    2. 与这个点相邻的点的编号加入 prufer 序列的后面;
    3. 删除这个点;
    4. 重复上述步骤,知道原树只剩下 (2) 个点,这两个点之间应该有一条边。

    还原

    令集合 (V = {1, 2, cdots, n})

    1. 取出 prufer 序列最前面的点 (x)

    2. 找到 (V) 序列中最小的没有在现在的 prufer 序列中出现过的点 (y)

    3. (x)(y) 连边并从集合 (V) 中删除 (y),从 (prufer) 序列中删除最前面的 (x)

    4. 重复上述步骤,直到 prufer 序列被遍历完;此时 (V) 中应该还剩下两个点,给它们连边。

    考虑这样还原为什么是对的。

    每一次被配对的 (y),应该是原树在删掉 prufer 序列 (x) 之前的点后的叶子。

    那么根据之前的构造步骤,这个 (y) 必须满足:

    1. 是个叶子,这个条件等价于没有在后面的 prufer 序列中出现。
    2. 之前没有被选过;
    3. 编号最小。

    于是就有了上面的选 (y) 的条件了。


    性质

    性质 1

    一棵无根树的每个点的度数等于这个点在 prufer 序列中的出现次数 (+1)

    这个结论很显然,由构造过程就可以发现。

    性质 2

    一棵有标号的无根树的数量为 (n^{n-2})

    可以发现我们的还原过程中,prufer 序列本身没有任何限制。

    只要是长度为 (n-2),值域为 (n) 的序列,都可以还原成一棵树。


    性质 3

    如果限定了每个点的度数,编号为 (i) 的点的度数为 (a_i),那么方案为 (frac{(n-2)!}{prodlimits_{i=1}^n a_i-1})

    显然必须有 (sumlimits_{i=1}^n a_i = 2(n-1) = 2n - 2),于是 (sumlimits_{i=1}^n a_i - 1 = n - 2),所以相当于是做一个可以重复元素的全排列。


    例题

  • 相关阅读:
    4网页版四则运算
    新的项目与小组成员
    课堂作业4月8号
    2.四则运算03
    zencart新增categories分类表字段步骤
    zencart批量评论插件Easy Populate CSV add reviews使用教程
    广告域名审核之后跳转技术:点击域名A页面iframe框架下的链接,域名A跳转到域名B
    zencart设置产品始终免运费sql
    zencart简易页面ezpage后台编辑位置
    php获取当前页面的完整url
  • 原文地址:https://www.cnblogs.com/hankeke/p/prufer.html
Copyright © 2020-2023  润新知