SlideShare uma empresa Scribd logo
1 de 150
Baixar para ler offline
区間分割の仕方を
最適化する動的計画法
NTT データ数理システム
大槻 兼資
(ペンネーム:けんちょん)
2021/8/19
@JOI 夏季セミナー
1
• 積極的に声やチャットで喋ってもらえたら嬉しいです
最初に
2
• 「ちゃんと理解しなきゃ」と堅くならずに、気楽に!
• アルゴリズム、競プロを楽しもう!
• チューター、ハイレベルコースの詳しい方も、ぜひ
さまざまなコメントを!
/ 133
• 2014年:東京大学大学院情報理工学系研究科
数理情報学専攻修士課程修了
自己紹介 (本業編)
• 2015年~:NTT データ数理システム
• 専門は数理工学全般
• アルゴリズム
• 探索, ネットワーク, etc…
• 数理最適化
• シフトスケジューリングなど
• 機械学習
• チャットボットなど
http://www.dis.uniroma1.it/challenge9/download.shtml 3 / 133
4
自己紹介 (趣味編)
(8月19日) (7 の形) (1234567890 で「コ」)
• 虫食算作り
• 競技プログラミング
/ 133
5
アルゴリズム本を出版
• 2021 年 IT エンジニア本大賞特別賞
• 「問題の解き方」を重視したアルゴリズムの入門書
6
アルゴリズム本を出版
第 1 章
アルゴリズムとは
第 2 章
計算量とオーダー記法
第 3 章
全探索
第 4 章
再帰と分割統治法
第 5 章
動的計画法
第 6 章
二分探索法
第 7 章
貪欲法
第 8 章
配列、連結リスト
ハッシュテーブル
第 9 章
スタックとキュー
第 10 章
グラフと木
第 11 章
Union-Find
第 12 章
ソート
第 13 章
グラフ探索
第 14 章
最短路問題
第 15 章
最小全域木問題
第 16 章
ネットワークフロー
第 17 章
P と NP
第 18 章
難問対策
7
ステップアップセミナー初級
第 1 章
アルゴリズムとは
第 2 章
計算量とオーダー記法
第 3 章
全探索
第 4 章
再帰と分割統治法
第 5 章
動的計画法
第 6 章
二分探索法
第 7 章
貪欲法
第 8 章
配列、連結リスト
ハッシュテーブル
第 9 章
スタックとキュー
第 10 章
グラフと木
第 11 章
Union-Find
第 12 章
ソート
第 13 章
グラフ探索
第 14 章
最短路問題
第 15 章
最小全域木問題
第 16 章
ネットワークフロー
第 17 章
P と NP
第 18 章
難問対策
8
ステップアップセミナー中級
第 1 章
アルゴリズムとは
第 2 章
計算量とオーダー記法
第 3 章
全探索
第 4 章
再帰と分割統治法
第 5 章
動的計画法
第 6 章
二分探索法
第 7 章
貪欲法
第 8 章
配列、連結リスト
ハッシュテーブル
第 9 章
スタックとキュー
第 10 章
グラフと木
第 11 章
Union-Find
第 12 章
ソート
第 13 章
グラフ探索
第 14 章
最短路問題
第 15 章
最小全域木問題
第 16 章
ネットワークフロー
第 17 章
P と NP
第 18 章
難問対策
9
今回の話
第 1 章
アルゴリズムとは
第 2 章
計算量とオーダー記法
第 3 章
全探索
第 4 章
再帰と分割統治法
第 5 章
動的計画法
第 6 章
二分探索法
第 7 章
貪欲法
第 8 章
配列、連結リスト
ハッシュテーブル
第 9 章
スタックとキュー
第 10 章
グラフと木
第 11 章
Union-Find
第 12 章
ソート
第 13 章
グラフ探索
第 14 章
最短路問題
第 15 章
最小全域木問題
第 16 章
ネットワークフロー
第 17 章
P と NP
第 18 章
難問対策
10
今日の話 (本 5.6 節)
• 系列データをいくつかの区間に分ける
• 区間分割の仕方を最適化したい
0 1 2 3 4 5 6 7 8 9
/ 133
11
今日の話 (本 5.6 節)
• 系列データをいくつかの区間に分ける
• 区間分割の仕方を最適化したい
0 1 2 3 4 5 6 7 8 9
/ 133
12
今日の話 (本 5.6 節)
0 1 2 3 4 5 6 7 8 9
• 系列データをいくつかの区間に分ける
• JOI での出題が極めて多いパターン!!!
• 区間分割の仕方を最適化したい
• 現実世界への応用も多い!!!
/ 133
13
今日の話
イントロ
動的計画法
区間分割
/ 133
14
今日の話
イントロ
/ 133
アルゴリズムとは
• ある問題を解くための方法、手順のこと
• それを実装したものがプログラム
• 「入力」を入れると「出力」を返す装置
15
アルゴリズム
入力 出力
/ 133
16
アルゴリズムの例
• a × b が偶数か奇数かを判定する (練習コンテスト 2)
https://atcoder.jp/contests/abc086/tasks/abc086_a
/ 133
17
アルゴリズムの例
https://atcoder.jp/contests/abc086/tasks/abc086_a
判定
整数 a a × b が
偶数か奇数か
整数 b
• a × b が偶数か奇数かを判定する (練習コンテスト 2)
/ 133
18
アルゴリズムの例
カーナビ
地図
現在地
目的地
目的地へ
至る経路
単語検索
文書 文書に単語
が含まれるか
単語
数独
ソルバー
/ 133
19
本格的な例:幅優先探索
• 迷路の最短路を求めよう!
• スタート (S) からゴール (G) への最短経路は?
/ 133
20
• まず S から 1 手で行けるマスに「1」と書く
本格的な例:幅優先探索
/ 133
21
• 次に「1」から 1 手で行けるマスに「2」と書く
本格的な例:幅優先探索
/ 133
22
• 「2」から 1 手で行けるマスに「3」と書く
本格的な例:幅優先探索
/ 133
23
• 「3」から 1 手で行けるマスに「4」と書く
本格的な例:幅優先探索
/ 133
24
• 「4」から 1 手で行けるマスに「5」と書く
本格的な例:幅優先探索
/ 133
25
• 「5」から 1 手で行けるマスに「6」と書く
本格的な例:幅優先探索
/ 133
26
• 「6」から 1 手で行けるマスに「7」と書く
本格的な例:幅優先探索
/ 133
27
• 「7」から 1 手で行けるマスに「8」と書く
本格的な例:幅優先探索
/ 133
28
• 「8」から 1 手で行けるマスに「9」と書く
本格的な例:幅優先探索
/ 133
29
• 「9」から 1 手で行けるマスに「10」と書く
本格的な例:幅優先探索
/ 133
30
• 「10」から 1 手で行けるマスに「11」と書く
本格的な例:幅優先探索
/ 133
31
• 「11」から 1 手で行けるマスに「12」と書く
本格的な例:幅優先探索
/ 133
32
• 「12」から 1 手で行けるマスに「13」と書く
本格的な例:幅優先探索
/ 133
33
• 「13」から 1 手で行けるマスに「14」と書く
本格的な例:幅優先探索
/ 133
34
• 「14」から 1 手で行けるマスに「15」と書く
本格的な例:幅優先探索
/ 133
35
• 「15」から 1 手で行けるマスに「16」と書く
• これでゴール!!!
本格的な例:幅優先探索
/ 133
36
• ゴールから、「数値が 1 ずつ下がっていくように」
遡っていくと、最短経路が得られる
本格的な例:幅優先探索
/ 133
37
幅優先探索の実応用
• カーナビ
• 電車の乗り換え案内
• パズル (15-パズルなど) の最小手数
38
8-パズル
2
7
3
4
1
5
8 6
2
7
3
4
1
5
8 6
2
7
3
4
1
5
8 6
2
7
3
4
1
5
8 6
2
7
3
4 1
5
8 6
2
7
3
4
1
5
8
6
2
7
3
4
1
5
8 6
2
7
3
4
1
5
8 6
2
7
3
4
1 5
8 6
2
7
3
4
1
5
8
6
2
7
3
4
1
5
8 6
2
7
3
4
1
5
8
6
2
7
3
4
1
5
8
6
1
8
3
2
4
5
7 6
1
8
3
7
4
5
2
6
3
8
5
4
1
2
7 6
3
7
5
4
1
6
2
8
初期配置
/ 133
39
8-パズル
2
7
3
4
1
5
8 6
初期配置
/ 133
40
8-パズル
2
7
3
4
1
5
8 6
2
7
3
4
1
5
8 6
2
7
3
4
1
5
8 6
2
7
3
4
1
5
8 6
初期配置
/ 133
41
8-パズル
2
7
3
4
1
5
8 6
2
7
3
4
1
5
8 6
2
7
3
4
1
5
8 6
2
7
3
4
1
5
8 6
2
7
3
4 1
5
8 6
2
7
3
4
1
5
8
6
2
7
3
4
1
5
8 6
2
7
3
4
1
5
8 6
2
7
3
4
1 5
8 6
初期配置
/ 133
42
8-パズル
2
7
3
4
1
5
8 6
2
7
3
4
1
5
8 6
2
7
3
4
1
5
8 6
2
7
3
4
1
5
8 6
2
7
3
4 1
5
8 6
2
7
3
4
1
5
8
6
2
7
3
4
1
5
8 6
2
7
3
4
1
5
8 6
2
7
3
4
1 5
8 6
2
7
3
4
1
5
8
6
2
7
3
4
1
5
8 6
2
7
3
4
1
5
8
6
2
7
3
4
1
5
8
6
1
8
3
2
4
5
7 6
1
8
3
7
4
5
2
6
3
8
5
4
1
2
7 6
3
7
5
4
1
6
2
8
初期配置
/ 133
43
8-パズル
2
7
3
4
1
5
8 6
2
7
3
4
1
5
8 6
2
7
3
4
1
5
8 6
2
7
3
4
1
5
8 6
2
7
3
4 1
5
8 6
2
7
3
4
1
5
8
6
2
7
3
4
1
5
8 6
2
7
3
4
1
5
8 6
2
7
3
4
1 5
8 6
2
7
3
4
1
5
8
6
2
7
3
4
1
5
8 6
2
7
3
4
1
5
8
6
2
7
3
4
1
5
8
6
1
8
3
2
4
5
7 6
1
8
3
7
4
5
2
6
3
8
5
4
1
2
7 6
3
7
5
4
1
6
2
8
初期配置
目標配置 / 133
44
アルゴリズムを学ぶ動機は様々
• 競技プログラミングで勝ちたい!
• コンピュータサイエンスの重要な一分野として
学んでおきたい
• ソフトウェアエンジニアとしてステップアップしたい
• 就職で有利にしたい!
どんな人にもオススメ!!
/ 133
45
アルゴリズムによる問題解決
数理モデル化
JOI
みたいな問題
解
解釈・意思決定
アルゴリズム
/ 133
46
アルゴリズムは分野横断的
• AI や量子コンピュータなどの、分野の流行に依らない
一生モノのスキル
• むしろ AI を学ぶための強力な下地となる
グラフ
動的計画法
○○法
電気 機械 化学 生物 経済 ○○
• さまざまな分野の問題が、アルゴリズムの目で見ること
によって本質的に同じ問題になったりなる!
/ 133
47
アルゴリズムは分野横断的
0 1 2 3 4 5 6 7 8 9
• たとえば、今回の「区間分割」の問題も
• さまざまな領域の問題がこの問題に帰着できる!
/ 133
48
今日の話
動的計画法
/ 133
動的計画法とは
49
問題を一連の部分問題に分割し、
各部分問題の解をメモ化しながら順に求めていく手法
• とても抽象的で汎用的
• 適用範囲が広い
• ただし一見わかりにくい
/ 133
動的計画法の例題
50
足場を「ジャンプ」しながら左端から右端へ行きたい
AtCoder Educational DP Contest A - Frog
ただし「隣の足場」か「1 個飛ばしの足場」にのみ進める
ジャンプの所要時間は「足場の高さの差」
左端から右端までの最短所要時間を求めよ
4m 7m
7 - 4 = 3 秒!
3m
/ 133
動的計画法の例題
51
足場を「ジャンプ」しながら左端から右端へ行きたい
AtCoder Educational DP Contest A - Frog
ただし「隣の足場」か「1 個飛ばしの足場」にのみ進める
ジャンプの所要時間は「足場の高さの差」
左端から右端までの最短所要時間を求めよ
例:
・足場が 7 個
・(2, 9, 4, 5, 1, 6, 10)
/ 133
動的計画法の例題
52
足場を「ジャンプ」しながら左端から右端へ行きたい
AtCoder Educational DP Contest A - Frog
ただし「隣の足場」か「1 個飛ばしの足場」にのみ進める
ジャンプの所要時間は「足場の高さの差」
左端から右端までの最短所要時間を求めよ
例:
・足場が 7 個
・(2, 9, 4, 5, 1, 6, 10)
/ 133
動的計画法の例題
53
足場を「ジャンプ」しながら左端から右端へ行きたい
AtCoder Educational DP Contest A - Frog
ただし「隣の足場」か「1 個飛ばしの足場」にのみ進める
ジャンプの所要時間は「足場の高さの差」
左端から右端までの最短所要時間を求めよ
例:
・足場が 7 個
・(2, 9, 4, 5, 1, 6, 10)
+4
+1 +1
+2
最短: 8 秒
/ 133
グラフの問題と考える
54
例:
0 1 2 3 4 5 6
7
2
5 1 4 5 4
4
3
1 9
足場を「ジャンプ」しながら左端から右端へ行きたい
AtCoder Educational DP Contest A - Frog
ただし「隣の足場」か「1 個飛ばしの足場」にのみ進める
ジャンプの所要時間は「足場の高さの差」
左端から右端までの最短所要時間を求めよ
・足場が 7 個
・(2, 9, 4, 5, 1, 6, 10)
/ 133
55
グラフ
• 物事の関係性を「丸」と「線」を用いて表したもの
• コンピュータサイエンスのあらゆる領域で使われる
頂点 辺
/ 133
56
• 辺に「向き」があることもある (有向グラフ)
グラフ
/ 133
• あれもこれも実はグラフ!
• さまざまな分野の問題をグラフに関する問題として
見通よく汎用的に扱える!
57
アルゴリズムの精神
グラフ
/ 133
58
0
7
2
5 1 4 5 4
4
3
1 9
1 2 3 4 5 6
• ノード 0 からノード 6 への最短経路を求める!
グラフの問題と考える
/ 133
59
0
7
2
5 1 4 5 4
4
3
1 9
1 2 3 4 5 6
• ノード 0 からノード 6 への最短経路を求める!
• 答えは、2 + 1 + 1 + 4 = 8
グラフの問題と考える
/ 133
問題を次のように分解する
60
0
7
2
5 1 4 5 4
4
3
1 9
1 2 3 4 5 6
• ノード 1 へ至る最小コストを求める小問題
• ノード 2 へ至る最小コストを求める小問題
• ノード 3 へ至る最小コストを求める小問題
• ノード 4 へ至る最小コストを求める小問題
• ノード 5 へ至る最小コストを求める小問題
• ノード 6 へ至る最小コストを求める小問題 / 133
問題を次のように分解する
61
0
7
2
5 1 4 5 4
4
3
1 9
1 2 3 4 5 6
• ノード 1 へ至る最小コストを求める小問題
• ノード 2 へ至る最小コストを求める小問題
• ノード 3 へ至る最小コストを求める小問題
• ノード 4 へ至る最小コストを求める小問題
• ノード 5 へ至る最小コストを求める小問題
• ノード 6 へ至る最小コストを求める小問題 / 133
問題を次のように分解する
62
0
7
2
5 1 4 5 4
4
3
1 9
1 2 3 4 5 6
• ノード 1 へ至る最小コストを求める小問題
• ノード 2 へ至る最小コストを求める小問題
• ノード 3 へ至る最小コストを求める小問題
• ノード 4 へ至る最小コストを求める小問題
• ノード 5 へ至る最小コストを求める小問題
• ノード 6 へ至る最小コストを求める小問題 / 133
問題を次のように分解する
63
0
7
2
5 1 4 5 4
4
3
1 9
1 2 3 4 5 6
• ノード 1 へ至る最小コストを求める小問題
• ノード 2 へ至る最小コストを求める小問題
• ノード 3 へ至る最小コストを求める小問題
• ノード 4 へ至る最小コストを求める小問題
• ノード 5 へ至る最小コストを求める小問題
• ノード 6 へ至る最小コストを求める小問題 / 133
問題を次のように分解する
64
0
7
2
5 1 4 5 4
4
3
1 9
1 2 3 4 5 6
• ノード 1 へ至る最小コストを求める小問題
• ノード 2 へ至る最小コストを求める小問題
• ノード 3 へ至る最小コストを求める小問題
• ノード 4 へ至る最小コストを求める小問題
• ノード 5 へ至る最小コストを求める小問題
• ノード 6 へ至る最小コストを求める小問題 / 133
問題を次のように分解する
65
0
7
2
5 1 4 5 4
4
3
1 9
1 2 3 4 5 6
• ノード 1 へ至る最小コストを求める小問題
• ノード 2 へ至る最小コストを求める小問題
• ノード 3 へ至る最小コストを求める小問題
• ノード 4 へ至る最小コストを求める小問題
• ノード 5 へ至る最小コストを求める小問題
• ノード 6 へ至る最小コストを求める小問題 / 133
問題を次のように分解する
66
0
7
2
5 1 4 5 4
4
3
1 9
1 2 3 4 5 6
• ノード 1 へ至る最小コストを求める小問題
• ノード 2 へ至る最小コストを求める小問題
• ノード 3 へ至る最小コストを求める小問題
• ノード 4 へ至る最小コストを求める小問題
• ノード 5 へ至る最小コストを求める小問題
• ノード 6 へ至る最小コストを求める小問題 / 133
問題を次のように分解する
67
0
7
2
5 1 4 5 4
4
3
1 9
1 2 3 4 5 6
• ノード 1 へ至る最小コストを求める小問題
• ノード 2 へ至る最小コストを求める小問題
• ノード 3 へ至る最小コストを求める小問題
• ノード 4 へ至る最小コストを求める小問題
• ノード 5 へ至る最小コストを求める小問題
• ノード 6 へ至る最小コストを求める小問題
順にメモ化
しながら
求めていく
/ 133
メモ化用の DP テーブル
68
0
7
2
5 1 4 5 4
4
3
1 9
1 2 3 4 5 6
メモ
/ 133
頂点 0 への最小コスト (初期条件)
69
0
7
2
5 1 4 5 4
4
3
1 9
1 2 3 4 5 6
0
メモ
/ 133
頂点 1 への最小コスト
70
0
7
2
5 1 4 5 4
4
3
1 9
1 2 3 4 5 6
0
7
7
メモ
/ 133
頂点 2 への最小コスト
71
0
7
2
5 1 4 5 4
4
3
1 9
1 2 3 4 5 6
0 7
2
5
2
12 vs. 2
メモ
/ 133
頂点 3 への最小コスト
72
0
7
2
5 1 4 5 4
4
3
1 9
1 2 3 4 5 6
0 7
4
1
2
3 vs. 11
3
メモ
/ 133
頂点 4 への最小コスト
73
0
7
2
5 1 4 5 4
4
3
1 9
1 2 3 4 5 6
メモ
0 7
3
4
2
7 vs. 5
3 5
/ 133
頂点 5 への最小コスト
74
0
7
2
5 1 4 5 4
4
3
1 9
1 2 3 4 5 6
0 7
1
5
2
10 vs. 4
3 5 4
メモ
/ 133
頂点 6 への最小コスト
75
0
7
2
5 1 4 5 4
4
3
1 9
1 2 3 4 5 6
0 7
9
4
2
8 vs. 14
3 5 4 8
メモ
実装上は
76
• メモ化用の DP テーブルを配列でもつ
dp[v] ← 頂点 0 から頂点 v へ至る最短コスト
i-2 i-1 i
dp[i] = min(dp[i-1] + f(i-1, i),
dp[i-2] + f(i-2, i)
/ 133
動的計画法の着眼
77
• メモ化:何度も参照される小さな問題の結果を保存して
すぐに参照できるようにする (キャッシュ)
問題を一連の部分問題に分割し、
各部分問題の解をメモ化しながら順に求めていく手法
• 部分問題への分割:同じ構造を持つ小さな問題 (部分問
題) の結果を使うことで大きな問題が解ける
• ノード 1, 2, 3, 4, 5, 6 への最短経路を順に求めた
/ 133
動的計画法は汎用的
• 動的計画法で解決できる問題は数多くある
• ナップサック問題
• スケジューリング問題
• 発電計画問題
• 編集距離
• 音声認識パターンマッチング問題
• 文章の分かち書き
• 隠れマルコフモデル
78
• 習うより慣れよう!
/ 133
拙著の動的計画法の章
• 5 章 - 設計技法 (3):動的計画法
79
• 5.1 動的計画法とは
• 5.2 動的計画法の例題
• 5.3 動的計画法に関連する諸概念
• 5.4 動的計画法の例 (1):ナップサック問題
• 5.5 動的計画法の例 (2):編集距離
• 5.6 動的計画法の例 (3):区間分割の仕方を最適化
• 5.7 まとめ
/ 133
80
今日の話
区間分割
/ 133
81
区間分割
0 1 2 3 4 5 6 7 8 9
• 系列データをいくつかの区間に分ける
• 区間分割の仕方を最適化したい
• さまざまな分野の問題が、区間分割問題へと帰着される
/ 133
応用例(1): 分かち書き
82
http://chasen.naist.jp/chaki/t/2009-09-30/doc/mecab-cabocha-nlp-seminar-2009.pdf
僕は君を愛している
僕 は 君 を 愛し て いる
単語ごとに区切る
/ 133
応用例(2): 発電計画問題
83
• 発電の on と off のタイミングを最適化する
on off on off
• 需要供給バランスの考慮などもあって、各区間のコス
ト関数 f(i, j) はとても複雑なものになる
• 「~時間以上連続稼働」といった制約も考慮
/ 133
応用例(3): パネルグループ分け
84
さまざまな長さのパネルが順に並んでいる
それをいくつかのグループに分ける
各グループのパネルたちを良い条件に揃えたい
/ 133
応用例(4): タイムスケジューリング
85
• お客さまを順に回る配送 (配送順序は固定)
• 「何時から何時の間に届けてほしい」
• 「~分間に 1 回は休憩が必要」という制約もある
→ どこで休憩をとるかを最適化
休憩場所ごとに区切る
/ 133
86
問題例(1):オレンジの出荷 (改)
JOI 本選 2016 A 問題
大きさが A[0], A[1], …, A[N-1] のオレンジがある
0 1 2 3 4 5 6 7 8 9
前から順に、箱に詰めていく
各箱のコストは、
「K + (箱内の A の最大値 - 箱内の A の最小値) × 個数」
各箱のコストの総和を最小化せよ
3 5 4 9 11 8 10 1 7 8
K = 5
/ 133
87
問題例(1):オレンジの出荷 (改)
JOI 本選 2016 A 問題
大きさが A[0], A[1], …, A[N-1] のオレンジがある
0 1 2 3 4 5 6 7 8 9
前から順に、箱に詰めていく
各箱のコストは、
「K + (箱内の A の最大値 - 箱内の A の最小値) × 個数」
各箱のコストの総和を最小化せよ
3 5 4 9 11 8 10 1
K = 5
7 8
基本コスト
/ 133
88
問題例(1):オレンジの出荷 (改)
JOI 本選 2016 A 問題
大きさが A[0], A[1], …, A[N-1] のオレンジがある
0 1 2 3 4 5 6 7 8 9
前から順に、箱に詰めていく
各箱のコストの総和を最小化せよ
3 5 4 9 11 8 10 1 7 8
K = 5
例
各箱のコストは、
「K + (箱内の A の最大値 - 箱内の A の最小値) × 個数」
/ 133
89
問題例(1):オレンジの出荷 (改)
JOI 本選 2016 A 問題
大きさが A[0], A[1], …, A[N-1] のオレンジがある
0 1 2 3 4 5 6 7 8 9
前から順に、箱に詰めていく
各箱のコストの総和を最小化せよ
3 5 4 9 11 8 10 1 7 8
K = 5
例
各箱のコストは、
「K + (箱内の A の最大値 - 箱内の A の最小値) × 個数」
5 + (9 - 3) × 4
= 29
5 + (11 - 8) × 3
= 14 5
5 + (8 - 7) × 2
= 7
/ 133
90
問題例(1):オレンジの出荷 (改)
JOI 本選 2016 A 問題
大きさが A[0], A[1], …, A[N-1] のオレンジがある
0 1 2 3 4 5 6 7 8 9
前から順に、箱に詰めていく
各箱のコストの総和を最小化せよ
3 5 4 9 11 8 10 1 7 8
K = 5
例
各箱のコストは、
「K + (箱内の A の最大値 - 箱内の A の最小値) × 個数」
5 + (9 - 3) × 4
= 29
5 + (11 - 8) × 3
= 14 5
5 + (8 - 7) × 2
= 7
コスト: 55
/ 133
91
問題例(1):オレンジの出荷
JOI 本選 2016 A 問題
0 1 2 3 4 5 6 7 8 9
3 5 4 9 11 8 10 1 7 8
K = 5
• Frog 問題と同様に「前から何個かのオレンジ」に
ついての小問題に分割していく
/ 133
92
問題例(1):オレンジの出荷
JOI 本選 2016 A 問題
0 1 2 3 4 5 6 7 8 9
3 5 4 9 11 8 10 1 7 8
K = 5
• Frog 問題と同様に「前から何個かのオレンジ」に
ついての小問題に分割していく
• メモ化用の配列を用意する
/ 133
93
問題例(1):オレンジの出荷
JOI 本選 2016 A 問題
0 1 2 3 4 5 6 7 8 9
3 5 4 9 11 8 10 1 7 8
K = 5
• Frog 問題と同様に「前から何個かのオレンジ」に
ついての小問題に分割していく
• メモ化用の配列を用意する
/ 133
94
問題例(1):オレンジの出荷
JOI 本選 2016 A 問題
0 1 2 3 4 5 6
3 5 4 9 11 8 10
K = 5
• Frog 問題と同様に「前から何個かのオレンジ」に
ついての小問題に分割していく
• メモ化用の配列を用意する
たとえばこのマスには
前から 7 個のオレンジ
についての答えを格納
/ 133
95
問題例(1):オレンジの出荷
JOI 本選 2016 A 問題
0 1 2 3 4 5 6 7 8 9
3 5 4 9 11 8 10 1 7 8
K = 5
• 前から 0 個のオレンジについての答えは 0
0
/ 133
96
前から 0 個
K = 5
• 前から 0 個のオレンジについての答えは 0
0
/ 133
97
前から 1 個
0
3
K = 5
• 前から 1 個のオレンジについての答えは 5
0 5
+5
1
1 個のオレンジ {3}
を箱詰めするコストは 5
/ 133
98
前から 2 個について考える
0
3
K = 5
0 5
1
5
• 最後の箱をどうするかで場合分けして考える
• 最後の箱が {3, 5} である場合
• 最後の箱が {5} である場合
/ 133
99
前から 2 個について考える
0
3
K = 5
0 5
1
5
+9
• 最後の箱が {3, 5} のとき:コストは 0 + 9 = 9
/ 133
100
前から 2 個について考える
0
3
K = 5
• 最後の箱が {3, 5} のとき:コストは 0 + 9 = 9
0 5
1
5
+5
• 最後の箱が {5} のとき:コストは 5 + 5 = 10
/ 133
101
前から 2 個について考える
0
3
K = 5
• 最後の箱が {3, 5} のとき:コストは 0 + 9 = 9
0 5
1
5
• 最後の箱が {5} のとき:コストは 5 + 5 = 10
9
+9
/ 133
102
前から 3 個について考える
K = 5
0 5 9
0 1 2
3 5 4
• 最後の箱をどうするかで場合分けして考える
• 最後の箱が {3, 5, 4} である場合
• 最後の箱が {5, 4} である場合
• 最後の箱が {4} である場合
/ 133
103
前から 3 個について考える
K = 5
• 最後の箱が {3, 5, 4} のとき:コストは 0 + 11 = 11
0 5 9
0 1 2
3 5 4
+11
/ 133
104
前から 3 個について考える
K = 5
• 最後の箱が {3, 5, 4} のとき:コストは 0 + 11 = 11
0 5 9
0 1 2
3 5 4
• 最後の箱が {5, 4} のとき:コストは 5 + 7 = 12
+7
/ 133
105
前から 3 個について考える
K = 5
0 5 9
0 1 2
3 5 4
+5
• 最後の箱が {3, 5, 4} のとき:コストは 0 + 11 = 11
• 最後の箱が {5, 4} のとき:コストは 5 + 7 = 12
• 最後の箱が {4} のとき:コストは 9 + 5 = 14
/ 133
106
前から 3 個について考える
K = 5
0 5 9
0 1 2
3 5 4
• 最後の箱が {3, 5, 4} のとき:コストは 0 + 11 = 11
• 最後の箱が {5, 4} のとき:コストは 5 + 7 = 12
• 最後の箱が {4} のとき:コストは 5 + 7 = 14
11
+11
/ 133
107
前から 4 個について考える
K = 5
0 5 9
0 1 2
3 5 4
• 最後の箱をどうするかで場合分けして考える
• 最後の箱が {3, 5, 4, 9} である場合
• 最後の箱が {5, 4, 9} である場合
• 最後の箱が {4, 9} である場合
3
9
11
• 最後の箱が {9} である場合
/ 133
108
前から 4 個について考える
K = 5
0 5 9
0 1 2
3 5 4
3
9
11
+29
• 最後の箱が {3, 5, 4, 9} のとき:コストは 0 + 29 = 29
/ 133
109
前から 4 個について考える
K = 5
0 5 9
0 1 2
3 5 4
3
9
11
• 最後の箱が {3, 5, 4, 9} のとき:コストは 0 + 29 = 29
+20
• 最後の箱が {5, 4, 9} のとき:コストは 5 + 20 = 25
/ 133
110
前から 4 個について考える
K = 5
0 5 9
0 1 2
3 5 4
3
9
11
• 最後の箱が {3, 5, 4, 9} のとき:コストは 0 + 29 = 29
• 最後の箱が {5, 4, 9} のとき:コストは 5 + 20 = 25
+15
• 最後の箱が {4, 9} のとき:コストは 9 + 15 = 24
/ 133
111
前から 4 個について考える
K = 5
0 5 9
0 1 2
3 5 4
3
9
11
• 最後の箱が {3, 5, 4, 9} のとき:コストは 0 + 29 = 29
• 最後の箱が {5, 4, 9} のとき:コストは 5 + 20 = 25
• 最後の箱が {4, 9} のとき:コストは 9 + 15 = 24
+5
• 最後の箱が {9} のとき:コストは 11 + 5 = 16
/ 133
112
前から 4 個について考える
K = 5
0 5 9
0 1 2
3 5 4
3
9
11
• 最後の箱が {3, 5, 4, 9} のとき:コストは 0 + 29 = 29
• 最後の箱が {5, 4, 9} のとき:コストは 5 + 20 = 25
• 最後の箱が {4, 9} のとき:コストは 9 + 15 = 24
• 最後の箱が {9} のとき:コストは 11 + 5 = 16
16
+5
/ 133
113
前から 5 個について考える
K = 5
0 5 9
0 1 2
3 5 4
3
9
11 16
4
11
/ 133
114
前から 5 個について考える
K = 5
0 5 9
0 1 2
3 5 4
3
9
11 16
4
11
• 最後の箱が {9, 11} のとき最適:コストは 11 + 9 = 20
+9
20
/ 133
115
前から 6 個について考える
K = 5
0 5 9
0 1 2
3 5 4
3
9
11 16
4
11
20
5
8
/ 133
116
前から 6 個について考える
K = 5
0 5 9
0 1 2
3 5 4
3
9
11 16
4
11
20
5
8
• 最後の箱が {8} のとき最適:コストは 20 + 5 = 25
25
+5
/ 133
117
前から 7 個について考える
K = 5
0 5 9
0 1 2
3 5 4
3
9
11 16
4
11
20 25
5 6
8 10
/ 133
118
前から 7 個について考える
K = 5
0 5 9
0 1 2
3 5 4
3
9
11 16
4
11
20 25
5 6
8 10
• 最後の箱が {9, 11, 8, 10} のとき最適:コストは 11 + 17 = 28
+17
28
/ 133
119
前から 8 個について考える
K = 5
0 5 9
0 1 2
3 5 4
3
9
11 16
4
11
20 25
5 6
8 10
28
7
1
/ 133
120
前から 8 個について考える
K = 5
0 5 9
0 1 2
3 5 4
3
9
11 16
4
11
20 25
5 6
8 10
28
7
1
• 最後の箱が {1} のとき最適:コストは 28 + 5 = 33
+5
33
/ 133
121
前から 9 個について考える
K = 5
0 5 9
0 1 2
3 5 4
3
9
11 16
4
11
20 25
5 6
8 10
28
7
1
33
8
7
/ 133
122
前から 9 個について考える
K = 5
0 5 9
0 1 2
3 5 4
3
9
11 16
4
11
20 25
5 6
8 10
28
7
1
33
8
7
• 最後の箱が {7} のとき最適:コストは 33 + 5 = 38
+5
38
/ 133
123
前から 10 個について考える
K = 5
0 5 9
0 1 2
3 5 4
3
9
11 16
4
11
20 25
5 6
8 10
28
7
1
33
8
7
38
9
8
/ 133
124
前から 10 個について考える
K = 5
0 5 9
0 1 2
3 5 4
3
9
11 16
4
11
20 25
5 6
8 10
28
7
1
33
8
7
38
9
8
• 最後の箱が {7, 8} のとき最適:コストは 33 + 7 = 40
40
+7
/ 133
125
最適解
K = 5
0 5 9
0 1 2
3 5 4
3
9
11 16
4
11
20 25
5 6
8 10
28
7
1
33
8
7
38
9
8
40
/ 133
126
問題例(2):白昼夢
ABC 049 C - 白昼夢
文字列が与えられる
e r a s e d r e a m e r a s e
これを “erase”, “dream”, “eraser”, “dreamer”
に分割することが可能かどうかを判定せよ
e r a s e d r e a m e r a s e
/ 133
127
問題例(3):重み付き区間スケジューリング
有名問題
いくつかの区間が与えられる
どの 2 つも重ならないように区間を選ぶ
選んだ区間のスコアの総和を最大にせよ
3点
1点
4点
5点
2点
6点
3点
/ 133
128
問題例(3):重み付き区間スケジューリング
有名問題
いくつかの区間が与えられる
選んだ区間のスコアの総和を最大にせよ
3点
1点
5点
2点
6点
3点
4点
どの 2 つも重ならないように区間を選ぶ
/ 133
問題例(4): 分かち書き (再掲)
129
http://chasen.naist.jp/chaki/t/2009-09-30/doc/mecab-cabocha-nlp-seminar-2009.pdf
僕は君を愛している
僕 は 君 を 愛し て いる
単語ごとに区切る
/ 133
問題例(5): 発電計画問題 (再掲)
130
• 発電の on と off のタイミングを最適化する
on off on off
• 需要供給バランスの考慮などもあって、各区間のコス
ト関数 f(i, j) はとても複雑なものになる
• 「~時間以上連続稼働」といった制約も考慮
/ 133
問題例(6): パネルグループ分け (再掲)
131
さまざまな長さのパネルが順に並んでいる
それをいくつかのグループに分ける
各グループのパネルたちを良い条件に揃えたい
/ 133
132
アルゴリズムは分野横断的!
• 競プロのパズル的問題は、まさにそういう問題たち
グラフ
動的計画法
○○法
電気 機械 化学 生物 経済 ○○
• さまざまな問題が、アルゴリズムの目で見ることに
よって本質的に同じ問題になったりなる!
/ 133
133
全体のまとめ
• アルゴリズムは何をするにも重要な基礎、
どんな人にもオススメ!
• さまざまな問題が、汎用的に見通しよく扱えるよう
になる (今回は区間分割を例にとった)
• アルゴリズムは楽しい!!
134
付録
その他の動的計画法
拙著の動的計画法の章
• 5 章 - 設計技法 (3):動的計画法
135
• 5.1 動的計画法とは
• 5.2 動的計画法の例題
• 5.3 動的計画法に関連する諸概念
• 5.4 動的計画法の例 (1):ナップサック問題
• 5.5 動的計画法の例 (2):編集距離
• 5.6 動的計画法の例 (3):区間分割の仕方を最適化
• 5.7 まとめ
3 つの代表的な遷移パターン
136
• ナップサック問題
• 編集距離
• 区間分割 (済)
3 つの代表的な遷移パターン
137
• ナップサック問題
ナップサック問題
138
N 個の品物があって、いくつか選びたい
各品物には「重さ」と「価値」の属性がある
選んだ品物の重さの合計が W を超えないようにしつつ
価値の総和を最大化せよ
https://www.msi.co.jp/nuopt/introduction/index.html
ナップサック問題
139
N 個の品物があって、いくつか選びたい
各品物には「重さ」と「価値」の属性がある
選んだ品物の重さの合計が W を超えないようにしつつ
価値の総和を最大化せよ
dp[i][w] ← N 個の品物のうち、最初の i 個のみ考える
その中から重さの合計が w を超えないようにしつつ
選んだときの価値の総和の最大値
最初の i 個についての問題 (部分問題)
ナップサック問題
140
dp[i+1][w] = max(dp[i][w],
dp[i][w-wei[i]] + val[i])
新たな品物を選ばない場合
新たな品物を選ぶ場合
重さ 価値
dp[i][w] ← N 個の品物のうち、最初の i 個のみ考える
その中から重さの合計が w を超えないようにしつつ
選んだときの価値の総和の最大値
• dp[i][0], dp[i][1], … を用いて、       
dp[i+1][0], dp[i+1][1], … を表す
ナップサック DP の遷移
141
ナップサックに入れた重さ
0 1 2 3 4 5 6 7 8 9 10
0 個
1 個
2 個
3 個
4 個
0 0 0 0 0 0 0 0 0 0 0
0 0 0 6 6 6 6 6 6 6 6
0 3 3 6 9 9 9 9 9 9 9
0 3 3 6 9 9 10
0 3 3 6 85
10 10 10 10
88 88 91 94 94 95
• (重さ, 価値) = (3, 6), (1, 3), (2, 1), (5, 85) の場合
ナップサック DP の遷移のポイント
142
• N 個の要素をシーケンシャルに処理していくもの
• そのために必要な添字を適宜追加していく
dp[i][w]
部分問題のサイズ 遷移に必要な追加の添字
2 個
3 個
4 個
0 3 3 6 9 9 9 9 9 9 9
0 3 3 6 9 9 10
0 3 3 6 85
10 10 10 10
88 88 91 94 94 95
例(1): サイゼリヤ問題
143
• 予算 1000 円で、最高何 kcal とれるか?
https://qiita.com/marusho_summers/items/a2d3681fac863734ec8a
• ナップサック問題そのもの
• ナップサックの容量が予算に対応:1000 円
• 品物の価値が、カロリーに対応
・ポテトのグリル
(199 円, 366 kcal)
・アーリオ•オーリオ
(574 円, 1120 kcal)
・ラージライス
(219 円, 454 kcal)
合計:992 円, 1940 kcal
例(2): 隠れマルコフモデル
144
• 系列データを「潜在変数」のマルコフ連鎖で表すもの
追加の添字 i+1 番目の状態が i 番目のみに依る
• 前回の状態によって、次回の各状態の起こりやすさが
変化する
https://mathwords.net/hiddenmarkov
風邪 or 元気
からなる系列データ
例(2): 隠れマルコフモデル
145
• 系列データを「潜在変数」のマルコフ連鎖で表すもの
追加の添字 i+1 番目の状態が i 番目のみに依る
• 潜在変数の最も確からしい経路を求める Viterbi のアル
ゴリズムは、ナップサック DP とほとんど同じもの
• 音声認識
• 品詞分析
• 株価の変動予測
さまざまな応用
3 つの代表的な遷移パターン
146
• 編集距離
編集距離
147
2 つの文字列 S, T がある
S に以下の 3 通りの操作を繰り返すことで T に変換したい
・変更: S の文字を 1 つ選んで変更
・削除: S の文字を 1 つ選んで削除
・挿入: S の好きな箇所に好きな文字を 1 文字挿入
最小回数を求めよ
例:
S = logistic
T = algorithm
→ 6 回
二系列の DP
148
例:
S = logistic
T = algorithm
→ 6 回
dp[i][j] ← S の最初の i 文字と、T の最初の j 文字との
間についての操作回数の最小値
編集距離を求める DP の遷移
149
dp[i][j] ← S の最初の i 文字と、T の最初の j 文字との
間についての操作回数の最小値
応用が広く、分野横断的!
150
• diff コマンド
• 音声認識、画像認識、空間認識
• DP マッチング
• 二系列データの類似度を考える問題全般に適用
• スペルチェッカー
• バイオインフォマティクス
• 系列アラインメント (2 つの DNA の類似度を測るなど)
• 手書き文字認識

Mais conteúdo relacionado

Mais procurados

Re永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライドRe永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライドMasaki Hara
 
様々な全域木問題
様々な全域木問題様々な全域木問題
様々な全域木問題tmaehara
 
充足可能性問題のいろいろ
充足可能性問題のいろいろ充足可能性問題のいろいろ
充足可能性問題のいろいろHiroshi Yamashita
 
Optimization night 4_dp
Optimization night 4_dpOptimization night 4_dp
Optimization night 4_dpKensuke Otsuki
 
競技プログラミング頻出アルゴリズム攻略
競技プログラミング頻出アルゴリズム攻略競技プログラミング頻出アルゴリズム攻略
競技プログラミング頻出アルゴリズム攻略K Moneto
 
色々なダイクストラ高速化
色々なダイクストラ高速化色々なダイクストラ高速化
色々なダイクストラ高速化yosupo
 
ZDD入門-お姉さんを救う方法
ZDD入門-お姉さんを救う方法ZDD入門-お姉さんを救う方法
ZDD入門-お姉さんを救う方法nishio
 
LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~Yuma Inoue
 
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムTakuya Akiba
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界Preferred Networks
 
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解くshindannin
 
実践・最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)実践・最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)AtCoder Inc.
 
