I have a partially ordered set, say A = [x1, x2, ...]
, meaning that for each xi
and xj
in the set, (exactly) one of four possibilities is true: xi < xj
, xi == xj
, xi > xj
, or xi
and xj
are incomparable.
I want to find the maximal elements (i.e., those elements xi
for which there are no elements xj
with xi < xj
). What is an efficient algorithm to do this (minimize the number of comparisons)? I tried building a DAG and doing a topological sort, but just building the graph requires O(n^2) comparisons, which is too many.
I'm doing this in Python, but if you don't know it I can read other languages, or pseudocode.