私は部分的に順序付けられたセット、たとえば を持っていますA = [x1, x2, ...]
。つまり、セット内の各xi
およびについてxj
、(正確に) 4 つの可能性のうちの 1 つが真です: xi < xj
、xi == xj
、、xi > xj
またはは比類のないものです。xi
xj
xi
最大の要素 (つまり、 の要素がない要素)xj
を見つけたいと考えていますxi < xj
。これを行うための効率的なアルゴリズムは何ですか (比較の数を最小限に抑えます)? DAG を構築してトポロジカル ソートを実行しようとしましたが、グラフを構築するだけでも O(n^2) の比較が必要であり、これは多すぎます。
私はこれを Python で行っていますが、それがわからない場合は、他の言語または疑似コードを読むことができます。