指数時間アルゴリズム入門
指数時間アルゴリズム入門指数時間アルゴリズム入門
指数時間アルゴリズム入門Yoichi Iwata
 
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~Takuya Akiba
 
ユークリッド最小全域木
ユークリッド最小全域木ユークリッド最小全域木
ユークリッド最小全域木理玖 川崎
 

Mais procurados (20)

Re永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライドRe永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライド
 
様々な全域木問題
様々な全域木問題様々な全域木問題
様々な全域木問題
 
動的計画法
動的計画法動的計画法
動的計画法
 
充足可能性問題のいろいろ
充足可能性問題のいろいろ充足可能性問題のいろいろ
充足可能性問題のいろいろ
 
Optimization night 4_dp
Optimization night 4_dpOptimization night 4_dp
Optimization night 4_dp
 
競技プログラミング頻出アルゴリズム攻略
競技プログラミング頻出アルゴリズム攻略競技プログラミング頻出アルゴリズム攻略
競技プログラミング頻出アルゴリズム攻略
 
色々なダイクストラ高速化
色々なダイクストラ高速化色々なダイクストラ高速化
色々なダイクストラ高速化
 
ZDD入門-お姉さんを救う方法
ZDD入門-お姉さんを救う方法ZDD入門-お姉さんを救う方法
ZDD入門-お姉さんを救う方法
 
LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~
 
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
 
明日使えないすごいビット演算
明日使えないすごいビット演算明日使えないすごいビット演算
明日使えないすごいビット演算
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界
 
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く
 
実践・最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)実践・最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)
 
直交領域探索
直交領域探索直交領域探索
直交領域探索
 
指数時間アルゴリズム入門
指数時間アルゴリズム入門指数時間アルゴリズム入門
指数時間アルゴリズム入門
 
Binary indexed tree
Binary indexed treeBinary indexed tree
Binary indexed tree
 
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
 
目指せグラフマスター
目指せグラフマスター目指せグラフマスター
目指せグラフマスター
 
ユークリッド最小全域木
ユークリッド最小全域木ユークリッド最小全域木
ユークリッド最小全域木
 

Semelhante a 区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)

競プロは人生の役に立つ!
競プロは人生の役に立つ!競プロは人生の役に立つ!
競プロは人生の役に立つ!Kensuke Otsuki
 
わんくま勉強会東京#82 あおいたんのパズルを数学しましょうか
わんくま勉強会東京#82 あおいたんのパズルを数学しましょうかわんくま勉強会東京#82 あおいたんのパズルを数学しましょうか
わんくま勉強会東京#82 あおいたんのパズルを数学しましょうかMasami Yabushita
 
