查找poset子集的最大元素

时间:2012-04-13 12:14:24

标签: algorithm poset

问题如下: 给定一个poset的子集S找到S的最大元素

例如,考虑http://ndp.jct.ac.il/tutorials/Discrete/node34.html中poset的hass图。鉴于它的一个子集ex:{12,2,8},最大元素是12和8.

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

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

感谢。

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

因此假设hass图正好是我的RDF图。如果我从2开始进行深度优先搜索,我怎么知道8和12不可比?它们可能不是明确的,但它们可能是隐含的。

1 个答案:

答案 0 :(得分:4)

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