Kosaraju算法

✍ dations ◷ 2025-02-24 21:04:44 #图算法

Kosaraju算法(也被称为Kosaraju–Sharir算法)是一个在线性时间内寻找一个有向图中的强连通分量的算法。阿尔佛雷德·艾侯,约翰·霍普克洛夫特和杰弗里·乌尔曼(英语:Jeffrey D. Ullman)相信该算法来自S. Rao Kosaraju(英语:S. Rao Kosaraju)于1978年撰写的一篇未发表论文之中。米卡·夏尔(英语:Micha Sharir)也独立发现了该算法并于1981年将其发表。该算法巧妙地利用了一个定理:“一个图的反向图和原图具有一样的强连通分量”。

该算法主要用于枚举图中每一个强连通分量内的所有顶点。该算法可由以下四部分组成:

public class KosarajuAlgorithm {    private boolean marked;    private int id;    private int count=-1;    private Stack<Integer> reversePostOrder;    public KosarajuAlgorithm(Digraph G){        //G.V()返回有向图G的边数        marked=new boolean;        id=new int;        //G.reverse()返回的为G的反向图        Digraph G_reverse=G.reverse();        //本遍循环是将G的反向图的逆后序排列存储在reversePostOrder中        for(int i=0;i<G_reverse.V();i++){            if(!marked){                dfs(G_reverse,i);            }        }        count=0;        //按照G的反向图的逆后排序进行深度优先搜索        for(int i:reversePostOrder){            if(!marked){                dfs(G,i);                count++;            }        }    }    //深度优先搜索    public void dfs(Digraph G,int v){        marked=true;        id=count;        for(int i:G.adj(v)){            if(!marked){                dfs(G,i);            }        }        reversePostOrder.push(v);    }}

复杂度

当图是使用邻接表形式组建的,Kosaraju算法需要对整张图进行了两次的完整的访问,每次访问与顶点数 V {\displaystyle V} 和边数 E {\displaystyle E} 之和 V + E {\displaystyle V+E} 成正比,所以可以在线性时间 O ( V + E ) {\displaystyle O(V+E)} 内访问完成。该算法在实际操作中要比Tarjan算法和基于路径的强连通分量算法(英语:Path-based strong component algorithm)要慢,这两种算法都只需要对图进行一次完整的访问。

当图是使用邻接矩阵形式组建的,算法的时间复杂度为 O ( V 2 ) {\displaystyle O(V^{2})}

相关

  • 在视频领域,电影、电视、数字视频等可视为随时间连续变换的许多张画面,其中帧是指每一张画面。在计算机网络和通信领域,帧(英语:frame)是一个包括“帧同步串行(英语:frame synchroni
  • 盘营客运专线.mw-parser-output .RMbox{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2)}.mw-parser-output .RMinline{float:none
  • 大野郡 (美浓国)大野郡(日语:大野郡/おおのぐん  */?)是日本美浓国及岐阜县辖下的一个郡,下辖1町61村,范围约为今岐阜市一部分,已于1896年4月18日因分割为揖斐郡、本巢郡的一部分而废除郡建置。(
  • 严禁反应严禁反应(英语:Stringent response)是指细菌等原核生物在缺少氨基酸的环境中生长时,细胞主动关闭蛋白质合成等一些代谢活性的反应。氨基酸供应减少时,与氨基酸结合的tRNA数量减少
  • 伊藤野枝伊藤野枝(1895年1月21日-1923年9月6日)是一位日本无政府主义信仰者、妇女解放运动家、评论家与作家,出生于日本福冈县。1923年于关东大地震后的混乱时期,与夫大杉荣(日语:大杉栄)
  • 蜂蚁属 Wilson & Brown, 1967 蜂蚁属(学名:)是一种已灭绝的蚁类,隶属于蜂蚁亚科(Sphecomyrminae)蜂蚁族(Sphecomyrmini),生活于8000万年前白垩纪时期北半球的劳亚大陆。这是已知最早的蚁
  • 林洪亮林洪亮(1935年-),男,江西人,中国大陆翻译家,中国共产党党员。毕业于波兰华沙大学。1935年,林洪亮出生在江西省南康市。1960年,林洪亮毕业于波兰华沙大学语文系,得到硕士学位。之后,林洪
  • 高桥信高桥信(1月16日-),日本男性配音员。出身于神奈川县。O型血。Atomic Monkey所属,东京动画学院专门学校(日语:東京アニメーションカレッジ専門学校)毕业。兴趣和特长为作巴西体操、唱
  • 李柬李柬(?-?),字休贤,陇西狄道(今甘肃省临洮县)人,是凉武昭王李暠的玄孙,西凉骁骑将军、祈连酒泉晋昌三郡太守李翻的曾孙,北魏使持节、侍中、都督西垂诸军事、镇西大将军、开府仪同三司、领
  • 1953年8月9日日食1953年8月9日日食是一次日偏食,发生于1953年8月9日。新月当天(即朔日),地球上观测到月球和太阳的角距离极小,此时月球如果恰好在月球交点附近,穿过太阳和地球之间,与地球、太阳接近