Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Ga nonogram

3,237 views

Published on

Published in: Technology
  • Be the first to comment

Ga nonogram

  1. 1. 遺伝的アルゴリズムでピクロスを解く @dekosuke
  2. 2. ピクロス 2
  3. 3. ピクロス 縦横に制約がある 黒および白を順次確定 させて解いていく 人間が解くもの・・・ ですよね? 3
  4. 4. ピクロスピクロスはNP完全 – Ueda et al. (96’) →人間離れした難しい問題が作れる 名状しがたい問題のようなもの 4
  5. 5. というわけでコンピュータに解かせよう!!! 5
  6. 6. 遺伝的アルゴリズム(GA)“遺伝的アルゴリズムはもっともよく使われている進化的アルゴリズムである” - wikpiedia 6
  7. 7. 遺伝的アルゴリズム(GA) より正解に近い解答へ、回答群を進化させる 自然淘汰と突然変異の原理 7
  8. 8. 遺伝的アルゴリズムの応用例 戦略ゲーム ガンダムの歩行 パズル(ピクロス)←今回 8
  9. 9. 遺伝子コーディング各マスの (黒, 白) の状態を (1, 0) にして、遺伝子にコーディング 9
  10. 10. 実装 - Haskell“Escape from the ivory tower” –Simon Peyton JonesHaskellは象牙の塔(研究の世界)からやってきた言語 10
  11. 11. Haskellの特徴 名状しがたい純粋関数型言語のよう なもの 可及的速やかに実装できる 強力かつバグを出さない 11
  12. 12. 結果道具は揃った、あとはコードを書くだけというわけで、結果は・・・・ 12
  13. 13. 結果ハウス(5*5) テレビちゃん(14*14)ニコニコ(10*10) 名状し難い問題 13
  14. 14. 結果 ちゃんと問題が解けた!! 問題サイズが大きくなると、計算が終わらない (局所解(正しくない解)から抜け出せない) 14
  15. 15. おわり御清聴ありがとうございました成果物 https://gist.github.com/2516358 15
  16. 16. End次頁から解説編
  17. 17. 解説アイディアは大体、最初の参考文献(最終頁参照)から来ています。NP完全について説明します。NP完全問題は、問題の大きさ(パズルサイズ)が大きくなると、その問題を確実に解くアルゴリズムが、ものすごい勢いで計算量が増えていく(普通の時間で解けなくなる)問題です(NPの壁)遺伝的アルゴリズム (GA)は確率的アルゴリズムなので、必ず問題を解けることを保証しないかわりに、多くの問題に対して十分早い時間で解けることが期待できます。ほかにも、モンテカルロと呼ばれる一連の確率的手法もこのNPの壁に挑むことのできる手法です。実際、レプリカ交換法(モンテカルロの一種)とどっちをやろうか悩みました。※GAでも無限の時間をかければ必ず解に到達します 17
  18. 18. 解説そういう動機を持ち、遺伝的アルゴリズムで今回の問題にトライしました。遺伝的アルゴリズムを実装してやってみると、14*14のサイズでは、数時間内に正解にたどり着けなくなってしまいました遺伝的アルゴリズムでは突然変異の方法と確率をいじる余地がまだあるので、最適な調整をすればもう少し大きいサイズの問題まで解けるかもしれませんほかのアルゴリズムでは20*20以上のものが解けるものもあるので、遺伝的アルゴリズムがどうだったかは微妙なところがあります・・・ 18
  19. 19. 解説Haskellを実装に選んだ理由は、主に2点あります。1つは、十分早く実装ができること、そして2つめはバグが出る率が非常に低いことです。PythonやRubyなどのLL言語も早く実装するのには向いていますが、アルゴリズムの一部にバグが出ても、気づきにくいことがあります。Haskellは強い静的型付けを持つ言語ですので、多くのバグをコンパイル時に検出することができます 19
  20. 20. 参考文献 “A comparison of a genetic algorithm and a depth first search algorithm applied to Japanese nonograms” http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.62.9443 “Hoogle” http://www.haskell.org/hoogle/ 20

×