アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

104
アアアアアアアアアアアア アアアア 10-1 アアアアア 「」 アアアアアア アアアア アア アアアアアアア アアアア

Upload: miracle

Post on 04-Feb-2016

69 views

Category:

Documents


0 download

DESCRIPTION

アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」. 横浜国立大学 理工 学部 数物・電子情報系学科 富井尚志. バックトラックアルゴリズム. とりあえずやってみる ダメ なら戻って別の道を探る あの とき別の道を選んでいたら 、、、 試行錯誤( trial and error ) 結局全部のケースをやってみる(完全解). 騎士巡回( knight tour ). チェスの「ナイト」. 騎士巡回( knight tour ). チェスの「ナイト」 、盤面のすべてのマスを                    一度だけ訪問する. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

アルゴリズムとデータ構造補足資料 10-1「騎士巡回」

横浜国立大学理工学部

数物・電子情報系学科富井尚志

Page 2: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

バックトラックアルゴリズム• とりあえずやってみる• ダメなら戻って別の道を探る– あのとき別の道を選んでいたら、、、

• 試行錯誤( trial and error )

– 結局全部のケースをやってみる(完全解)

Page 3: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

騎士巡回( knight tour )• チェスの「ナイト」

Page 4: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

騎士巡回( knight tour )• チェスの「ナイト」、盤面のすべてのマス

を                   一

度だけ訪問する

Page 5: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• チェスの「ナイト」、盤面のすべてのマスを

                   一度だけ訪問する

騎士巡回( knight tour )

スタート !

Page 6: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• チェスの「ナイト」、盤面のすべてのマスを

                   一度だけ訪問する

1

騎士巡回( knight tour )

Page 7: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• チェスの「ナイト」、盤面のすべてのマスを

                   一度だけ訪問する

1

2

騎士巡回( knight tour )

Page 8: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• チェスの「ナイト」、盤面のすべてのマスを

                   一度だけ訪問する

1

2

3

騎士巡回( knight tour )

Page 9: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• チェスの「ナイト」、盤面のすべてのマスを

                   一度だけ訪問する

1

2

3

4

騎士巡回( knight tour )

Page 10: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• チェスの「ナイト」、盤面のすべてのマスを

                   一度だけ訪問する

1

2

3

5

4

騎士巡回( knight tour )

Page 11: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• チェスの「ナイト」、盤面のすべてのマスを

                   一度だけ訪問する

1

6 2

3

5

4

騎士巡回( knight tour )

Page 12: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• チェスの「ナイト」、盤面のすべてのマスを

                   一度だけ訪問する

1

6 2

7 3

5

4

騎士巡回( knight tour )

Page 13: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• チェスの「ナイト」、盤面のすべてのマスを

                   一度だけ訪問する

1 8

6 2

7 3

5

4

騎士巡回( knight tour )

Page 14: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• チェスの「ナイト」、盤面のすべてのマスを

                   一度だけ訪問する

1 8

6 9 2

7 3

5

4

騎士巡回( knight tour )

Page 15: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• チェスの「ナイト」、盤面のすべてのマスを

                   一度だけ訪問する

1 8

6 9 2

7 3

10 5

4

騎士巡回( knight tour )

Page 16: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• チェスの「ナイト」、盤面のすべてのマスを

                   一度だけ訪問する

1 8

6 9 2

7 3

10 5

11 4

騎士巡回( knight tour )

Page 17: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• チェスの「ナイト」、盤面のすべてのマスを

                   一度だけ訪問する

1 8

6 9 2

7 3

10 5 12

11 4

騎士巡回( knight tour )

Page 18: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• チェスの「ナイト」、盤面のすべてのマスを

                   一度だけ訪問する

1 8

6 9 2 13

7 3

10 5 12

11 4

騎士巡回( knight tour )

Page 19: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• チェスの「ナイト」、盤面のすべてのマスを

                   一度だけ訪問する

1 14 8