T82 aoitan あおいたんのパズルを数学しましょうか_修正版
T82 aoitan あおいたんのパズルを数学しましょうか_修正版T82 aoitan あおいたんのパズルを数学しましょうか_修正版
T82 aoitan あおいたんのパズルを数学しましょうか_修正版Masami Yabushita
 
図と実装で理解する『木構造入門』
図と実装で理解する『木構造入門』図と実装で理解する『木構造入門』
図と実装で理解する『木構造入門』Proktmr
 
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)AtCoder Inc.
 
AtCoder Beginner Contest 006 解説
AtCoder Beginner Contest 006 解説AtCoder Beginner Contest 006 解説
AtCoder Beginner Contest 006 解説AtCoder Inc.
 
虫食算を作るアルゴリズム 公表Ver
虫食算を作るアルゴリズム 公表Ver虫食算を作るアルゴリズム 公表Ver
虫食算を作るアルゴリズム 公表VerKensuke Otsuki
 
Direct Sparse Odometryの解説
Direct Sparse Odometryの解説Direct Sparse Odometryの解説
Direct Sparse Odometryの解説Masaya Kaneko
 
第24回アルゴリズム勉強会資料
第24回アルゴリズム勉強会資料第24回アルゴリズム勉強会資料
第24回アルゴリズム勉強会資料Yuuki Ono
 
