グラフ理論(木)
最后更新时间:
文章总字数:
预计阅读时间:
以下はグラフ理論における木部分である。
用語 (Terms)
- 木 (Tree):
単純閉路を持たない連結な無向グラフ
- 森 (Forest):
単純閉路を持たない無向グラフ
- 根付き木 (Rooted Tree):
根と呼ばれる指定された頂点があり、この根から他の頂点への経路が唯一存在する有向グラフ
- 部分木 (Subtree):
木の部分グラフで、かつ木であるもの
- 親 (Parent of
in a Rooted Tree): 根付き木において が辺であるときの頂点
- 子 (Child of a Vertex
in a Rooted Tree): 頂点 を親とする頂点
- 兄弟 (Sibling of a Vertex
in a Rooted Tree): 同じ親を持つ頂点
- 祖先 (Ancestor of a Vertex
): 根から までの経路上にある頂点
- 子孫 (Descendant of a Vertex
): を祖先とする頂点
- 内部頂点 (Internal Vertex): 子を持つ頂点
- 葉 (Leaf): 子を持たない頂点
- 頂点のレベル (Level of a Vertex):
根からその頂点への経路の長さ
- 木の高さ (Height of a Tree):
木の頂点のレベルの最大値
-分木 ( -ary Tree): 各内部頂点が最大 個の子を持つ木
- 完全
-分木 (Full -ary Tree): 各内部頂点が正確に 個の子を持つ木
- 二分木 (Binary Tree):
の場合の -分木
- 順序木 (Ordered Tree):
各内部頂点の子が線形順序で並べられた木
- 平衡木 (Balanced Tree): すべての葉が高さ
または のレベルにある木
- 二分探索木 (Binary Search Tree):
頂点にラベルが付けられ、各頂点の左部分木のラベルがその頂点より小さく、右部分木のラベルがその頂点より大きい二分木
- 決定木 (Decision Tree):
各頂点が決定の結果を表し、葉が問題の解決策を表す根付き木
- ゲーム木 (Game Tree):
頂点がゲームの状態を表し、辺が合法的な手を表す根付き木
- 接頭辞コード (Prefix Code):
ある文字のコードが別の文字のコードの接頭辞とならない性質を持つコード
- ミニマックス戦略 (Minmax Strategy):
最初のプレイヤーが最大値、次のプレイヤーが最小値を選ぶ戦略
- 頂点の値 (Value of a Vertex in a Game Tree):
葉の場合、その状態で得られる利益;
内部頂点の場合、偶数レベルでは最大値、奇数レベルでは最小値
- 木の走査 (Tree Traversal):
木の頂点をリストアップする方法
- 前順序走査 (Preorder Traversal):
根を最初に、左から順に部分木を走査する方法
- 中順序走査 (Inorder Traversal):
左部分木、根、右部分木の順で走査する方法
- 後順序走査 (Postorder Traversal):
左から順に部分木を走査し、最後に根を訪れる方法
- 中置記法 (Infix Notation):
木の中順序走査で得られる数式の表記法
- 前置記法 (Prefix Notation / Polish Notation):
木の前順序走査で得られる数式の表記法
- 後置記法 (Postfix Notation / Reverse Polish
Notation): 木の後順序走査で得られる数式の表記法
- 全域木 (Spanning Tree):
グラフのすべての頂点を含む木
- 最小全域木 (Minimum Spanning Tree): 辺の重みの合計が最小の全域木
結果 (Results)
- 木の定義 (Tree Definition):
すべての頂点対に対して唯一の単純経路が存在する場合、そのグラフは木である。
- 木の辺の数 (Edges in a Tree):
頂点を持つ木は 本の辺を持つ。
- 完全
-分木の頂点数 (Vertices in a Full -ary Tree): 内部頂点数を とすると、 頂点を持つ。
-分木の葉と高さ (Leaves and Height in an -ary Tree): -分木で高さ の葉の数は最大 である。
- ハフマン符号 (Huffman Coding):
与えられた文字の頻度に基づき、最適な二分符号を構築する手順
- 深さ優先探索 (Depth-First Search, DFS):
生成木を構築する際、パスを追加し続け、進めなくなったら戻る手法
- 幅優先探索 (Breadth-First Search, BFS):
直前に追加された辺に隣接するすべての辺を順に追加して生成木を構築する手法
- プリムのアルゴリズム (Prim’s Algorithm):
重み付きグラフで最小生成木を構築するために、既存の頂点に隣接する最小重みの辺を追加する手順
- クラスカルのアルゴリズム (Kruskal’s Algorithm): 重み付きグラフで最小生成木を構築するために、重みが最小の辺を順に追加し、閉路を作らないようにする手順
定理と証明
11.1 定理1
無向グラフが木であるための必要十分条件は、任意の2つの頂点間に一意な単純経路が存在することである。
証明:
まず、
次に、任意の2つの頂点間に一意な単純経路が存在すると仮定する。このとき、
11.1 定理2
頂点数が
である木は 本の辺を持つ。
証明:
この定理を数学的帰納法を用いて証明する。ここで考えるすべての木は根付き木として扱い、根を選ぶものとする。
基礎ステップ:
帰納ステップ:
帰納法の仮定として、
帰納法の仮定より、
11.1 定理3
内部頂点が
である完全 -分木は 個の頂点を含む。
証明:
根を除くすべての頂点は、内部頂点の子である。各内部頂点は
次に、
定理4 では、これらの量の間の関係を説明している。
11.1 定理4
完全
-分木に関する関係式:
個の頂点を持つ場合:
内部頂点の数:、葉の数:
個の内部頂点を持つ場合:
頂点の数:、葉の数:
個の葉を持つ場合:
頂点の数:、内部頂点の数:
証明
(i)
から を得る。 - これを
に代入すると、葉の数 となる。
(ii)
の値は、定義から である。
という事実を利用すると、葉の数 は次のようになる:
したがって、内部頂点に対して、頂点数 と葉の数 が求まる。
(iii)
- 頂点数
は、各内部頂点が 個の子を持つ完全 -分木の性質を用いると、次のようになる:
この式をに代入する:
これにより、頂点数が導かれる。
- 次に内部頂点
は明らかに:
11.1 定理5
の高さを持つ -分木( -ary tree)において、葉の数は最大 である。
証明:
この証明は高さに関する数学的帰納法を用いる。
まず、高さ1の
次に、任意の高さ
これらの部分木の高さは
となる。これにより、根付き木
これで帰納法による証明が完了する。
11.1 系1
高さ
の -分木( -ary tree)に葉の数が 個あるとき、
が成り立つ。もし-分木が完全かつ平衡であるならば、
(ここで、天井関数は、 以上の最小の整数を表す)。
証明:
定理5より、葉の数
となる。
が成り立つ。
次に、木が平衡であると仮定する。すると、各葉は高さ
また、
が成り立つ。この不等式に底
が得られる。
したがって、
であることが示される。
11.1.14
単純グラフ
が木であるための必要十分条件は、 が連結であり、かつ任意の辺を削除すると非連結グラフになることである。
証明:
まず、
したがって、
次に、
これは仮定「任意の辺を削除すると非連結になる」に反する。したがって、
11.1.15
個の頂点を持つ単純グラフ について、次を示せ:
a.は 本の辺を持つ連結グラフであるとき、かつそのときに限り木である。
b.は 本の辺を持ち、単純閉路を持たないとき、かつそのときに限り木である。
証明:
a.
「ならば」部分
「必要条件」部分
b.
「ならば」部分
「必要条件」部分
である。また、各成分について、辺の総数は
問題の仮定より、
11.1.30
高さ
の完全 -分平衡木(full -ary balanced tree)において、葉の数は よりも多いことを示せ。
証明:
このとき、結果として得られる木は高さ
しかし、元の木では、レベル
11.1.44
すべての木は2色で彩色することができる。
証明:
根を1つ選び、それを赤色で塗る。その後、奇数レベルのすべての頂点を青色で塗り、偶数レベルのすべての頂点を赤色で塗る。この彩色方法により、隣接する頂点は必ず異なる色で塗られるため、木全体が2色で彩色可能である。
11.1.48
頂点を持つ二分木において、葉の平均深さが であることを示せ。
証明:
頂点の移動:
のレベルに子が2つない内部頂点が存在する場合、レベル にある葉をその欠損部分の子として移動させる。この操作によって、木の葉の平均深さは低くなるが、証明すべき下限には影響しない。 したがって、操作後の木について証明すれば十分である。 完全な二分木の構築:
この操作を繰り返すことで、レベル以下に2つの子を持たない内部頂点が存在しなくなる。結果として、すべての葉はレベル および に集まる。 次に、レベル にあるすべての頂点を削除し、レベル に集約する。 頂点数の計算:
頂点数に対する変化は最大でも係数2(またはそれより少し多い程度)であり、大きなオメガ記法( )に対する影響は無視できる( が1程度しか変化しないため)。
完全二分木では、演習28より、葉の数はであり、 が成り立つ。 葉の平均深さ:
完全二分木において、すべての葉は深さにある。ここで、 より、
したがって、葉の平均深さはであることが示された。
11.2 定理1
二分比較に基づくソートアルゴリズムは、少なくとも
回の比較を必要とする。
証明:
ソートの複雑度の定義:
ソートアルゴリズムの複雑度は、使用される二分比較の回数で測定される。最悪の場合の比較回数は、ソート手順を表す決定木(decision tree)の高さに等しい。決定木と高さの関係:
要素のリストをソートするための決定木には、 通りの葉が存在する。これは、ソートのすべての順列に対応する。
二分木の高さは、葉の数に対して
以上であることが系1(11.1節)から導かれる。結論:
よって、個の葉を持つ二分決定木の高さは少なくとも であり、これはソートアルゴリズムに必要な比較回数の下限である。
11.2 系1
二分比較に基づくソートアルゴリズムが
個の要素をソートする際の比較回数は である。
証明:
定理1の結果: 定理1より、二分比較に基づくソートアルゴリズムが必要とする比較回数は少なくとも
である。 階乗の対数の評価:
演習74(Section 3.2)より、は である。これは、アルゴリズムの計算量解析における標準的な参照関数である。 結論:
よって、個の要素をソートするために二分比較を使用するアルゴリズムは、最悪の場合において少なくとも
回の比較が必要である。
これにより、系1が示された。
11.2 定理2
二分比較に基づくソートアルゴリズムが
個の要素をソートする際に使用する平均比較回数は である。
証明:
最悪ケースの比較回数:
系1より、二分比較に基づくソートアルゴリズムが個の要素をソートする際の最悪ケースの比較回数は である。これにより、マージソートのようなアルゴリズムがこの複雑度において最適であることが分かる。 平均ケースの証明:
平均ケースでも類似の結果が成り立つことを示す。- 平均比較回数は、決定木における葉の平均深さに等しい。
- 演習48(11.1節)より、
頂点を持つ二分木における葉の平均深さは である。
- 平均比較回数は、決定木における葉の平均深さに等しい。
階乗関係の利用:
とおくと、葉の平均深さが であることから、 に対応する関数 は である。 したがって、平均比較回数も
である。
以上により、定理3が示された。
11.4 定理1
単純グラフ
は、全域木を持つ場合に限り連結である。
証明:
(必要条件)
まず、単純グラフ
(十分条件)
次に、
もし
この操作を繰り返すことで、
11.4.25
連結単純グラフ
において、頂点 を根とする幅優先全域木(breadth-first spanning tree)における のレベル数は、 から への最短経路の長さに等しいことを示せ。
証明:
帰納法を経路の長さに基づいて示す。
基礎ステップ(経路の長さが0の場合):
経路の長さが0であれば、であり、結果は自明である。 は根 と同じレベル(レベル0)にある。 経路の長さが1の場合:
経路の長さが1の場合、は に隣接している。したがって、幅優先全域木において はレベル1に配置される。 帰納法の仮定:
経路の長さが以下のすべての頂点 に対して、 のレベルは から への最短経路の長さに等しいと仮定する。 経路の長さが
の場合:
経路の長さがの場合、 から への最短経路上にある の直前の頂点を とする。 帰納法の仮定より、 は幅優先全域木のレベル にある。 がレベル 以下にあったと仮定すると、 から への最短経路の長さも 以下になる。これは が直前の頂点 に隣接していることに矛盾する。 - よって、
は幅優先全域木において の隣接頂点として、レベル に追加される。
以上により、帰納法により証明が成立する。
11.4.55
および を単純グラフ の2つの全域木(spanning trees)とする。また、 を に含まれ、 に含まれない辺とする。 このとき、 に含まれ、 に含まれない辺 が存在して、次の性質が成り立つことを示せ:
から を削除し、 を加えたものは全域木である。 から を削除し、 を加えたものは全域木である。
証明:
における閉路の存在:
を に加えると、 は単純閉路 を含む。この閉路 は を含む。 の連結成分:
から を削除すると、グラフ は2つの連結成分に分かれる。 の端点 と は、これら2つの異なる成分に属する。 閉路
上の の選択:
上を から の方向とは逆に進むと、 と同じ成分に初めて到達する頂点が存在する。その際に交差する辺を とする。 は全域木である:
は閉路 上に存在するため、 を削除すると閉路が解消される。したがって、 は依然として連結かつ のすべての頂点を含む木となる。 は全域木である:
は2つの連結成分に分かれているが、 はこの2つの成分を結合する。したがって、 は再び連結かつすべての頂点を含む木となる。
結論:
以上により、
は全域木である。
は全域木である。
11.4.56
任意の全域木
から任意の別の全域木 へ、辺を1つずつ削除し別の辺を加える操作を繰り返すことで到達できることを示せ。
証明:
前問(Exercise 55)の利用:
問題55により、に含まれ には含まれない辺 を削除し、 に含まれ には含まれない辺 を加えることで、 を新しい全域木に変換することが可能である。 距離の定義:
と の間の距離 は、それらの木の辺集合の対称差( と の共通でない辺の数)を2で割ったものである(各操作で2つの辺が入れ替わるため)。 操作による変換:
- 一度の操作で、
に含まれる辺 を削除し、 に含まれる辺 を加えることで、 と の間の距離を2減少させることができる。 - この操作を繰り返すことで、距離
を0にすることができる。
- 一度の操作で、
帰納法的な手続き:
初めにと の距離が であるとする。各ステップで次の操作を行う: に含まれるが には含まれない辺 を選ぶ。
に含まれるが には含まれない辺 を選び、 から を削除し、 を加える。
この操作により、距離は2減少する。
終了条件:
距離が0になるとき、 は と完全に一致する。
結論:
この手順を
11.5.18
連結な重み付きグラフにおいて、最小重みの辺は任意の最小全域木に含まれなければならないことを示せ。
証明:
反証法を用いる。
仮定:
最小重みの辺がある最小全域木 に含まれていないと仮定する。 辺
の追加による閉路の形成: を に追加すると、 はグラフ全体を覆うが、閉路(単純サイクル) が1つ含まれることになる。 - 閉路
は を含む。
閉路から辺を削除:
閉路には 以外の辺も存在し、それらは よりも大きな重みを持つ(仮定より の辺はすべて よりも重みが大きい)。 の中から 以外の任意の辺 を削除すると、新しいグラフ は連結かつサイクルを含まないため、再び全域木となる。
矛盾の導出:
の重みは より大きいため、 の重みの合計は の重みより小さくなる。
- これは
が最小全域木であるという仮定に矛盾する。
結論:
したがって、最小重みの辺
11.5.19
すべての辺の重みが異なる場合、連結な重み付きグラフにおける最小全域木は一意であることを示せ。
証明:
仮定:
連結な重み付きグラフにおいて、すべての辺の重みが異なるとする。さらに、最小全域木が2つ存在すると仮定し、それらを と とする。 反証法の適用:
と は異なる全域木であるため、辺の集合において異なる部分が存在する。つまり、 に含まれ に含まれない辺 が少なくとも1つ存在する。 を に加えると閉路 が形成される。
閉路
に含まれる辺:
の中には 以外に に含まれる辺が存在する。その中から任意の辺 を選ぶと、 の重みと の重みを比較することができる。 重みの矛盾:
の重みが より小さい場合、 から を削除し を加えることで、 の重みの合計は小さくなる。 これは が最小全域木であるという仮定に矛盾する。
の重みが より大きい場合、 に対して同様の操作を行うと の重みの合計が小さくなる。これは が最小全域木であるという仮定に矛盾する。
結論:
すべての辺の重みが異なる場合、最小全域木は一意に決定される。したがって、仮定した2つの異なる最小全域木と は存在しない。
補完1
単純グラフが木であるための必要十分条件は、次の2つを満たすことである:
- 単純閉路を含まない。
- 隣接していない2つの頂点を結ぶ辺を追加すると、ちょうど1つの単純閉路を持つ新しいグラフが生成される。
証明:
「ならば」部分
「十分条件」部分
さらに、
補完3
少なくとも1本の辺を持つすべての木は、少なくとも2つのペンダント頂点(次数が1の頂点)を持つ。
証明:
木
ここで、
各頂点の次数
これを整理すると:
この式から、和の中で
これにより、少なくとも2つの頂点がペンダント頂点であることが示された。
補完6
を正の整数とし、その和が であるとする。このとき、 個の頂点を持つ木で、頂点の次数が であるものが存在することを示せ。
証明: 数学的帰納法を用いて示す。
基本ステップ
帰納ステップ
一般性を失うことなく、
次に、帰納法の仮定を用いて、列
したがって、すべての
補完7
すべての木は平面グラフであることを示せ。
証明:
木は単純閉路を持たないため、
補完8
すべての木は二部グラフであることを示せ。
証明:
木を根付き木として考える。頂点を偶数レベルの頂点集合と奇数レベルの頂点集合に分ける。この分割により、隣接する任意の2頂点は異なる集合に属するため、木は二部グラフである。
補完9
すべての森は2色で彩色可能であることを示せ。
証明:
森の各連結成分に対して、それぞれ独立に彩色を行う。まず、各連結成分を根付き木として設定する。その後、偶数レベルのすべての頂点を赤色で、奇数レベルのすべての頂点を青色で彩色する。これにより、各連結成分が正しく彩色され、森全体が2色で彩色可能であることが示される。