4

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

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

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

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

谢谢。

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

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

4

1 回答 1

4

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

于 2012-04-13T12:23:30.673 回答