如何在 Petgraph 中获得确定性拓扑排序?

问题描述

我正在使用 petgraphtoposort 函数获取图表节点的排序列表。但是,toposort 不保证同一级别的所有节点都将以一致的确定性顺序返回。 petgraph 中是否有其他选项可以确定性顺序返回节点,还是我需要编写自己的函数? (如果是这样,任何指针?)

解决方法

所以 toposort(和其他算法)对图节点和边的创建顺序很敏感。我一直在用来自 HashMap 的数据提供图表,这些数据不能以确定性的顺序进行迭代。通过将我的数据切换到 BTreeMap,节点和边以可靠的顺序创建,然后 toposort 等算法给出确定性结果。