Submit Search
Upload
全探索
•
2 likes
•
3,796 views
Ryunosuke Iwai
Follow
NPCA 講義2013 競技プログラミング #2
Read less
Read more
Report
Share
Report
Share
1 of 24
Download now
Download to read offline
Recommended
動的計画法
動的計画法
京大 マイコンクラブ
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
Takuya Akiba
はんなりPython#42 20210629
はんなりPython#42 20210629
takey Takesue
DS Exercise Course 2
DS Exercise Course 2
大貴 末廣
機械学習と深層学習の数理
機械学習と深層学習の数理
Ryo Nakamura
Python基礎その2
Python基礎その2
大貴 末廣
Python基礎その1
Python基礎その1
大貴 末廣
数式をnumpyに落としこむコツ
数式をnumpyに落としこむコツ
Shuyo Nakatani
Recommended
動的計画法
動的計画法
京大 マイコンクラブ
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
Takuya Akiba
はんなりPython#42 20210629
はんなりPython#42 20210629
takey Takesue
DS Exercise Course 2
DS Exercise Course 2
大貴 末廣
機械学習と深層学習の数理
機械学習と深層学習の数理
Ryo Nakamura
Python基礎その2
Python基礎その2
大貴 末廣
Python基礎その1
Python基礎その1
大貴 末廣
数式をnumpyに落としこむコツ
数式をnumpyに落としこむコツ
Shuyo Nakatani
TokyoNLP#7 きれいなジャイアンのカカカカ☆カーネル法入門-C++
TokyoNLP#7 きれいなジャイアンのカカカカ☆カーネル法入門-C++
sleepy_yoshi
Deep Learning を実装する
Deep Learning を実装する
Shuhei Iitsuka
for関数を使った繰り返し処理によるヒストグラムの一括出力
for関数を使った繰り返し処理によるヒストグラムの一括出力
imuyaoti
第4回MachineLearningのための数学塾資料(浅川)
第4回MachineLearningのための数学塾資料(浅川)
Shin Asakawa
DS Exercise Course 3
DS Exercise Course 3
大貴 末廣
NumPy闇入門
NumPy闇入門
Ryosuke Okuta
パターン認識 05 ロジスティック回帰
パターン認識 05 ロジスティック回帰
sleipnir002
機械学習による統計的実験計画(ベイズ最適化を中心に)
機械学習による統計的実験計画(ベイズ最適化を中心に)
Kota Matsui
文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜
文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜
Takeshi Arabiki
たのしい高階関数
たのしい高階関数
Shinichi Kozake
動的計画法を極める!
動的計画法を極める!
HCPC: 北海道大学競技プログラミングサークル
TokyoNLP#5 パーセプトロンで楽しい仲間がぽぽぽぽ~ん
TokyoNLP#5 パーセプトロンで楽しい仲間がぽぽぽぽ~ん
sleepy_yoshi
R高速化
R高速化
Monta Yashi
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
Takuya Akiba
純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門
Kimikazu Kato
Crfと素性テンプレート
Crfと素性テンプレート
Kei Uchiumi
ウェーブレット木の世界
ウェーブレット木の世界
Preferred Networks
関数
関数
TENTO_slide
Python opt
Python opt
Mikio Kubo
最適化の手前の数学
最適化の手前の数学
俊介 後藤
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
AtCoder Inc.
アルゴリズムイントロダクション15章 動的計画法
アルゴリズムイントロダクション15章 動的計画法
nitoyon
More Related Content
What's hot
TokyoNLP#7 きれいなジャイアンのカカカカ☆カーネル法入門-C++
TokyoNLP#7 きれいなジャイアンのカカカカ☆カーネル法入門-C++
sleepy_yoshi
Deep Learning を実装する
Deep Learning を実装する
Shuhei Iitsuka
for関数を使った繰り返し処理によるヒストグラムの一括出力
for関数を使った繰り返し処理によるヒストグラムの一括出力
imuyaoti
第4回MachineLearningのための数学塾資料(浅川)
第4回MachineLearningのための数学塾資料(浅川)
Shin Asakawa
DS Exercise Course 3
DS Exercise Course 3
大貴 末廣
NumPy闇入門
NumPy闇入門
Ryosuke Okuta
パターン認識 05 ロジスティック回帰
パターン認識 05 ロジスティック回帰
sleipnir002
機械学習による統計的実験計画(ベイズ最適化を中心に)
機械学習による統計的実験計画(ベイズ最適化を中心に)
Kota Matsui
文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜
文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜
Takeshi Arabiki
たのしい高階関数
たのしい高階関数
Shinichi Kozake
動的計画法を極める!
動的計画法を極める!
HCPC: 北海道大学競技プログラミングサークル
TokyoNLP#5 パーセプトロンで楽しい仲間がぽぽぽぽ~ん
TokyoNLP#5 パーセプトロンで楽しい仲間がぽぽぽぽ~ん
sleepy_yoshi
R高速化
R高速化
Monta Yashi
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
Takuya Akiba
純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門
Kimikazu Kato
Crfと素性テンプレート
Crfと素性テンプレート
Kei Uchiumi
ウェーブレット木の世界
ウェーブレット木の世界
Preferred Networks
関数
関数
TENTO_slide
Python opt
Python opt
Mikio Kubo
最適化の手前の数学
最適化の手前の数学
俊介 後藤
What's hot
(20)
TokyoNLP#7 きれいなジャイアンのカカカカ☆カーネル法入門-C++
TokyoNLP#7 きれいなジャイアンのカカカカ☆カーネル法入門-C++
Deep Learning を実装する
Deep Learning を実装する
for関数を使った繰り返し処理によるヒストグラムの一括出力
for関数を使った繰り返し処理によるヒストグラムの一括出力
第4回MachineLearningのための数学塾資料(浅川)
第4回MachineLearningのための数学塾資料(浅川)
DS Exercise Course 3
DS Exercise Course 3
NumPy闇入門
NumPy闇入門
パターン認識 05 ロジスティック回帰
パターン認識 05 ロジスティック回帰
機械学習による統計的実験計画(ベイズ最適化を中心に)
機械学習による統計的実験計画(ベイズ最適化を中心に)
文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜
文字列カーネルによる辞書なしツイート分類 〜文字列カーネル入門〜
たのしい高階関数
たのしい高階関数
動的計画法を極める!
動的計画法を極める!
TokyoNLP#5 パーセプトロンで楽しい仲間がぽぽぽぽ~ん
TokyoNLP#5 パーセプトロンで楽しい仲間がぽぽぽぽ~ん
R高速化
R高速化
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門
Crfと素性テンプレート
Crfと素性テンプレート
ウェーブレット木の世界
ウェーブレット木の世界
関数
関数
Python opt
Python opt
最適化の手前の数学
最適化の手前の数学
Viewers also liked
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
AtCoder Inc.
アルゴリズムイントロダクション15章 動的計画法
アルゴリズムイントロダクション15章 動的計画法
nitoyon
実践・最強最速のアルゴリズム勉強会 第二回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第二回講義資料(ワークスアプリケーションズ & AtCoder)
AtCoder Inc.
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
AtCoder Inc.
TCO2017R1
TCO2017R1
AtCoder Inc.
深さ優先探索による塗りつぶし
深さ優先探索による塗りつぶし
AtCoder Inc.
Viewers also liked
(6)
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
アルゴリズムイントロダクション15章 動的計画法
アルゴリズムイントロダクション15章 動的計画法
実践・最強最速のアルゴリズム勉強会 第二回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第二回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
TCO2017R1
TCO2017R1
深さ優先探索による塗りつぶし
深さ優先探索による塗りつぶし
More from Ryunosuke Iwai
音声認識
音声認識
Ryunosuke Iwai
DP
DP
Ryunosuke Iwai
貪欲
貪欲
Ryunosuke Iwai
全探索2
全探索2
Ryunosuke Iwai
導入
導入
Ryunosuke Iwai
Rth number
Rth number
Ryunosuke Iwai
Glasses
Glasses
Ryunosuke Iwai
Ice
Ice
Ryunosuke Iwai
Water flow
Water flow
Ryunosuke Iwai
文字列処理
文字列処理
Ryunosuke Iwai
データ処理
データ処理
Ryunosuke Iwai
Arduino
Arduino
Ryunosuke Iwai
More from Ryunosuke Iwai
(12)
音声認識
音声認識
DP
DP
貪欲
貪欲
全探索2
全探索2
導入
導入
Rth number
Rth number
Glasses
Glasses
Ice
Ice
Water flow
Water flow
文字列処理
文字列処理
データ処理
データ処理
Arduino
Arduino
全探索
1.
競技プログラミング講義 #2 「全探索」
2.
全探索とは ● 考えられる全ての結果を考慮して問題を解 く方法 ● やるだけの一種(?) ● 基本的には「再起関数」によって「状態の 遷移」を考えることで実現する
3.
再帰関数
4.
再帰関数 ● 自分の中で自分を呼び出す関数 ● 終了条件をつけてどこかの時点で動作を停 止させるようにする必要がある
5.
例:フィボナッチ数列 int fib(int n){ if(n==0||n==1)return
1; else return fib(n-2)+fib(n-1); }
6.
例:フィボナッチ数列 ● fib(3) : ー fib(1)
: return 1 ー fib(2) : ー fib(0) : return 1 ー fib(1) : return 1 return 1+1=2 return 1+2=3
7.
状態
8.
状態 ● 問題文の状態が実際に起こったと仮定する ● その時の世界の状態のこと – 担任団の数学科の先生がどこにいたか – 地球の反対側にいるひとが何をしていたか –
パソコンのメモリの状態
9.
状態を扱う ● 「世界の状態」の種類は数えきれないほど たくさんある ● 今考えている問題に「数学科の教師がどこ にいたか」はおそらく関係がない → 同様に「関係のある要素」だけにしぼっ て状態を考えると扱いきれる
10.
状態の遷移 ● 「 A
君が 500 円を持っている」という状態 を考える ● 今確率 50% で 1000 円がもらえるようなキ ャンペーンをやっているとすると、今から – 確率 50% で「 A 君が 1500 円持ってい る」という状態 – 確率 50% で「 A 君が 500 円持っている」 という状態 に遷移する可能性があることになる
11.
全探索における状態 ● このような「状態の遷移」を全て考慮し、 最終的な結果を比較することで答えを得る ● 状態の遷移の可能性の数が計算量に影響し てくる
12.
状態の表現 ● 再起関数の引数 ● 配列 によって表現することが多い
13.
全探索
14.
全探索の例 ● ナップサック問題 重さ W[i] と価値
V[i] が決まっている N 個 の品物がある。重さの総和が S を超えない ように品物を選んだときの、それらの品物 の価値の総和の最大値を求めよ。 1 N 20≦ ≦ 1 W[i],V[i] 1,000,000≦ ≦ 1 S 1,000,000≦ ≦
15.
解法 ● 再帰関数…引数を状態として持つような再 帰関数 ● 状態…
16.
解法 ● 再帰関数…引数を状態として持ち、その状 態から到達できる状態の中で最大の価値を 返すような再帰関数 ● 状態…「
i 個目の品物の前まで選んで重さ の総和が T 、価値の総和が U になってい て、 i 個目の品物を取るかどうか悩んでい る」という状態
17.
解法ー状態の遷移 ● i 個目の品物をとったとき (i+1)
個目の品物の前まで選び終わり、重さ の総和が T+W[i] 、価値の総和が U+V[i] で あるという状態 ● i 個目の品物をとらなかったとき (i+1) 個目の品物の前まで選び終わり、重さ の総和が T 、価値の総和が U であるという 状態
18.
解法ー実装 ● これを再帰関数で実装する ● 品物を取るとき、重さの総和が
S を超える ような選び方はしない(条件に反する) ● i=n+1 のとき、全て選び終わったというこ となので終了(そのときの価値を返す) ● それぞれの状態では、良かった方(価値の 高かった方)を返せば良い
19.
模範解答 int N,S,W[20],V[20]; int nap(int
T,int U,int i){ if(i==N)return U; int res=0; if(T+W[i]<=S)res=nap(T+W[i],U+V[i],i+1); res=max(res,nap(T,U,i+1)); return res; } // nap(0,0,0) が答え
20.
全探索まとめ ● 先ほどのコードの計算量は、それぞれの状 態に対して原則選択肢が 2
つあり、終了す るまでに状態を N ほど経由するので 計算量はだいたい 2^N 、最悪で 2^20 1,000,000≒ ● 指数 (2^1=2,2^10=1024,2^100 10^30)≒ 的 に計算量が増加するので、サイズの大きい 問題には対処できない
21.
〜実装タイム〜 NPCA Judge 問題「講義用問題
2 」
22.
ポイント ● 「 i
個目の前までに、確定した得点が S 、 現在続いている駒の得点の総和が R で、 j 個黒を表にして置いた」という状態につい て考える ● i 個目を表に置くかどうかで状態の遷移を 考える
23.
練習問題 ● AOJ 0525
「 Osembei 」
24.
こ… これ…これは…………状態遷移だあああ ああ┗ (^o^)┛
WwwwWWWW ┏(^o^)┓ ドコドコドコドコwwwWWwwww →次回 #3 「幅・深さ優先探索」 or 「ソートアルゴリズム」 or 「貪欲法」 To be continued...
Download now