SlideShare une entreprise Scribd logo
1  sur  23
GP 使って競技で常勝
府立大高専 3 年 三上 和馬
@kyuridenamida



                  犯人さがしてます☝
遺伝はいいでん♪
●
    激寒
セミナーの様子
●
    昨日のきたゆた


         FX なんてチョロい !
ばっちぇ冷えてる


●
    今日のきたゆた


         ・・・
ところでみなさん
●
    皆さん Div2Medium 解けますか ?
僕は
●
    よく落とします
そこで
●
    遺伝的プログラミングを使って解くことにしました
つまり
●
    解法を自動生成します.




         まさに常勝 !
SRM 543 Div2 Medium - EllysXors

●
    A,B が与えられる. (1 ≦ A ≦ B ≦ 4*10^9)
●
    A 以上 B 以下の数の排他的論理和を出力

      A xor (A+1) xor (A+2) xor ... xor B


●
    ふつうにループすると TLE することにする
GP で解いた
●
    小さいケースは全探索で解ける
●   それを教師として利用する.乱数生成

●
    (a から b までの xor)
    = (0 から b までの xor) ^ (0 から a-1 までの xor)


●
    ランダム生成プログラムがいくつ正解しているかを評価値とする
    評価関数を用いた.
もっと厳密に
●
    非終端記号 :
    四則演算 (+,-,*,/)
    (a == b ? c : d) , (a < b ? c : d)
    a,b,c,d で動作が決まる四項条件演算子
●
    終端記号 : 変数 x もしくは 1~5 の定数
●
    評価値 : 教師データ (100 問 ) に対する正答数と式の長さ

●
    1 世代の集団の個体数 :250

●
    集団に突然変異が 5% くらい起きて交叉は
    45% くらい起きる.
式を求めるぞ !
●
    (x+2<10?1:0) みたいなかんじで式が生成される
●
    実行してみます
                                 <




                         +           10   1   0




                     x       2
結果
●
    第 0 世代         : 正答率 41% �  運よく高かった !
●
    第 1600 世代 : 正答率 55%
●
    第 1800 世代 : 正答率 69%
●
    第 4500 世代 : 正答率 86%
●
    第 26000 世代 : 正答率 100%
●
    出来上がった 0 から x までの xor を求める式
    「 (((((x-((1<1)?(x):((((((x%4)<(3/3))?((x+2)):(x))-x)+((x%x)*(x-
    x))))))/1)+((2/2)%(2*((x<x)?(4):(1)))))*(((((x+4)+(x+x))+((2+1)+4))-
    (2%3))%2))+((((x+2)%4)+1)/(1*3))) 」
実際に提出してみましょう
●
    TopCoder に接続します
Codeforces #122 Div2 B. Square

●
    一辺長さ n の正方形がある.
●
    左下の頂点からはじめて時計回りに n+1 個飛ばしで番号をつけて
    いく.左下の頂点に再び番号がつくのは何番目か.
同様にして自動実行
●
    N が小さい場合は全探索で解ける !
●
    それを教師データにして・・・
結果
●
    20 分実行した結果 ,100 件の教師データに対して正答する

    「 ((((((((2*x)*(x-x))+(x%2))+((x%(-1))*x))*((((3+(-5))-4)==((((x%x)%((-
    5)+x))+(-3))*((((-5)+x)%(4%x))%(-5))))?((((((((3+((x+x)/x))-(1%((x+(-
    2))/(x%(-2)))))-2)%(-3))*1)*(4-(((-1)*5)%((3/x)-((x-(4*x))-3)))))/((-
    5)%x))):((-2))))-(-5))*x)-(x-((x/x)%(x*4)))) 」
    という式が得られた.
投げてみよう
●
    通るかな ?
( 絶望 )

●
    小さいケースで落ちる
●
    小さいケース対策して出してみる
GP の弱点

●
    本当に式を予測しているだけだから今回のように WA することもあ
    る


