zoukankan      html  css  js  c++  java
  • 最小树形图

    最小树形图

    概念:在一个给定边的有向图中,求以一个点为根的生成树,换句话说这个图中只有一个点入度为0,其余点入度均为1,且在此基础上进行约束,如要求边权和最小等

    首先,在最小树形图中一般要以弧的形式存图,并保存一个点的前驱

    主体就是朱刘算法,分4个步骤

    1.求最短弧集合

    2.判断集合中是否有环,具体就是自己成为自己的祖先,从当前结点一直染色,直到染到根或自己

    3.若有环,缩点,重新求最短弧集合

    4.统计结果输出

    比较重要的就是缩点时的操作,据说可以用tarjan优化,日后学会了再补上

    类似于并查集的思想,记录每个集合中的代表结点,并对所有弧进行一次修改

    关键在于处理好改权值的问题,将每个点在环外入边的权值减去环内入边的权值,同时保留每次的统计和,只计算增量

    ​ ——2020.5.11


    最重要的步骤也是最容易写错的步骤还是最后一步的减边权了,用更好理解的话说,如果一个点位于环内,一个点位于环外,那么就要将环外的点到环内的点的费用减掉环内最小的费用,也就相当于删除指向环内的点的边 而从环外点指向环内

    不定根最小树形图

    类似于大部分图论算法,利用虚拟源点来处理不定根问题

    统计所有边权和,建立虚拟源点,并向原图中每个点连一条大于sum的边,避免对结果产生影响

    原图中的根就是直接与虚拟源点相邻的点,可以在松弛时统计出来

    例题:http://acm.hdu.edu.cn/showproblem.php?pid=2121

    ——2020.5.21

  • 相关阅读:
    Redis系列--3.redis配置
    Redis系列--2.redis安装
    Redis系列--1.redis概述
    Redis系列--4.常用命令汇总
    Redis系列之(六)——集群redis cluster
    Redis系列之(五)——哨兵
    Redis系列之(四)——深入reids优化
    Redis系列之(三)——持久化与复制
    Redis系列之(一)——开发基础
    Python执行系统命令的方法
  • 原文地址:https://www.cnblogs.com/nebulyu/p/12866486.html
Copyright © 2011-2022 走看看