私はこれをあまり熟考していないので、間違っている場合は修正してください。
セイは、 posetの幅です。w
ばらばらのチェーンの和集合であるポーズについては、各チェーンにバイナリ検索のクエリ複雑度の標準下限を適用するだけで、少なくともw log nのPの評価が必要です。wwlognP
無料で比較を行うため、ポーズのチェーンへのチェーン分解を無料で計算できます。各チェーンでバイナリ検索を実行して、Pを満たす最初の要素を特定します。次に、識別された要素を調べて、支配的な要素を削除します。Pの評価数はO (w log n )です。チェーンごとに最大1つの最大要素が存在する可能性があるため、これによりすべての最大要素が識別されます。wPPO(wlogn)
追加:実際には、サブセット2 [ n ]のラティスに対してはるかに優れた()を行う単純な再帰アルゴリズムがあります(編集:domotorは彼の答えで一般的な戦略を説明しました)。ここで、Pは下向きに単調であると仮定しています(つまり、サブセット{ X :P (X )= 1 }は下位セットを形成します)。したがって、下のセットのメンバーを見つけるアルゴリズムは次のとおりです。O (n)2[ n ]P{ X: P( X)= 1 }
a)テスト。0の場合、停止します。P(∅ )
b)テスト。 P({ n } )
bi)0の場合、再帰します(nを含むセットは下位セットにないため、OK )。2[ n − 1 ]n
b.ii)1の場合は、副格子の下側のセットのメンバーが存在する。この副格子は2 [ n − 1 ]と同型であるため、再び再帰することができます。より正確には、2 [ n − 1 ] に対してアルゴリズムを実行できますが、アルゴリズムがP (Y )を評価するように要求するとき、P (X )を評価します。{X:n∈X}2[n−1]2[n−1]P(Y)P(X)。X=Y∪{n}
そのため、各ステップで、元のサイズの半分のサイズの副格子を再帰します。全体的に、を最大2 n回評価する必要があります(実際、アルゴリズムを実装して、述語n + 1を評価できますP2nn+1義雄が指摘するように、あなただけをチェックする必要があるため、時間を 1回)。∅