- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
Let
G(V,E)
, an undirected, connected graph with no bridges at all. Describe an algorithm which direct the edges, so the new graph is an SCC.
我推荐的算法
所以我们从任意顶点运行 DFS。我们注意到,由于它是一个无向图,因此只有树边和后边(对吗?)。我们相应地连接边(树边将指向“向下”,后边将指向“向上”)。
证明的开始
我们注意到该图没有桥。因此,每条边都是某个循环的一部分。因此,某个循环中最后被发现的边一定是后边。
现在,我认为其余的证明需要证明我们总是可以“爬”到根,因此该图是一个 SCC。
如果你能帮我连接点(或顶点 XD),我会很高兴
谢谢
最佳答案
您正在寻找的是 Robbins' Theorem 的证明.
有关更正式的证明,您可以查看 this paper (见定理 2 的证明)。
以下不是正式的证明,但这是您可以想到的一种方式:
正如您已经提到的,由于没有桥,每条边都是某个循环的一部分。由于您希望输出图为 SCC,因此此输出图(来自任何顶点)上的 DFS 必须仅具有back-edges 和tree-edges。它不能有forward-edges 或cross-edges。
假设我们有一条从s
到t
的forward-edge。这意味着在我们为了构建图形而运行的 DFS 中,t
是在 s
的子 DFS(递归调用)中发现的,并且没有其他灰色或白色相邻的。但这不是真的,因为每当我们在 DFS 中发现 t
时,我们仍然会有灰色相邻。
假设我们有一条从 s
到 t
的交叉边。这意味着 t
的子 DFS 在 s
被发现之前已经结束。同样,这在我们的 DFS 中不会发生,因为当首先发现 t
时,我们会在其子 DFS 或相反方向发现 s
。
这是一个简单的图表,可以帮助您了解这些情况。
关于algorithm - 使无向图成为强连通分量(SCC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39545803/
对于一个图,在找到强连通分量后,如何找到彼此有路径的 SCC 的数量?我想查找是否存在从 SCC1 到 SCC2 的路径。 最佳答案 你问了两件事: 如何找到彼此有路径的 SCC 的数量? 您可以从每
我目前有一个 Kosaraji 算法的工作实现,给定一个没有权重的有向图,将在图中打印 SCC。 我想对其进行调整,以便它也说明 SCC 之间的边缘位置。 代码如下: from collections
我一直在研究 SCC 和有关它们的算法,我看到人们几乎总是提到 Kosaraju 的算法找到了 SCC,并且还以(反向)拓扑排序对它们进行排序。 我的问题是:Tarjan 的算法是否也找到了(反向)拓
我正在尝试 openshift/minishift,我发现自己必须运行: oc edit scc privileged 并添加: - system:serviceaccount:default:rou
有一个二分图 B(E, V1, V2) 使得 e = (v1, v2) 对于 e ∈ E, v1 ∈ V1, v2 ∈ V2。 B 中的边是有向的。 我想制作一个图 G(E ∪ E', V2 ∪ V2
我想我现在明白了为什么我们不能保证原始图中最低的帖子编号是一个汇(它可能有到它之前已经访问过的顶点的出边)。 但为什么反转图表并查看最高帖子数的情况有所不同?为什么这是在原始图的汇 SCC 中查找顶点
Let G(V,E), an undirected, connected graph with no bridges at all. Describe an algorithm which direc
以下问题来自Skiena: Adding a single directed edge to a directed graph can reduce the number of weakly conn
是否可以手动将 SCC 附加到整个函数?例如,如何将 SCC 附加到下面的 f? f x = g x where g x = ... 如果我写 f x = {-# SCC f #-} g x y
这是我想显示的图像,因为如果没有它,将很难解释我想要什么 这是按钮代码: self.exitBtn = QtGui.QPushButton(self) self.exitBtn.setGeometry
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预
我正在尝试在我的 openshift 项目中运行 elasticsearch 容器。 我有错误: Privileged containers are not allowed capabilities.
我有一个包含近 100 万个节点的图,我正在其上计算强连接组件。我已将虚拟机的堆大小增加到 10240 mb,但它仍然抛出此异常: Error: 875714 Exception in thread
谁能给我解释一下 Kosaraju 寻找连通分量的算法背后的逻辑? 我已阅读 description ,尽管我不明白反转图上的 DFS 如何检测强连通分量的数量。 def dfs(visited, s
我从客户那里继承了一个 ASP.Net 2.0(文件系统)Web 项目,近年来有几家不同的公司参与了这个项目。该项目已从一家公司移交给另一家公司,最后才落到我手上。 所以现在,正如您可以想象的那样,代
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 9 年前。 Improve this
我正在阅读 Donal B.Johnson 关于在有向图中查找所有基本电路的论文,http://www.cs.tufts.edu/comp/150GA/homeworks/hw1/Johnson%20
假设我们有一个有向图,它不是一个完整的图并且有多个 SCC。我想知道如果我们转置图形并使用 Kosaraju 算法,强连通分量的模式是否会改变?通过说“转置图形”我的意思是翻转边缘的方向。如果我们尝试
Kosaraju 的算法陈述如下: #Input is graph G 1-define G_rev (links in reversed order) 2-Find the finishing ti
我是一名优秀的程序员,十分优秀!