求有向图中满足特定条件的两两不可达顶点集U的查找算法
问题描述
给定有向图G,需找到一个“黑色”顶点集U,满足以下两个条件:
- G\U中的每个顶点(白色顶点)均存在路径通向某个黑色顶点;
- U中的任意两个顶点之间不存在路径。
官方解法
教授提供的求解算法步骤如下:
- 使用
Kosaraju算法求解图G的强连通分量(Strongly Connected Components); - 构建强连通分量图(GSCC):将每个强连通分量视为一个独立节点,若原图中两个不同强连通分量之间存在有向边,则在GSCC中对应的节点间添加一条有向边;
- 在GSCC中,找出所有出度为0的节点(对应原图中的强连通分量),从每个这类强连通分量中任选一个顶点标记为黑色,所有被标记的顶点即构成集合U。
内容的提问来源于stack exchange,提问作者Nati Shen-Gordon
相关产品推荐
相关产品推荐

