Algorithm 求偏序集的极大元';s子集

Algorithm 求偏序集的极大元';s子集,algorithm,poset,Algorithm,Poset,问题如下: 给定偏序集的子集s,求s的极大元 例如,考虑偏序集的HASS图。给定它的一个子集ex:{12,2,8},最大元素是12和8 我不知道我是否准确地描述了这个问题。我认为这个问题可能涉及对传递闭包的排序或计算,但我有点困惑 你能给我一些快速算法的方法吗?我想把它保存在O(n^2)中 谢谢 稍微澄清一下。我的应用程序使用RDF图。如果存在表示

问题如下: 给定偏序集的子集s,求s的极大元

例如,考虑偏序集的HASS图。给定它的一个子集ex:{12,2,8},最大元素是12和8

我不知道我是否准确地描述了这个问题。我认为这个问题可能涉及对传递闭包的排序或计算,但我有点困惑

你能给我一些快速算法的方法吗?我想把它保存在O(n^2)中

谢谢

稍微澄清一下。我的应用程序使用RDF图。如果存在表示<关系的特定边,则两个节点具有可比性。如果存在这种显式关系或隐式传递关系,则两个节点可能具有可比性


所以假设hass图就是我的RDF图。如果我从2开始做深度优先搜索,我怎么知道8和12是不可比的?它们可能不是显式的,但可能是隐式的。

如果您知道排序关系的最小子集,则可以在线性时间内执行此操作:将其视为DAG,然后执行深度优先遍历以查找所有没有后续节点的顶点。

如果两个节点具有可比性wrt。排序关系,那么至少其中一个必须有一个后续节点来“转移”排序关系,对吗?是的,没错。然而,如果你有路径a-b-c,a和c是“隐式”可比的。基于这一点,我怀疑我必须计算子集中每个节点的传递闭包,并对可比较元素进行“清理”。假设a-b暗示了我最后的评论。在这里,DFS遍历也可以找到正确的答案,但如果您在子集{a,b,c,f}上运行它,而忽略后续关系的其余部分,则无法找到正确的答案。