基本情報技術 概論 i ( 第 12 回 )

29
1 アアアアアア アアアアア アアアアアアアア I ( ア 12 ア ) アアアア アアアアアア アア アア

Upload: basil-black

Post on 03-Jan-2016

36 views

Category:

Documents


2 download

DESCRIPTION

アルゴリズム と データ構造. 基本情報技術 概論 I ( 第 12 回 ). 埼玉大学 理工学研究科 堀山 貴史. 午後の問題への対応. 長文にメゲない 読み飛ばしは、 思いこみ違い の原因 色々なアルゴリズムを知っておく 暗記ではなく、 アイデア を把握 アイデアを実現する 手順 を考える. 文字列処理. 暗記ではなく、考え方の練習. 検索文字列 S を、 文字列 R から検索. 文字列探索. 配列の サイズ. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 基本情報技術 概論  I ( 第 12 回 )

1

アルゴリズム と データ構造

基本情報技術概論 I ( 第 12 回 )

埼玉大学 理工学研究科 堀山 貴史

Page 2: 基本情報技術 概論  I ( 第 12 回 )

2

午後の問題への対応

長文にメゲない 読み飛ばしは、思いこみ違いの原因

色々なアルゴリズムを知っておく 暗記ではなく、アイデアを把握 アイデアを実現する手順を考える

Page 3: 基本情報技術 概論  I ( 第 12 回 )

文字列処理

3

暗記ではなく、考え方の練習

Page 4: 基本情報技術 概論  I ( 第 12 回 )

4

文字列探索

A B C D X Y E F X Y Z G H I JR [ ]S [ ]

1 2 3 4 5 6 7 8 910

11

12 … M

配列の

サイズM

NX Y Z X Y Z

i = 1比較開始位置

i = M – N + 1

X Y Z

検索文字列 S を、文字列 R から検索

i > ( M – N + 1)

処理

※ テキストでは、 終了条件を記載

for ( i = 1 ; i ≦ M – N + 1 ; ++ i ) {

}

処理

Page 5: 基本情報技術 概論  I ( 第 12 回 )

5

文字列探索

A B C D X Y E F X Y Z G H I JR [ ]S [ ]

配列の

サイズM

NX Y Z

j = 1 … N

比較位置

検索文字列 S を、文字列 R から検索

for ( i = 1 ; i ≦ M – N + 1 ; ++ i ) {

}

処理

for ( j = 1 ; j ≦ N ; ++ j ) { if ( R[ i + j – 1 ] ≠ S[ j ] ) { break ; }}

if ( j > N ) { P ← i ; break ; } // 見つけた

i

Page 6: 基本情報技術 概論  I ( 第 12 回 )

6

参考: 文字列検索アルゴリズム

力まかせ法 (p. 4, 5 の方法 ) O( n m )

KMP 法 (Knuth-Morris-Pratt) O( n + m )

BM 法 (Boyer-Moore) O( n + m )

n : テキストの長さ

m : 検索文字列の長さ

( p. 4, 5 では M )

( 〃 N )

Page 7: 基本情報技術 概論  I ( 第 12 回 )

7

空白除去

A B C D E F X Y ZR [ ]

1 2 3 4 5 6 7 8 910

11

12 … N

配列の

サイズN

NA B C D E F X Y ZS [ ]

i

j

j = 1for ( i = 1 ; i ≦ N ; ++ i ) {

}

