我正在寻找一种用于存储 poset 的数据结构,它支持以下具有良好大复杂性的操作(这些操作经常进行):
- 确定给定元素是否可以始终排在另一个元素之前(最高优先级高于其他元素)
- 添加新的排序约束
- 返回可以在给定元素之前排序的所有元素
数据结构还必须支持从 poset 生成一个完全有序的集合,但这只需要在算法运行后对输出执行一次。
到目前为止,我一直依赖于一个幼稚的 poset 实现,但我已经达到了不再可持续的地步。
我看过https://cstheory.stackexchange.com/questions/8503/what-persistent-data-structure-for-a-set-of-partially-ordered-elements,答案中有一些有趣的论文,但大多数这些数据结构(如ChainMerge
)似乎都在考虑排序的情况下进行了优化,对我来说这是最不重要的一步。