6 9 2 13

7 3

10 5 12

11 4

騎士巡回( knight tour )

Page 20: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• チェスの「ナイト」、盤面のすべてのマスを

                   一度だけ訪問する

1 14 8

6 9 2 13

15 7 3

10 5 12

11 4

騎士巡回( knight tour )

Page 21: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• チェスの「ナイト」、盤面のすべてのマスを

                   一度だけ訪問する

1 14 8

6 9 2 13

15 7 3

10 5 12

16 11 4

騎士巡回( knight tour )

Page 22: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• チェスの「ナイト」、盤面のすべてのマスを

                   一度だけ訪問する

1 14 8

6 9 2 13

15 7 3

10 5 17 12

16 11 4

騎士巡回( knight tour )

Page 23: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• チェスの「ナイト」、盤面のすべてのマスを

                   一度だけ訪問する

1 14 8

6 9 2 13 18

15 7 3

10 5 17 12

16 11 4

騎士巡回( knight tour )

Page 24: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• チェスの「ナイト」、盤面のすべてのマスを

                   一度だけ訪問する

1 14 19 8

6 9 2 13 18

15 7 3

10 5 17 12

16 11 4

騎士巡回( knight tour )

Page 25: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• チェスの「ナイト」、盤面のすべてのマスを

                   一度だけ訪問する

1 14 19 8

6 9 2 13 18

15 20 7 3

10 5 17 12

16 11 4

騎士巡回( knight tour )

Page 26: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• チェスの「ナイト」、盤面のすべてのマスを

                   一度だけ訪問する

1 14 19 8

6 9 2 13 18

15 20 7 3

10 5 17 12

21 16 11 4

騎士巡回( knight tour )

Page 27: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• チェスの「ナイト」、盤面のすべてのマスを

                   一度だけ訪問する

1 14 19 8

6 9 2 13 18

15 20 7 3

10 5 22 17 12

21 16 11 4

騎士巡回( knight tour )

Page 28: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• チェスの「ナイト」、盤面のすべてのマスを

                   一度だけ訪問する

1 14 19 8

6 9 2 13 18

15 20 7 3

10 5 22 17 12

21 16 11 4 23

騎士巡回( knight tour )

Page 29: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• チェスの「ナイト」、盤面のすべてのマスを

                   一度だけ訪問する

1 14 19 8

6 9 2 13 18

15 20 7 24 3

10 5 22 17 12

21 16 11 4 23

騎士巡回( knight tour )

ゴール !

Page 30: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• チェスの「ナイト」、盤面のすべてのマスを

                   一度だけ訪問する

• 考え方:– とりあえず、行けるところまで行ってみる。– 行き詰ったら、前に戻って(バックトラック)、

別の選択肢でやってみる。

騎士巡回( knight tour )

Page 31: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

騎士巡回( knight tour )

スタート !

Page 32: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。A

B

騎士巡回( knight tour )

ここで人生の分かれ道:

A ~ B のどれを選ぶ?

Page 33: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。A

B

騎士巡回( knight tour )

ここで人生の分かれ道:

A ~ B のどれを選ぶ?とりあえず A

Page 34: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

騎士巡回( knight tour )

Page 35: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1 E

D A

C B

騎士巡回( knight tour )

ここで人生の分かれ道:

A ~ E のどれを選ぶ?

Page 36: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1 E

D A

C B

騎士巡回( knight tour )

ここで人生の分かれ道:

A ~ E のどれを選ぶ?とりあえず A

Page 37: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

2

騎士巡回( knight tour )

Page 38: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1 C

2

B

A

騎士巡回( knight tour )

ここで人生の分かれ道:

A ~ C のどれを選ぶ?

Page 39: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1 C

2

B

A

騎士巡回( knight tour )

ここで人生の分かれ道:

A ~ C のどれを選ぶ?とりあえず A

Page 40: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

2

3

騎士巡回( knight tour )

Page 41: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

2

