最終更新日:7/20/2017, 2:20:49 AM
グラフ(graph)の話
- グラフ(graph)は,
頂点(vertex)の空でない有限集合と辺(edge)の集合からなる.
- 頂点は点,節点(node)とも呼ばれる,
辺は枝(branch, arc)とも呼ばれる.
- 辺が頂点の順序対で与えられる場合,
そのグラフを有向(directed)グラフという.
- は辺の始点(tail),は辺の終点(head)と呼ばれる.
- 辺が相異なる頂点の非順序対で与えられる場合,
そのグラフを無向(undirected)グラフという.
- のとき,
頂点は頂点に隣接(adjacent)するという.
また,をからへの辺ともいう.
- に隣接する頂点の個数をの出次数(out degree),
が隣接する頂点の個数をの入次数(in degree)という.
- 無向グラフの場合の頂点の次数(degree)は,それに隣接する頂点の個数である.
- 有向道(directed path)とは,という辺の列である.
これをからへの有向道といい,その長さはである.
- からへの有向道が存在するとき,はから到達可能(reachable)であるという.
- 全ての頂点がある頂点から到達可能であるとき,このを根(root)という.
- 道はその辺が全て異なるとき単純(simple)であるという.
- 道はその頂点が全て異なるとき初等的(elementary)であるという.
但し最初と最後の頂点は一致しても良い.
- 閉路(circuit, loop, closed path)とは,同じ頂点で始まりかつ終わる,長さ以上の道のことである.
- 有向閉路,サイクル(cycle)とは,同じ頂点で始まりかつ終わる,長さ以上の有向道のことである.
辺行列(edge matrix)
- 行が辺を表しているように,各行がの辺を意味しているの整数行列
接続行列(incident matrix)
- 頂点に辺が接続している時,接続していない時としたの行列
(有向グラフの場合は,頂点からへの有向枝が有る時)
隣接行列(adjacency matrix)
隣接点リスト(adjacency list)
- 一般に枝の個数はに比べて極めて小さく,隣接行列の要素は殆どがとなるので,
各頂点に隣接している頂点をリストとして管理した方が効率が良い
例
|
|
|
グラフ | 辺行列 | 接続行列 |
|
|
|
隣接行列 | 隣接点リスト |
- 有向木(directed tree)とは,閉路のない有向グラフ(directed acyclic graph)で,以下の条件を満たす:
- 根(root)と呼ばれる,入次数(in deegree)がの頂点が存在する
- 根以外の頂点の入次数(in degree)はである
- 各頂点には,根からそれに至る有向道が存在する
- 根付木(rooted tree)とも呼ばれる.
- を木とする.のとき,はの親(father)といい,はの子(son)といわれる.
- からへの有向道が存在するとき,はの先祖(ancester)といい,はの子孫(descendant)といわれる.
- 子を持たない頂点は,葉(leaf)と呼ばれる.
- 頂点とその子孫全体はの部分木(subtree)といわれる.
頂点はその部分木の根である.
- 木の頂点の深さ(depth),レベル(level)とは,根からへの有向道の長さである.
- 木の頂点の高さ(height)とは,から最も遠い葉への有向道の長さである.
- 木の高さ(height)とは,その根の高さである.
- 順序木(ordered tree)とは,各頂点の子の間に順序が付いている木のことである.
- 順序木を描くときは,各頂点の子は左から右へ順番に書くものとする.
- 2分木(binary tree)とは,以下のような順序木である:
- 各頂点の子は左の子(left son)または右の子(right son)として区別されている
- どの頂点の左の子も右の子も高々個である
- 根が頂点 の左の子である部分木をの左部分木(left subtree),
同様に,その根が頂点の右の子である部分木をの右部分木(right subtree)という.
- 以下のような2分木を完全(complete)2分木という:
ある整数
が存在して,
- 深さ未満の頂点が全て左右の子を持つ
- 深さの頂点が全て葉である
- 高さの完全2分木は個の頂点を持つ
木の走査(traverse)
木の根が子を持っているとする.
のとき,は1個頂点だけからなる木とする.
先行順走査(preorder traverse)
- 行きがけ順とも呼ばれる.
- の先行順走査(preorder traverse)は以下の様に帰納的に定義される:
- 根を訪問(走査)する
- 根を持つ部分木をこの順に先行順で訪問する.
後行順走査(postorder traverse)
- 帰りがけ順とも呼ばれる.
- の後行順走査(postorder traverse)は以下の様に帰納的に定義される:
- 根を持つ部分木をこの順に後行順で訪問する.
- 根を訪問する
- 中がけ順とも呼ばれる.
- 2分木に対する中間順走査(inorder traverse)は以下の様に帰納的に定義される:
- 根の左部分木を(もし在れば)中間順で訪問する.
- 根を訪問する
- 根の右部分木を(もし在れば)中間順で訪問する.
- 無向木(undirected tree)とは,閉路のない無向グラフで,連結(connected:任意の2頂点間に道がある)なものをいう.
- 根付き(rooted)無向木とは,特定の頂点が根として指定されている無向木をいう.
- 有向木の全ての辺の向きを無くすと無向木になる
- 根付き無向木に対しても,有向木と同様な述語を用いる
- 違いは:
有向木 | 全ての有向道が先祖から子孫へ行く |
無向木 | 両方向の道が存在する |
- ラベル付きグラフ(labeled graph)とは,各頂点にラベルが与えられているグラフである.
- 重み付きグラフ(weighted graph)とは,各辺に重みが与えられているグラフである.