zoukankan      html  css  js  c++  java
  • 生成树计数

    考虑简单带权无向图的情况。
    约定这张图为(G=(V,E),n=|V|,m=|E|)(e_i=(u_i,v_i,w_i))表示第(i)条边,(deg_u)表示(u)所连边的边权和。

    ( ext{Some Definitions})

    邻接矩阵

    (mathbf A_{n*n})满足(mathbf A_{i,j}=w(i,j))

    度数矩阵

    (mathbf D_{n*n})满足(mathbf D_{i,j}=[i=j]deg_i)

    关联矩阵

    (mathbf B_{n*m})满足(mathbf B_{i,j}=[u_j=ivee v_j=i](-1)^{[u_j=i]}sqrt{w_j})

    Laplace矩阵(Kirchhoff矩阵)

    一张图的Laplace矩阵(mathbf L=mathbf D-mathbf A)

    ( ext{Some Properties})

    (1.det(mathbf L)=0)
    (2.operatorname{rank}(mathbf L)=n-1)
    (3.mathbf L)的所有(C_{i,j})都相等,且等于(mathbf L)(prodlimits_{i=1}^{n-1}lambda_i)
    (3.mathbf B^{mathbf T}mathbf B=mathbf L)

    Kirchhoff定理

    一棵生成树的权值为边权之积,所有生成树的权值和就是(mathbf L)的任意一个(C_{i,j})
    对于重边,考虑分配率,发现可以将重边缩成一条,边权求和即可。

    可以发现Cayley定理就是Kirchhoff定理的特例。

    Ex-Kirchhoff定理

    考虑扩展至有向图的树形图。

    ( ext{Part.1})

    假如我们要求的是外向树。
    修改:(deg_i)表示(i)的入边的边权和。
    那么此时以(i)为根的所有外向树的权值和为(mathbf L)(C_{i,i})

    ( ext{Part.2})

    假如我们要求的是内向树。
    修改:(deg_i)表示(i)的入边的边权和。
    那么此时以(i)为根的所有外向树的权值和为(mathbf L)(C_{i,i})

    其实内向树和外向树就是把边反向的区别。
    因为把边反向相当于把(mathbf L)转置,这并不会让它的某个(C_{i,i})发生变化。
    所以我们可以不需要修改(mathbf A)
    还需要注意,在有向图中(mathbf A)的数条性质皆不成立,关联矩阵也暂时没法定义。

  • 相关阅读:
    爬虫工具简单整理
    vue单页面处理SEO问题
    深入浅出MyBatis-快速入门
    js的匿名函数 和普通函数
    Javascript位置 body之前、后执行顺序!
    eclipse中的ctrl+H使用中的问题
    Eclipse中ctrl+shift+r与ctrl+shift+t的区别
    Java 判断字符串是否为空的四种方法、优缺点与注意事项
    eclipse 快捷键
    只缩进新加一段代码的方法
  • 原文地址:https://www.cnblogs.com/cjoierShiina-Mashiro/p/12133724.html
Copyright © 2011-2022 走看看