木 (数学)

出典: フリー百科事典『ウィキペディア(Wikipedia)』
Jump to navigation Jump to search
Tree graph.svg
6つの頂点と5つの辺からなる木の例
頂点 n
n − 1
彩色数 2
テンプレートを表示

数学、特にグラフ理論の分野における(き、: tree)とは、連結閉路を持たない(無向)グラフである。有向グラフについての木(有向木)についても論じられるが、当記事では専ら無向木を扱う(有向木については節にまとめた)。

閉路を持たない(連結であるとは限らない)グラフを(もり、: forest)という。木は明らかに森である。あるいは、森を一般的な場合とし、連結な森を木という、とすることもある。

コンピュータ上での木の扱いについては、木構造 (データ構造) を参照。

Tree-sample1.png

特徴づけ[編集]

n 個の点からなるグラフ T について次は同値である[1]

  • T は木である
  • T閉路はなく、 n − 1 本の辺を持つ
  • T連結で、 n − 1 本の辺を持つ
  • T は連結で、すべての辺はである
  • T の任意の2点を結ぶがちょうど1つある
  • T に閉路はないが、新しい辺をつけ加えると閉路が必ず1つできる

性質[編集]

T には、以下のような性質がある。

  • T の2点を結ぶ T に含まれない辺 e に対して、T + e には e を通るただ一つの閉路があり、この閉路上の任意の辺 f に対して T + e - f は木となる。
  • 頂点が2つ以上ある木には少なくとも2個の端末点がある。また、端末点とは次数1の点である。

上の定理から、木には必ず端末点があり、その端末点を除去すると位数の一つ小さい木が得られる。逆に言えば、位数 n の木は、位数 n − 1 の木に一つの新しい点と、これに接続する一本の新しい辺を加えて得られる。

根つき木[編集]

あるノードを選んで、それを一番「上」にあると考えると、そのノードを基準として2つのノードに上下の関係を考えることが出来る(すべてのノードの組み合わせについて定義されるとは限らない)。このとき、その一番上のノードを(ね、: root)という。根を持つ木を単なる木と区別して根付き木という。

根つき木に関する用語は、それを家系図に見たてたものが多く使われる。

  • v1v2 が辺で結ばれており、しかも v1 の方が v2 よりも根に近いとき、v1v2であるといい、v2v1であるという。
  • v2v3 が共通の親を持つとき、v2v3兄弟という。
  • 根つき木上の2点 v1, v2 に対し、v2 と根を結ぶ経路上に v1 があるとき、v1v2先祖であるといい、v2v1子孫であるという。

また根つき木に関する用語として、他に以下のようなものがある。

  • 子を持たない点をという。
  • 各辺の長さを1とするとき、点と根との経路の長さをその点の高さという。また、根から最も経路の長さが長くなる点までの長さを、その木の高さという。

n分木[編集]

n を自然数とする。葉ではない各点に対しその点の子の数が常に n であるような木をn分木(nぶんぎ; n-ary tree)という。特に二分木はいくつかのアルゴリズムと密接に関わるデータ構造である(ただしたいていは次で述べる有向木による二分木)。

有向木[編集]

一般に、無向木は任意の点を根とみなすことができる。それに対し有向木は、根である点をただ1つだけ持つ。辺の向きとして、根から葉に向かっている場合と、葉から根に向かっている場合とがある。混在はできない(混在してしまうと閉路ができてしまう)[2]

閉路を持たない任意の有向グラフは有向非巡回グラフ(Directed Acyclic Graph、DAG[3])である。有向木は連結な有向非巡回グラフでもあるが、連結な有向非巡回グラフが必ずしも有向木とは限らない(DAGでは子孫あるいは親の共有がある場合がある。そうするとそれは木ではない)。

脚注[編集]

  1. ^ ウィルソン 2007, p. 60.
  2. ^ データ構造などの実装としてはしばしば、Unixのファイルシステムにおける .. というディレクトリエントリなどのように、逆向きのリンクを持たせることがある。
  3. ^ 頻出するデータ構造であり、アクロニム風に「だぐ」と呼ばれることも多い。

参考文献[編集]

関連項目[編集]

外部リンク[編集]