木 (数学)

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

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

class=skin-invert-image

 特徴づけ 
 個の点からなるグラフ  について次は同値である。

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

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

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

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

根つき木に関する用語は、それを家系図に見たてたものが多く使われる。
 点  と  が辺で結ばれており、しかも  の方が  よりも根に近いとき、 は  の親であるといい、 は  の子であるという。
 点  と  が共通の親を持つとき、 と  は兄弟という。
 根つき木上の2点 ,  に対し、 と根を結ぶ経路上に  があるとき、 は  の先祖であるといい、 は  の子孫であるという。

また、根つき木に関する用語として、他に以下のようなものがある。
 子を持たない点を葉という。
 各辺の長さを1とするとき、点と根との経路の長さをその点の高さという。また、根から最も経路の長さが長くなる点までの長さを、その木の高さという。

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

 有向木 
一般に、無向木は任意の点を根とみなすことができる。それに対し有向木は、根である点をただ1つだけ持つ。辺の向きとして、根から葉に向かっている場合と、葉から根に向かっている場合とがある。混在はできない（混在してしまうと閉路ができてしまう）データ構造などの実装としてはしばしば、Unixのファイルシステムにおける .. というディレクトリエントリなどのように、逆向きのリンクを持たせることがある。。

閉路を持たない任意の有向グラフは有向非巡回グラフ（Directed Acyclic Graph、DAG頻出するデータ構造であり、アクロニム風に「だぐ」と呼ばれることも多い。）である。有向木は連結な有向非巡回グラフでもあるが、連結な有向非巡回グラフが必ずしも有向木とは限らない（DAGでは子孫あるいは親の共有がある場合がある。そうするとそれは木ではない）。

 脚注 

 参考文献 


 関連項目 
 カクタスグラフ
 系統樹

 外部リンク 
 Graph Theory (Reinhard Diestel)

Category:グラフ理論
Category:数学に関する記事
Category:ダイアグラム
Category:データ構造
Category:組合せ論