我有一个部分有序的集合,比如说A = [x1, x2, ...]
,这意味着对于集合中的每个xi
and xj
,(确切地说)四种可能性之一是正确的:xi < xj
、xi == xj
、xi > xj
、 或xi
并且xj
是无法比较的。
我想找到最大的元素(即那些xi
没有元素的元素xj
)xi < xj
。什么是执行此操作的有效算法(最小化比较次数)?我尝试构建 DAG 并进行拓扑排序,但仅构建图形需要 O(n^2) 比较,这太多了。
我在 Python 中执行此操作,但如果您不知道,我可以阅读其他语言或伪代码。