第9回ACRiウェビナー_日立/島田様ご講演資料
第9回ACRiウェビナー_日立/島田様ご講演資料第9回ACRiウェビナー_日立/島田様ご講演資料
第9回ACRiウェビナー_日立/島田様ご講演資料直久 住川
 
暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -MITSUNARI Shigeo
 
PFPファシグラ(2009/07/03)
PFPファシグラ(2009/07/03)PFPファシグラ(2009/07/03)
PFPファシグラ(2009/07/03)nishikawa_makoto7
 
Ordered neurons integrating tree structures into recurrent neural networks
Ordered neurons integrating tree structures into recurrent neural networksOrdered neurons integrating tree structures into recurrent neural networks
Ordered neurons integrating tree structures into recurrent neural networksKazuki Fujikawa
 
シェル芸初心者によるシェル芸入門
シェル芸初心者によるシェル芸入門シェル芸初心者によるシェル芸入門
シェル芸初心者によるシェル芸入門icchy
 

Semelhante a 区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー) (20)

競プロは人生の役に立つ!
競プロは人生の役に立つ!競プロは人生の役に立つ!
競プロは人生の役に立つ!
 
210122 msi dp
210122 msi dp210122 msi dp
210122 msi dp
 
わんくま勉強会東京#82 あおいたんのパズルを数学しましょうか
わんくま勉強会東京#82 あおいたんのパズルを数学しましょうかわんくま勉強会東京#82 あおいたんのパズルを数学しましょうか
わんくま勉強会東京#82 あおいたんのパズルを数学しましょうか
 
