判断强连通图

本总结是是个人为防止遗忘而作,不得转载和商用。

什么是强连通图

         对一个有向图,如果每个节点都存在到达其他任何节点的路径,那么就称它是强连通的。

如何判断强连通图

         任取有向图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

         所以这样的做法如果成功了,那就可以证明任意两点都可以互达。

                            

你可能感兴趣的:(算法)