zoukankan      html  css  js  c++  java
  • 生成树相关问题

    回路性质:如果C是图G上的任意回路, e是回路上权值最大的边, 那么生成树肯定不包含e, 因为选其他的边,明显更优

    增量最小生树, 有m条边,每次加入一条边,如果能形成树,求出最小的生成树,

    思路:

      如果暴力求解,那么要求m遍最小生成树, 时间复杂度是 m*m*logm

      那么根据回路性质,  一棵树加入一条边后,肯定形成一个环, 所以只要删除环上权值最大的边即可

      假设加的边是u--v , 那么只要找到u到v路径上的最大权值和新边的权值比较, 去除大的即可。

      时间复杂度是O(n*m),  需要维护一棵树, 所以用手写的邻接表来存储比较好,  dfs时找到权值最大的边存储的下标,

      然后替换边的时候,也好替换。

    最小瓶颈生成树:求生成树, 是的最大边的权值最小。  其实就是就是最小生成树

    最小瓶颈路:给定加权图G,求出任意两个节点u->v的一条路径, 使得路径上的最大边权最小。要使得最大权值最小, 那么其实就是求最小生成树

          然后任意两点之间路径的最大边权, 可以用dfs来求。

    次小生成树:权值之和排在第二位的生成树,叫错次小生成树

     求出任意两点的最小瓶颈路,  maxCost[u][v]  ,那么当加入边u,v后    形成环, 删除maxCost[u][v]对应的边,那么现在生成树的权值为

    total - maxCost[u][v] + w(u,v)   

    枚举不在生成树中的边, 然后找到最小的total - maxCost[u][v] + w(u,v)   就是最小生成树的权值了

  • 相关阅读:
    java 应用使用jfr+sjk 生成应用火焰图
    使用btrace 分析java 应用
    vigil监控以及webhook使用
    honest-profiler+hprof2flamegraph 基础的扩展
    honest-profiler+hprof2flamegraph 查看java 应用火焰图信息
    Quark 基于electron 的跨平台应用开发ide
    nodejs 应用火焰图简单分析
    docker 中试用jfr
    使用foreman 管理基于Procfile 的应用
    xfs validation inode faild 问题解决
  • 原文地址:https://www.cnblogs.com/justPassBy/p/4687192.html
Copyright © 2011-2022 走看看