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.
ゲーム開発におけるバックトラック法
2015年 1月 30日 第一回数学勉強会
はじめに
はじめに
自分が一番イラッ☆とくるのが、そもそも論。
「そもそもダメじゃね?」「いや、そうゆうの最初
から調べるでしょ??」を座標の中心で叫んでおり
ます。
はじめに
そんな自分のコーディングスタイルですが、「まず
何を除外するべきか?」これが体にしみ込んでいま
した。
そこからプログラミングを掘り下げた時に、面白い
アルゴリズムに出会いました。
バックトラック法
はじめに
「そもそもダメならハイ次ー」
「そこから始るならダメだねー」
って感じです。
なので、実は「バックトラック法だー!」って仰々しく
語る事ではないのですが、アルゴリズムとして成立して
いるものなのであれば、しっかり身に付けておこうと考
...
はじめに
しかしながら、自分の中のルール決めだけで終わる
ような事をせず、本来どういったものであるかの認
識が必要だと考えました。
今回はその「認識」の部分をお話ししたいと思いま
す。
Unityのおはなし
Unityのお話
本日は「Unity3D」という、ゲーム開発エンジンを使
用してプレゼンテーションしてみたいと思います。
開発言語はC#です。
基本オブジェクト指向ですが、GUIを使用して誰でも
3Dゲームの開発が出来る、とても便利なミドルウェ...
Unityのお話
デバックコンソールがみずらいので、一部実行ファイ
ルとして検証用に使用します。
具体的な動作としては、クラス単位でコーディング
→オブジェクトに配置→実行 となります。
バックトラック法とは
バックトラック法とは
バックトラッキング(backtracking)は、制約充足問
題の解を探索する戦略の一種で、力まかせ探索を改
良したもの。「バックトラック」という用語は、ア
メリカの数学者デリック・ヘンリー・リーマー
(Derrick H...
バックトラック法とは
制約充足問題は完全な解の存在する問題であり、要
素の順序は問題とはならない。一連の変数が与えら
れ、指定された制約を満足するようにそれらに値を
設定しなければならない。バックトラッキングでは、
変数の値の組み合わせを試行錯...
バックトラックアルゴリズム
探査の木
木やグラフを探索するためのアルゴリズムである。
アルゴリズムは根から(グラフの場合はどのノードを
根にするか決定する)始まり、バックトラックするま
で可能な限り探索を行う。「縦型探索」とも呼ばれ
る
NQueen
チェスのクイーンの動作をベースに、
N個のクイーンを置いて、どのクイー
ンからも、一手で詰められない場所
に配置をさせるアルゴリズム
その配置パターンがいくつあるかも
検出可能
基本思想
基本思想
今回は、条件に合わせて何かアクションを起こす事
を前提に、その条件の効率化を図りたいと思います。
あまり大きなコードになると余計な説明で混乱して
しまうので、完結にいきたいと思います!
世界のナベアツ算
Nの倍数でアホになるアレですw
基本ロジック
提示された整数を3で割ったものから、同じく3で
割り、小数点以下を切り捨てた数字をひいて、0で
あればTrue。
そもそも3で0にならない数字は演算終了。
例題:世界のナベアツ算
40までかぞえます
3の倍数でアホになります
サンプルコード( Qiita )
Nabeatsu.cs参照
判定用プロパティ m_nabeatsu (初期値 floart 0)
カウント用プロパティ m_maxCount (初期値 int 40)
サンプルコード( Qiita )
14行目で3で割った浮動小数点型の値から、3で割っ
て、小数点以下を切り捨てた値を引きます。
あまりがなく、ちょうど0になればTrueが返ってき
て、「Aho」がコンソールに表示されます。
例題:世界のナベアツ算2
40までかぞえます
3の倍数でアホになります
3がつく数字はアホアホになります
3がついて3の倍数もアホアホになります
サンプルコード( Qiita )
Nabeatsu_SanTsuku.cs参照
判定用プロパティ m_nabeatsu (初期値 floart 0)
カウント用プロパティ m_maxCount (初期値 int 40)
サンプルコード( Qiita )
14行目で整数の中に3が含まれているか、C#の
IndexOfメソッドで確認します。ここで一度、検索の
ために整数から、String型に変換を行います。
Trueが返ってきたらその数字は「AhoAho」として出...
サンプルコード( Qiita )
15行目で3で割った浮動小数点型の値から、3で割っ
て、小数点以下を切り捨てた値を引きます。
あまりがなく、ちょうど0になればTrueが返ってき
て、「Aho」がコンソールに表示されます。
…これらをふまえて
FizzBuzz式
FizzBuzz式とは?
入社試験とかで(…コイツ本当にプログラマーかぁ
…?)と、いらぬ疑いをかけられた時に試されるプロ
グラミング
普通に書ける人達は、どこまで効率よく書かれてい
るかを議論する良い問題
基本ナベアツ算です(笑)
FizzBuzz式とは
そもそも3の倍数、5の倍数でなければ次の数字
ひとつの数字で、3の倍数であるか?5の倍数であ
るか?3と5の倍数であるか?を全て調べる必要は
無く、そもそも3でも5でもどちらにも倍数として
当てはまらなければ、次の数字と...
FizzBuzz式
40までかぞえます
3の倍数ではFizzといいます
5の倍数ではBuzzといいます
3と5の倍数ではFizzBuzzといいます
サンプルコード( Qiita )
FizzBuzz.cs参照
判定用プロパティ m_count (初期値 floart 0)
カウント用プロパティ m_maxCount (初期値 int 40)
サンプルコード( Qiita )
14行目で、そもそも3の倍数でも5の倍数でもない
数字の演算を終了させます。
そこから、3の倍数の処理、5の倍数の処理、3の
倍数で、5の倍数も含む数字の処理を行ないます。
実演
バックトラック法の使い方
NQueen
本日はこちらで解説したかったのですが、時間が足
りないのでまたの機会に。
ちなみにこれが出来ると、キャンディークラッシュ
のような3マッチパズルゲームでの駒の配置が、自動
でコントロールできる。( ←これに関連づけて話した
かった...
その他の使い方
探索などの振る舞いが得意
ダンジョンのルート検索にとても有用
ノベルゲームのデバック
ご清聴
有り難うございました!
Upcoming SlideShare
Loading in …5
×

ゲーム開発におけるバックトラック法

4,878 views

Published on

Published in: Education
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

ゲーム開発におけるバックトラック法

  1. 1. ゲーム開発におけるバックトラック法 2015年 1月 30日 第一回数学勉強会
  2. 2. はじめに
  3. 3. はじめに 自分が一番イラッ☆とくるのが、そもそも論。 「そもそもダメじゃね?」「いや、そうゆうの最初 から調べるでしょ??」を座標の中心で叫んでおり ます。
  4. 4. はじめに そんな自分のコーディングスタイルですが、「まず 何を除外するべきか?」これが体にしみ込んでいま した。 そこからプログラミングを掘り下げた時に、面白い アルゴリズムに出会いました。
  5. 5. バックトラック法
  6. 6. はじめに 「そもそもダメならハイ次ー」 「そこから始るならダメだねー」 って感じです。 なので、実は「バックトラック法だー!」って仰々しく 語る事ではないのですが、アルゴリズムとして成立して いるものなのであれば、しっかり身に付けておこうと考 えた次第です。
  7. 7. はじめに しかしながら、自分の中のルール決めだけで終わる ような事をせず、本来どういったものであるかの認 識が必要だと考えました。 今回はその「認識」の部分をお話ししたいと思いま す。
  8. 8. Unityのおはなし
  9. 9. Unityのお話 本日は「Unity3D」という、ゲーム開発エンジンを使 用してプレゼンテーションしてみたいと思います。 開発言語はC#です。 基本オブジェクト指向ですが、GUIを使用して誰でも 3Dゲームの開発が出来る、とても便利なミドルウェ アです。
  10. 10. Unityのお話 デバックコンソールがみずらいので、一部実行ファイ ルとして検証用に使用します。 具体的な動作としては、クラス単位でコーディング →オブジェクトに配置→実行 となります。
  11. 11. バックトラック法とは
  12. 12. バックトラック法とは バックトラッキング(backtracking)は、制約充足問 題の解を探索する戦略の一種で、力まかせ探索を改 良したもの。「バックトラック」という用語は、ア メリカの数学者デリック・ヘンリー・リーマー (Derrick Henry Lehmer)が1950年代に作った造語で ある。
  13. 13. バックトラック法とは 制約充足問題は完全な解の存在する問題であり、要 素の順序は問題とはならない。一連の変数が与えら れ、指定された制約を満足するようにそれらに値を 設定しなければならない。バックトラッキングでは、 変数の値の組み合わせを試行錯誤して解を探す。バッ クトラッキングの効果は部分的組み合わせを排除す る実装にあり、それによって実行時間を短縮する。
  14. 14. バックトラックアルゴリズム
  15. 15. 探査の木 木やグラフを探索するためのアルゴリズムである。 アルゴリズムは根から(グラフの場合はどのノードを 根にするか決定する)始まり、バックトラックするま で可能な限り探索を行う。「縦型探索」とも呼ばれ る
  16. 16. NQueen チェスのクイーンの動作をベースに、 N個のクイーンを置いて、どのクイー ンからも、一手で詰められない場所 に配置をさせるアルゴリズム その配置パターンがいくつあるかも 検出可能
  17. 17. 基本思想
  18. 18. 基本思想 今回は、条件に合わせて何かアクションを起こす事 を前提に、その条件の効率化を図りたいと思います。 あまり大きなコードになると余計な説明で混乱して しまうので、完結にいきたいと思います!
  19. 19. 世界のナベアツ算
  20. 20. Nの倍数でアホになるアレですw
  21. 21. 基本ロジック 提示された整数を3で割ったものから、同じく3で 割り、小数点以下を切り捨てた数字をひいて、0で あればTrue。 そもそも3で0にならない数字は演算終了。
  22. 22. 例題:世界のナベアツ算 40までかぞえます 3の倍数でアホになります
  23. 23. サンプルコード( Qiita ) Nabeatsu.cs参照 判定用プロパティ m_nabeatsu (初期値 floart 0) カウント用プロパティ m_maxCount (初期値 int 40)
  24. 24. サンプルコード( Qiita ) 14行目で3で割った浮動小数点型の値から、3で割っ て、小数点以下を切り捨てた値を引きます。 あまりがなく、ちょうど0になればTrueが返ってき て、「Aho」がコンソールに表示されます。
  25. 25. 例題:世界のナベアツ算2 40までかぞえます 3の倍数でアホになります 3がつく数字はアホアホになります 3がついて3の倍数もアホアホになります
  26. 26. サンプルコード( Qiita ) Nabeatsu_SanTsuku.cs参照 判定用プロパティ m_nabeatsu (初期値 floart 0) カウント用プロパティ m_maxCount (初期値 int 40)
  27. 27. サンプルコード( Qiita ) 14行目で整数の中に3が含まれているか、C#の IndexOfメソッドで確認します。ここで一度、検索の ために整数から、String型に変換を行います。 Trueが返ってきたらその数字は「AhoAho」として出 力されます。
  28. 28. サンプルコード( Qiita ) 15行目で3で割った浮動小数点型の値から、3で割っ て、小数点以下を切り捨てた値を引きます。 あまりがなく、ちょうど0になればTrueが返ってき て、「Aho」がコンソールに表示されます。
  29. 29. …これらをふまえて
  30. 30. FizzBuzz式
  31. 31. FizzBuzz式とは? 入社試験とかで(…コイツ本当にプログラマーかぁ …?)と、いらぬ疑いをかけられた時に試されるプロ グラミング 普通に書ける人達は、どこまで効率よく書かれてい るかを議論する良い問題 基本ナベアツ算です(笑)
  32. 32. FizzBuzz式とは そもそも3の倍数、5の倍数でなければ次の数字 ひとつの数字で、3の倍数であるか?5の倍数であ るか?3と5の倍数であるか?を全て調べる必要は 無く、そもそも3でも5でもどちらにも倍数として 当てはまらなければ、次の数字と言ったロジック。
  33. 33. FizzBuzz式 40までかぞえます 3の倍数ではFizzといいます 5の倍数ではBuzzといいます 3と5の倍数ではFizzBuzzといいます
  34. 34. サンプルコード( Qiita ) FizzBuzz.cs参照 判定用プロパティ m_count (初期値 floart 0) カウント用プロパティ m_maxCount (初期値 int 40)
  35. 35. サンプルコード( Qiita ) 14行目で、そもそも3の倍数でも5の倍数でもない 数字の演算を終了させます。 そこから、3の倍数の処理、5の倍数の処理、3の 倍数で、5の倍数も含む数字の処理を行ないます。
  36. 36. 実演
  37. 37. バックトラック法の使い方
  38. 38. NQueen 本日はこちらで解説したかったのですが、時間が足 りないのでまたの機会に。 ちなみにこれが出来ると、キャンディークラッシュ のような3マッチパズルゲームでの駒の配置が、自動 でコントロールできる。( ←これに関連づけて話した かった…orz)
  39. 39. その他の使い方 探索などの振る舞いが得意 ダンジョンのルート検索にとても有用 ノベルゲームのデバック
  40. 40. ご清聴 有り難うございました!

×