Upgrade to Pro — share decks privately, control downloads, hide ads and more …

世界四連覇AIエンジニアが教える「探索アルゴリズム」の魅力

thunder
February 21, 2023

 世界四連覇AIエンジニアが教える「探索アルゴリズム」の魅力

著書「ゲームで学ぶ探索アルゴリズム実践入門~木探索とメタヒューリスティクス」の発売記念イベントで使用したスライドを元にweb用に修正して公開します。

著書amazon URL
https://www.amazon.co.jp/dp/4297133601/

イベントURL(終了)
https://connpass.com/event/273198/

thunder

February 21, 2023
Tweet

More Decks by thunder

Other Decks in Programming

Transcript

  1. ▪仕事など • ~今:HEROZ㈱にてゲームAI開発 • 3月~: ㈱ GRIDにて最適化に専念 ▪プライベート • 国際ゲームAIコンペで7回優勝

    • Qiita記事でトレンド1位達成 "世界四連覇AIエンジニアがゼロから教える ゲーム木探索入門" 4
  2. ・探索アルゴリズムを体系的に学ぶ ・章立て 第1章 ゲームと探索の世界 第2章 開発環境の準備 第3章 文脈のある一人ゲーム※ 第4章 文脈のない一人ゲーム※

    第5章 交互着手二人ゲーム※ 第6章 同時着手二人ゲーム※ 第7章 よりよい探索※ 第8章 実際のゲームへの応用 ※章名を一部省略 6
  3. ・探索アルゴリズムを体系的に学ぶ ・章立て 第1章 ゲームと探索の世界 第2章 開発環境の準備 第3章 文脈のある一人ゲーム※ 第4章 文脈のない一人ゲーム※

    第5章 交互着手二人ゲーム※ 第6章 同時着手二人ゲーム※ 第7章 よりよい探索※ 第8章 実際のゲームへの応用 ※章名を一部省略 7 ゲームと探索アルゴリズムとの 関係性、 探索アルゴリズムが活用できる シチュエーションについて説明
  4. ・探索アルゴリズムを体系的に学ぶ ・章立て 第1章 ゲームと探索の世界 第2章 開発環境の準備 第3章 文脈のある一人ゲーム※ 第4章 文脈のない一人ゲーム※

    第5章 交互着手二人ゲーム※ 第6章 同時着手二人ゲーム※ 第7章 よりよい探索※ 第8章 実際のゲームへの応用 ※章名を一部省略 8 C++の開発環境を準備し、 本書のサンプルプログラムを動作で きるようにする
  5. ・探索アルゴリズムを体系的に学ぶ ・章立て 第1章 ゲームと探索の世界 第2章 開発環境の準備 第3章 文脈のある一人ゲーム※ 第4章 文脈のない一人ゲーム※

    第5章 交互着手二人ゲーム※ 第6章 同時着手二人ゲーム※ 第7章 よりよい探索※ 第8章 実際のゲームへの応用 ※章名を一部省略 9 ゲームの特性ごとに 有効な探索アルゴリズムを紹介 サンプルコードを交えて 実践的に学べる
  6. ・探索アルゴリズムを体系的に学ぶ ・章立て 第1章 ゲームと探索の世界 第2章 開発環境の準備 第3章 文脈のある一人ゲーム※ 第4章 文脈のない一人ゲーム※

    第5章 交互着手二人ゲーム※ 第6章 同時着手二人ゲーム※ 第7章 よりよい探索※ 第8章 実際のゲームへの応用 ※章名を一部省略 10 6章までで学んだ探索アルゴリズム に工夫を加え、 より効果的な探索をする方法を紹介
  7. ・探索アルゴリズムを体系的に学ぶ ・章立て 第1章 ゲームと探索の世界 第2章 開発環境の準備 第3章 文脈のある一人ゲーム※ 第4章 文脈のない一人ゲーム※

    第5章 交互着手二人ゲーム※ 第6章 同時着手二人ゲーム※ 第7章 よりよい探索※ 第8章 実際のゲームへの応用 ※章名を一部省略 11 伝統的なゲーム「コネクトフォー」 の対戦AIを実装しながら、 本書で学んだ内容を実際のゲームに 落とし込む方法を紹介
  8. • 充実したサンプルコードで実践的に学べる! 37 class State { State() {} // ゲームの終了判定

    bool isDone() const { /*処理*/ return /*(bool)終了判定*/; } // 探索用の盤面評価をする void evaluateScore() { this->evaluated_score_ = /*(ScoreType)評価結果*/; } }; 本文中で紹介するゲーム以外に も汎用的に使える おまけコードも収録! 未完成の関数をゲームに 合わせて自分で実装すれば、 すぐに探索アルゴリズムを適用 できる!
  9. • レビューでより良い本になった 46 レビュー前 0~9の値をとる整数(point)を文字'0'~'9'に直すコード char c = '0' +

    (char)point; なんで'0'に数値を足すの? c++に慣れてないと 何やってるかわからないよ レビュー後 わかりにくいキャストや加算を排除してシンプル化 std::stringstream ss; ss << point;
  10. Q:スライド中のキャラクターは何? 54 A:スライド中のキャラクターは何? 昔出場したコンテストのキャラクターを 長い間ツイッターアイコンとして 使用していたのですが、 他人の著作物は 自分の制作物に載せたりする際に 都合が悪いです。 そこで、

    元のアイコンの雰囲気を保ったまま、 (無関係な)オリジナルキャラクターを 自分でデザインしました。 LINEスタンプもあります。 https://store.line.me/stickershop/product/3059034/ja