T82 aoitan あおいたんのパズルを数学しましょうか_修正版
T82 aoitan あおいたんのパズルを数学しましょうか_修正版T82 aoitan あおいたんのパズルを数学しましょうか_修正版
T82 aoitan あおいたんのパズルを数学しましょうか_修正版
 
図と実装で理解する『木構造入門』
図と実装で理解する『木構造入門』図と実装で理解する『木構造入門』
図と実装で理解する『木構造入門』
 
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
 
AtCoder Beginner Contest 006 解説
AtCoder Beginner Contest 006 解説AtCoder Beginner Contest 006 解説
AtCoder Beginner Contest 006 解説
 
虫食算を作るアルゴリズム 公表Ver
虫食算を作るアルゴリズム 公表Ver虫食算を作るアルゴリズム 公表Ver
虫食算を作るアルゴリズム 公表Ver
 
T69 episteme
T69 epistemeT69 episteme
T69 episteme
 
KOGEI & KAIT Funnel WS
KOGEI & KAIT Funnel WSKOGEI & KAIT Funnel WS
KOGEI & KAIT Funnel WS
 
Direct Sparse Odometryの解説
Direct Sparse Odometryの解説Direct Sparse Odometryの解説
Direct Sparse Odometryの解説
 
第24回アルゴリズム勉強会資料
第24回アルゴリズム勉強会資料第24回アルゴリズム勉強会資料
第24回アルゴリズム勉強会資料
 
