グラフとネットワーク 4 - shizuoka...

Post on 22-Aug-2020

0 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

グラフとネットワーク (第4回)安藤和敏

ando@sys.eng.shizuoka.ac.jp

静岡大学工学部

グラフとネットワーク (第 4 回) – p.1/61

グラフとネットワーク (第 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

top related