●
    ただ教師データの全てに正解するようなプログラムであればある程
    度正しい ( 式が短い場合に限るが )

●
    ただし,式の変数が増えるとぜんぜん良い式を出してくれないので
    つらい (1 変数だけ与えられる問題ってびみょう )
挑戦した問題
●   SRM 489 Div1 Medium DiceRotation
    局所的な場合分けが絡む問題. 2 時間程実行したが完答するプログ
    ラムは得れず


●
    ざんねん
まとめ
●
    簡単な法則性とか見つけるのが得意みたいなので,問題解けないと
    きは GP しましょう.


●
    評価関数の自動生成とかよさそう ( 適当 )

●
    ぶっちゃけ, GP で解けるような法則性の問題は人間がやったらすぐ
    気づけそう


●
    GP 遅いし微妙にバグってても気づかない
小 並感学生   の   想


●
    遺伝的○○は見た目より簡単だが,職人芸 ( パラメータ調整 ) が要
    求され難しかった.


●
    実行中のプログラムを眺めていると,子供の成長を見守っている
    感覚で面白かった.


●
    うっかり視聴してしまったキルミーベイベーがつまらないので班
    崩壊が起きそうになっていた.
●
    黒い本は読めなかった

Contenu connexe

Tendances

AtCoder Regular Contest 019 解説
AtCoder Regular Contest 019 解説AtCoder Regular Contest 019 解説
AtCoder Regular Contest 019 解説AtCoder Inc.
 
AtCoder Beginner Contest 014 解説
AtCoder Beginner Contest 014 解説AtCoder Beginner Contest 014 解説
AtCoder Beginner Contest 014 解説AtCoder Inc.
 
AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説AtCoder Inc.
 
競技プログラミングの楽しみ
競技プログラミングの楽しみ競技プログラミングの楽しみ
競技プログラミングの楽しみna_o_ys
 
AtCoder Regular Contest 044 解説
AtCoder Regular Contest 044 解説AtCoder Regular Contest 044 解説
AtCoder Regular Contest 044 解説AtCoder Inc.
 
AtCoder Regular Contest 021 解説
AtCoder Regular Contest 021 解説AtCoder Regular Contest 021 解説
AtCoder Regular Contest 021 解説AtCoder Inc.
 
AtCoder Regular Contest 036 解説
AtCoder Regular Contest 036 解説AtCoder Regular Contest 036 解説
AtCoder Regular Contest 036 解説AtCoder Inc.
 
CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説AtCoder Inc.
 
RUPC2014_Day2_I
RUPC2014_Day2_IRUPC2014_Day2_I
RUPC2014_Day2_Is1190048
 
One
OneOne
Oneoupc
 
AtCoder Regular Contest 017
AtCoder Regular Contest 017AtCoder Regular Contest 017
AtCoder Regular Contest 017AtCoder Inc.
 
RUPC2014_Day2_C
RUPC2014_Day2_CRUPC2014_Day2_C
RUPC2014_Day2_Cs1190048
 

Tendances (20)

Pyramid
PyramidPyramid
Pyramid
 
Arc041
Arc041Arc041
Arc041
 
AtCoder Regular Contest 019 解説
AtCoder Regular Contest 019 解説AtCoder Regular Contest 019 解説
AtCoder Regular Contest 019 解説
 
abc031
abc031abc031
abc031
 
AtCoder Beginner Contest 014 解説
AtCoder Beginner Contest 014 解説AtCoder Beginner Contest 014 解説
AtCoder Beginner Contest 014 解説
 
AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説
 
競技プログラミングの楽しみ
競技プログラミングの楽しみ競技プログラミングの楽しみ
競技プログラミングの楽しみ
 
AtCoder Regular Contest 044 解説
AtCoder Regular Contest 044 解説AtCoder Regular Contest 044 解説
AtCoder Regular Contest 044 解説
 
AtCoder Regular Contest 021 解説
AtCoder Regular Contest 021 解説AtCoder Regular Contest 021 解説
AtCoder Regular Contest 021 解説
 