第9回ACRiウェビナー_日立/島田様ご講演資料
第9回ACRiウェビナー_日立/島田様ご講演資料第9回ACRiウェビナー_日立/島田様ご講演資料
第9回ACRiウェビナー_日立/島田様ご講演資料
 
暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -
 
PFPファシグラ(2009/07/03)
PFPファシグラ(2009/07/03)PFPファシグラ(2009/07/03)
PFPファシグラ(2009/07/03)
 
Make @ Osaka
Make @ OsakaMake @ Osaka
Make @ Osaka
 
WUPC2012
WUPC2012WUPC2012
WUPC2012
 
凸包
凸包凸包
凸包
 
Ordered neurons integrating tree structures into recurrent neural networks
Ordered neurons integrating tree structures into recurrent neural networksOrdered neurons integrating tree structures into recurrent neural networks
Ordered neurons integrating tree structures into recurrent neural networks
 
シェル芸初心者によるシェル芸入門
シェル芸初心者によるシェル芸入門シェル芸初心者によるシェル芸入門
シェル芸初心者によるシェル芸入門
 

Mais de Kensuke Otsuki

ものづくりに活かす数学 (2024 年 1 月 26 日 N/S 高等学校での数学の授業)
ものづくりに活かす数学 (2024 年 1 月 26 日 N/S 高等学校での数学の授業)ものづくりに活かす数学 (2024 年 1 月 26 日 N/S 高等学校での数学の授業)
ものづくりに活かす数学 (2024 年 1 月 26 日 N/S 高等学校での数学の授業)Kensuke Otsuki
 
人それぞれの競プロとの向き合い方
人それぞれの競プロとの向き合い方人それぞれの競プロとの向き合い方
人それぞれの競プロとの向き合い方Kensuke Otsuki
 
アルゴリズムを楽しく!@PiyogrammerConference
アルゴリズムを楽しく!@PiyogrammerConferenceアルゴリズムを楽しく!@PiyogrammerConference
アルゴリズムを楽しく!@PiyogrammerConferenceKensuke Otsuki
 
「現実世界に活かす数学」 (麻布高等学校、教養総合、数学講義 5 回目)
「現実世界に活かす数学」 (麻布高等学校、教養総合、数学講義 5 回目)「現実世界に活かす数学」 (麻布高等学校、教養総合、数学講義 5 回目)
「現実世界に活かす数学」 (麻布高等学校、教養総合、数学講義 5 回目)Kensuke Otsuki
 
JOI春季ステップアップセミナー 2021 講義スライド
JOI春季ステップアップセミナー 2021 講義スライドJOI春季ステップアップセミナー 2021 講義スライド
JOI春季ステップアップセミナー 2021 講義スライドKensuke Otsuki
 
