SlideShare a Scribd company logo
1 of 99
中学受験算数に見る
動的計画法
押川 令
はじめに
中学受験算数の問題を題材としていますが、これは中学生のみな
さんが前提知識なしですぐに理解できる問題として引用している
だけであり、中学数学を勉強していれば中学受験を経験している
必要はありません。
(ご経験のある方は懐かしい気持ちで聞いてください😊)
コンピュータで問題を解く時に使う計算の仕方
「アルゴリズム」について勉強しましょう!
中学3年生までの算数・数学の知識を前提とすることがあります
階段の問題
問題
階段を1回につき2段上がるか3段
上がるかの
いづれかの方法で階段を上がる
とき、
①7段
②12段
の階段を上がる方法はそれぞれ
何通りありますか。
(久留米大付設中学2020年度算数)
1段目
2
3
4
5
6
階段の問題
解法1:樹形図
階段の登り方を全て試して、
目的の段数登れるような登り方
を数える
1段目
2
3
4
5
6
階段の問題:解法1
0
※数え忘れがあると困るので、
中学2年生「確率」で使う
「樹形図」を使って数えてみましょう
階段の問題:解法1
0 2
3
階段の問題:解法1
0 2
3
4
5
階段の問題:解法1
0 2
3
4
5
6
7
階段の問題:解法1
0 2
3
4
5
6
7
8
9
目的の段数を超えたので
これ以上調べなくても良い
(枝刈りとも言う)
階段の問題:解法1
0 2
3
4
5
6
7
8
9
目的の段数に到達したので
これ以上調べなくても良い
階段の問題:解法1
0 2
3
4
5
6
7
7
8
8
9
階段の問題:解法1
0 2
3
4
5
6
7
7
8
8
9
5
6
階段の問題:解法1
0 2
3
4
5
7
8
6
7
7
8
8
9
5
6
階段の問題:解法1
0 2
3
4
5
7
8
6
7
7
8
8
9
8
5
6
9
階段の問題:解法1
0 2
3
4
5
7
8
6
7
7
8
8
9
8
5
6
9
3通りが答え。
7 を数えて
階段の問題:解法1
0 2 4 56
7
7
8
8
9
10
12段のとき(最初に2段登った場合)
11
11
12
119
12
1210
13
12
13
13
14
13
14
13
14
119
12
1210
13
13
14
5
3
10
11
12
13
13
14
階段の問題:解法1
0 3 5 67
8
8
9
9
10
11
(とても めんどくさい)
12段のとき(最初に3段登った場合)
12
12
13
1210
13
1311
14
13
14
6
2
1210
13
1311
14
11
12
13
14
階段の問題:解法1
012段のとき
3 5 7
8
9
10
11
12
12
13
1210
13
1311
14
13
14
66 8
9
1210
13
1311
14
11
12
13
14
2 4 6
7
8
9
10
11
11
12
119
12
1210
13
12
13
13
14
13
14
13
14
5 7
8
119
12
1210
13
13
14
10
11
12
13
13
14
12通り
12 を数えると
階段の問題:解法1
012段のとき
3 5 7
8
9
10
11
12
12
13
1210
13
1311
14
13
14
66 8
9
1210
13
1311
14
11
12
13
14
2 4 6
7
8
9
10
11
11
12
119
12
1210
13
12
13
13
14
13
14
13
14
5 7
8
119
12
1210
13
13
14
10
11
12
13
13
14
12通り
12 を数えると
めんどくさい
階段の問題:解法1
何回調べないといけない?
=何個◯を書かないといけない?
7段目まで…17回
12段目まで…73回
めんどくさい
→階段の段数が大きくなった時に調べられるか…?
階段の問題:解法1
何回調べないといけない?
N段目まで登る時について考える
N段目まで登る時、だいたいN/2回登る(2段か3段ずつなので)
一回登る操作をすると書かなければいけない◯は2こふえる
=何個◯を書かないといけない?
段数が2段増えるとだいたい2倍になってゆく…
階段の問題:解法1
何回調べないといけない?
段数 答え 調べる回数
7 3 17
12 12 73
50 525,456(52万) 3,236,383(323万)
100 670,976,837,021(6709億) 4,132,674,661,507(4兆)
200 1,094,081,998,015,776,5
26,179,329
6,738,660,265,660,308,8
07,737,463
600(東京タワー階段の段
数)
7,734,268,575,229,071,7
58,820,053,174,351,074,
065,809,240,913,542,350
,861,075,008,313,376,34
1,876
47,636,839,310,365,630,
340,208,491,560,681,036
,757,140,134,694,391,45
5,799,211,182,744,208,5
99,001
😵
階段の問題:解法1
コンピュータは何回調べられる?
コンピュータは一秒に10,000,000(1億回)くらい調べられる
段数 調べる回数
50 3,236,383(323万)
100 4,132,674,661,507(4兆)
200 1,094,081,998,015,776,5
26,179,329
600(東京タワー階段の段
数)
47,636,839,310,365,630,
340,208,491,560,681,036
,757,140,134,694,391,45
5,799,211,182,744,208,5
99,001
←これは1秒で調べられる
←これは12時間かかる
←これは21億年かかる
※宇宙が誕生してから
138億年しか経っていない
階段の問題:解法1
0
3 5 7
8
9
10
11
12
12
13
1210
13
1311
14
13
14
66 8
9
1210
13
1311
14
11
12
13
14
2 4 6
7
8
9
10
11
11
12
119
12
1210
13
12
13
13
14
13
14
13
14
5 7
8
119
12
1210
13
13
14
10
11
12
13
13
14
とか の中身、
全く同じ…?
階段の問題:解法2
解法2:同じ場所にいる時…
1段目
2
3
4
5
6
7
8
9
10
11
12
❓
同じ場所にいる時
(そこまでの登り方にかかわらず)
そのあとの登り方は同じ!
階段の問題:解法2
解法2:同じ場所にいる時…
同じ場所にいる時
(そこまでの登り方にかかわらず)
そのあとの登り方は同じ!
→12段目まで到達した回数を数えて
覚えておけば、もう一回使える!
1段目
2
3
4
5
6
7
8
9
10
11
12
❓
階段の問題:解法2
←最初は普通に調べていく
0 2 4 6 8 10
11
12
13
13
14
2本の枝を調べ切った8,10,11段目について、
そこから12段目まで登る登り方の数がわかる
現在何段目か 0 1 2 3 4 5 6 7 8 9 10 11
12段目までの登り方 - - - - - - - - 1 - 1 0
7
95
3
階段の問題:解法2
0 2 4 6 8
9
10
11
11
12
13
13
14
現在何段目か 0 1 2 3 4 5 6 7 8 9 10 11
12段目までの登り方 - - - - - - - - 1 - 1 0
先を調べなくても、
この後12段目に登るための
登り方の個数がわかる!
0通り5
3
7
階段の問題:解法2
0 2 4 6 8
9
10
11
11
12
12
13
13
14
3
0通り
現在何段目か 0 1 2 3 4 5 6 7 8 9 10 11
12段目までの登り方 - - - - - - - - 1 1 1 0
5
7
階段の問題:解法2
0 2 4 6 8 10
11
12
13
13
14
3
5
現在何段目か 0 1 2 3 4 5 6 7 8 9 10 11
12段目までの登り方 - - - - - - 2 - 1 1 1 0
9 11
12
0通り
7
階段の問題:解法2
0 2 4 6
7
8 10
11
9
12
13
13
14
3
5
現在何段目か 0 1 2 3 4 5 6 7 8 9 10 11
12段目までの登り方 - - - - - - 2 - 1 1 1 0
9 11
12
0通り
10
階段の問題:解法2
0 2 4 6
7
8 10
11
9
12
13
13
14
3
5
現在何段目か 0 1 2 3 4 5 6 7 8 9 10 11
12段目までの登り方 - - - - - - 2 - 1 1 1 0
9 11
12
0通り
1通り
10 1通り
階段の問題:解法2
0 2 4 6
7
8 10
11
9
12
13
13
14
3
9 11
12
0通り
1通り
10 1通り
現在何段目か 0 1 2 3 4 5 6 7 8 9 10 11
12段目までの登り方 - - - - - - 2 2 1 1 1 0
5
階段の問題:解法2
0 2 4 6
7
8 10
11
9
12
13
13
14
3
9 11
12
0通り
1通り
10 1通り
現在何段目か 0 1 2 3 4 5 6 7 8 9 10 11
12段目までの登り方 - - - - 4 - 2 2 1 1 1 0
5
階段の問題:解法2
5 7
8
0 2 4 6
7
8 10
11
9
12
13
13
14
3
9 11
12
0通り
10
現在何段目か 0 1 2 3 4 5 6 7 8 9 10 11
12段目までの登り方 - - - - 4 - 2 2 1 1 1 0
1通り
1通り
1通り
2通り
階段の問題:解法2
5 7
8
0 2 4 6
7
8 10
11
9
12
13
13
14
3
9 11
12
0通り
10
現在何段目か 0 1 2 3 4 5 6 7 8 9 10 11
12段目までの登り方 - - - - 4 3 2 2 1 1 1 0
1通り
1通り
1通り
2通り
階段の問題:解法2
5 7
8
0 2 4 6
7
8 10
11
9
12
13
13
14
3
9 11
12
0通り
10
現在何段目か 0 1 2 3 4 5 6 7 8 9 10 11
12段目までの登り方 - - 7 - 4 3 2 2 1 1 1 0
1通り
1通り
1通り
2通り
階段の問題:解法2
5 7
8
0 2 4 6
7
8 10
11
9
12
13
13
14
3 9 11
12
0通り
10
現在何段目か 0 1 2 3 4 5 6 7 8 9 10 11
12段目までの登り方 - - 7 - 4 3 2 2 1 1 1 0
1通り
1通り
1通り
2通り
0 3 5
(最初に3段登った場合)
6
2
3通り
2通り
階段の問題:解法2
5 7
8
0 2 4 6
7
8 10
11
9
12
13
13
14
3 9 11
12
0通り
10
現在何段目か 0 1 2 3 4 5 6 7 8 9 10 11
12段目までの登り方 - - 7 5 4 3 3 2 1 1 1 0
1通り
1通り
1通り
2通り
0 3 5
(最初に3段登った場合)
6
2
3通り
2通り
階段の問題:解法2
5 7
8
0 2 4 6
7
8 10
11
9
12
13
13
14
3 9 11
12
0通り
10
現在何段目か 0 1 2 3 4 5 6 7 8 9 10 11
12段目までの登り方 12 - 7 5 4 3 3 2 1 1 1 0
1通り
1通り
1通り
2通り
0 3 5
6
2
3通り
2通り
階段の問題:解法2
現在何段目か 0 1 2 3 4 5 6 7 8 9 10 11
12段目までの登り方 12 - 7 5 4 3 3 2 1 1 1 0
0段目から12段目までの登り方
→これが答え(12通り)
階段の問題:解法2
何回調べないといけない?
=何個◯を書かないといけない?
7段目まで…17回→13回
12段目まで…73回→23回
明らかに解法1よりは楽になった
階段の問題:解法2
何回調べないといけない?
N段目まで登る時について考える
N段目まで登る時、
一回登る操作をすると書かなければいけない◯は2こふえる
=何個◯を書かないといけない?
だいたい段数の2倍くらい調べる
階段の問題:解法2
何回調べないといけない?
N段目まで登る時について考える
N段目まで登る時、
一回登る操作をすると書かなければいけない◯は2こふえる
=何個◯を書かないといけない?
だいたい段数の2倍くらい調べる
階段の問題:解法2
何回調べないといけない?
段数 解法1で調べる回数 解法2で調べる回数
7 17 13
12 73 23
50 3,236,383(323万) 99
100 4,132,674,661,507(4兆) 199
200 6,738,660,265,660,308,8
07,737,463
399
600(東京タワー階段の段
数)
47,636,839,310,365,630,
340,208,491,560,681,036
,757,140,134,694,391,45
5,799,211,182,744,208,5
99,001
1199
階段の問題:解法2
何回調べないといけない?
段数 解法1で調べる回数 解法2で調べる回数
7 17 13
12 73 23
50 3,236,383(323万) 99
100 4,132,674,661,507(4兆) 199
200 6,738,660,265,660,308,8
07,737,463
399
600(東京タワー階段の段
数)
47,636,839,310,365,630,
340,208,491,560,681,036
,757,140,134,694,391,45
5,799,211,182,744,208,5
99,001
1199
(だいたい)2倍
→段数に比例
階段の問題:解法2
コンピュータは何回調べられる?
コンピュータは一秒に10,000,000(1億回)くらい調べられる
→調べる回数が段数に比例するので、
段数が1億段くらいあっても調べられる
😀段数が増えると倍々になってしまうよりずっと楽!
階段の問題:解法2
いちいち樹形図を辿るのはめんどくさいな…
🤔
階段の問題:解法2
いちいち樹形図を辿るのはめんどくさいな…
メモした表に注目してみる!→解法3
🤔
階段の問題:解法3
解法3:ある段数にいる時…
8段目にいる時、
12段目までの登り方を考える
次に登るのは10段目か11段目
5
0 2 4 6
7
8 10
11
12
13
13
14
3 9 11
12
0通り
現在何段目か 0 1 2 3 4 5 6 7 8 9 10 11
12段目までの登り方 12 - 7 5 4 3 3 2 1 1 1 0
階段の問題:解法3
解法3:ある段数にいる時…
現在何段目か 0 1 2 3 4 5 6 7 8 9 10 11
12段目までの登り方 12 - 7 5 4 3 3 2 1 1 1 0
5
0 2 4 6
7
8 10
11
12
13
13
14
3 9 11
12
0通り
8段目から12段目に登る登り方
次に11段目に登っ
てから12段目まで
登る登り方
次に10段目に登っ
てから12段目まで
登る登り方
階段の問題:解法3
解法3:ある段数にいる時…
現在何段目か 0 1 2 3 4 5 6 7 8 9 10 11
12段目までの登り方 12 - 7 5 4 3 3 2 1 1 1 0
5
0 2 4 6
7
8 10
11
12
13
13
14
3 9 11
12
0通り
8段目から12段目に登る登り方
次に11段目に登っ
てから12段目まで
登る登り方
次に10段目に登っ
てから12段目まで
登る登り方
階段の問題:解法3
解法3:ある段数にいる時…
現在何段目か … N N+1 N+2 N+3 N+4 N+5 N+6 …
12段目までの登り方 … x+y - x y - - - …
N段目から12段目に登る登り方
次にN+3段目に
登ってから12段目
まで登る登り方
次にN+2段目に
登ってから12段目
まで登る登り方
N N+2
N+3
N+4
N+5
N+5
N+6
階段の問題:解法3
現在何段目か 0 1 2 3 4 5 6 7 8 9 10 11 12
12段目までの登り方 - - - - - - - - - - - - 1
表を使って考える
12段目から12段目に登る登り方は
「そのまま居る」の1通りとする
階段の問題:解法3
現在何段目か 0 1 2 3 4 5 6 7 8 9 10 11 12
12段目までの登り方 - - - - - - - - - - - 0 1
表を使って考える
11段目から12段目に登る登り方は、
次に13段目に登る登り方と次に14段
目に登る登り方になるが、そのよう
なものは存在しない。
階段の問題:解法3
現在何段目か 0 1 2 3 4 5 6 7 8 9 10 11 12
12段目までの登り方 - - - - - - - - - - 1 0 1
表を使って考える
N+2段目から12段目までの登り方と
N+3段目から12段目までの登り方を
足し合わせて記録することを繰り返す
階段の問題:解法3
現在何段目か 0 1 2 3 4 5 6 7 8 9 10 11 12
12段目までの登り方 - - - - - - - - - 1 1 0 1
表を使って考える
N+2段目から12段目までの登り方と
N+3段目から12段目までの登り方を
足し合わせて記録することを繰り返す
階段の問題:解法3
現在何段目か 0 1 2 3 4 5 6 7 8 9 10 11 12
12段目までの登り方 - - - - - - - - 1 1 1 0 1
表を使って考える
N+2段目から12段目までの登り方と
N+3段目から12段目までの登り方を
足し合わせて記録することを繰り返す
階段の問題:解法3
現在何段目か 0 1 2 3 4 5 6 7 8 9 10 11 12
12段目までの登り方 - - - - - - - 2 1 1 1 0 1
表を使って考える
N+2段目から12段目までの登り方と
N+3段目から12段目までの登り方を
足し合わせて記録することを繰り返す
階段の問題:解法3
現在何段目か 0 1 2 3 4 5 6 7 8 9 10 11 12
12段目までの登り方 - - - - - - 2 2 1 1 1 0 1
表を使って考える
N+2段目から12段目までの登り方と
N+3段目から12段目までの登り方を
足し合わせて記録することを繰り返す
階段の問題:解法3
現在何段目か 0 1 2 3 4 5 6 7 8 9 10 11 12
12段目までの登り方 - - - - - 3 2 2 1 1 1 0 1
表を使って考える
N+2段目から12段目までの登り方と
N+3段目から12段目までの登り方を
足し合わせて記録することを繰り返す
階段の問題:解法3
現在何段目か 0 1 2 3 4 5 6 7 8 9 10 11 12
12段目までの登り方 - - - - 4 3 2 2 1 1 1 0 1
表を使って考える
N+2段目から12段目までの登り方と
N+3段目から12段目までの登り方を
足し合わせて記録することを繰り返す
階段の問題:解法3
現在何段目か 0 1 2 3 4 5 6 7 8 9 10 11 12
12段目までの登り方 - - - 5 4 3 2 2 1 1 1 0 1
表を使って考える
N+2段目から12段目までの登り方と
N+3段目から12段目までの登り方を
足し合わせて記録することを繰り返す
階段の問題:解法3
現在何段目か 0 1 2 3 4 5 6 7 8 9 10 11 12
12段目までの登り方 - - 7 5 4 3 2 2 1 1 1 0 1
表を使って考える
N+2段目から12段目までの登り方と
N+3段目から12段目までの登り方を
足し合わせて記録することを繰り返す
階段の問題:解法3
現在何段目か 0 1 2 3 4 5 6 7 8 9 10 11 12
12段目までの登り方 - 9 7 5 4 3 2 2 1 1 1 0 1
表を使って考える
N+2段目から12段目までの登り方と
N+3段目から12段目までの登り方を
足し合わせて記録することを繰り返す
階段の問題:解法3
現在何段目か 0 1 2 3 4 5 6 7 8 9 10 11 12
12段目までの登り方 12 9 7 5 4 3 2 2 1 1 1 0 1
表を使って考える
N+2段目から12段目までの登り方と
N+3段目から12段目までの登り方を
足し合わせて記録することを繰り返す
0段目から12段目までの登り方は
12通り
階段の問題:解法3
何回調べないといけない?
更新する表のマス目の個数は段数と同じ
N段目のマスを更新するのにN+2,N+3段目の
2つのマスの数を調べる必要がある
(解法2と同じ)
だいたい段数の2倍くらい調べる
階段の問題:まとめ
解法1:ありえる進み方を全て調べる
解法2:再計算しないように計算結果を記録
しておく
解法3:すぐにわかる値から計算をスタート
し、わかる値を順番に計算していく
時間がかかる
時間がかからない
遡る必要がない
(「再帰」のムダがない)
階段の問題:まとめ
解法1:ありえる進み方を全て調べる
解法2:再計算しないように計算結果を記録
しておく
解法3:すぐにわかる値から計算をスタート
し、わかる値を順番に計算していく
「全(て)探索(する)」
「動的計画法」
と言います!
動的計画法とは
小さい問題を解くと、その問題の計算結果を再利用
して大きい問題が解ける時に使う方法のこと。
※階段の問題では
小さい問題…11段目から12段目に登る登り方の個数
10段目から12段目に登る登り方の個数
少し大きい問題…8段目から12段目に登る登り方の個数
もっと大きい問題…0段目から12段目に登る登り方の個数
動的計画法とは
どういう問題を見たら使えばいい?
動的計画法とは
どういう問題を見たら使いたい?
・小さな部分に分割できて、
その部分で同じ問題が考えられるような問題
例:0段目から12段目まで登る>1段目から12段目まで登る>2段目から…
・大きな問題を解く時に小さな問題の答えをよく使うこと
例:0段目から12段目まで登る時に、2段目から12段目まで登る動作や
3段目から12段目まで登る動作をする
※一つ目に最適性の原理を合わせたものを「部分構造最適性」、二つ目を「部分問題重要性」というよ
階段の問題:解法2
解法2:同じ場所にいる時…
同じ場所にいる時
(そこまでの登り方にかかわらず)
そのあとの登り方は同じ!
→12段目まで到達した回数を数えて
覚えておけば、もう一回使える!
1段目
2
3
4
5
6
7
8
9
10
11
12
❓
ここが大事!
(再掲)
動的計画法とは
どういう問題を見たら使いたい?
最適性の原理
小さな問題での最適な解と、
その時点での最適な選択を組み合わせれば、
で大きな問題の最適な解が出てくること
動的計画法とは
どういう問題を見たら使いたい?
例1: 荷物の詰め方
カバンの中に荷物をぎちぎちに詰めている時、
ある荷物を取り除いた空間もぎちぎちになっている
(そうでないとき、その空間をぎちぎちにすることで
カバン全体で見たときももっと詰められるから)
例2:最短距離
A→B→Cと最短距離で移動する時、
明らかにA→BでもB→Cでも最短距離で移動している
動的計画法を使える問題2つめ
1 一方が他方より4ゲーム多く勝ったときに優勝が決まるという
ルールで、A,Bの2人が競技を行いました。ただし、引き分けはない
ものとします。ちょうど10ゲーム目が終わったときに、Aが優勝し
ました。このときに考えられるAの勝ち負けの順は何通りあります
か。
2 一方が他方よりMゲーム多く勝ったときに優勝が決まるという
ルールで、A,Bの2人が競技を行いました。ただし、引き分けはない
ものとします。ちょうどNゲーム目が終わったときに、Aが優勝し
たときに考えられるAの勝ち負けの順は何通りありますか。
(2009年 渋谷教育学園幕張中学校 算数[2](2) 改題)
ゲームの問題
概要
・Nゲーム目で(Aの勝った回数)=(Bの勝った回数)+M
となる
・Nゲーム目までゲームが続いている必要がある
途中で(Aの勝った回数)=(Bの勝った回数)+M
になるとゲームが終わってしまう
ゲームの問題
ダメな考え方の例
小さい問題に分けたい
→「n(<N)回目でちょうどAが勝つような勝ち負けの順」
について考える…?
ゲームの問題
最適性の原理を満たしていない
「n(<N)回目でちょうどAが勝つような勝ち負けの順」 に
最適な勝ち負けの順を組み合わせても
「N回目でちょうどAが勝つような勝ち負けの順」にならない!
ダメな考え方の例
小さい問題に分けたい
→「n(<N)回目でちょうどAが勝つような勝ち負けの順」
について考える…?
ゲームの問題
「n回目においてAがBよりx回多く勝つような勝ち負けの順」
についてx=-M,-M+1…,M-1,Mすべてについて考えれば、
適切な勝ち負けの順を組み合わせることによって
「n+1回目においてAがBよりy回多く勝つような勝ち負けの順」
が出てくる!(x=Mの時について考えれば答えになる)
最適性の原理を満たすように小さい問題への分割をする!
ゲームの問題
(1) N=10,M=4の時
0 1 2 3 4 5 6 7 8 9 10
-4 0 0 0 0 0 0 0 0 0 0 0
-3 0 0 0 0 0 0 0 0 0 0 0
-2 0 0 0 0 0 0 0 0 0 0 0
-1 0 0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0 0 0 0 0
3 0 0 0 0 0 0 0 0 0 0 0
4 0 0 0 0 0 0 0 0 0 0 0
試合が行われていないので
「どっちも0勝」の1通りとする
ゲームの問題
(1) N=10,M=4の時
0 1 2 3 4 5 6 7 8 9 10
-4 0 0 0 0 0 0 0 0 0 0 0
-3 0 0 0 0 0 0 0 0 0 0 0
-2 0 0 0 0 0 0 0 0 0 0 0
-1 0 0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0 0 0 0 0
3 0 0 0 0 0 0 0 0 0 0 0
4 0 0 0 0 0 0 0 0 0 0 0
どちらも勝利していないので、
次の試合が行われるはず
Bが勝つ
Aが勝つ
ゲームの問題
(1) N=10,M=4の時
0 1 2 3 4 5 6 7 8 9 10
-4 0 0 0 0 0 0 0 0 0 0 0
-3 0 0 0 0 0 0 0 0 0 0 0
-2 0 0 0 0 0 0 0 0 0 0 0
-1 0 0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0 0 0 0 0
3 0 0 0 0 0 0 0 0 0 0 0
4 0 0 0 0 0 0 0 0 0 0 0
Bが勝つ
Aが勝つ
ゲームの問題
(1) N=10,M=4の時
0 1 2 3 4 5 6 7 8 9 10
-4 0 0 0 0 0 0 0 0 0 0 0
-3 0 0 0 0 0 0 0 0 0 0 0
-2 0 0 0 0 0 0 0 0 0 0 0
-1 0 0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0 0 0 0 0
3 0 0 0 0 0 0 0 0 0 0 0
4 0 0 0 0 0 0 0 0 0 0 0
Bが勝つ
Aが勝つ
ゲームの問題
(1) N=10,M=4の時
0 1 2 3 4 5 6 7 8 9 10
-4 0 0 0 0 0 0 0 0 0 0 0
-3 0 0 0 0 0 0 0 0 0 0 0
-2 0 0 0 0 0 0 0 0 0 0 0
-1 0 1 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0 0 0 0 0
3 0 0 0 0 0 0 0 0 0 0 0
4 0 0 0 0 0 0 0 0 0 0 0
Bが勝つ
Aが勝つ
ゲームの問題
(1) N=10,M=4の時
0 1 2 3 4 5 6 7 8 9 10
-4 0 0 0 0 0 0 0 0 0 0 0
-3 0 0 0 0 0 0 0 0 0 0 0
-2 0 0 0 0 0 0 0 0 0 0 0
-1 0 1 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0 0 0 0 0
3 0 0 0 0 0 0 0 0 0 0 0
4 0 0 0 0 0 0 0 0 0 0 0
(同じように調べる)
ゲームの問題
(1) N=10,M=4の時
0 1 2 3 4 5 6 7 8 9 10
-4 0 0 0 0 0 0 0 0 0 0 0
-3 0 0 0 0 0 0 0 0 0 0 0
-2 0 0 1 0 0 0 0 0 0 0 0
-1 0 1 0 0 0 0 0 0 0 0 0
0 1 0 2 0 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0 0 0
2 0 0 1 0 0 0 0 0 0 0 0
3 0 0 0 0 0 0 0 0 0 0 0
4 0 0 0 0 0 0 0 0 0 0 0
次の列も同じように進める
ゲームの問題
(1) N=10,M=4の時
0 1 2 3 4 5 6 7 8 9 10
-4 0 0 0 0 1 0 4 0 14 0 48
-3 0 0 0 1 0 4 0 14 0 48 0
-2 0 0 1 0 4 0 14 0 48 0 164
-1 0 1 0 3 0 10 0 34 0 116 0
0 1 0 2 0 6 0 20 0 68 0 232
1 0 1 0 3 0 10 0 34 0 116 0
2 0 0 1 0 4 0 14 0 48 0 164
3 0 0 0 1 0 4 0 14 0 48 0
4 0 0 0 0 1 0 4 0 14 0 48
全ての列について調べると…
ゲームの問題
(1) N=10,M=4の時
0 1 2 3 4 5 6 7 8 9 10
-4 0 0 0 0 1 0 4 0 14 0 48
-3 0 0 0 1 0 4 0 14 0 48 0
-2 0 0 1 0 4 0 14 0 48 0 164
-1 0 1 0 3 0 10 0 34 0 116 0
0 1 0 2 0 6 0 20 0 68 0 232
1 0 1 0 3 0 10 0 34 0 116 0
2 0 0 1 0 4 0 14 0 48 0 164
3 0 0 0 1 0 4 0 14 0 48 0
4 0 0 0 0 1 0 4 0 14 0 48
全ての列について調べると…
ちょうど10回目にAが勝利する…答え
ゲームの問題
何回調べないといけない?
※全部の出し順を調べると、1試合ごとに(Aが勝つ)(Bが勝つ)の
二個の選択肢が分岐するので、調べる数が倍、そのまた倍…に
階段の問題の最初の解法と同じ 😔
ゲームの問題
何回調べないといけない?
動的計画法だと…
だいたいN×Mに比例した回数調べる!
表のマスはN×M個
一つのマスからは2回次のマスに足す(Aが勝つ,Bが勝つ)
階段の問題:解法2
何回調べないといけない?
コンピュータは大体一秒に一億回くらい調べられた
→100試合多く勝つと勝利する(M=100)の時
全探索だとN=20試合くらいまで
動的計画法だとN=100万試合も調べられる
😀
おまけ:その他の問題
た し 算は二つの数から一つの数を求める計算で、三つ以上の数をたすときには、二つの数のたし算を
くり返していくことになります。例えば 1+2+3や1+2+ 3+4を、カッコを用いて二つの数のたし算で
書き表す方法は、次のようにそれぞれ二通り、五通りあります。
1+(2+3)、(1+2)+3・・・二通り
1+(2+(3+4))、1+((2+3)+4)、(1+2)+(3+4)、(1+(2+3))+4、((1+2)+3)+4・・・五通り
(注意) 1+(3+2)のように、たす数を並べ替えることは考えません。
このような式を完全式と呼ぶことにします。次のような式は完全式ではありません。
1+2+3、1+(2+3)+4 、(1+2+3)+4 (三つをたしている)
1+2+3+4 (四つをたしている)
(1) 1+2+3+4+5 には何通りの完全式がありますか。
(2) 1+2+3+4+5+6には何通りの完全式がありますか。
→1+2+…+Nには何通りの完全式がありますか。
(洛南中学2001年度算数)
1+2+3+4+5+6について完全式で表すとき、
1,2,3,4,5,6
1+2,2+3,3+4,4+5,5+6,
1+2+3,2+3+4,3+4+5,4+5+6,
1+2+3+4,2+3+4+5,3+4+5+6,
1+2+3+4+5,2+3+4+5+6
の小さな部分ついて完全式で表すという問題に分割できる!
おまけ:その他の問題
おまけ:その他の問題
いわゆる「カタラン数」の問題
N×Nのテーブルを用いた動的計画法で解けます!
考えてみてください!
(ちなみに、頑張ればN×1のテーブルを用いて解くことができます)
わかる人へ:区間DP的な…
まとめ
動的計画法とは?
・小さな問題を解いて、その結果を覚える
覚えた結果を使って大きな問題を解く
・問題に出てくる数が多くなっても、
全部調べるより少ない回数で調べられる
(ことが多い)
おまけ:計算量と倍々とんち話
(この部分は生徒からの質問に応じて見せれば良い)
豊臣秀吉が好きな褒美を与えようと言ったところ、
その部下は
「1日目は米1粒、2日目は米2粒、3日目は
4粒…というように、倍々の量の米粒を
100日間欲しい」
と言った。
米粒なら大したことはないと思った秀吉は簡単に
承認したが…?
おまけ:計算量と倍々とんち話
(この部分は生徒からの質問に応じて見せれば良い)
1日目…1粒
2日目…2粒
3日目…4粒(2×2)
4日目…8粒(2×2×2)
…
25日目…16,777,216粒(米俵6俵分)
35日目…17,179,869,216粒(約400トン)
50日目…562,949,953,421,312粒(日本の1年間の米の生産量)
100日目…633,825,300,114,114,700,748,351,602,688粒
(世界で5000億年間に生産される米の量)
…
おまけ:計算量と倍々とんち話
(この部分は生徒からの質問に応じて見せれば良い)
教訓
調べる回数が、問題の数字を増やすと倍々になっていく
ような方法で計算するのはさけよう!
できるだけ、
・問題の数字にかかわらず数回で調べられる
・問題の数字の増え方より少ない回数で調べられる
・問題の数字と同じくらいの回数で調べられる
方法を考えよう
(詳しくは「計算量(けいさんりょう)」で調べてみよう!)

More Related Content

Featured

Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 

Featured (20)

PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy Presentation
 

中学受験算数に見る動的計画法