AtCoder Regular Contest 036 解説
AtCoder Regular Contest 036 解説AtCoder Regular Contest 036 解説
AtCoder Regular Contest 036 解説
 
計算量
計算量計算量
計算量
 
abc027
abc027abc027
abc027
 
動的計画法を極める!
動的計画法を極める!動的計画法を極める!
動的計画法を極める!
 
CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説
 
1
11
1
 
A: 解説
A: 解説A: 解説
A: 解説
 
RUPC2014_Day2_I
RUPC2014_Day2_IRUPC2014_Day2_I
RUPC2014_Day2_I
 
One
OneOne
One
 
AtCoder Regular Contest 017
AtCoder Regular Contest 017AtCoder Regular Contest 017
AtCoder Regular Contest 017
 
RUPC2014_Day2_C
RUPC2014_Day2_CRUPC2014_Day2_C
RUPC2014_Day2_C
 

En vedette

SuperCon2010予選アルゴリズム解説
SuperCon2010予選アルゴリズム解説SuperCon2010予選アルゴリズム解説
SuperCon2010予選アルゴリズム解説natrium11321
 
マラソンマッチ 89 日記
マラソンマッチ 89 日記マラソンマッチ 89 日記
マラソンマッチ 89 日記Kazuma Mikami
 
パソコン甲子園 ケーキ屋
パソコン甲子園 ケーキ屋パソコン甲子園 ケーキ屋
パソコン甲子園 ケーキ屋Kazuma Mikami
 
セグツリーイメージ
セグツリーイメージセグツリーイメージ
セグツリーイメージKazuma Mikami
 
文字列検索のいろいろ
文字列検索のいろいろ文字列検索のいろいろ
文字列検索のいろいろKazuma Mikami
 
部内勉強会 数え上げの基礎
部内勉強会 数え上げの基礎部内勉強会 数え上げの基礎
部内勉強会 数え上げの基礎Kazuma Mikami
 
やさしい整数論
やさしい整数論やさしい整数論
やさしい整数論Kazuma Mikami
 

En vedette (7)

SuperCon2010予選アルゴリズム解説
SuperCon2010予選アルゴリズム解説SuperCon2010予選アルゴリズム解説
SuperCon2010予選アルゴリズム解説
 
マラソンマッチ 89 日記
マラソンマッチ 89 日記マラソンマッチ 89 日記
マラソンマッチ 89 日記
 
パソコン甲子園 ケーキ屋
パソコン甲子園 ケーキ屋パソコン甲子園 ケーキ屋
パソコン甲子園 ケーキ屋
 
セグツリーイメージ
セグツリーイメージセグツリーイメージ
セグツリーイメージ
 
文字列検索のいろいろ
文字列検索のいろいろ文字列検索のいろいろ
文字列検索のいろいろ
 
部内勉強会 数え上げの基礎
部内勉強会 数え上げの基礎部内勉強会 数え上げの基礎
部内勉強会 数え上げの基礎
 
やさしい整数論
やさしい整数論やさしい整数論
やさしい整数論
 

Similaire à 情報オリンピック夏合宿発表

【Unity道場】ゲーム制作に使う数学を学習しよう
【Unity道場】ゲーム制作に使う数学を学習しよう【Unity道場】ゲーム制作に使う数学を学習しよう
【Unity道場】ゲーム制作に使う数学を学習しようUnity Technologies Japan K.K.
 
2値分類・多クラス分類
2値分類・多クラス分類2値分類・多クラス分類
2値分類・多クラス分類t dev
 
楕円曲線入門 トーラスと楕円曲線のつながり
楕円曲線入門トーラスと楕円曲線のつながり楕円曲線入門トーラスと楕円曲線のつながり
楕円曲線入門 トーラスと楕円曲線のつながりMITSUNARI Shigeo
 
120510サブゼミ数学(2)-1
120510サブゼミ数学(2)-1120510サブゼミ数学(2)-1
120510サブゼミ数学(2)-1takemuralab
 
