PowerPoint プレゼンテーション

基本情報技術概論 (第7回)
アルゴリズム と データ構造
埼玉大学 理工学研究科
堀山 貴史
1
中間試験


12/9 (水) 5, 6 限
教養1-208 教室 (この教室)
試験範囲
 今日の講義分まで。

基本情報処理概論演習の問題や
情報処理技術者試験ぐらいの難易度です。
( マークシート問題 + 記述問題の予定です。)

情報処理技術者試験の過去問 (解答つき)
http://www.jitec.jp/
2
中間試験

持ち込み不可。


荷物はイスの下に。
机の上 や 机の棚に 物がある場合は、
不正行為とみなします。

問題用紙や解答用紙の配布を始めたら、
私語厳禁。(私語も不正行為とみなします。)

マークシートに記入しやすい筆記用具
( B や HB の黒鉛筆など ) と、消しゴムが必要です。
3
最短経路問題
応用: 列車の乗り換え検索
カーナビのルート検索
4
最短経路問題 (入力)


有向グラフ G = ( V, E ), 辺の距離 c : E → N
始点 s, 終点 t
1
30
2
70
3
120
20
30
50
4
90
始点 1, 終点 5
5
5
ダイクストラ
Dijkstra のアルゴリズム (アイデア)

s に近い順に、節点への距離を確定させていく
1
30
2
70
3
120
20
30
50
4
90
始点 1, 終点 5
5
6
Dijkstra のアルゴリズム
1. (初期化) s から節点 v への距離
D[ s ] ← 0
D [ v ] ← ∞ (s 以外の節点)
0
1
∞
30
2
70
∞
3
120
20
30
50
4
∞
90
始点 1, 終点 5
5
∞
7
Dijkstra のアルゴリズム
2. u ← 未確定の節点で、s からの距離が最小の もの
(s からの距離 D [ u ] が確定)
※ 最初は、全節点が未確定
0
1
∞
30
2
70
∞
3
120
20
30
50
4
∞
90
始点 1, 終点 5
5
∞
8
Dijkstra のアルゴリズム
3. u に隣接するすべての節点 v に対し、D [ v ]を更新
D [ v ] ← min { D [ v ], D [ u ] + c ( ( u, v ) ) }
s→…→u→v
0
1
30
30 ∞
2
70
∞
3
120
20
30
50
4
20 ∞
90
始点 1, 終点 5
5
∞ 120
9
Dijkstra のアルゴリズム (まとめ)
1. (初期化) s から節点 v への距離
D[ s ] ← 0
D [ v ] ← ∞ (s 以外の節点)
他の初期化
方法もある
2. u ← 未確定の節点で、s からの距離が最小の もの
(s からの距離 D [ u ] が確定)
3. u に隣接するすべての節点 v に対し、D [ v ]を更新
D [ v ] ← min { D [ v ], D [ u ] + c ( ( u, v ) ) }
更新時に、u を覚えると、最短経路を求められる
4. すべての節点が確定するまで、 2,3 を繰り返す
10
Dijkstra のアルゴリズム

