1.重连通图
1.重连通图:在常用数据结构图这一篇中介绍过强连通图的概念,对于有向图任意两个节点A、B均符合从A到B有路径连通,从B到A也有路径连通,则称这样的有向图为强连通图。非强连通图中各自强连通的最大子图称为强连通分量。这跟重连通图概念有点像,重连通图指无向图中任意两个节点之间都有至少两条通路,称这样的无向图为重连通图。
2.关节点/割点**:在无向图中,删除了某个顶点及其对应的边之后。原来的连通图被分割为二个及以上的连通分量,这样的顶点被叫做关节点/割点
3.连通度:重连通图是没有关节点的,也就是说任何一个顶点及其对应的边的删除,都不会破坏图的连通性。但是多删除几个也许就可以。所以我们定义如果删除了K个顶点及其对应的边,重连通图的连通性被破坏了,那么该重连通图的连通度为K。所以说连通度可以显示出一个重连通图的健壮性。
重连通图有着广泛的现实意义:比如现在有覆盖多个城市之间的信号网,如果该网络是一个重连通图,那么其中任何一个信号站出问题,都不会使得其它任何两个城市中不能相互通信。这个网络的连通度越高,整体网络的健壮性就越好。
4.判断重连通图:重连通图有一个性质,就是所有的顶点都不是关节点。利用反正法,在一个图中只要找到一个关节点,那么这个图就不是重连通图。如果一个都找不到,那个就是重连通图。
如下图所示,是一个图的深度优先搜索树,树中的虚线表示原来图中存在,但是树中不存在的边,称为回边。我们正是利用回边也判断关节点的。
有两个原则:
1.如果树的根节点有多个子节点,那个根节点是关节点。(因为删除了根节点之后,树就变成了多个子树,对应图就是多个连通分量)
2.除过根节点和叶子节点之外的节点,如果其每棵子树都至少有一个节点存在到该根节点祖宗节点(这里的祖宗节点是不包括本节点的其它祖先节点)的回边,就不是关节点,否则就是关节点。
如下图:关节点有A、B、D、G
A是有两个子节点的树根,所以是关节点
B有三棵子树,只有C有到A的回边,其它两个子树都没有,所以是关节点。
D和G子树中都没有到祖宗节点的回边。
综上:这棵树对应的无向图不是重连通图。
2.拓扑排序
拓扑排序是表示有向无环图中各顶点先后关系的一种排序。
如果顶点间两两之间都存在先后关系则成为