zoukankan      html  css  js  c++  java
  • 强连通分量再探 By cellur925

    我真的好喜欢图论啊。

    虽然可能理解的并不深hhh

    上一次(暑假)我们初探了强联通分量,这一次我们再探。(特别感谢pku-lyc老师的课件。有很多引用)

    • 上次我们忘记讨论复杂度了。tarjan老爷爷的算法都很strong as flash。这次是O(N)。
    • 强联通分量中任何两个点可互相到达。(显然的性质,但是需要强调识别。)
    • 上一次例题遗漏的性质
      •   有向无环图中唯一出度为 0 的点,一定可以由任何点出发均可达
    • 来丢几道例题跑。

    例题1 Network

    • N个学校之间有单向的网络(是有向连通图),每个学校得到一
    套软件后,可以通过单向网络(有向边)向周边的学校传输。
    • 问题1:初始至少需要向多少个学校发放软件,才能使得网络内
    所有的学校最终都能得到软件。
    • 问题2:至少需要添加几条传输线路(边),使任意向一个学校发放
    软件后,经过若干次传送,网络内所有的学校最终都能得到软件。

    问题简化。

    • 给定一个有向连通图,求:
    • 1) 求一个最小的顶点集,使得从这个顶点集出发,可以到达全部顶点
    • 2) 至少要加多少条边,才能从任何一个顶点出发,都能到达全部顶点

    • 1. 求出所有强连通分量
    • 2. 每个强连通分量缩成一点,则形成一个有向无环图DAG。
    • 3. DAG上面有多少个入度为0的顶点,问题1的答案就是多少

    • 在DAG上要加几条边,才能使得DAG变成强连通的,问题2的答案
    就是多少
    • 加边的方法:
    • 为每个入度为0的点添加入边,为每个出度为0的点添加出边
    • 假定有 n 个入度为0的点,m个出度为0的点,max(m,n)就是第二
    个问题的解

      * 另一个性质 

    有向无环图中所有入度不为0的点,一定可以由
    某个入度为0的点出发可达。

    例题2 间谍网络

    ,里面还有对缩点的一些小结。

    本算法容易错的:缩点最后在scc_cnt上操作。

    再探结束,日后也许会深探。(可别咕啊。)

  • 相关阅读:
    Tomcat笔记
    HAProxy简介
    Ansible简介与实验
    DHCP&PXE&Cobbler简单实现
    Keepalived实现LVS-DR集群高可用
    Web of Science爬虫(WOS、SCI):风车WOS下载器
    梦境时分,记录梦境
    基层码农谈领导力
    企业部署 Kubernetes 的终极目标是什么
    Scrum 敏捷实践中的三大角色
  • 原文地址:https://www.cnblogs.com/nopartyfoucaodong/p/9733629.html
Copyright © 2011-2022 走看看