B 3

A

騎士巡回( knight tour )

ここで人生の分かれ道:

A ~ B のどれを選ぶ?

Page 42: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

2

B 3

A

騎士巡回( knight tour )

ここで人生の分かれ道:

A ~ B のどれを選ぶ?とりあえず A

Page 43: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

2

3

4

騎士巡回( knight tour )

Page 44: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

A 2

B 3

4

騎士巡回( knight tour )

A ~ B のどれを選ぶ?

Page 45: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

A 2

B 3

4

騎士巡回( knight tour )

A ~ B のどれを選ぶ?とりあえず A

Page 46: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

2

3

5

4

騎士巡回( knight tour )

Page 47: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1 B

2

A 3

5

4

騎士巡回( knight tour )

A ~ B のどれを選ぶ?

Page 48: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1 B

2

A 3

5

4

騎士巡回( knight tour )

A ~ B のどれを選ぶ?とりあえず A

Page 49: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

6 2

3

5

4

騎士巡回( knight tour )

Page 50: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1 D E

6 2 F

3

C 5 A

B 4

騎士巡回( knight tour )

A ~ F のどれを選ぶ?

Page 51: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1 D E

6 2 F

3

C 5 A

B 4

騎士巡回( knight tour )

A ~ F のどれを選ぶ?とりあえず A

Page 52: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

6 2

7 3

5

4

騎士巡回( knight tour )

Page 53: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

6 2 B

7 3

5

A 4

騎士巡回( knight tour )

A ~ B のどれを選ぶ?

Page 54: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

6 2 B

7 3

5

A 4

騎士巡回( knight tour )

A ~ B のどれを選ぶ?とりあえず A

Page 55: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

6 2

7 3

5 8

4

騎士巡回( knight tour )

Page 56: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

6 2

B 7 C 3

A 5 8

4

騎士巡回( knight tour )

A ~ C のどれを選ぶ?

Page 57: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

6 2

B 7 C 3

A 5 8

4

騎士巡回( knight tour )

A ~ C のどれを選ぶ?とりあえず A

Page 58: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

6 2

7 3

5 8

9 4

騎士巡回( knight tour )

Page 59: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

6 2

7 3

10 5 8

9 4

騎士巡回( knight tour )

Page 60: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1 C

6 2

7 A 3

10 5 B 8

9 4

騎士巡回( knight tour )

A ~ C のどれを選ぶ?

Page 61: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1 C

6 2

7 A 3

10 5 B 8

9 4

騎士巡回( knight tour )

A ~ C のどれを選ぶ?とりあえず A

Page 62: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

6 11 2

7 3

10 5 8

9 4

騎士巡回( knight tour )

Page 63: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1 B C

6 11 2

7 3

10 5 8

9 4 A

騎士巡回( knight tour )

A ~ C のどれを選ぶ?

Page 64: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1 B C

6 11 2

7 3

10 5 8

9 4 A

騎士巡回( knight tour )

A ~ C のどれを選ぶ?とりあえず A

Page 65: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

6 11 2

7 12 3

10 5 8

9 4

騎士巡回( knight tour )

Page 66: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

6 11 2

7 12 3

10 5 8

9 4 13

騎士巡回( knight tour )

Page 67: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

6 11 2 C

B 7 12 3

10 5 8

A 9 4 13

騎士巡回( knight tour )

A ~ C のどれを選ぶ?

Page 68: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

6 11 2 C

B 7 12 3

10 5 8

A 9 4 13

騎士巡回( knight tour )

A ~ C のどれを選ぶ?とりあえず A

Page 69: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

6 11 2

7 12 3

10 5 14 8

9 4 13

騎士巡回( knight tour )

Page 70: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

6 11 2

7 12 3

10 5 14 8

15 9 4 13

騎士巡回( knight tour )

Page 71: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1 B

6 11 2 C

7 12 3

10 5 14 A 8

15 9 4 13

騎士巡回( knight tour )

