本总结是是个人为防止遗忘而作,不得转载和商用。
什么是强连通图
对一个有向图,如果每个节点都存在到达其他任何节点的路径,那么就称它是强连通的。
如何判断强连通图
任取有向图G的某结点S,从S开始进行深度优先搜索,若可以遍历G的所有结点,则将G的所有边反向,再次从S开始进行深度优先搜索,如果再次能够遍历G的所有结点,则G是强连通图,两次搜索有一次无法遍历所有结点,则G不是强连通图。此外,上述搜索可以换成广度优先搜索等其他方案。
证明
上图明显是一个强连通图,而刚才的做法就用此图证明:
用a->b表示节点a可以到达b
图中很明显:
s->j
s->i
如果
i->s
j->s
的话(即所有的边反向),那就可以任取上边两部分中的一个,如取上面的红色部分,就有:
j->s->i
即:
j->i
所以这样的做法如果成功了,那就可以证明任意两点都可以互达。