Kosaraju算法

✍ dations ◷ 2025-06-09 03:26:40 #图算法

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})}

相关

  • 卡斯特勒阿尔弗雷德·卡斯特勒(法语:Alfred Kastler,1902年5月3日法国盖布维莱尔 - 1984年1月7日),法国物理学家,1966年获诺贝尔物理学奖。1901年:伦琴 / 1902年:洛伦兹、塞曼 / 1903年:贝
  • 小煤炭菌目小煤炱目(学名:Meliolales)是一类专性寄生菌,属于子囊菌门粪壳菌纲。该目下有一单科小煤炱科(Meliolaceae)。主要在热带地区出现,小煤炱菌会在寄主植物的表面形成黑色菌落,故又被称
  • 雄狮美术《雄狮美术》是台湾一本创刊于1971年3月的美术月刊,曾获得1976年金鼎奖,发行人为李贤文。初期是免费刊物,从第5期开始才改为一本新台币5元(一年订户新台币50元)。由于该本刊物在
  • 布莉姬·芳达布莉姬·简·芳达(英语:Bridget Jane Fonda,1964年1月27日-)是一位美国女演员。布莉姬·芳达于1964年1月27日在加州洛杉矶出生。芳达家族是演艺世家,爷爷亨利·方达,爸爸彼得·方达
  • 雷蒙德·艾伦雷蒙德·艾伦(英语:Raymonde Allain,1912年6月22日-2008年7月27日),是法国模特、女演员,1928年的法国小姐。曾因参加环球小姐比赛,而引起国际媒体的关注,艾伦后来写了一部自传,名为《
  • 卡尼耶达纳卡尼耶达纳(Khaniyadhana),是印度中央邦Shivpuri县的一个城镇。总人口12595(2001年)。该地2001年总人口12595人,其中男性6589人,女性6006人;0—6岁人口2416人,其中男1247人,女1169人;识
  • 在日朝鲜人联合足球代表队在日朝鲜人联合足球代表队是日本朝鲜人的足球代表队,是由FC Korea基础上组成的 在日朝鲜人联合足球协会管理。于2015年11月加入独立足球协会联合会,并在翌年参加了 2016年Co
  • 库库岱库库岱(-1824年),18世纪末19世纪初哈萨克族阿巴克克烈部首领,哈萨克汗国大玉兹可汗阿布勒比斯第六子。18世纪末,阿勒泰地区哈萨克族的12个克烈部落没有公认的首领,请大玉兹可汗阿布
  • 景泰帝景泰帝朱祁钰(1428年9月21日-1457年3月14日),或称明代宗,年号景泰,明宪宗追谥其为“恭仁康定景皇帝”,弘光帝上庙号“代宗”,谥号“符天建道恭仁康定隆文布武显德崇孝景皇帝”,明朝第
  • 雏祭桃子雏祭桃子是日本女性插画家。主要担当男性向成人游戏(美少女游戏)的原画、人物设计等。大阪府出身。同人社团萌雏化学(萌雛化学)的主持者。