A ~ C のどれを選ぶ?

Page 72: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1 B

6 11 2 C

7 12 3

10 5 14 A 8

15 9 4 13

騎士巡回( knight tour )

A ~ C のどれを選ぶ?とりあえず A

Page 73: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

6 11 2

16 7 12 3

10 5 14 8

15 9 4 13

騎士巡回( knight tour )

Page 74: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

6 11 2 B

16 7 12 3

10 5 14 8

15 A 9 4 13

騎士巡回( knight tour )

A ~ B のどれを選ぶ?

Page 75: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

6 11 2 B

16 7 12 3

10 5 14 8

15 A 9 4 13

騎士巡回( knight tour )

A ~ B のどれを選ぶ?とりあえず A

Page 76: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

6 11 2

16 7 12 3

10 5 14 17 8

15 9 4 13

騎士巡回( knight tour )

Page 77: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

6 11 2

16 7 12 3

10 5 14 17 8

15 18 9 4 13

騎士巡回( knight tour )

Page 78: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

6 11 2

19 16 7 12 3

10 5 14 17 8

15 18 9 4 13

騎士巡回( knight tour )

Page 79: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1 20

6 11 2

19 16 7 12 3

10 5 14 17 8

15 18 9 4 13

騎士巡回( knight tour )

手詰まり !!!!!

Page 80: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1 20

6 11 2

19 16 7 12 3

10 5 14 17 8

15 18 9 4 13

騎士巡回( knight tour )

手詰まり !!!!!

ダメな時は前の選択肢まで戻ってやり直す

Page 81: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

6 11 2

19 16 7 12 3

10 5 14 17 8

15 18 9 4 13

騎士巡回( knight tour )

手詰まり !!!!!

ダメな時は前の選択肢まで戻ってやり直す

Page 82: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

6 11 2

16 7 12 3

10 5 14 17 8

15 18 9 4 13

騎士巡回( knight tour )

手詰まり !!!!!

ダメな時は前の選択肢まで戻ってやり直す

Page 83: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

6 11 2

16 7 12 3

10 5 14 17 8

15 9 4 13

騎士巡回( knight tour )

手詰まり !!!!!

ダメな時は前の選択肢まで戻ってやり直す

Page 84: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

6 11 2 B

16 7 12 3

10 5 14 8

15 A 9 4 13

騎士巡回( knight tour )

A ~ B のどれを選ぶ?A は失敗だった。

Page 85: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

6 11 2 B

16 7 12 3

10 5 14 8

15 A 9 4 13

騎士巡回( knight tour )

A ~ B のどれを選ぶ?A は失敗だった。じゃあ B

Page 86: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

6 11 2

16 7 12 3

10 5 14 17 8

15 9 4 13

騎士巡回( knight tour )

Page 87: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

6 11 2 18

16 7 12 3

10 5 14 17 8

15 9 4 13

騎士巡回( knight tour )

手詰まり !!!!!

Page 88: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

6 11 2

16 7 12 3

10 5 14 17 8

15 9 4 13

騎士巡回( knight tour )

手詰まり !!!!!

ダメな時は前の選択肢まで戻ってやり直す

Page 89: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

6 11 2 B

16 7 12 3

10 5 14 8

15 A 9 4 13

騎士巡回( knight tour )

A ~ B のどれを選ぶ?A は失敗だった。B も失敗だった。

Page 90: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

6 11 2 B

16 7 12 3

10 5 14 8

15 A 9 4 13

騎士巡回( knight tour )

すべての選択肢がダメ

ダメな時は前の選択肢まで戻ってやり直す

Page 91: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1 B

6 11 2 C

7 12 3

10 5 14 A 8

15 9 4 13

騎士巡回( knight tour )

A ~ C のどれを選ぶ?A は失敗だった。

Page 92: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1 B

6 11 2 C

7 12 3

10 5 14 A 8

15 9 4 13

騎士巡回( knight tour )

