考虑一个不连通的有向图G={V,E}
的例子,其中顶点V={a,b,c,d}
和边E={(a->b),(a->c)}
其中顶点d
是孤立的。
根据这里的答案:(对强连通图的最小加法),保证这个图所需的最小边数结果是3。
如何找到将这些边添加到哪里,即图中一条边的起始点和终止点?
这是一个出奇微妙的问题。Eswaran和Tarjan(见下文)是第一个提出线性时间算法的人,但Raghavan发现并纠正了一个错误(关于Eswaran和Tarjan关于强连通性增强问题的算法的注)。链接的PDF文章包含对修正算法的完整处理。
@article{doi:10.1137/0205044,
author = {Kapali P. Eswaran and R. Endre Tarjan},
title = {Augmentation Problems},
journal = {SIAM Journal on Computing},
volume = {5},
number = {4},
pages = {653-665},
year = {1976},
doi = {10.1137/0205044},
URL = {
http://dx.doi.org/10.1137/0205044
},
eprint = {
http://dx.doi.org/10.1137/0205044
}
}
以下是完整的问题: null 我的两个问题是:(1)在最小化SCCs之间的边之前的算法是正确的吗?(2)如何使SCC之间的边最小化。 对于(2),我知道这相当于使DAG中的边数最小化。(将SCCs视为顶点)。但这似乎对我没有帮助。
我在NetworkX中有一个有向无环简单图。 现在,对于每个边,该边都有一个“源”和一个“目标”。如果除了这个边之外,还有一条从“源”到“目标”的路径,那么我想删除这个边。 null > 节点为: 边缘是:
我有一组节点和它们之间的一组有向边。边缘没有重量。 我怎样才能找到使图强连接所必须添加的最小数量的边(即从每个结点到所有其他结点都应该有一条路径)?这个问题有名字吗?
我有一个强连通图。我想移除一个边并检查是否仍然保持强连接。因为我将N=图中节点的总数取为10,并且我感兴趣的大多数图都有25条以上的边,所以很难检查一次使用一条,去掉边。 如何解决这个问题?多谢了。
根据CLRS第3版的定义,单连通有向图是指每对顶点(u,v)至多有一条唯一的路从u->v来的图。现在我读过的大多数答案都说,我们从图中的每个顶点运行DFS,如果在任何情况下我们找到一条交叉边或一条前向边,那么图就不是单连通的。我可以理解前向边的概念,但是在这个图上运行这个algo 1-->2<--3将给出一个结果:它不是单连通的,而这个图是单连通的。我们有一个从3->2或1->2的交叉边,这取决于