graph - 从每个节点计算有向图中可到达节点的数量,比 O(V^2) 快吗?
问题描述
所以我有一个可能包含循环的有向图。对于每个节点,我需要计算从该节点可到达的节点数,并将其存储在表中。天真的方法是从每个节点使用 DFS,导致最多 O(V^2) 复杂度,这太慢了。
如果没有循环,解决这个问题会很容易,使用这个算法:
array numReachable(V elements of -1)
dfs(u):
if (numReachable[u] != -1) return numReachable[u]
mark u as VISITED
count = 1
for each node v adjacent to u:
if (v is UNVISITED):
count += dfs(v)
mark u as UNVISITED
return numReachable[u] = count
for each node u:
dfs(u)
但是,循环会破坏它。我尝试了解决方法,但似乎没有任何效果。我该怎么办?
解决方案
推荐阅读
- authentication - Flutter 中的 Instagram 登录身份验证
- reactjs - React-Final-Form:有没有办法在组件更改后不重新渲染表单?
- python - 计算文本文件中出现的名称,对重复项敏感
- .net - 具有文件内容的 .Net 资源使 docker build 失败
- android - 如何测试事件逻辑?
- javascript - async.queue 排水功能不会触发
- python - 消除文本开始前的白线
- typescript - 告诉方法的参数只接受
作为确切的字符串 - r - 为什么有些栅格函数在指定的临时目录中写入临时文件而有些则没有?
- r - R中的多维数组是否有等效的inner_join?