A ~ C のどれを選ぶ?A は失敗だった。じゃあ B

Page 93: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

6 11 2

16 7 12 3

10 5 14 8

15 9 4 13

騎士巡回( knight tour )

Page 94: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダメな時は                   戻ってやりな

おす。                    B もダメ!                                      人生試行錯誤。                   あきらめずに                   がんばれ!

1 22 17

6 11 2 23 18

21 16 7 12 3

10 5 14 19 8

15 20 9 4 13

騎士巡回( knight tour )

Page 95: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1 B

6 11 2 C

7 12 3

10 5 14 A 8

15 9 4 13

騎士巡回( knight tour )

A ~ C のどれを選ぶ?A は失敗だった。B は失敗だった。

Page 96: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1 B

6 11 2 C

7 12 3

10 5 14 A 8

15 9 4 13

騎士巡回( knight tour )

A ~ C のどれを選ぶ?A は失敗だった。B は失敗だった。じゃあ C

Page 97: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダメな時は                   戻ってやりな

おす。 C もダメ!                                      人生試行錯誤。                   あきらめずに                   がんばれ!

1 18 23

6 11 2 17 22

19 16 7 12 3

10 5 14 21 8

15 20 9 4 13

騎士巡回( knight tour )

Page 98: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1 B

6 11 2 C

7 12 3

10 5 14 A 8

15 9 4 13

騎士巡回( knight tour )

A ~ C のどれを選ぶ?A は失敗だった。B は失敗だった。C は失敗だった。

Page 99: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

6 11 2

7 12 3

10 5 14 8

9 4 13

騎士巡回( knight tour )

ダメな時はあきらめずに前の選択肢まで戻ってやり直す

Page 100: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• 分かれ道は、とりあえず進んでみる。                   ダ

メな時は                   

戻ってやりなおす。

1

6 11 2 C

B 7 12 3

10 5 8

A 9 4 13

騎士巡回( knight tour )

A ~ C のどれを選ぶ?A は失敗だったじゃあ、B いっときますか

Page 101: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• さっき見せたのは正解(の一つ)1 14 19 8

6 9 2 13 18

15 20 7 24 3

10 5 22 17 12

21 16 11 4 23

騎士巡回( knight tour )

試行回数(移動回数)は

8,839 回!

Page 102: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

• チェスの「ナイト」、盤面のすべてのマスを

                   一度だけ訪問する

• 考え方:– とりあえず、行けるところまで行ってみる。– 行き詰ったら、前に戻って(バックトラック)、

別の選択肢でやってみる。

騎士巡回( knight tour )

Page 103: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

騎士巡回( knight tour )A

B

A B1 E

D A

C B

A B C D E1 C

2

B

A

A B C

1 B

6 11 2 C

7 12 3

10 5 14 A 8

15 9 4 13

1

6 11 2 B

16 7 12 3

10 5 14 8

15 A 9 4 13

A B C

A B

試行やり直し(バックトラック)

選択肢

失敗 失敗

失敗 失敗1 14 19 8

6 9 2 13 18

15 20 7 24 3

10 5 22 17 12

21 16 11 4 23

ゴール!

失敗

失敗

失敗

失敗 失敗

失敗失敗

失敗

Page 104: アルゴリズムとデータ構造 補足資料 10-1 「騎士巡回」

バックトラック(モデル)A

B

A B1 E

D A

C B

A B C D E1 C

2

B

A

A B C

1 B

6 11 2 C

7 12 3

10 5 14 A 8

15 9 4 13

1

6 11 2 B

16 7 12 3

10 5 14 8

15 A 9 4 13

A B C

A B

試行やり直し(バックトラック)

選択肢

失敗 失敗

失敗 失敗1 14 19 8

6 9 2 13 18

15 20 7 24 3

10 5 22 17 12

21 16 11 4 23

ゴール!

失敗

失敗

失敗

失敗 失敗

失敗失敗

失敗