作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我看了this Princeton University connected components tutorial并尝试运行我电脑上给出的代码(跳到 13 分钟的代码)。代码应该找出图中所有不同的连接组件,并为每个顶点分配一个“id”,以标识它属于哪个组件。我做了一个示例图来测试它,请看这里:
![视觉呈现][1]
当我运行下面的代码时,它打印出 ids 为 0,0,1,2,3
但它们应该是 0,0,0,1,1
。知道我做错了什么吗?
public class ConnectedComponents {
public boolean[] marked;
public int[] id;
public int count;
public ConnectedComponents() {
//Make a Graph with 5 vertices, and 4 edges
Graph g = new Graph(5, false, false);
g.addEdge(0, 1); g.addEdge(0, 2);g.addEdge(1, 2);
g.addEdge(3, 4);
int numVertices = g.getNumberOfVertices();
marked = new boolean[numVertices];
id = new int[numVertices];
for(int v = 0; v < numVertices; v++) {
if(!marked[v]) {
dfs(g, v);
count++;
}
}
}
public void dfs(Graph g, int v) {
marked[v] = true;
id[v] = count;
// loops through each vertex that's connected to v
for(int w: g.getEdgeMatrix()[v]) {
if(!marked[w]) {
dfs(g, w);
}
}
}
public int id(int v) {
return id[v];
}
public static void main(String [] args){
ConnectedComponents cc = new ConnectedComponents();
for(int i = 0; i < cc.id.length; i++) {
System.out.println(cc.id[i]);
}
}
}
最佳答案
由于 addEdge 的实现,您的 DFS 有效地在有向图上运行。更改它以添加反向边缘。
关于algorithm - 在图中寻找连通性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50540023/
我尝试使用评分最高的答案:Check whether there is an Internet connection available on Flutter app检查我是否连接了互联网,但是我需要
我有点困惑连接是如何工作的。我正在尝试从网格中移除面,并调整连接性,移除未使用的边和顶点。当我使用 mesh.is_valid() 它显示连接问题 Integrity of previous half
我正在尝试编写一个脚本来测试是否可以访问 SVN 存储库,如果我在命令行中键入 svn info,我将得到类似于此的结果 Path: . Working Copy Root Path: [path]
我是一名优秀的程序员,十分优秀!