if ( R[ i ] ≠ “ 空白” ) { S[ j ] = R[ i ] ; // S[ ] にコピー ++ j ;} ※ テキストより

簡単

Page 8: 基本情報技術 概論  I ( 第 12 回 )

8

文字列挿入

A B C D E F G HR [ ]

1 2 3 4 P … M

A B C D E F G H R [ ]挿入後

1 … N

文字列 R の P の位置に、文字列 S を挿入

(1)R [ ] の P 以降を ずらす

(2)S [ ] を 挿入

S [ ]

for ( i = M ; i ≧ P ; -- i ) {

}R [ i + N ] = R [ i ] ; // 後ろからずらす

for ( j = 1 ; j ≦ N ; ++ j ) {

}R [ P + j - 1 ] = S [ j ] ;

X Y Z

Page 9: 基本情報技術 概論  I ( 第 12 回 )

9

文字列処理 ( その他 )

文字列連結 R [ ] , S [ ] の順に、文字列を T [ ] に

コピー

文字列置換 R [ P ] , R [ P + 1 ] ,… に、

文字列 S [ ] をコピー

R [ ]S [ ]

T [ ]

R [ ]

S [ ]

Page 10: 基本情報技術 概論  I ( 第 12 回 )

最短経路問題

10

応用: 列車の乗り換え検索

カーナビのルート検索

Page 11: 基本情報技術 概論  I ( 第 12 回 )

11

最短経路問題 ( 入力 )

有向グラフ G = ( V, E ) , 辺の距離 c : E → N

始点 s , 終点 t

1 2 3

4 5

30

20

70

30

90

50

120

始点 1 , 終点 5

Page 12: 基本情報技術 概論  I ( 第 12 回 )

12

s に近い順に、節点への距離を確定させていく

1 2 3

4 5

30

20

70

30

90

50

120

始点 1 , 終点 5

Dijkstra のアルゴリズム ( アイデア )ダイクスト

Page 13: 基本情報技術 概論  I ( 第 12 回 )

13

Dijkstra のアルゴリズム

1. ( 初期化 ) s から節点 v への距離 D [ s ] ← 0 D [ v ] ← ∞ (s 以外の節点 )

1 2 3

4 5

30

20

70

30

90

50

120

始点 1 , 終点 5

0

Page 14: 基本情報技術 概論  I ( 第 12 回 )

14

2. u ← 未確定の節点で、 s からの距離が最小の もの (s からの距離 D [ u ] が確定 )

1 2 3

4 5

30

20

70

30

90

50

120

始点 1 , 終点 5

Dijkstra のアルゴリズム

0

※ 最初は、全節点が未確定

Page 15: 基本情報技術 概論  I ( 第 12 回 )

15

3. u に隣接するすべての節点 v に対し、 D [ v ]を更新

D [ v ] ← min { D [ v ] , D [ u ] + c

( ( u, v ) ) }

1 2 3

4 5

30

20

70

30

90

50

120

始点 1 , 終点 5

s … → u → v

Dijkstra のアルゴリズム

0

∞20

30

120

Page 16: 基本情報技術 概論  I ( 第 12 回 )

16

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 ) ) }

4. すべての節点が確定するまで、 2 , 3 を繰り返す

Dijkstra のアルゴリズム ( まとめ )

他の初期化方法もあ

更新時に、 u を覚えると、最短経路を求められる

Page 17: 基本情報技術 概論  I ( 第 12 回 )

17

続きを、自分でやってみてください

Dijkstra のアルゴリズム

1 2 3

4 5

30

20

70

30

90

50

120

始点 1 , 終点 5

∞0

∞20

30

120

Page 18: 基本情報技術 概論  I ( 第 12 回 )

18

2. u ← 未確定の節点で、 s からの距離が最小の もの (s からの距離 D [ u ] が確定 )

Dijkstra のアルゴリズム

1 2 3

4 5

30

20

70

30

90

50

120

始点 1 , 終点 5

∞0

∞20

30

120

Page 19: 基本情報技術 概論  I ( 第 12 回 )

19

3. u に隣接するすべての節点 v に対し、 D [ v ]を更新

D [ v ] ← min { D [ v ] , D [ u ] + c

( ( u, v ) ) }

Dijkstra のアルゴリズム

1 2 3

4 5

30

20

70

30

90

50

120

始点 1 , 終点 5

∞0

∞20

30

120

70

110

Page 20: 基本情報技術 概論  I ( 第 12 回 )

20

2. u ← 未確定の節点で、 s からの距離が最小の もの (s からの距離 D [ u ] が確定 )