130323 slide all
130323 slide all130323 slide all
130323 slide allikea0064
 
数学教材(中間発表)
数学教材(中間発表)数学教材(中間発表)
数学教材(中間発表)Mizuguchi1205
 
JOISS2015 グレブナー基底発表joisinoお姉ちゃんを救おう
JOISS2015 グレブナー基底発表joisinoお姉ちゃんを救おうJOISS2015 グレブナー基底発表joisinoお姉ちゃんを救おう
JOISS2015 グレブナー基底発表joisinoお姉ちゃんを救おうKai Katsumata
 
ディジタル信号処理 課題解説 その4
ディジタル信号処理 課題解説 その4ディジタル信号処理 課題解説 その4
ディジタル信号処理 課題解説 その4noname409
 
姫路 IT 系勉強会 Vol.6 プログラミングコンテストという名のオンラインゲームがあるらしい
姫路 IT 系勉強会 Vol.6 プログラミングコンテストという名のオンラインゲームがあるらしい姫路 IT 系勉強会 Vol.6 プログラミングコンテストという名のオンラインゲームがあるらしい
姫路 IT 系勉強会 Vol.6 プログラミングコンテストという名のオンラインゲームがあるらしいKazkuki Oakamoto
 
WUPC2nd A問題
WUPC2nd A問題WUPC2nd A問題
WUPC2nd A問題Dai Hamada
 
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムTakuya Akiba
 
【第34回数学カフェの予習会#1】微分と代数学のつながり
【第34回数学カフェの予習会#1】微分と代数学のつながり【第34回数学カフェの予習会#1】微分と代数学のつながり
【第34回数学カフェの予習会#1】微分と代数学のつながりMathCafe
 
Rで学ぶ逆変換(逆関数)法
Rで学ぶ逆変換(逆関数)法Rで学ぶ逆変換(逆関数)法
Rで学ぶ逆変換(逆関数)法Nagi Teramo
 
「にじたい」へのいざない #ロマンティック数学ナイト
「にじたい」へのいざない #ロマンティック数学ナイト「にじたい」へのいざない #ロマンティック数学ナイト
「にじたい」へのいざない #ロマンティック数学ナイトJunpei Tsuji
 
【展開用】日曜数学会 Sinc関数の積分について
【展開用】日曜数学会 Sinc関数の積分について【展開用】日曜数学会 Sinc関数の積分について
【展開用】日曜数学会 Sinc関数の積分について和人 桐ケ谷
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学MITSUNARI Shigeo
 
070 統計的推測 母集団と推定
070 統計的推測 母集団と推定070 統計的推測 母集団と推定
070 統計的推測 母集団と推定t2tarumi
 
コンピュータで全く使われない数表現
コンピュータで全く使われない数表現コンピュータで全く使われない数表現
コンピュータで全く使われない数表現Yu(u)ki IWABUCHI
 
WUPC2nd I問題
WUPC2nd I問題WUPC2nd I問題
WUPC2nd I問題Dai Hamada
 

Similaire à 情報オリンピック夏合宿発表 (20)

6 Info Theory
6 Info Theory6 Info Theory
6 Info Theory
 
【Unity道場】ゲーム制作に使う数学を学習しよう
【Unity道場】ゲーム制作に使う数学を学習しよう【Unity道場】ゲーム制作に使う数学を学習しよう
【Unity道場】ゲーム制作に使う数学を学習しよう
 
2値分類・多クラス分類
2値分類・多クラス分類2値分類・多クラス分類
2値分類・多クラス分類
 
楕円曲線入門 トーラスと楕円曲線のつながり
楕円曲線入門トーラスと楕円曲線のつながり楕円曲線入門トーラスと楕円曲線のつながり
楕円曲線入門 トーラスと楕円曲線のつながり
 
120510サブゼミ数学(2)-1
120510サブゼミ数学(2)-1120510サブゼミ数学(2)-1
120510サブゼミ数学(2)-1
 
