講義資料

2/30
教育目的(シラバスより)
現実に直面する問題を解く際に、
1.事前に問題のモデル化を行い、
2.そのモデル上での最適解を求め、
3.その最適解を元にして現実の問題を解くの
に役立てる、
というステップをとることは、実際、頻繁に用い
られているアプローチである。この講義では、現
実問題をモデル化する際によく用いられる「グラ
フとネットワーク」について、その基本用語と性
質とについて解説する。
グラフとネットワーク(1)
~基礎概念と用語~
教育目的(シラバスより)
3/30
最短路問題
巡回セールスマン問題
最小木問題
最大フロー問題
など、グラフ理論での代表的な問題とその解法と
を取り上げるとともに、アルゴリズム的に易しい
問題と難しい問題についても触れる。この講義を
習得させることにより、現実問題に対しての洞察
力やモデル化の能力を備えた学生を育成する。
授業計画
(1)基礎概念と用語
(2)グラフの分類
(3)グラフの連結性
(4)アルゴリズムと計算量
(5)グラフの探索
(6)オイラーの一筆書き
(7)最小木問題
(8)最短経路問題
(9)中間試験
(10)フローの定義と性質
(11)最大フロー問題
(12)最大マッチング
(13)最大フローのアルゴリズム
(14)層ネットワークによる最大フローアルゴリズム
(15)まとめ
(16)期末試験
5/30
4/30
教育目標
下記の項目を、教育目標とする。
a. グラフ理論で用いる用語を、正しく使うことができ
る。
b. 代表的な問題について、問題の難しさおよび解法の
アルゴリズムを理解した上で解くことができる。
c. グラフ理論をモデル化の一道具として、現実問題に
適用することができる。
この科目は、ディプロマポリシーに掲げる
「情報工学に必要な、数学及び情報科学の諸理論
を習得し、それらを応用できる力」
に対応します。
6/30
講義の進め方(1)
• 講義は、パワーポイント資料(板書を併用)
を使います(演習に時間をとりたいので)
– 第2回以降のパワーポイントの資料は、
http://www.cs.miyazaki-u.ac.jp/~bisu/Graph/
にあるので各自で印刷すること。
(重要)
7/30
講義の進め方(2)
8/30
講義の進め方(3)
• 成績について(シラバスより)
• 出席について
– 4回以上欠席すると、単位が付かない
– 講義の最後に課す課題を提出した人を出席者とする
• 「課題が終わっていない」 または 「遅れて出席」 した場
合は、欠席1/3扱いにします。(3回貯まると1回欠席)
• 課題の解答は、講義資料と同じページに掲示します。
• 連絡先
グラフ理論の用語や定義は、文献によって異なることがあ
ります。本講義で使う定義や記号は、基本的にこの文献に
従います。
(質問は、随時受け付けています)
– E-mail : [email protected]
9/30
勉強の仕方
何がわからないのか?
講義中は、メモを取る程度で話を聞く
ことに集中し、演習問題を解いて提出
する(講義)
• 教科書
なし
• 文献
「グラフ理論」連結構造とその応用(朝倉書店)
「グラフ理論入門」基本とアルゴリズム(森北出版)
– 居室:A229教室
– オフィスアワー:毎週木曜16:30~17:30
講義資料を印刷し、資料を見ながら
内容を理解するように努める(予習)
– 中間50点+期末50点
– 合計60点以上が合格
10/30
今日の講義で学ぶこと
• グラフ(graph)とは?
– グラフの定義
– 辺(edge)と頂点(vertex)
– 無向グラフと有向グラフ
– 基本概念(接続と隣接など)
疑問
• ネットワーク(network)とは?
– ネットワークの定義
演習問題の解答を読んで、確認する。
また、自習問題を解く(復習)
質問する
http://www.cs.miyazaki-u.ac.jp/~bisu/Graph/(重要)
グラフとは?
11/30
【定義】グラフは、点の有限集合
V = {v1 , v2 , , vn } n :グラフの位数 (order)
と点対 ek = {vi , vj } である辺の有限集合
k
k
12/30
【注】無向グラフの場合は、
e1 = {v1 , v2 }、e2 = {v2 , v3 }
と記すべきだが、慣習で無向辺を
e1 = (v1 , v2 )、e2 = (v2 , v3 )
などと記すことがある。
E = {e1 ,e2 , ,em } m :グラフのサイズ (size)
v2
v2
によって、G = (V,E) と定義される。
【注】ek = {vik , vjk } は無向辺を意味する。
有向辺は、ek = (vik , vjk ) と記す。
v1
e1
e2
無向グラフ
v3
v1
e1
e2
有向グラフ
v3
13/30
a
c
q
r
b
s
【練習問題】
(1)右のグラフの位数を答えなさい
a
解答:5
頂点集合:V = {a,b,c,d}
p
辺集合:E = {p,q,r,s}
(無向)グラフ:G = (V,E)
辺の長さや形は関係ない
d
14/30
【注】 本質的に同じグラフは、同形であるいう
辺を頂点で表したいときには、
(2)右のグラフの
サイズを答えなさい
解答:5
(3)頂点 a と頂点 c を結ぶ辺を答えなさい
解答:{a,c}
などと記す
p = {c,a} と書いても同じこと
グラフの実例(無向グラフ)
15/30
グラフの実例(有向グラフ)
【例】JRの駅の集合をV と考え、隣同士の駅の対をE
とすると、路線図に対応するグラフが出来る。
有向辺を
千歳
(仙台、千歳)
などと記す
ANA719
ANK311
このとき、直線で結ばれた2つの駅の間には、
線路があり、そこを走る電車を使って互いに移動
できることを意味する。
宮崎
加納
小松
仙台
木花
u
清武
JAL143
JAL101
伊丹
e
v
e
v
u
無向グラフ:e={u,v} または {v,u}
有向グラフ:e=(u,v) ≠ (v,u)
17/30
接続と隣接
【定義】グラフ G においてある頂点 u と辺 e が
16/30
羽田
ANA733
宮崎空港
南方
南宮崎
d
c
e
p = {a,c}, q = {a,b}, ・・・
田吉
b
18/30
【注】有向グラフの場合
接続するとは、u が e の端点であることをいう。
また、同一の頂点と接続する 2 つの辺は、
v
f
互いに隣接するという。
e
同様に、同一の辺の端点になっている 2 つの
頂点は、互いに隣接するという。
 頂点 u と v は辺 e の端点
