ツリーのデータ構造に似た半格子のデータ構造はありますか?


13

ツリーを部分的に順序付けられたセットと見なすと、それは結合半数化の特殊なケースになります。半結合を結合するために、2つの要素の(一意の)最小上限(ほぼ)を効率的に計算できるようにします。ツリーの場合、これを可能にするデータ構造は、対応するノードの各要素に対して、親へのポインターとルートへの距離メジャーを格納することです。(実際には、通常「ルートまでの距離測定」に使用されるトポロジカルソートに基づくラベリングは、事実上必要なのは、効率的に評価できる互換性のある半順序だけです)。

各有限半結合は、最小の上限がセットの和集合によって与えられるような順序での包含を持つ有限セットのサブセットのセットとして表すことができます。したがって、各要素を有限数のタグで表し、対応するタグの和集合で最小の上限を計算することが、1つの可能なデータ構造になります。(補数を見ると、対応するタグの共通部分として最小上限を定義することも可能です。)より一般的なデータ構造は、マトリックスを使用して「a <= b」または「join(a、b)」のすべての結果。

ただし、このようなデータ構造を使用してツリーを表すことは、奇妙なことです。2つの要素の(一意の)最小上限の(多かれ少なかれ)効率的な計算を依然として可能にする、結合半格子のツリー構造のデータ構造はもっとありますか?(おそらく、ノードの追加情報がツリーのルートまでの距離測定に似た何らかの種類の有向非周期グラフですか?)


2
math.hawaii.edu/~jb/math618/os2uh.pdfからの定理2.2は、上で仮定したように、半格子が(比較的些細な方法で)サブセットのセットとして表現できることを示しています。
トーマスクリンペル

回答:


9

格子理論に関するこのブログ投稿には、Vijay K. Gargによる「アプリケーションを使用した格子理論」が含まれています。第2章「Posetの表現」では、posetsを表現するためのいくつかのデータ構造について説明し、そのようなデータ構造を使用してjoin(x、y)を計算する方法について説明します。

最初に説明した2つのデータ構造は、推移的縮小グラフ(=ハッセ図/カバー関係)と推移的閉包グラフ(=ポーズ関係)の隣接リスト表現です。トポロジカルソートを使用してノードにラベルを付ける利点については、その説明の前に説明します。トポロジカルソートのラベルは、問題のツリーのデータ構造の一部である「ルートまでの距離測定」として十分であることに注意してください。

議論されている他の表現は、「骨格表現」、「マトリックス表現」、および「次元ベースの表現」です。「骨格表現」は興味深く有用ですが、ポーズの(= any)チェーン分解に基づいています。「マトリックス表現」は些細なことのように思えるかもしれませんが、ほとんどの実際的な問題に対しておそらく最良の表現です。「次元ベースの表現」は、線形オーダーのデカルト積のサブセットとしてポーズを表しますが、この種の最小表現の計算はNP困難です。

結論として、これらの最もツリー状の表現は、(「ルートまでの距離」の代わりに)トポロジカルソートによるノードのラベル付けを伴う推移的縮約の隣接リスト表現です。これは実際にはSageが使用する表現の1つです(もう1つは「マトリックス表現」です)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.