130323 slide all
130323 slide all130323 slide all
130323 slide all
 
数学教材(中間発表)
数学教材(中間発表)数学教材(中間発表)
数学教材(中間発表)
 
JOISS2015 グレブナー基底発表joisinoお姉ちゃんを救おう
JOISS2015 グレブナー基底発表joisinoお姉ちゃんを救おうJOISS2015 グレブナー基底発表joisinoお姉ちゃんを救おう
JOISS2015 グレブナー基底発表joisinoお姉ちゃんを救おう
 
ディジタル信号処理 課題解説 その4
ディジタル信号処理 課題解説 その4ディジタル信号処理 課題解説 その4
ディジタル信号処理 課題解説 その4
 
姫路 IT 系勉強会 Vol.6 プログラミングコンテストという名のオンラインゲームがあるらしい
姫路 IT 系勉強会 Vol.6 プログラミングコンテストという名のオンラインゲームがあるらしい姫路 IT 系勉強会 Vol.6 プログラミングコンテストという名のオンラインゲームがあるらしい
姫路 IT 系勉強会 Vol.6 プログラミングコンテストという名のオンラインゲームがあるらしい
 
WUPC2nd A問題
WUPC2nd A問題WUPC2nd A問題
WUPC2nd A問題
 
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
 
【第34回数学カフェの予習会#1】微分と代数学のつながり
【第34回数学カフェの予習会#1】微分と代数学のつながり【第34回数学カフェの予習会#1】微分と代数学のつながり
【第34回数学カフェの予習会#1】微分と代数学のつながり
 
Rで学ぶ逆変換(逆関数)法
Rで学ぶ逆変換(逆関数)法Rで学ぶ逆変換(逆関数)法
Rで学ぶ逆変換(逆関数)法
 
「にじたい」へのいざない #ロマンティック数学ナイト
「にじたい」へのいざない #ロマンティック数学ナイト「にじたい」へのいざない #ロマンティック数学ナイト
「にじたい」へのいざない #ロマンティック数学ナイト
 
【展開用】日曜数学会 Sinc関数の積分について
【展開用】日曜数学会 Sinc関数の積分について【展開用】日曜数学会 Sinc関数の積分について
【展開用】日曜数学会 Sinc関数の積分について
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学
 
070 統計的推測 母集団と推定
070 統計的推測 母集団と推定070 統計的推測 母集団と推定
070 統計的推測 母集団と推定
 
コンピュータで全く使われない数表現
コンピュータで全く使われない数表現コンピュータで全く使われない数表現
コンピュータで全く使われない数表現
 
WUPC2nd I問題
WUPC2nd I問題WUPC2nd I問題
WUPC2nd I問題
 

