【发布时间】:2016-03-28 16:33:41
【问题描述】:
我有无向图,我需要找出图中连通分量的数量。我将图形表示为Map<Integer, ArrayList<Integer>> map(节点:连接节点列表)。然后我浏览该地图并计算连接的组件
int countComponents() {
for (Integer u : map.keySet()) { //all nodes
if (visited[u] == false) {
visited[u] = true;
components++;
dfs(u);
}
}
return components;
}
void dfs(int u) {
for (Integer v : map.get(u)) { //v is node connected to u
if (visited[v] == false) {
visited[v] = true;
dfs(v);
}
}
}
但我需要更高效的算法。也许使用另一种图表示更好,或者有另一种方法来查找连接组件的数量?
【问题讨论】:
标签: java algorithm performance graph