グラフ探索
グラフとネットワーク (第 5 回) – p.2/54
グラフ探索
ある点から出発して,グラフの中を枝の向きに進みながら,可能な限り探索する方法
グラフとネットワーク (第 5 回) – p.2/54
グラフ探索
ある点から出発して,グラフの中を枝の向きに進みながら,可能な限り探索する方法
深さ優先探索 (DFS)
グラフとネットワーク (第 5 回) – p.2/54
グラフ探索
ある点から出発して,グラフの中を枝の向きに進みながら,可能な限り探索する方法
深さ優先探索 (DFS)
幅優先探索 (BFS)
グラフとネットワーク (第 5 回) – p.2/54
スタックとキュー
グラフとネットワーク (第 5 回) – p.3/54
スタックとキュー
DFSにはスタックと呼ばれるデータ構造が, BFSにはキューと呼ばれるデータ構造が用いられる.
グラフとネットワーク (第 5 回) – p.3/54
スタック (stack)
グラフとネットワーク (第 5 回) – p.4/54
スタック (stack)
a
b
c
(a)
グラフとネットワーク (第 5 回) – p.4/54
スタック (stack)
a
b
c
(a)
先に入ったもの (first-in)が後に出る (last-out)
グラフとネットワーク (第 5 回) – p.4/54
スタック (stack)
a
b
c
(a)
先に入ったもの (first-in)が後に出る (last-out)
平積みにされた本と同じ
グラフとネットワーク (第 5 回) – p.4/54
キュー (queue)
グラフとネットワーク (第 5 回) – p.5/54
キュー (queue)
a b c
(b)
グラフとネットワーク (第 5 回) – p.5/54
キュー (queue)
a b c
(b)
先に入ったもの (first-in)が先に出る(first-out)
グラフとネットワーク (第 5 回) – p.5/54
キュー (queue)
a b c
(b)
先に入ったもの (first-in)が先に出る(first-out)
銀行などの窓口と同じ
グラフとネットワーク (第 5 回) – p.5/54
キュー (queue)
a b c
(b)
先に入ったもの (first-in)が先に出る(first-out)
銀行などの窓口と同じ
待ち行列とも呼ばれる
グラフとネットワーク (第 5 回) – p.5/54
深さ優先探索 (DFS)
グラフとネットワーク (第 5 回) – p.6/54
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
グラフとネットワーク (第 5 回) – p.7/54
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
グラフとネットワーク (第 5 回) – p.8/54
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
グラフとネットワーク (第 5 回) – p.9/54
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
グラフとネットワーク (第 5 回) – p.10/54
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
グラフとネットワーク (第 5 回) – p.11/54
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
グラフとネットワーク (第 5 回) – p.12/54
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
グラフとネットワーク (第 5 回) – p.13/54
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
グラフとネットワーク (第 5 回) – p.14/54
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
グラフとネットワーク (第 5 回) – p.15/54
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
グラフとネットワーク (第 5 回) – p.16/54
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
グラフとネットワーク (第 5 回) – p.17/54
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
グラフとネットワーク (第 5 回) – p.18/54
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
グラフとネットワーク (第 5 回) – p.19/54
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
グラフとネットワーク (第 5 回) – p.20/54
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
グラフとネットワーク (第 5 回) – p.21/54
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
グラフとネットワーク (第 5 回) – p.22/54
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
グラフとネットワーク (第 5 回) – p.23/54
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
グラフとネットワーク (第 5 回) – p.24/54
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
グラフとネットワーク (第 5 回) – p.25/54
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
グラフとネットワーク (第 5 回) – p.26/54
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
グラフとネットワーク (第 5 回) – p.27/54
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
グラフとネットワーク (第 5 回) – p.28/54
幅優先探索 (BFS)
グラフとネットワーク (第 5 回) – p.29/54
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
グラフとネットワーク (第 5 回) – p.30/54
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
グラフとネットワーク (第 5 回) – p.31/54
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
グラフとネットワーク (第 5 回) – p.32/54
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
グラフとネットワーク (第 5 回) – p.33/54
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
グラフとネットワーク (第 5 回) – p.34/54
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
グラフとネットワーク (第 5 回) – p.35/54
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=
グラフとネットワーク (第 5 回) – p.36/54
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
グラフとネットワーク (第 5 回) – p.37/54
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
グラフとネットワーク (第 5 回) – p.38/54
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
グラフとネットワーク (第 5 回) – p.39/54
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
グラフとネットワーク (第 5 回) – p.40/54
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
グラフとネットワーク (第 5 回) – p.41/54
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
グラフとネットワーク (第 5 回) – p.42/54
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
グラフとネットワーク (第 5 回) – p.43/54
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
グラフとネットワーク (第 5 回) – p.44/54
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
グラフとネットワーク (第 5 回) – p.45/54
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
グラフとネットワーク (第 5 回) – p.46/54
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
グラフとネットワーク (第 5 回) – p.47/54
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
グラフとネットワーク (第 5 回) – p.48/54
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
グラフとネットワーク (第 5 回) – p.49/54
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
グラフとネットワーク (第 5 回) – p.50/54
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=
グラフとネットワーク (第 5 回) – p.51/54
深さ優先探索のちょっとした応用
図のような迷路が与えられたときに,入口と出口への道を見付けるために深さ優先探索を用いることができる.
(a)
グラフとネットワーク (第 5 回) – p.52/54
深さ優先探索のちょっとした応用
そのために,与えられた迷路から以下のようにグラフ (の幾何学的表現)を構成する.
グラフとネットワーク (第 5 回) – p.53/54
深さ優先探索のちょっとした応用
そのために,与えられた迷路から以下のようにグラフ (の幾何学的表現)を構成する.
(1)入口と出口に点を書く.
グラフとネットワーク (第 5 回) – p.53/54
深さ優先探索のちょっとした応用
そのために,与えられた迷路から以下のようにグラフ (の幾何学的表現)を構成する.
(2)迷路の中で道が二つ以上に分かれる分岐点に点を書く.
グラフとネットワーク (第 5 回) – p.53/54
深さ優先探索のちょっとした応用
そのために,与えられた迷路から以下のようにグラフ (の幾何学的表現)を構成する.
(3)迷路の中で行き止まりになっている地点に点を書く.
(b) グラフとネットワーク (第 5 回) – p.53/54
深さ優先探索のちょっとした応用
そのために,与えられた迷路から以下のようにグラフ (の幾何学的表現)を構成する.
(4)迷路の中の道に添って, (1)∼(3)で書いた点どうしを結ぶ.
グラフとネットワーク (第 5 回) – p.53/54
深さ優先探索のちょっとした応用
実際には,迷路が与えられたときにそのグラフ表現を書かなくても,迷路の深さ優先探索がどのようになるかは想像できるであろう.
グラフとネットワーク (第 5 回) – p.54/54
Top Related