原文链接:https://www.yuque.com/cppdev/algo/kxfg9o
相关链接
- Kosaraju算法:https://blog.csdn.net/summer_dew/article/details/83047190
背景
【无向图】如果从s到t存在一条路径,那么我们知道从t到s也存在一条路径
【有向无环图(DAG)】如果从s到t存在一条路径,那么我们知道从t到s不存在有向路径
【问题】但是,对于一般的有向图,知道t由s可达并没有给出s是否由t可达的信息
【强连通分量的提出】为了理解有向图的结构,我们考虑强连通性(strong connectivity),它具有我们寻求的对称性。如果s和t是强连通的(顶点相互可达)–>那么根据定义,t和s也是强连通的
【如何判断有向图是不是强连通】暴力判断:判断任意两个顶点s,t,看从s是否可以到t,从t是否可以到s。这个算法易于描述和实现,但需要代价很大
【现代算法设计的胜利】现代算法设计能在线性时间内找出任何图的强分量,它要比蛮力算法快V倍。对于100个顶点,这些算法将比蛮力算法快100倍;对于1000个顶点,这些算法比蛮力算法块1000倍