IT エンジニア本大賞 2021 講演資料
IT エンジニア本大賞 2021 講演資料IT エンジニア本大賞 2021 講演資料
IT エンジニア本大賞 2021 講演資料Kensuke Otsuki
 
『問題解決力を鍛える!アルゴリズムとデータ構造』出版記念講演
『問題解決力を鍛える!アルゴリズムとデータ構造』出版記念講演『問題解決力を鍛える!アルゴリズムとデータ構造』出版記念講演
『問題解決力を鍛える!アルゴリズムとデータ構造』出版記念講演Kensuke Otsuki
 
虫食算に学ぶ、深さ優先探索アルゴリズム (combmof, 2018/12/23)
虫食算に学ぶ、深さ優先探索アルゴリズム (combmof, 2018/12/23)虫食算に学ぶ、深さ優先探索アルゴリズム (combmof, 2018/12/23)
虫食算に学ぶ、深さ優先探索アルゴリズム (combmof, 2018/12/23)Kensuke Otsuki
 
ディープラーニング入門 ~ 画像処理・自然言語処理について ~
ディープラーニング入門 ~ 画像処理・自然言語処理について ~ディープラーニング入門 ~ 画像処理・自然言語処理について ~
ディープラーニング入門 ~ 画像処理・自然言語処理について ~Kensuke Otsuki
 
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方Kensuke Otsuki
 
2部グラフの最小点被覆の求め方
2部グラフの最小点被覆の求め方2部グラフの最小点被覆の求め方
2部グラフの最小点被覆の求め方Kensuke Otsuki
 

Mais de Kensuke Otsuki (11)

ものづくりに活かす数学 (2024 年 1 月 26 日 N/S 高等学校での数学の授業)
ものづくりに活かす数学 (2024 年 1 月 26 日 N/S 高等学校での数学の授業)ものづくりに活かす数学 (2024 年 1 月 26 日 N/S 高等学校での数学の授業)
ものづくりに活かす数学 (2024 年 1 月 26 日 N/S 高等学校での数学の授業)
 
人それぞれの競プロとの向き合い方
人それぞれの競プロとの向き合い方人それぞれの競プロとの向き合い方
人それぞれの競プロとの向き合い方
 
アルゴリズムを楽しく!@PiyogrammerConference
アルゴリズムを楽しく!@PiyogrammerConferenceアルゴリズムを楽しく!@PiyogrammerConference
アルゴリズムを楽しく!@PiyogrammerConference
 
「現実世界に活かす数学」 (麻布高等学校、教養総合、数学講義 5 回目)
「現実世界に活かす数学」 (麻布高等学校、教養総合、数学講義 5 回目)「現実世界に活かす数学」 (麻布高等学校、教養総合、数学講義 5 回目)
「現実世界に活かす数学」 (麻布高等学校、教養総合、数学講義 5 回目)
 
JOI春季ステップアップセミナー 2021 講義スライド
JOI春季ステップアップセミナー 2021 講義スライドJOI春季ステップアップセミナー 2021 講義スライド
JOI春季ステップアップセミナー 2021 講義スライド
 
IT エンジニア本大賞 2021 講演資料
IT エンジニア本大賞 2021 講演資料IT エンジニア本大賞 2021 講演資料
IT エンジニア本大賞 2021 講演資料
 
『問題解決力を鍛える!アルゴリズムとデータ構造』出版記念講演
『問題解決力を鍛える!アルゴリズムとデータ構造』出版記念講演『問題解決力を鍛える!アルゴリズムとデータ構造』出版記念講演
『問題解決力を鍛える!アルゴリズムとデータ構造』出版記念講演
 
虫食算に学ぶ、深さ優先探索アルゴリズム (combmof, 2018/12/23)
虫食算に学ぶ、深さ優先探索アルゴリズム (combmof, 2018/12/23)虫食算に学ぶ、深さ優先探索アルゴリズム (combmof, 2018/12/23)
虫食算に学ぶ、深さ優先探索アルゴリズム (combmof, 2018/12/23)
 
ディープラーニング入門 ~ 画像処理・自然言語処理について ~
ディープラーニング入門 ~ 画像処理・自然言語処理について ~ディープラーニング入門 ~ 画像処理・自然言語処理について ~
ディープラーニング入門 ~ 画像処理・自然言語処理について ~
 
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
 
2部グラフの最小点被覆の求め方
2部グラフの最小点被覆の求め方2部グラフの最小点被覆の求め方
2部グラフの最小点被覆の求め方
 

Último

Divorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdfDivorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdfoganekyokoi
 
What I did before opening my business..pdf
What I did before opening my business..pdfWhat I did before opening my business..pdf
What I did before opening my business..pdfoganekyokoi
 
Establishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdfEstablishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdfoganekyokoi
 
International Politics I - Lecture 1
International Politics I - Lecture 1International Politics I - Lecture 1
International Politics I - Lecture 1Toru Oga
 
Registration of travel agents - 'Explanation of the registration system under...
Registration of travel agents - 'Explanation of the registration system under...Registration of travel agents - 'Explanation of the registration system under...
Registration of travel agents - 'Explanation of the registration system under...oganekyokoi
 
KARAPATANG PANTAO.pptxhrhrhrhrhrhrhrhrhr
KARAPATANG PANTAO.pptxhrhrhrhrhrhrhrhrhrKARAPATANG PANTAO.pptxhrhrhrhrhrhrhrhrhr
KARAPATANG PANTAO.pptxhrhrhrhrhrhrhrhrhrRodolfFernandez1
 
レポートの書き方講座 [大学生初年次向けに対する講義資料] Lecture on how to write a report [lecture mater...
レポートの書き方講座 [大学生初年次向けに対する講義資料] Lecture on how to write a report [lecture mater...レポートの書き方講座 [大学生初年次向けに対する講義資料] Lecture on how to write a report [lecture mater...
レポートの書き方講座 [大学生初年次向けに対する講義資料] Lecture on how to write a report [lecture mater...yutakashikano1984
 
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイント
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイント3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイント
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイントshu1108hina1020
 

Último (8)

Divorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdfDivorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdf
 
What I did before opening my business..pdf
What I did before opening my business..pdfWhat I did before opening my business..pdf
What I did before opening my business..pdf
 
Establishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdfEstablishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdf
 
International Politics I - Lecture 1
International Politics I - Lecture 1International Politics I - Lecture 1
International Politics I - Lecture 1
 
Registration of travel agents - 'Explanation of the registration system under...
Registration of travel agents - 'Explanation of the registration system under...Registration of travel agents - 'Explanation of the registration system under...
Registration of travel agents - 'Explanation of the registration system under...
 
KARAPATANG PANTAO.pptxhrhrhrhrhrhrhrhrhr
KARAPATANG PANTAO.pptxhrhrhrhrhrhrhrhrhrKARAPATANG PANTAO.pptxhrhrhrhrhrhrhrhrhr
KARAPATANG PANTAO.pptxhrhrhrhrhrhrhrhrhr
 
レポートの書き方講座 [大学生初年次向けに対する講義資料] Lecture on how to write a report [lecture mater...
レポートの書き方講座 [大学生初年次向けに対する講義資料] Lecture on how to write a report [lecture mater...レポートの書き方講座 [大学生初年次向けに対する講義資料] Lecture on how to write a report [lecture mater...
レポートの書き方講座 [大学生初年次向けに対する講義資料] Lecture on how to write a report [lecture mater...
 
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイント
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイント3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイント
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要  パワーポイント
 

区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)