Aug 22, 2020
木
グラフとネットワーク (第 4 回) – p.2/61
木
図のようなグラフは木と呼ばれる.
グラフとネットワーク (第 4 回) – p.2/61
木
図のようなグラフは木と呼ばれる. もっと正確には,閉路が無くて連結な (つながっている)グラフを木と呼ぶ.
グラフとネットワーク (第 4 回) – p.2/61
木
図のようなグラフは木と呼ばれる. もっと正確には,閉路が無くて連結な (つながっている)グラフを木と呼ぶ.
点の数がnの木の枝の本数はn − 1である. (なぜか?)
グラフとネットワーク (第 4 回) – p.2/61
木 (続き)
グラフとネットワーク (第 4 回) – p.3/61
木 (続き)
木において,次数が1であるような点は葉と呼ばれる.
グラフとネットワーク (第 4 回) – p.3/61
木 (続き)
木において,次数が1であるような点は葉と呼ばれる.
木には必ず葉が存在する. (なぜか?)
グラフとネットワーク (第 4 回) – p.3/61
有向木
グラフとネットワーク (第 4 回) – p.4/61
有向木
図のような有向グラフを有向木と呼ぶ.
v0
v0が根グラフとネットワーク (第 4 回) – p.4/61
有向木
図のような有向グラフを有向木と呼ぶ. 有向木では根と呼ばれる1点以外にはちょうど1本の枝が入り,根には入る枝はない.
v0
v0が根グラフとネットワーク (第 4 回) – p.4/61
有向木 (続き)
グラフとネットワーク (第 4 回) – p.5/61
有向木 (続き)
v0
グラフとネットワーク (第 4 回) – p.5/61
有向木 (続き)
v0 v0
グラフとネットワーク (第 4 回) – p.5/61
有向木 (続き)
v0 v0
内向木
グラフとネットワーク (第 4 回) – p.5/61
有向木 (続き)
v0 v0
外向木 内向木
グラフとネットワーク (第 4 回) – p.5/61
根付き木
グラフとネットワーク (第 4 回) – p.6/61
根付き木
無向グラフとしての木を考える.
グラフとネットワーク (第 4 回) – p.6/61
根付き木
無向グラフとしての木を考える. 1点を選んで,それを根と考えることができる.
v0
グラフとネットワーク (第 4 回) – p.6/61
根付き木
無向グラフとしての木を考える. 1点を選んで,それを根と考えることができる.
v0
根が指定された木を根付き木と呼ぶ.
グラフとネットワーク (第 4 回) – p.6/61
根付き木 (続き)
v0
グラフとネットワーク (第 4 回) – p.7/61
根付き木 (続き)
v0を根とする根付き木は,
v0
グラフとネットワーク (第 4 回) – p.7/61
根付き木 (続き)
v0を根とする根付き木は, 外向木 (または内向木)と考えることもできる.
v0
グラフとネットワーク (第 4 回) – p.7/61
根付き木 (続き)
グラフとネットワーク (第 4 回) – p.8/61
根付き木 (続き)
v0を根とする根付き木 (あるいは,有向木)を考える.
v0
グラフとネットワーク (第 4 回) – p.8/61
根付き木 (続き)
v0を根とする根付き木 (あるいは,有向木)を考える. vに隣接する点で, vからv0へ至る道上の点にある点をv′とする.
v0v
v’
グラフとネットワーク (第 4 回) – p.8/61
根付き木 (続き)
v0を根とする根付き木 (あるいは,有向木)を考える. vに隣接する点で, vからv0へ至る道上の点にある点をv′とする.
v0v
v’
v′はvの親, vはv′の子グラフとネットワーク (第 4 回) – p.8/61
グラフ探索
グラフとネットワーク (第 4 回) – p.9/61
グラフ探索
ある点から出発して,グラフの中を枝の向きに進みながら,可能な限り探索する方法
グラフとネットワーク (第 4 回) – p.9/61
グラフ探索
ある点から出発して,グラフの中を枝の向きに進みながら,可能な限り探索する方法
深さ優先探索 (DFS)
グラフとネットワーク (第 4 回) – p.9/61
グラフ探索
ある点から出発して,グラフの中を枝の向きに進みながら,可能な限り探索する方法
深さ優先探索 (DFS)
幅優先探索 (BFS)
グラフとネットワーク (第 4 回) – p.9/61
スタックとキュー
グラフとネットワーク (第 4 回) – p.10/61
スタックとキュー
DFSにはスタックと呼ばれるデータ構造が, BFSにはキューと呼ばれるデータ構造が用いられる.
グラフとネットワーク (第 4 回) – p.10/61
スタック (stack)
グラフとネットワーク (第 4 回) – p.11/61
スタック (stack)
a
b
c
(a)
グラフとネットワーク (第 4 回) – p.11/61
スタック (stack)
a
b
c
(a)
先に入ったもの (first-in)が後に出る (last-out)
グラフとネットワーク (第 4 回) – p.11/61
スタック (stack)
a
b
c
(a)
先に入ったもの (first-in)が後に出る (last-out)
平積みにされた本と同じ
グラフとネットワーク (第 4 回) – p.11/61
キュー (queue)
グラフとネットワーク (第 4 回) – p.12/61
キュー (queue)
a b c
(b)
グラフとネットワーク (第 4 回) – p.12/61
キュー (queue)
a b c
(b)
先に入ったもの (first-in)が先に出る(first-out)
グラフとネットワーク (第 4 回) – p.12/61
キュー (queue)
a b c
(b)
先に入ったもの (first-in)が先に出る(first-out)
銀行などの窓口と同じ
グラフとネットワーク (第 4 回) – p.12/61
キュー (queue)
a b c
(b)
先に入ったもの (first-in)が先に出る(first-out)
銀行などの窓口と同じ
待ち行列とも呼ばれる
グラフとネットワーク (第 4 回) – p.12/61
深さ優先探索
グラフとネットワーク (第 4 回) – p.13/61
DFS 1~5
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
S
i=0
0
0 0
0
0
グラフとネットワーク (第 4 回) – p.14/61
DFS 6~9
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
S
i=1
1
0 0
0
0
v1
グラフとネットワーク (第 4 回) – p.15/61
DFS 10~22
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
S
i=
1
0 0
2
0
v1
a=
v=
w=
v1
a1
v4
2v4
グラフとネットワーク (第 4 回) – p.16/61
DFS 10~22
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
S
i=
1
0 3
2
0
v1
a=
v=
w=
v4
a8
v3
3v4v3
グラフとネットワーク (第 4 回) – p.17/61
DFS 10~22
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
S
i=
1
4 3
2
0
v1
a=
v=
w=
v3
a7
v2
4v4v3v2
グラフとネットワーク (第 4 回) – p.18/61
DFS 10~11
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
S
i=
1
4 3
2
0
v1
a=
v=
w=
4v4v3v2
v2
グラフとネットワーク (第 4 回) – p.19/61
DFS 12
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
S
i=
1
4 3
2
0
v1
a=
v=
w=
4v4v3
グラフとネットワーク (第 4 回) – p.20/61
DFS 10~22
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
S
i=
1
4 3
2
5
v1
a=
v=
w=
v3
a9
v5
5v4v3v5
グラフとネットワーク (第 4 回) – p.21/61
DFS 10~22
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
S
i=
1
4 3
2
5
v1
a=
v=
w=
v5
a4
v1
5v4v3v5
グラフとネットワーク (第 4 回) – p.22/61
DFS 10~22
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
S
i=
1
4 3
2
5
v1
a=
v=
w=
v5
a5
v4
5v4v3v5
グラフとネットワーク (第 4 回) – p.23/61
DFS 10~22
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
S
i=
1
4 3
2
5
v1
a=
v=
w=
v5
5v4v3v5
a6
v2
グラフとネットワーク (第 4 回) – p.24/61
DFS 10~11
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
S
i=
1
4 3
2
5
v1
a=
v=
w=
5v4v3v5
v5
グラフとネットワーク (第 4 回) – p.25/61
DFS 12
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
S
i=
1
4 3
2
5
v1
a=
v=
w=
5v4v3
グラフとネットワーク (第 4 回) – p.26/61
DFS 10~11
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
S
i=
1
4 3
2
5
v1
a=
v=
w=
5v4v3
v3
グラフとネットワーク (第 4 回) – p.27/61
DFS 12
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
S
i=
1
4 3
2
5
v1
a=
v=
w=
5v4
グラフとネットワーク (第 4 回) – p.28/61
DFS 10~22
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
S
i=
1
4 3
2
5
v1
a=
v=
w=
5v4
v4
a10
v4
グラフとネットワーク (第 4 回) – p.29/61
DFS 10~11
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
S
i=
1
4 3
2
5
v1
a=
v=
w=
5v4
v4
グラフとネットワーク (第 4 回) – p.30/61
DFS 12
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
S
i=
1
4 3
2
5
v1
a=
v=
w=
5
グラフとネットワーク (第 4 回) – p.31/61
DFS 10~22
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
S
i=
1
4 3
2
5
v1
a=
v=
w=
5
v1
a2
v2
グラフとネットワーク (第 4 回) – p.32/61
DFS 10~22
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
S
i=
1
4 3
2
5
v1
a=
v=
w=
5
v1
a3
v2
グラフとネットワーク (第 4 回) – p.33/61
DFS 10~11
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
S
i=
1
4 3
2
5
v1
a=
v=
w=
5
v1
グラフとネットワーク (第 4 回) – p.34/61
DFS 12
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
S
i=
1
4 3
2
5
a=
v=
w=
5
グラフとネットワーク (第 4 回) – p.35/61
幅優先探索
グラフとネットワーク (第 4 回) – p.36/61
BFS 1~6
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
Q
i=0
0
0 0
0
0
グラフとネットワーク (第 4 回) – p.37/61
BFS 7~9
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
Q
i=1
1
0 0
0
0
v1
グラフとネットワーク (第 4 回) – p.38/61
BFS 10~22
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
Q
i=2
1
0 0
2
0
v1
a= a1
w= v4
v4
v= v1
グラフとネットワーク (第 4 回) – p.39/61
BFS 10~22
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
Q
i=3
1
3 0
2
0
v1
a=w= v2
v4
v= v1
a2
v2
グラフとネットワーク (第 4 回) – p.40/61
BFS 10~22
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
Q
i=3
1
3 0
2
0
v1
a=w= v2
v4
v= v1
a3
v2
グラフとネットワーク (第 4 回) – p.41/61
BFS 10~11
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
Q
i=3
1
3 0
2
0
v1
a=w=
v4
v= v1
v2
グラフとネットワーク (第 4 回) – p.42/61
BFS 12
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
Q
1
3 0
2
0
v4 v2
i=3
a=w=
v=
グラフとネットワーク (第 4 回) – p.43/61
BFS 10~22
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
Q
i=4
1
3 4
2
0
a=w= v3
v4
v= v4
a8
v2 v3
グラフとネットワーク (第 4 回) – p.44/61
BFS 10~22
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
Q
i=4
1
3 4
2
0
a=w= v4
v4
v= v4
a10
v2 v3
グラフとネットワーク (第 4 回) – p.45/61
BFS 10~11
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
Q
i=4
1
3 4
2
0
a=w=
v4
v= v4
v2 v3
グラフとネットワーク (第 4 回) – p.46/61
BFS 12
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
Q
i=4
1
3 4
2
0
a=w=
v=
v2 v3
グラフとネットワーク (第 4 回) – p.47/61
BFS 10~11
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
Q
i=4
1
3 4
2
0
a=w=
v=
v2 v3
v2
グラフとネットワーク (第 4 回) – p.48/61
BFS 12
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
Q
i=4
1
3 4
2
0
a=w=
v=
v3
グラフとネットワーク (第 4 回) – p.49/61
BFS 10~22
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
Q
i=4
1
3 4
2
0
a=w= v2
v= v3
a7
v3
グラフとネットワーク (第 4 回) – p.50/61
BFS 10~22
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
Q
i=
1
3 4
2
5
a=w= v5
v= v3
a9
v3 v5
5
グラフとネットワーク (第 4 回) – p.51/61
BFS 10~11
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
Q
i=
1
3 4
2
5
a=w=
v= v3
v3 v5
5
グラフとネットワーク (第 4 回) – p.52/61
BFS 12
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
Q
i=
1
3 4
2
5
a=w=
v=
v5
5
グラフとネットワーク (第 4 回) – p.53/61
BFS 10~22
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
Q
i=
1
3 4
2
5
a=w=
v= v5
v5
5
a4
v1
グラフとネットワーク (第 4 回) – p.54/61
BFS 10~22
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
Q
i=
1
3 4
2
5
a=w=
v= v5
v5
5
a5
v4
グラフとネットワーク (第 4 回) – p.55/61
BFS 10~22
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
Q
i=
1
3 4
2
5
a=w=
v= v5
v5
5
a6
v2
グラフとネットワーク (第 4 回) – p.56/61
BFS 10~11
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
Q
i=5
1
3 4
2
5
a=w=
v= v5
v5
グラフとネットワーク (第 4 回) – p.57/61
BFS 12
a1
a2 a3
a4 a5
a6
a7
a8
a9
a10v1
v2 v3
v4
v5
Q
i=
1
3 4
2
5
a=w=
v=
グラフとネットワーク (第 4 回) – p.58/61
深さ優先探索のちょっとした応用
図のような迷路が与えられたときに,入口と出口への道を見付けるために深さ優先探索を用いることができる.
(a)
グラフとネットワーク (第 4 回) – p.59/61
深さ優先探索のちょっとした応用
そのために,与えられた迷路から以下のようにグラフ (の幾何学的表現)を構成する.
グラフとネットワーク (第 4 回) – p.60/61
深さ優先探索のちょっとした応用
そのために,与えられた迷路から以下のようにグラフ (の幾何学的表現)を構成する.
(1)入口と出口に点を書く.
グラフとネットワーク (第 4 回) – p.60/61
深さ優先探索のちょっとした応用
そのために,与えられた迷路から以下のようにグラフ (の幾何学的表現)を構成する.
(2)迷路の中で道が二つ以上に分かれる分岐点に点を書く.
グラフとネットワーク (第 4 回) – p.60/61
深さ優先探索のちょっとした応用
そのために,与えられた迷路から以下のようにグラフ (の幾何学的表現)を構成する.
(3)迷路の中で行き止まりになっている地点に点を書く.
(b) グラフとネットワーク (第 4 回) – p.60/61
深さ優先探索のちょっとした応用
そのために,与えられた迷路から以下のようにグラフ (の幾何学的表現)を構成する.
(4)迷路の中の道に添って, (1)∼(3)で書いた点どうしを結ぶ.
グラフとネットワーク (第 4 回) – p.60/61
深さ優先探索のちょっとした応用
実際には,迷路が与えられたときにそのグラフ表現を書かなくても,迷路の深さ優先探索がどのようになるかは想像できるであろう.
グラフとネットワーク (第 4 回) – p.61/61