
グラフ理論は数学の一分野であり、二連結グラフの三連結成分は、グラフ内のすべての 2 頂点カットを記述するより小さなグラフのシステムです。SPQRツリーは、コンピュータサイエンス、特にグラフアルゴリズムで使用されるツリー データ構造であり、グラフの三連結成分を表します。グラフの SPQR ツリーは線形時間で構築でき[ 1 ] 、動的グラフアルゴリズムやグラフ描画にいくつかの応用があります。
SPQR ツリーの基本的な構造、グラフの 3 連結成分、およびこの分解と平面グラフの平面埋め込みとの間の関係は、最初にSaunders Mac Lane ( 1937 )によって調査されました。これらの構造は、 Di BattistaとTamassia ( 1989 、1990 、1996 )によって SPQR ツリーとして形式化される前に、他のいくつかの研究者[ 2 ]によって効率的なアルゴリズムで使用されました。
SPQRツリーは、各ノードxに対して無向グラフまたは多重グラフG xが関連付けられる根なしツリーの形式をとります。ノードおよびそれに関連付けられたグラフは、SPQRという頭文字で示される4つのタイプのいずれかになります。
SPQRツリーの2つのノード間の各エッジxyには、2つの有向仮想エッジが関連付けられています。そのうちの1つはGxのエッジであり、もう1つはGyのエッジです。グラフGxの各エッジは、最大で1つのSPQRツリーエッジの仮想エッジとなることができます。
SPQR ツリーTは、次のように形成される2 連結グラフG Tを表します。SPQR ツリーのエッジxy がG xの仮想エッジabとG yの仮想エッジcdを関連付ける場合、aとcを 1 つのスーパー頂点にマージし、bとd を別のスーパー頂点にマージし、2 つの仮想エッジを削除して、より大きな単一のグラフを形成します。つまり、より大きなグラフはG xとG yの2-クリーク和です。SPQR ツリーの各エッジに対してこの接着ステップを実行すると、グラフG Tが生成されます。接着ステップを実行する順序は結果に影響しません。グラフG xのいずれかの各頂点は、このようにして、マージされたスーパー頂点であるG Tの一意の頂点と関連付けられます。
通常、SPQRツリー内では、2つのSノードが隣接したり、2つのPノードが隣接したりすることは許されません。なぜなら、そのような隣接が発生すると、2つのノードが1つのより大きなノードにマージされてしまう可能性があるからです。この仮定の下で、SPQRツリーはそのグラフから一意に決定されます。グラフGが、隣接するPノードも隣接するSノードもないSPQRツリーで表される場合、SPQRツリーのノードに関連付けられたグラフG xは、 Gの3連結成分として知られています。
与えられた2頂点連結グラフのSPQR木は線形時間で構築できる。[ 1 ]
グラフの三連結成分を構築する問題は、Hopcroft & Tarjan (1973)によって初めて線形時間で解決されました。このアルゴリズムに基づいて、Di Battista & Tamassia (1996) は、成分のリストだけでなく、完全な SPQR ツリー構造も線形時間で構築できるはずだと提案しました。GDToolkit ライブラリの一部として、SPQR ツリーのより遅いアルゴリズムの実装が提供された後、Gutwenger & Mutzel (2001)が最初の線形時間実装を提供しました。このアルゴリズムの実装プロセスの一環として、彼らはHopcroft & Tarjan (1973)の以前の研究のいくつかのエラーも修正しました。
Gutwenger & Mutzel (2001)のアルゴリズムは、以下の全体的な手順を含んでいます。
分割されたコンポーネントを見つけるために、Gutwenger & Mutzel (2001)は深さ優先探索を使用して、彼らが「パームツリー」と呼ぶ構造を見つけます。これは、深さ優先探索ツリーであり、ツリーに属するエッジはツリーのルートから離れる方向に、その他のすべてのエッジはルートに向かって方向付けられています。次に、ツリー内のノードの特別な先行順番号付けを見つけ、この番号付けの特定のパターンを使用して、グラフをより小さなコンポーネントに分割できる頂点のペアを特定します。このようにしてコンポーネントが見つかると、スタックデータ構造を使用して、新しいコンポーネントの一部となるべきエッジを特定します。
グラフGの SPQR ツリー (Q ノードなし) を使用すると、 Gからuとvを削除してもグラフが連結しないような、 G内のすべての頂点のペアuとv を簡単に見つけることができ、残りのグラフの連結成分も簡単に見つけることができます。
Gの 2 頂点カットの数は、SPQR ツリーのエッジの数に、k個の頂点を持つすべての S ノードについて、対応するサイクル内の非隣接頂点の順序付けされていないペアの数 (つまり、 k ( k − 3)/2)を加えた数で与えられます。
平面グラフが 3-連結である場合、どの面を外側の面とするかの選択と埋め込みの向きを除いて、一意の平面埋め込みが存在します。埋め込みの面は、グラフの非分離サイクルと正確に一致します。ただし、ラベル付きの頂点とエッジを持つ平面グラフが 2-連結であるが 3-連結でない場合、平面埋め込みを見つける自由度が大きくなる可能性があります。具体的には、グラフの SPQR ツリー内の 2 つのノードが仮想エッジのペアで接続されているときはいつでも、一方のノードの向きを他方のノードに対して反転(鏡像に置き換える)することが可能です。さらに、SPQR ツリーの P ノードでは、P ノードの仮想エッジに接続されているグラフのさまざまな部分を任意に置換することができます。すべての平面表現はこのように記述できます。[ 4 ]