Dijkstra のアルゴリズム

1 2 3

4 5

30

20

70

30

90

50

120

始点 1 , 終点 5

∞0

∞20

30

120

70

110

Page 21: 基本情報技術 概論  I ( 第 12 回 )

21

3. u に隣接するすべての節点 v に対し、 D [ v ]を更新

D [ v ] ← min { D [ v ] , D [ u ] + c

( ( u, v ) ) }

Dijkstra のアルゴリズム

1 2 3

4 5

30

20

70

30

90

50

120

始点 1 , 終点 5

∞0

∞20

30

120

70

110

Page 22: 基本情報技術 概論  I ( 第 12 回 )

22

2. u ← 未確定の節点で、 s からの距離が最小の もの (s からの距離 D [ u ] が確定 )

Dijkstra のアルゴリズム

1 2 3

4 5

30

20

70

30

90

50

120

始点 1 , 終点 5

∞0

∞20

30

120

70

110

Page 23: 基本情報技術 概論  I ( 第 12 回 )

23

3. u に隣接するすべての節点 v に対し、 D [ v ]を更新

D [ v ] ← min { D [ v ] , D [ u ] + c

( ( u, v ) ) }

Dijkstra のアルゴリズム

1 2 3

4 5

30

20

70

30

90

50

120

始点 1 , 終点 5

∞0

∞20

30

120

70

110

100

Page 24: 基本情報技術 概論  I ( 第 12 回 )

24

2. u ← 未確定の節点で、 s からの距離が最小の もの (s からの距離 D [ u ] が確定 )

Dijkstra のアルゴリズム

1 2 3

4 5

30

20

70

30

90

50

120

始点 1 , 終点 5

∞0

∞20

30

120

70

110

100

Page 25: 基本情報技術 概論  I ( 第 12 回 )

25

3. u に隣接するすべての節点 v に対し、 D [ v ]を更新

D [ v ] ← min { D [ v ] , D [ u ] + c

( ( u, v ) ) }

Dijkstra のアルゴリズム

1 2 3

4 5

30

20

70

30

90

50

120

始点 1 , 終点 5

∞0

∞20

30

120

70

110

100

Page 26: 基本情報技術 概論  I ( 第 12 回 )

26

Page 27: 基本情報技術 概論  I ( 第 12 回 )

27

Page 28: 基本情報技術 概論  I ( 第 12 回 )

28

この教材のご利用について この教材は、以下に示す利用条件の下で、著作権者にわざわざ許

諾を求めることなく、無償で自由にご利用いただけます。講義、自主学習はもちろん、翻訳、改変、再配布等を含めて自由にご利用ください。

非商業利用に限定 この教材は、翻訳や改変等を加えたものも含めて、著作権者

の許諾を受けずに商業目的で利用することは、許可されていません。

著作権の帰属 この教材および教材中の図の著作権は、次ページ以降に示す

著作者に帰属します。この教材、または翻訳や改変等を加えたものを公開される場合には、「本教材 (or 本資料 ) は http://www.al.ics. saitama-u.ac.jp/horiyama/OCW/ の教材です (or 教材を改変したものです」 との旨の著作権表示を明確に実施してください。なお、この教材に改変等を加えたものの著作権は、次ページ以降に示す著作者および改変等を加えた方に帰属します。

同一条件での頒布・再頒布 この教材、または翻訳や改変等を加えたものを頒布・再頒布

する場合には、頒布・再頒布の形態を問わず、このページの利用条件に準拠して無償で自由に利用できるようにしてください。

この文面は、 TOKYO TECH OCW の利用条件を参考にしました

Page 29: 基本情報技術 概論  I ( 第 12 回 )

29

配布場所 http://www.al.ics.saitama-u.ac.jp/horiyama/OCW/

この powerpoint ファイルの著作者 堀山 貴史  2007-2009 [email protected]

u.ac.jp 改変等を加えられた場合は、お名前等を追加してください

図の著作者 p. 4 ~ 25

堀山 貴史

この教材のご利用について