algorithm - 按顺序访问 DAG 节点的最有效方法

标签 algorithm performance language-agnostic graph

我有一个大型(超过 100,000 个节点)有向无环图 (DAG),我想按顺序在每个节点上运行“访问者”类型的函数,其中顺序由图中的箭头定义。即保证在节点本身之前访问节点的所有父节点。

如果两个节点不直接或间接地相互引用,那么我不关心它们的访问顺序。

执行此操作最有效的算法是什么?

最佳答案

您必须执行 topological sort在节点上,并按结果顺序访问节点。

这种算法的复杂度是O(|V|+|E|),已经很不错了。你想遍历所有个节点,所以如果你想要一个比这更快的算法,你将不得不在不查看所有边的情况下解决它,这将是危险的,因为一个边可能会破坏整个节点完全有序。

关于algorithm - 按顺序访问 DAG 节点的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3573770/

相关文章:

python - 递归地将pymysql Comment对象转换为树

c# - 将数字拆分为多个范围

java - 二叉搜索树选择方法实现

jquery - Jqgrid - 未捕获的 RangeError : Maximum call stack size exceeded

c - 奇数 'skip' 函数 : error when running is double loops

javascript - 检查帖子是否在收藏夹列表中的最佳方法

sql-server - SQL Server ODBC性能损失?

language-agnostic - 258 双编码的放气长度

algorithm - 生成填字游戏的高效算法(纽约时报的风格)

performance - 有没有比 switch 语句更快的东西?