「チェス(将棋、囲碁、その他任意のボードゲーム)をやると頭がよくなる」。これは、様々なところで言われていることです。それでは、チェスを行う上での思考とはどのようなものかを考えてみたいと思います。 誤りの指摘、コメント等歓迎します。 1. アルゴリズムとヒューリスティクスいきなり用語を出してしまいましたが、アルゴリズムとヒューリスティクスとは、人間がものごとを思考するときに用いる2つの方略のことを指す心理学用語です。 アルゴリズムとは「「計算可能」なことを計算する、形式的な(formalな)手続きのこと、あるいはそれを形式的に表現したもの。(出展: https://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0)」であり、ヒューリスティクスは「必ず正しい答えを導けるわけではないが、ある程
序章 はじめに リバーシのルール ソースコードの記述について 第1章 盤面の処理 1.1 定数と関数の定義 1.2 盤面の生成、初期化 1.3 石を返す処理 1.4 返せる石数を調べる処理 1.5 盤面をコピー、反転させる処理 1.6 その他の盤面処理 1.7 盤面の操作と表示 第2章 ゲーム木と探索 2.1 コンピュータ思考の関数定義 2.2 各関数の実装 2.3 ゲーム木 2.4 MinMax法とNegaMax法 2.5 αβ法 第3章 盤面の評価 3.1 評価関数の定義 3.2 パターンによる局面評価 3.3 評価クラスの構造 3.4 評価クラスの生成とファイルの読み書き 3.5 評価関数の実装 3.6 評価パラメータの更新 3.7 中盤の探索 3.8 自己対局による学習 第4章 性能改善 4.1 石数取得の高速化 4.2 着手の高速化 4.3 候補手リストの導入 4.4 終盤探索の
Karu_gamo★★☆☆☆ @Karu_gamo 『アトランチスの謎』のマップデータ、(16x16pixを1マスとして)縦8マス分の短冊状のデータをテーブル化してるっぽい。縦は240pix÷16pix=15マスなので、上下で別の短冊データということになる(1つ余る)。上下で別々に設定できるから、こういう上下分割されたステージが作りやすいようだ。 pic.x.com/PotOYMfPJm 2024-11-02 16:24:04 Karu_gamo★★☆☆☆ @Karu_gamo 屋外ステージでは、上半分は空白が続くので短冊データは1つで済む(たまに雲があるが)。凝る必要があるのは下半分だけなので効率良さそう。ちなみにこの背の高い木がちょうど半分になっている(下1マスあまる)。 pic.x.com/clsajkoc30 2024-11-02 16:24:05
結構頑張って作ってるのに授業用ウェブサイトに置いているだけではあまり読まれることもなさそうなので,授業で作った資料の中で公開することに多少の価値がありそうなものについては定期的にこちらで公開してみることにします. 授業に関するよりup-to-dateな情報や資料は私のteaching関係websiteをご覧ください. Advanced Microeconomics II の講義ノート(英語)(2019/12/04掲載) 西南財経大学の大学院向けのミクロ経済学の授業でゲーム理論を教えるにあたって作成した講義資料です(授業ではノートのメインな部分はほとんどカバーしていますが,いくつかの理論的なトピックはスキップしています).理論研究自体というよりも,実証・応用研究の研究者になることを目指す学生にどのように動機づけを与えるか,そして「理論の人たちの興味」がどのように応用に結びついているかをなんと
先日、気持ちのいいジャンプを目指してというQiitaの記事を見かけました。記事中では、マリオのジャンプについても触れられています。マリオというと、マリオブラザースやスーパーマリオブラザース等々、色々あるのですが、これはおそらくスーパーマリオブラザースの事だと思われます。ジャンプアクションゲームといったらスーマリですね。 そのマリオのジャンプの仕組みは「マリオの速度ベクトルを保存しておいて座標を計算するんじゃなくて~」と書かれていて、別サイトのブログへのリンクが張られています。 マリオのジャンプ実装法とVerlet積分 ただ、この記述については不正確であるという別のブログもあったりします。 マリオの完コピvol.28 ジャンプの解析と修正 ホントのところはどうなんでしょうか?世界で最も有名なゲームのジャンプがどのように処理されているのか気になったので調べてみることにしました。 原典にあたる
Competitive Programming Advent Calendar 2016 - Adventarの12日の記事になります。 この記事では、競技プログラミングの問題にたまに出てくる、グランディ数についての解説記事です。解説と言いつつ、ひたすら自己流の証明を書きなぐった記事みたいになってしまったので、読みづらいかもしれません・・・。内容としてはグランディ数の基礎的な部分しか扱っていないので、知っている人は読む必要がないかもしれません。 グランディ数を知ると何ができる? 競技プログラミングでたまに見かける、2人で交互に行う系のゲームの勝敗判定を行う問題の解法によくグランディ数が使われます。実装自体はとても簡単なので、知らないと全くわからないが、知っていると超簡単になる傾向があります。なので知っていて損ではないと思います。グランディ数自体はとても面白いので、少し興味があれば知っておく
この記事は、 「競プロ!!」 競技プログラミング Advent Calendar 2017 21日目 の記事です。 昨日は DEGwer さんの「数え上げテクニック集」でした。まだ全部読んでないけど凄かったです。 こっちでも同時に競プロのアドベントカレンダーが進められています。 Nim,grundy数がわかっていると、盤面を共有して二人で対戦し、勝敗が必ず決するタイプのゲーム問題がわりとサクッと解けます。 最近では 5日前、2017/12/16 の Atcoder Regular Contest 087 E で Grundy数の問題が出ました。 この記事の本題はNimの拡張されたゲーム、NimKの話です。 導入として、Nimとかgrundy数を知らないひとにもわかるようにスライドを作成しました。 絵を描くだけのつもりだったのにスライドになってしまいました。 適当すぎてわからん!と思うひとも
前回はGrundy数とは何かを説明しました。Grundy数に関する基本的な求め方は前の記事をご覧ください。augusuto04.hatenablog.com ただ、これだけではあまり多くの問題に使えないのでもう少し発展的な使い方を紹介します。 Nim 私は知りませんでしたが、有名なゲームらしいですね。ルールは次の通り。 n個のコインの山があります。プレーヤーは1つの山を選んで、その山から1枚以上のコインを取り除きます。これを2人で交互に行い、取り除くコインがなかったらその時点で負けになります。 ここで、上のような場合を(4, 2, 1)と今回は表します。 とりあえず各山についてGrundy数を求める まずは、各山についてGrundy数を求めます。 もし、0枚の山があるとするとここからは遷移できないのでGrundy数は0。 1枚の山からは0枚の山に遷移できるのでこれ以外で最小は1。 2枚の山
Grundy numberについての勉強をしたので、そのまとめ(自分用のメモでもある)。ちなみにNimberとも言うみたいですね。実際にいくつかのゲームを考えながら説明をしていきます。最後の結論まで少し長いです。 そもそもGrundy数ってなんだろう 具体例は後で出すとして、とりあえずGrundy数の求め方から紹介します。 ある状態におけるGrundy数はそこから遷移できる状態におけるGrundy数以外の最小の0以上の整数。 えーと・・・。これだけでは良く分かりませんね(笑)。じゃあ実際にあるゲームを考えてみます。 30を言ったら負けゲーム 以前、伊東家の食卓というテレビ番組で紹介されたゲームです。ルールは次の通り。 先手と後手が交互に1つ以上3つ以下の整数を1から順に30まで言っていく。 先手は1から初め、30を言った人が負け。例えば、先手:1, 2, 3 後手:4 先手:5, 6 後手
Grundy number (Nimber) について説明する。 Nimber - Wikipedia Sprague–Grundy theorem - Wikipedia Grundy number はゲームにおいて先手・後手必勝の判定に使われる。Grundy number は「現在の状態から遷移できる状態達の Grundy number の中に存在しない最小の自然数」として再帰的に定義される。形式的に定義するならば、ゲームの状態全体 $S$ に対して Grundy number は関数 $g\colon S \to \mathbb{N}$ であり以下で定義されるものである。 \begin{align} g(x) = \mathrm{mex}\{g(x') \mid x' \in N(x) \} \end{align} ここで $N(x)$ は $x$ から遷移できる状態全体の集合であり
とこぷよ等、邪魔するものが無い場合自分の連鎖のみ考えればいいのですが、実際の対戦では対戦相手がいます。なので対戦相手のことも考えなければいけません。ぷよぷよ(初代)では、相殺がないので、相手を埋められる量の連鎖(5連鎖)をすればいいですが、通以降は相殺があるので、当然勝つためには連鎖数が多ければ多いほどいいはずです。しかし、ある程度連鎖数が大きくなると、次の法則が成り立ちます。 後撃ち有利の法則 (以下、図は左を1P、右を2Pとします) 左図のように、今1Pが10連鎖、2Pが8連鎖を作っているとします。 当然10連鎖>8連鎖だから、「今1Pが連鎖すれば1Pの勝ちだ」と思うかもしれません。 しかし、連鎖は発火してから終わるまで結構時間が掛かります。この間に2Pは連鎖を伸ばす事が出来ます。 だから、先に大連鎖を打ってしまうと相手に連鎖を伸ばされ、負けてしまうのです。 つまり、対戦では連鎖を後に
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く