- The document contains code and explanations for solving optimization problems using dynamic programming, including calculating minimum costs using a 2D array to store results.
- It describes applying dynamic programming to problems involving finding minimum costs for tasks that can be split into subtasks, with the overall cost determined by combining subtask costs.
- The code provided shows initializing a 2D array and using nested for loops to iterate through values, calculate minimum costs based on previous results, and store them in the 2D array to build up an optimal solution.
- The document contains code and explanations for solving optimization problems using dynamic programming, including calculating minimum costs using a 2D array to store results.
- It describes applying dynamic programming to problems involving finding minimum costs for tasks that can be split into subtasks, with the overall cost determined by combining subtask costs.
- The code provided shows initializing a 2D array and using nested for loops to iterate through values, calculate minimum costs based on previous results, and store them in the 2D array to build up an optimal solution.
4. Bruteforce(力まかせ)
● 完全に名前負けしている。
● 誰でも思いつく以下のような手法である。
① 文中での比較開始位置を決める。
② そこからパターンと一致しているか比較する。
不一致が確定した時点で打ち切り。
③ ①,②を文中の全ての位置に行う。
例)
パターン : kyubuns
文: x k y u r i k y u b u n s
k y u b u n s
↑
5. Bruteforce(力まかせ)
● 完全に名前負けしている。
● 誰でも思いつく以下のような手法である。
① 文中での比較開始位置を決める。
② そこからパターンと一致しているか比較する。
不一致が確定した時点で打ち切り。
③ ①,②を文中の全ての位置に行う。
例)
パターン : kyubuns
文: x k y u r i k y u b u n s
k y u b u n s
↑ 最初の文字で不一致した。
6. Bruteforce(力まかせ)
● 完全に名前負けしている。
● 誰でも思いつく以下のような手法である。
① 文中での比較開始位置を決める。
② そこからパターンと一致しているか比較する。
不一致が確定した時点で打ち切り。
③ ①,②を文中の全ての位置に行う。
例)
パターン : kyubuns
文: x k y u r i k y u b u n s
k y u b u n s
↑
7. Bruteforce(力まかせ)
● 完全に名前負けしている。
● 誰でも思いつく以下のような手法である。
① 文中での比較開始位置を決める。
② そこからパターンと一致しているか比較する。
不一致が確定した時点で打ち切り。
③ ①,②を文中の全ての位置に行う。
例)
パターン : kyubuns
文: x k y u r i k y u b u n s
k y u b u n s
↑
8. Bruteforce(力まかせ)
● 完全に名前負けしている。
● 誰でも思いつく以下のような手法である。
① 文中での比較開始位置を決める。
② そこからパターンと一致しているか比較する。
不一致が確定した時点で打ち切り。
③ ①,②を文中の全ての位置に行う。
例)
パターン : kyubuns
文: x k y u r i k y u b u n s
k y u b u n s
↑
9. Bruteforce(力まかせ)
● 完全に名前負けしている。
● 誰でも思いつく以下のような手法である。
① 文中での比較開始位置を決める。
② そこからパターンと一致しているか比較する。
不一致が確定した時点で打ち切り。
③ ①,②を文中の全ての位置に行う。
例)
パターン : kyubuns
文: x k y u r i k y u b u n s
k y u b u n s
↑
10. Bruteforce(力まかせ)
● 完全に名前負けしている。
● 誰でも思いつく以下のような手法である。
① 文中での比較開始位置を決める。
② そこからパターンと一致しているか比較する。
不一致が確定した時点で打ち切り。
③ ①,②を文中の全ての位置に行う。
例)
パターン : kyubuns
文: x k y u r i k y u b u n s
k y u b u n s
↑4文字目で不一致だった。
11. Bruteforce(力まかせ)
● 完全に名前負けしている。
● 誰でも思いつく以下のような手法である。
① 文中での比較開始位置を決める。
② そこからパターンと一致しているか比較する。
不一致が確定した時点で打ち切り。
③ ①,②を文中の全ての位置に行う。
例)
パターン : kyubuns
文: x k y u r i k y u b u n s
k y u b u n s
↑
12. Bruteforce(力まかせ)
● 完全に名前負けしている。
● 誰でも思いつく以下のような手法である。
① 文中での比較開始位置を決める。
② そこからパターンと一致しているか比較する。
不一致が確定した時点で打ち切り。
③ ①,②を文中の全ての位置に行う。
例)
パターン : kyubuns
文: x k y u r i k y u b u n s
k y u b u n s
↑
13. Bruteforce(力まかせ)
● 完全に名前負けしている。
● 誰でも思いつく以下のような手法である。
① 文中での比較開始位置を決める。
② そこからパターンと一致しているか比較する。
不一致が確定した時点で打ち切り。
③ ①,②を文中の全ての位置に行う。
例)
パターン : kyubuns
文: x k y u r i k y u b u n s
k y u b u n s
↑
14. Bruteforce(力まかせ)
● 完全に名前負けしている。
● 誰でも思いつく以下のような手法である。
① 文中での比較開始位置を決める。
② そこからパターンと一致しているか比較する。
不一致が確定した時点で打ち切り。
③ ①,②を文中の全ての位置に行う。
例)
パターン : kyubuns
文: x k y u r i k y u b u n s
k y u b u n s
↑
15. Bruteforce(力まかせ)
● 完全に名前負けしている。
● 誰でも思いつく以下のような手法である。
① 文中での比較開始位置を決める。
② そこからパターンと一致しているか比較する。
不一致が確定した時点で打ち切り。
③ ①,②を文中の全ての位置に行う。
例)
パターン : kyubuns
文: x k y u r i k y u b u n s
k y u b u n s
↑
一致した!
18. KMP法
● クヌースさん,モリスさん,プラットさんが発表した
● パターンのどの位置で不一致したかでずらす量を
決める 例)
パターン : ababc a b a b c
文 : abcadababc
何文字目で失敗した? 始点ずらす量 次何文字目から見るか
1 +1 1
2 +2 1
3 +3 1
4 +2 2
5 +2 3
a b c a d a b a b a b c
19. KMP法
● クヌースさん,モリスさん,プラットさんが発表した
● パターンのどの位置で不一致したかでずらす量を
決める 例)
パターン : ababc
文 : abcadababc
何文字目で失敗した? 始点ずらす量 次何文字目から見るか
1 +1 1
2 +2 1
3 +3 1
4 +2 2
5 +2 3
a b c a d a b a b a b c
a b a b c
↑
20. KMP法
● クヌースさん,モリスさん,プラットさんが発表した
● パターンのどの位置で不一致したかでずらす量を
決める 例)
パターン : ababc
文 : abcadababc
何文字目で失敗した? 始点ずらす量 次何文字目から見るか
1 +1 1
2 +2 1
3 +3 1
4 +2 2
5 +2 3
a b c a d a b a b a b c
a b a b c
↑ 3文字目で不一致
21. KMP法
● クヌースさん,モリスさん,プラットさんが発表した
● パターンのどの位置で不一致したかでずらす量を
決める 例)
パターン : ababc
文 : abcadababc
何文字目で失敗した? 始点ずらす量 次何文字目から見るか
1 +1 1
2 +2 1
3 +3 1
4 +2 2
5 +2 3
a b c a d a b a b a b c
a b a b c
↑
22. KMP法
● クヌースさん,モリスさん,プラットさんが発表した
● パターンのどの位置で不一致したかでずらす量を
決める 例)
パターン : ababc
文 : abcadababc
何文字目で失敗した? 始点ずらす量 次何文字目から見るか
1 +1 1
2 +2 1
3 +3 1
4 +2 2
5 +2 3
a b c a d a b a b a b c
a b a b c
↑ 2文字目で不一致
23. KMP法
● クヌースさん,モリスさん,プラットさんが発表した
● パターンのどの位置で不一致したかでずらす量を
決める 例)
パターン : ababc
文 : abcadababc
何文字目で失敗した? 始点ずらす量 次何文字目から見るか
1 +1 1
2 +2 1
3 +3 1
4 +2 2
5 +2 3
a b c a d a b a b a b c
a b a b c
↑
24. KMP法
● クヌースさん,モリスさん,プラットさんが発表した
● パターンのどの位置で不一致したかでずらす量を
決める 例)
パターン : ababc
文 : abcadababc
何文字目で失敗した? 始点ずらす量 次何文字目から見るか
1 +1 1
2 +2 1
3 +3 1
4 +2 2
5 +2 3
a b c a d a b a b a b c
a b a b c
↑ 5文字目で不一致
25. KMP法
● クヌースさん,モリスさん,プラットさんが発表した
● パターンのどの位置で不一致したかでずらす量を
決める 例)
パターン : ababc
文 : abcadababc
何文字目で失敗した? 始点ずらす量 次何文字目から見るか
1 +1 1
2 +2 1
3 +3 1
4 +2 2
5 +2 3
a b c a d a b a b a b c
a b a b c
↑
26. KMP法
● クヌースさん,モリスさん,プラットさんが発表した
● パターンのどの位置で不一致したかでずらす量を
決める 例)
パターン : ababc
文 : abcadababc
何文字目で失敗した? 始点ずらす量 次何文字目から見るか
1 +1 1
2 +2 1
3 +3 1
4 +2 2
5 +2 3
a b c a d a b a b a b c
a b a b c
↑ 一致した~
34. BM法
● ボイヤーさん,ムーアさんが開発した
● パターン比較時、後ろの文字から比較していく
● 失敗した文字種類に応じてずらす量決める
例)
a b a b c
パターン : ababc
文 : abcacdbabc
不一致したときの文中の文字 着目点をずらす量 次何文字目から見るか
a Max(+2,一致文字数+1) 5
b Max(+1,一致文字数+1) 5
c +5 5
それ以外 +5 5
a b c a c d b a b a b c
a b a b c
↑
35. BM法
● ボイヤーさん,ムーアさんが開発した
● パターン比較時、後ろの文字から比較していく
● 失敗した文字種類に応じてずらす量決める
例)
a b a b c
パターン : ababc
文 : abcacdbabc
不一致したときの文中の文字 着目点をずらす量 次何文字目から見るか
a Max(+2,一致文字数+1) 5
b Max(+1,一致文字数+1) 5
c +5 5
それ以外 +5 5
a b c a c d b a b a b c
a b a b c
↑ 'a'で不一致, 1文字一致した後失敗した
36. BM法
● ボイヤーさん,ムーアさんが開発した
● パターン比較時、後ろの文字から比較していく
● 失敗した文字種類に応じてずらす量決める
例)
a b a b c
パターン : ababc
文 : abcacdbabc
不一致したときの文中の文字 着目点をずらす量 次何文字目から見るか
a Max(+2,一致文字数+1) 5
b Max(+1,一致文字数+1) 5
c +5 5
それ以外 +5 5
a b c a c d b a b a b c
a b a b c
↑ 着目点(↑)を2文字ずらした
37. BM法
● ボイヤーさん,ムーアさんが開発した
● パターン比較時、後ろの文字から比較していく
● 失敗した文字種類に応じてずらす量決める
例)
a b a b c
パターン : ababc
文 : abcacdbabc
不一致したときの文中の文字 着目点をずらす量 次何文字目から見るか
a Max(+2,一致文字数+1) 5
b Max(+1,一致文字数+1) 5
c +5 5
それ以外 +5 5
a b c a c d b a b a b c
a b a b c
↑ 'd'で不一致,5文字ずらす
38. BM法
● ボイヤーさん,ムーアさんが開発した
● パターン比較時、後ろの文字から比較していく
● 失敗した文字種類に応じてずらす量決める
例)
a b a b c
パターン : ababc
文 : abcacdbabc
不一致したときの文中の文字 着目点をずらす量 次何文字目から見るか
a Max(+2,一致文字数+1) 5
b Max(+1,一致文字数+1) 5
c +5 5
それ以外 +5 5
a b c a c a b a b a b c
a b a b c
↑
39. BM法
● ボイヤーさん,ムーアさんが開発した
● パターン比較時、後ろの文字から比較していく
● 失敗した文字種類に応じてずらす量決める
例)
a b a b c
パターン : ababc
文 : abcacdbabc
不一致したときの文中の文字 着目点をずらす量 次何文字目から見るか
a Max(+2,一致文字数+1) 5
b Max(+1,一致文字数+1) 5
c +5 5
それ以外 +5 5
a b c a c a b a b a b c
a b a b c
↑ 'b'で不一致,1文字ずらす
40. BM法
● ボイヤーさん,ムーアさんが開発した
● パターン比較時、後ろの文字から比較していく
● 失敗した文字種類に応じてずらす量決める
例)
a b a b c
パターン : ababc
文 : abcacdbabc
不一致したときの文中の文字 着目点をずらす量 次何文字目から見るか
a Max(+2,一致文字数+1) 5
b Max(+1,一致文字数+1) 5
c +5 5
それ以外 +5 5
a b c a c a b a b a b c
a b a b c
↑
41. BM法
● ボイヤーさん,ムーアさんが開発した
● パターン比較時、後ろの文字から比較していく
● 失敗した文字種類に応じてずらす量決める
例)
a b a b c
パターン : ababc
文 : abcacdbabc
不一致したときの文中の文字 着目点をずらす量 次何文字目から見るか
a Max(+2,一致文字数+1) 5
b Max(+1,一致文字数+1) 5
c +5 5
それ以外 +5 5
a b c a c a b a b a b c
a b a b c
↑ 一致した!