博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
强连通分量再探 By cellur925
阅读量:5231 次
发布时间:2019-06-14

本文共 866 字,大约阅读时间需要 2 分钟。

我真的好喜欢图论啊。

虽然可能理解的并不深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上操作。

 

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

转载于:https://www.cnblogs.com/nopartyfoucaodong/p/9733629.html

你可能感兴趣的文章
web前端基础知识学习笔记
查看>>
使用grunt js进行js的链接和压缩
查看>>
java 操作clob
查看>>
CF R274 Div2 E Riding in a Lift DP
查看>>
写给笨蛋徒弟的学习手册(3)—C#中15个预定义数据类型
查看>>
诗、赏析
查看>>
window对象和全局变量,局部变量的疑问
查看>>
退役快乐
查看>>
计算半径为3.0的圆周长和面积并输出结果。把圆周率π定义为常量,半径定义为变量,然后进行计算并输出结果。...
查看>>
什么是JSON
查看>>
cdoj 1255 斓少摘苹果 贪心
查看>>
ACdream 速攻组~
查看>>
常见的选择同意之后才能点击下一步按钮
查看>>
webpack-dev-server disableHostCheck导致 invalid host header
查看>>
SQL Prompt激活
查看>>
Python中常用数字类型
查看>>
binary hacks读数笔记(装载)
查看>>
Luogu P4822 [BJWC2012]冻结
查看>>
一分钟搞定 Android studio 2.3项目升级到3.0
查看>>
way
查看>>