v
f
 頂点 u と辺 e は接続する
e
w
u

辺 e と f は隣接する

頂点 u と v は隣接する
u
w

頂点 u を辺 e の始点

頂点 v を辺 e の終点

辺 e と f は隣接

辺 e は u から v へ接続
19/30
【練習問題】
(1)頂点 b に隣接する頂点を全て答えなさい
解答:a, c
a
(2)辺 {a,c}に隣接する
辺を全て答えなさい
解答: {a,b}, {b,c},
{c,d}, {c,e}
多重辺と多重度
b
無向グラフの多重辺
多重度3
有向グラフの多重辺
多重度2
d
c
e
(3)頂点 a に接続する辺を全て答えなさい
解答:{a,c}, {a,b}
21/30
多重グラフと単純グラフ
【定義】一般のグラフ(多重辺や自己ループ
を持つグラフ)を多重グラフ(multigraph)、
無向グラフの自己ループ
有向グラフの自己ループ
【練習問題】 宮崎市、都城市、小林市の
3市とそれらを結ぶ一般道を無向グラフを
使って表現しなさい
22/30
小林
高岡
多重辺や自己ループを含まないグラフを、
宮崎
単純グラフ(simple graph)と呼ぶ。
A
町
20/30
B
B
町
モデル化
C
町
地図情報
A
C
都城
グラフ
23/30
【解答例】
山手線の路線図
24/30
「学生会館の総合情報サイト」より
http://www.gakuseikaikan-tokyo.com/
25/30
グラフの次数(degree)
【定義】グラフ G = (V , E ) のある頂点 v ∈ V に対し、
v に接続する辺の数を v の次数といい deg(v ) と記す。
b
deg(c) = 4
deg(d) = deg(e) = 1
G
d
c
e
【練習問題】
(1)頂点 a の次数を答えなさい
解答:deg(a)=2
a
b
(2)最大次数の頂点を
答えなさい
c
解答:c
deg(a) = deg(b) = 2
a
26/30
【注】 次数の表し方には、
d
e
degG(v) d(v) d+(v) d-(v)
( d(v) = d+(v) + d-(v) )
(3)全ての頂点の次数の和を答えなさい
解答:10
など、多数あります。
27/30
【練習問題】グラフ G=(V,E) の辺の数は、
頂点の次数の和の半分である。すなわち、
 deg(u ) = 2 | E |
u∈V
28/30
【注】
• (無向グラフでは)自己ループの次数への
貢献は 2
• 有向グラフでは、
– 入る辺の数を入次数(indegree)
– 出る辺の数を出次数(outdegree)
であることを示しなさい。
v
indegree(v) = 1
outdegee(v) = 1
degree(v) = indegee(v) + outdegee(v) = 2
• 次数 0 の点は孤立点 (isolated vertex)
ネットワーク(network)
29/30
【定義】与えられたグラフ G の辺や頂点に、
様々な量を付与したものをネットワークとい
う。
【注】重み付きグラフ(weighted graph)とも呼ばれる
5
【ネットワークの例】
5Ω
2
1.5V 1.5V
1.5V
3Ω
1.5
3
2Ω
3
ネットワークの表現
30/30
【定義】G = (V,E) をグラフとする。各辺の
重みを表す関数が
d : E → R + ≡ {x ∈ R | x > 0}
であるとき、この重み付きグラフを
N = [G;d]
と表現する。
【注】 有向グラフにおいては、一般に、d (u , v ) ≠ d (v , u )
 重みは頂点に与えられることもある
d : V → R + ≡ {x ∈ R | x > 0}