続きを、自分でやってみてください
0
1
30
30 ∞
2
70
∞
3
120
20
30
50
4
20 ∞
90
始点 1, 終点 5
5
∞ 120
11
Dijkstra のアルゴリズム
2. u ← 未確定の節点で、s からの距離が最小の もの
(s からの距離 D [ u ] が確定)
0
1
30
30 ∞
2
70
∞
3
120
20
30
50
4
20 ∞
90
始点 1, 終点 5
5
∞ 120
12
Dijkstra のアルゴリズム
3. u に隣接するすべての節点 v に対し、D [ v ]を更新
D [ v ] ← min { D [ v ], D [ u ] + c ( ( u, v ) ) }
0
1
30
30 ∞
2
70
∞ 70
3
120
20
30
50
4
20 ∞
90
始点 1, 終点 5
5
∞ 120 110
13
Dijkstra のアルゴリズム
2. u ← 未確定の節点で、s からの距離が最小の もの
(s からの距離 D [ u ] が確定)
0
1
30
30 ∞
2
70
∞ 70
3
120
20
30
50
4
20 ∞
90
始点 1, 終点 5
5
∞ 120 110
14
Dijkstra のアルゴリズム
3. u に隣接するすべての節点 v に対し、D [ v ]を更新
D [ v ] ← min { D [ v ], D [ u ] + c ( ( u, v ) ) }
0
1
30
30 ∞
2
70
∞ 70
3
120
20
30
50
4
20 ∞
90
始点 1, 終点 5
5
∞ 120 110
15
Dijkstra のアルゴリズム
2. u ← 未確定の節点で、s からの距離が最小の もの
(s からの距離 D [ u ] が確定)
0
1
30
30 ∞
2
70
∞ 70
3
120
20
30
50
4
20 ∞
90
始点 1, 終点 5
5
∞ 120 110
16
Dijkstra のアルゴリズム
3. u に隣接するすべての節点 v に対し、D [ v ]を更新
D [ v ] ← min { D [ v ], D [ u ] + c ( ( u, v ) ) }
0
1
30
30 ∞
2
70
∞ 70
3
120
20
30
50
4
20 ∞
90
始点 1, 終点 5
5
∞ 120 110 100
17
Dijkstra のアルゴリズム
2. u ← 未確定の節点で、s からの距離が最小の もの
(s からの距離 D [ u ] が確定)
0
1
30
30 ∞
2
70
∞ 70
3
120
20
30
50
4
20 ∞
90
始点 1, 終点 5
5
∞ 120 110 100
18
Dijkstra のアルゴリズム
3. u に隣接するすべての節点 v に対し、D [ v ]を更新
D [ v ] ← min { D [ v ], D [ u ] + c ( ( u, v ) ) }
0
1
30
30 ∞
2
70
∞ 70
3
120
20
30
50
4
20 ∞
90
始点 1, 終点 5
5
∞ 120 110 100
19
練習:


Dijkstra のアルゴリズム
以下のグラフにおいて、地点 1 から地点 6 への最短距離を
求めるため、Dijkstra のアルゴリズムを実行する。
この時、最短距離が確定するのは、
地点 1 →
→ 地点 6
の順である。空欄を埋めなさい。
なお、 Dijkstra のアルゴリズムは、本資料 p.10 を参照。
10
1
20
30
50
4
2
10
30
3
30
5
40
10
6
20
Dijkstra のアルゴリズム
練習:
地点 1 →
10
1
20
2
30
50
4
→ 地点 6
10
30
3
30
5
40
10
6
21
22
3分で分かる マージソート
23
アルゴリズム:

マージソート
ソートされた2つの列
→ 1つにマージ(併合)するのは簡単
(各列の先頭を見比べながら、小さい方を取っていく)
5 20 25 50

(併合ソート)
1 10 30 40
1回のマージの実行時間は、要素数に比例
24
アルゴリズム:
マージソート
(併合ソート)
5 25 50 20 30 40 10 1
5 25 50 20
5 25
5
25
5 25
30 40 10 1
50 20
50
20
20 50
30 40
30
40
30 40
分割
10 1
10
log n 段
1
1 10
マージ
log n 段
1 段に O( n ) 時間 → 全部で O( n log n ) 時間
26
27
この教材のご利用について




この文面は、TOKYO
TECH OCW の利用
条件を参考にしました
この教材は、以下に示す利用条件の下で、著作権者にわざわざ許諾を
求めることなく、無償で自由にご利用いただけます。講義、自主学習は
もちろん、翻訳、改変、再配布等を含めて自由にご利用ください。
非商業利用に限定

この教材は、翻訳や改変等を加えたものも含めて、著作権者の許
諾を受けずに商業目的で利用することは、許可されていません。
著作権の帰属

この教材および教材中の図の著作権は、次ページ以降に示す著
作者に帰属します。この教材、または翻訳や改変等を加えたもの
を公開される場合には、「本教材 (or 本資料) は
http://www.al.ics. saitama-u.ac.jp/horiyama/OCW/ の教材です
(or 教材を改変したものです」 との旨の著作権表示を明確に実施
してください。なお、この教材に改変等を加えたものの著作権は、
次ページ以降に示す著作者および改変等を加えた方に帰属しま
す。
同一条件での頒布・再頒布

この教材、または翻訳や改変等を加えたものを頒布・再頒布する
場合には、頒布・再頒布の形態を問わず、このページの利用条件28
この教材のご利用について

配布場所

http://www.al.ics.saitama-u.ac.jp/horiyama/OCW/

この powerpoint ファイルの著作者

堀山 貴史 2007-2010 [email protected]

改変等を加えられた場合は、お名前等を追加してください
図の著作者

p. 20, 21
 クリップアート : Microsoft Office Online / クリップアート

その他
 堀山 貴史

29