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)的数条性质皆不成立,关联矩阵也暂时没法定义。

  • 相关阅读:
    测试一下你的T-SQL基础知识-count
    测试一下你的T-SQL基础知识-subquery
    Microsoft SQL Server 2012 管理 (2): Auditing
    Webpack
    react
    Webpack 傻瓜式指南(一)
    谈谈react-router学习
    使用Flexible 实现手淘H5 页面的终端适配学习
    Promise 让异步更优
    基于LeanCloud云引擎的Web全栈方案
  • 原文地址:https://www.cnblogs.com/cjoierShiina-Mashiro/p/12133724.html
Copyright © 2011-2022 走看看