情報オリンピック夏合宿発表

  • 1. GP 使って競技で常勝 府立大高専 3 年 三上 和馬 @kyuridenamida 犯人さがしてます☝
  • 3. セミナーの様子 ● 昨日のきたゆた FX なんてチョロい !
  • 4. ばっちぇ冷えてる ● 今日のきたゆた ・・・
  • 5. ところでみなさん ● 皆さん Div2Medium 解けますか ?
  • 6. 僕は ● よく落とします
  • 7. そこで ● 遺伝的プログラミングを使って解くことにしました
  • 8. つまり ● 解法を自動生成します. まさに常勝 !
  • 9. SRM 543 Div2 Medium - EllysXors ● A,B が与えられる. (1 ≦ A ≦ B ≦ 4*10^9) ● A 以上 B 以下の数の排他的論理和を出力 A xor (A+1) xor (A+2) xor ... xor B ● ふつうにループすると TLE することにする
  • 10. GP で解いた ● 小さいケースは全探索で解ける ● それを教師として利用する.乱数生成 ● (a から b までの xor) = (0 から b までの xor) ^ (0 から a-1 までの xor) ● ランダム生成プログラムがいくつ正解しているかを評価値とする 評価関数を用いた.
  • 11. もっと厳密に ● 非終端記号 : 四則演算 (+,-,*,/) (a == b ? c : d) , (a < b ? c : d) a,b,c,d で動作が決まる四項条件演算子 ● 終端記号 : 変数 x もしくは 1~5 の定数 ● 評価値 : 教師データ (100 問 ) に対する正答数と式の長さ ● 1 世代の集団の個体数 :250 ● 集団に突然変異が 5% くらい起きて交叉は 45% くらい起きる.
  • 12. 式を求めるぞ ! ● (x+2<10?1:0) みたいなかんじで式が生成される ● 実行してみます < + 10 1 0 x 2
  • 13. 結果 ● 第 0 世代 : 正答率 41% �  運よく高かった ! ● 第 1600 世代 : 正答率 55% ● 第 1800 世代 : 正答率 69% ● 第 4500 世代 : 正答率 86% ● 第 26000 世代 : 正答率 100% ● 出来上がった 0 から x までの xor を求める式 「 (((((x-((1<1)?(x):((((((x%4)<(3/3))?((x+2)):(x))-x)+((x%x)*(x- x))))))/1)+((2/2)%(2*((x<x)?(4):(1)))))*(((((x+4)+(x+x))+((2+1)+4))- (2%3))%2))+((((x+2)%4)+1)/(1*3))) 」
  • 14. 実際に提出してみましょう ● TopCoder に接続します
  • 15. Codeforces #122 Div2 B. Square ● 一辺長さ n の正方形がある. ● 左下の頂点からはじめて時計回りに n+1 個飛ばしで番号をつけて いく.左下の頂点に再び番号がつくのは何番目か.
  • 16. 同様にして自動実行 ● N が小さい場合は全探索で解ける ! ● それを教師データにして・・・
  • 17. 結果 ● 20 分実行した結果 ,100 件の教師データに対して正答する 「 ((((((((2*x)*(x-x))+(x%2))+((x%(-1))*x))*((((3+(-5))-4)==((((x%x)%((- 5)+x))+(-3))*((((-5)+x)%(4%x))%(-5))))?((((((((3+((x+x)/x))-(1%((x+(- 2))/(x%(-2)))))-2)%(-3))*1)*(4-(((-1)*5)%((3/x)-((x-(4*x))-3)))))/((- 5)%x))):((-2))))-(-5))*x)-(x-((x/x)%(x*4)))) 」 という式が得られた.
  • 18. 投げてみよう ● 通るかな ?
  • 19. ( 絶望 ) ● 小さいケースで落ちる ● 小さいケース対策して出してみる
  • 20. GP の弱点 ● 本当に式を予測しているだけだから今回のように WA することもあ る ● ただ教師データの全てに正解するようなプログラムであればある程 度正しい ( 式が短い場合に限るが ) ● ただし,式の変数が増えるとぜんぜん良い式を出してくれないので つらい (1 変数だけ与えられる問題ってびみょう )
  • 21. 挑戦した問題 ● SRM 489 Div1 Medium DiceRotation 局所的な場合分けが絡む問題. 2 時間程実行したが完答するプログ ラムは得れず ● ざんねん
  • 22. まとめ ● 簡単な法則性とか見つけるのが得意みたいなので,問題解けないと きは GP しましょう. ● 評価関数の自動生成とかよさそう ( 適当 ) ● ぶっちゃけ, GP で解けるような法則性の問題は人間がやったらすぐ 気づけそう ● GP 遅いし微妙にバグってても気づかない
  • 23. 小 並感学生 の 想 ● 遺伝的○○は見た目より簡単だが,職人芸 ( パラメータ調整 ) が要 求され難しかった. ● 実行中のプログラムを眺めていると,子供の成長を見守っている 感覚で面白かった. ● うっかり視聴してしまったキルミーベイベーがつまらないので班 崩壊が起きそうになっていた. ● 黒い本は読めなかった