木分解

提供: testwiki
ナビゲーションに移動 検索に移動

テンプレート:About

8点のグラフとそのサイズ6の木分解。グラフの各辺に対して、それがつなぐ2点は木のあるノードに同時に含まれている。グラフの各頂点について、それが含まれているノードは木の連結な部分木をなす。木の各ノードは高々3点しか含まないので、この木分解の木幅は2である。

グラフ理論において、木分解とはグラフからへのマッピングであり、テンプレート:仮リンクを定義してグラフの上のある種の計算機科学の問題を高速に解くために使われる。

機械学習では、木分解はjunction treeclique treejoin treeとも呼ばれ、確率伝搬法制約充足問題クエリ最適化en:matrix decompositionのような問題で重要な役割を果たす。

木分解の概念は最初にテンプレート:Harvsにより導入された。後にテンプレート:Harvsにより再発見され、以降他の多数の研究者たちに研究されている。[1]

定義

直観的には、木分解は与えられたグラフGの頂点をある一つの木の部分木として表現する。元のグラフGにおいて2つの頂点が隣接するのは対応する部分木が共通部分を持つときに限る。それゆえ、Gは部分木達の交差グラフ部分グラフをなす。交差グラフそのものは弦グラフである。

それぞれの部分木はグラフの頂点に木のノードの集合を割り当てる。このことを形式的に定義すると、木のノードひとつひとつを、それに関連付けられたグラフの頂点の集合として表現する。そのため、グラフG = (V, E)が与えられたとき、木分解はペア(X, T)である。ここで、X = {X1, ..., Xn} はVの部分集合族で、Tは頂点がVの部分集合Xiであるような木であり、以下の性質を満たす:[2]

  1. 全ての集合Xiの和集合はVに等しい。つまり、それぞれの頂点は少なくとも一つの木のノードに割り当てられている。
  2. グラフの各辺(v, w) に対して、vwの両方を含む部分集合 Xi が少なくとも一つ存在する。つまり、グラフの中で頂点が隣接するのは対応する部分木が共通のノードを持つ場合に限られる。
  3. XiXj が両方とも頂点vを含む場合、XiXj の間の(一意な)パスに含まれる全てのノードXkvを含む。つまり、vに関連付けられたノードたちはTの連結な部分集合をなす。これはcoherenceやrunning intersection propertyとしても知られている。これは、「Xi, Xj, Xkがノードで、XkXi から Xjへのパス上にあるならば、XiXjXkである」という条件と同値である。

木分解は一意には定まらない。例えば、自明な木分解として、全ての頂点を含む単一のノードからなる木分解を考えることができる。

台となる木が道グラフであるような木分解を道分解と呼ぶ。このような特殊なタイプの木分解から得られる幅のパラメータは道幅として知られている。

木幅kの木分解(X, T = (I, F))は、iI:|Xi|=k+1(i,j)F:|XiXj|=kを満たすときsmoothであるという。[3]

木幅

テンプレート:Main

木分解のはその最大の集合Xiの大きさ引く1である。グラフG木幅 tw(G)はすべての可能なGの木分解の幅の最小値である。この定義では、木の木幅を1とするために最大の集合の大きさから1を引いている。木幅は木分解以外の構造からも定義することができる。たとえば弦グラフbrambleshavensなどである。

与えられたグラフGの木幅が与えられた上限k以下であるかどうかを決定する問題はNP完全である。[4]しかし、kが固定された定数である場合、木幅kのグラフの認識と、幅kの木分解の構成は線型時間で可能である。[3]時間計算量はkについては指数関数的に増加する。

動的計画法

1970年代の始めに、グラフの上の広い範囲の組合せ最適化問題が、グラフの次元(木幅に関係するパラメータ)が制限されている場合には動的計画法によって効率的に解けることが知られていた。テンプレート:Sfnpその後、多くのNP完全なアルゴリズム的問題が固定された木幅のグラフに対して木分解を用いた動的計画法で効率的に解けることを、1980年代の終わりに数人の研究者が独立に発見した。[5]

例として、木幅kのグラフの最大独立集合を見つける問題を考える。この問題を解くために、木分解のノードを任意に一つ選んで根とする。木分解のノードXiに対して、DiXiの下のノードXj全体の和集合とする。独立集合S ⊂ Xiに対して、A(S,i)をDiの独立集合Iであって、 I ∩ Xi = Sを満たす最大のもののサイズとする。同様に、隣接するノードXi , Xj(Xjの方が根に近い)と独立集合S ⊂ Xi ∩ Xjに対して、B(S,i,j)をDiの独立集合Iであって、 I ∩ Xi ∩ Xj = Sを満たす最大のもののサイズとする。ABは木をボトムアップにたどることによって以下のように計算することができる:

A(S,i)=|S|+j(B(SXj,j,i)|SXj|)
B(S,i,j)=maxSXiS=SXjA(S,i)

ここで、A(S,i)の式における和はXiの子ノード全体をわたる。

各ノードと辺において、A(S,i)B(S,i,j)を計算すべき集合Sの個数は高々2k+1である。そのため、kが定数ならば、1ノードおよび1辺あたりの計算は定数時間でできる。最大独立集合の大きさは根のノードに格納されている最大の値であり、最大独立集合自身も(普通の動的計画法のアルゴリズムのように)最大値からバックトラックを行うことで計算できる。そのため、決められた木幅のグラフの最大独立集合問題は線形時間で解ける。類似のアルゴリズムによって、他の多くのグラフの問題を解くことができる。

この動的計画法によるアプローチは、機械学習において、決められた木幅のグラフにおける確率伝搬法を行うen:junction tree algorithmに用いられる。また木幅を計算し木分解を構成するためにも用いられる。典型的には、そのようなアルゴリズムは最初に木幅を近似し、その近似した木幅の木分解を構成し、次にその木分解の上で動的計画法を行うことで正確な木幅を計算する。[3]

脚注

テンプレート:Reflist

参考文献

テンプレート:Refbegin

テンプレート:Refend

テンプレート:Combin-stub