部分的に順序付けられた一連の要素のどの永続データ構造ですか?


15

タイプaの要素セットを保存する必要があります。タイプaは部分的に順序付けられているため、と比較すると、より小さい、大きい、等しい、または比較できない値が返される可能性があります。a1a2

ハッシュテーブルの問題の1つは、2つの等しい要素を別々に表現できることです。また、私は、等しいと一致するハッシュ関数にアクセスできません。

2つの要素の比較には時間がかかるため、比較を最小限に抑えることは興味深いでしょう。必要に応じて、比較演算子への呼び出しをメモすることができます。アンチチェーンを保存するだけでよいことを理解しました(または、そうすることを想定しましょう)。より正確には、実行する必要がある操作は次のとおりです。

  • アンチチェーンから要素を削除します。
  • 要素を追加してみてください。要素がメンバーよりも小さい場合は追加しないでください。そうでない場合は、要素を追加して、それより小さい要素をすべて削除してください。

すべての要素を2つの整数でバインドすることもできます。そのため、およびであることがわかっている場合、知るとすぐにます。もちろん、は意味わけではありません...整数の境界を見つけることは、完全な要素比較に比べて比較的安価な操作です。1<a<23<b<42<3a<b23ab


1
あなたの質問に誠実に答えるためにはもっと知る必要があると思います。要素を保存しており、半順序は簡単に計算されますか?または、ある種のルックアップテーブルに半順序も格納していますか?半順序をどのように使用しますか?セットを保存するために線形順序を使用するのと同じ方法で使用することを望んでいますか(検索ツリーなど)。
アンドレイバウアー

私はアンチチェーンしか持っていないことに気付いたので、結果をリストに保存する単純なソリューションよりも良いものがあるかどうかはわかりません。もしそうなら、ごめんなさい!
アブダラ

あなたの質問が今では意味がないと思うなら、多分あなたは削除/終了のフラグを立てるべきですか?
スレシュヴェンカト

1
セット内の2つの要素は比類のないものになりますが、これは素朴な表現が可能な限り最高であることを意味するものではありません。たとえば、包含(=割り切れる順序で整数)で順序付けられた有限のマルチセットを考えてみましょう:データ表現によっては、最適化の可能性が多くあります(カーディナリティを使用して、サポートセットを使用して...)。これらの最適化は、順序関係の性質に強く依存します。次に、削除された要素に関する情報を保持する価値があるかどうかを判断するという別の問題があります。それらを頻繁に新しい追加要素と比較しますか?
ジル「SO-悪であるのをやめる」

はい、ありがとうございます。そこで、最適化につながる可能性のある情報(整数境界の可能性)を追加しました。
アブダラ

回答:


8

Daskalakis、Karp、Mossel、Risensefield、Verbin、2008年の論文「PoSetでの分類と選択」では、アンチチェーンに基づくPoSetの動的表現について説明しています。

また最近Arxivでリリースされたマンロー、ニコルソン、2012年の論文"Succinct Posets"とその書誌に興味があるかもしれません。それらのデータ構造は静的ですが、次のステップは動的なデータ構造を持つことだと思います。


Posetsでの並べ替えと選択は、データ構造に必要なものを把握するのに最適ですが、アルゴリズムは、ポゼット内の要素のタグ付けを前提としています(たとえば、最初に解決したい問題place!)クエリでデータ構造を構築した後、 2つの要素間の関係を計算します。したがって、この論文では、2つの要素間の関係のクエリは高価であり、ポセットのマッピング要素は簡単であると想定していますが、マップデータ構造は通常、後者を解決するために前者の逆を想定しています。O1O1Oqn
セバスチャングラフ

マップをチェーンの(最小)分解として表すことは、適切な洞察です。ただし、削除によって不変式を保持することは注意が必要です。
セバスチャングラフ

4

Heeringaらの「動的なツリーのような半順序での検索」を見たことがありますか?それらは、posetsの先行問題の動的データ構造を提供します。RAM用に設計されていますが、配列をバランスのとれたバイナリツリーとして表現し、乗算オーバーヘッドのみを発生させ、構造を純粋に機能させることができます。Olgn


1
これは、ある要素以下のすべての要素eがチェーンを形成する「ツリーのような」半順序、たとえばミート半格子のみを対象とすることに注意してください。
セバスチャングラフ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.