サイコロゲームのシミュレーション
mathtodonネタ
次の4種類のサイコロを使ったゲームを考える。
- 目がのサイコロA
- 目がのサイコロB
- 目がのサイコロC
- 目がのサイコロD
プレイヤーは4種類の中から1種類を選び対戦を行う。対戦は2人で行い、それぞれ選んだサイコロを振り、出た目が大きい方が勝ち、同じなら引き分け、小さい方が負けとなる。
このルールで多人数が対戦を繰り返すとき、どのサイコロを選ぶのが有利になるのだろうか。考え方は様々だろう。安定を望むのならサイコロBかもしれないし、最強の目を持つサイコロCを選ぶ人もいるかもしれない。あるいは、全体の使用率が公表されると戦略も変わるだろう。もちろん何をもって有利とするか、に応じても「答え」は変わる。今回は、各人がある戦略の下でサイコロを変更すると仮定してシミュレーションを行った。各種サイコロの使用率の変化について考えたい。
シミュレーションはjuliaを利用した。式を直観的に掛けるし、適当に書いても速いし、ほんと優秀。実装の都合上、次のような条件を課した。
条件
- プレイヤーの総数は200名。
- ランダムに1列に並べ、前後のプレイヤーで対戦を行う。
- プレイヤーは後述する戦略に従い、サイコロを選ぶ確率分布を決める。
- これを10回繰り返し、行われた1000試合の使用率データを記録する。
- 以上を100あるいは1000セット繰り返し、グラフにする。
注意点
- プログラム上プレイヤーは各自のデータを保持できるが、今回は一律で全体の使用率のみを使用することにした。
- 使用率データの更新はデータを記録した時点である。つまり最初の1000試合は何も情報がない状態で行われ、残りは1000試合ごとに更新されていく。
- もっと厳しい事を述べると、全員が同じ分布に従ってサイコロを選択することになる。
これを踏まえて、以下では戦略ごとにグラフを紹介していこう。
戦略1.ランダムに選ぶ
サイコロを等確率でランダムに選ぶ。当然、使用率は25%付近を揺らぐことになる。
戦略2.勝利を優先する
各サイコロに重みを付けてランダムに選ぶ。番目のサイコロの重みは
で与える。使用率が高いサイコロに勝利しやすいサイコロを選びたい。 きれいなバンドが現れる。緑が最も使われ、一方でそのメタであるはずの橙が使われない。
戦略3.敗北を避ける
重みは
で与える。使用率が高いサイコロに負けやすいサイコロを選びたくない。 こちらは橙が突出しており、他の3種類は僅かに緑が優位だがどれも一様である。なるべく負けないようにするには橙を選ぶと良い。
戦略4.敗北と引き分けを避ける
重みは
で与える。使用率が高いサイコロに負けるか引き分けやすいサイコロを選びたくない。 こちらは戦略2とほぼ同様な結果になった。ただし結構ブレが大きいようだ。
戦略5.引き分けを避ける
重みは
で与える。使用率が高いサイコロに引き分けやすいサイコロを選びたくない。 予想外に面白い結果になった。カオスの中に潜む周期性というか、ある種の可積分性が隠れているように感じる。
各自バラバラの場合
上記の5つの戦略を、それぞれ40人ずつに取らせてみた。 戦略2とそれほど変わらないが、緑と紫が拮抗しているように感じる。相変わらず橙は人気がない。
チートサイコロに変えてみる
サイコロBをというチートサイコロEにしてシミュレーションを行ってみた。
戦略2
戦略2で使用率100%にならない。
勝率+引き分け率
橙と緑の環境になったが、それでも100%にならない。
(勝率+引き分け率)÷敗北率
これでようやく100%になった。
元の問題に戻る
ということで、
という式で最初の問題のシミュレーションを行ってみた。
引き分け率を除外する。
なんとも不思議な結果である。
所感
モデルとしては簡単な部類なので、数式で厳密解が得られる可能性はある。何か良いアイディアがあったらマストドンでトゥートして頂けると助かります。
GAの作り方
GAはR.D.Arthanにより一般的な構成方法が与えられている。
R.D.Arthan. A Minimalist Construction of the Geometric Algebra. arXiv:math/0607190v2 [math.RA] 9 Jul 2006.
GAの構成
をポセット、つまり半順序集合とする。は単位的可換環とする。signatureと呼ばれる写像を与えておく。基本的にsignatureの値はとするのが一般的だが別に何でもよい。ここでをの有限部分集合全体として、各について記号を用意する。このとき自由-加群を
と置く。
GAの特徴は自乗するとスカラーになるということだった。上記においてスカラーとはの係数である。これを集合論的に表すなら、は対称差によって表されるべきである。このとき積は-双線型かつ結合的である必要がある。仮に
と表せるとすると、
が成り立つ。対称差は結合的だから、結局
が成り立たなければならない。逆にこれが成り立てば
と定めることにより、何らかの結合的代数を考えることができる。
こうした形で定義可能な代数は色々あると思うが、Arthanの方法を用いてGAを作ってみよう。まずに対して
と定める。このときで
が成り立つ。同様に
である。故に
が成り立つ。
次に
と定める。このとき上記の考察により
が成り立つ。実際ベン図を書いてみれば分かると思うが、
であるための部分は左右で等しくなる。
上記の代数を幾何代数(Geometric Algebra)という。なお、についてと表すのが便利である。
例 として通常の大小関係を考える。signatureはのとき、のときとする。このときと置く。このとき
で生成される部分代数をと表せば、以前やった平面のGAや空間のGAなどになる。
良く知らないがミンコフスキー空間だととするのかな。
GAの対称性
これからGAの性質について調べていくことになるが、簡単な場合は次のように計算できる。
- である。
- が比較可能ならである。
- が比較不可能ならである。
より一般な場合はもう少し複雑な計算をする必要がある。
補題 について
が成り立つ。
(証明)の関係式
を思い出そう。として
が成り立つ。とすると
だが、ここでとを交換すると
が成り立つ。とすると
だが、やはりとを交換すると
が成り立つ。
を辺々足し合わせると
を得る。ここでであることに注意すれば
となる。
系 について
が成り立つ。
(証明)補題より
が従う。
この系を踏まえると、次の対称性を定義することができる。
定義 上の演算を次を線型に拡張して定める。
- をinvolutionという。
- をreversionという。
命題 について以下が成り立つ。
- である。特にである。
- である。特にである。
つまりについて
が成り立つ。
(証明)involutionについては
より分かる。また定義よりである。
reversionについては
より分かる。また定義よりである。
この二つの演算はを何回か掛けるだけなので可換である。この合成
をconjugationと呼ぶ。conjugationは
を満たす。
GAはが一定のものをまとめて、次数付き代数と見なすこともできる。このとき偶数次数と奇数次数に分けることができる。対称差の性質よりであり、である。
所感
気まぐれでポセット上に定義したが、GAは大小関係の有無程度の情報しか持っていないので、このような一般化による「うまあじ」は少ないかもしれない。
3次元空間のGA
前回は平面のGAを紹介したので、今回は3次元空間のGAを紹介しようと思う。
基本的にやることは変わらない。3次元空間のGAとは、をgeneratorとする-代数であって、relationが
及び
であるものをいう。ベクトル空間としては8次元で、基底は
である。それぞれが張る線型空間の元をスカラー、ベクトル、2ベクトル(バイベクトル)、3ベクトル(トリベクトル)などと呼ぶことは平面のときと同様である。この代数をやと表す。
対応により3次元ユークリッド空間の点をのベクトルと同一視することができる。この同一視の下でについて
が成り立つ。スカラーは内積である。そこで残りの2ベクトルをウェッジ積で表せば、GAの基本式
を得る。
平面のGAと同様に内積は対称で、ウェッジ積は反対称である。故にであるからが成り立つ。また
や
も成り立つ。特にとが直交している()ならだからとなる。従って内積はベクトル同士の近さ具合、ウェッジ積はベクトル同士の離れ具合を表しているともいえる。
と置くと、が成り立つ。同様にはを満たす。更にであり、を得る。実は四元数(クォータニオン)との対応を
で与えることができる。ただしにおける基底の取り方をcyclicにしていないため、符号が逆転している。もっとも一般のを考える際はcyclicに取る必要性が薄い。なのでGAの視点からすればハミルトンは四元数をで定義するべきだったのかもしれない。
ベクトルのに関する反射は同様にで与えることができる。次に考えるべき操作は回転だが、GAでは回転軸と角を与えるのではなくrotatorと呼ばれる2ベクトルを考える。回転は平面的な動きであり、3次元空間の場合はたまたま回転軸の直交補空間が2次元だったが一般には異なるためである。さてハミルトンは回転が二回の反射により実現できることを示したそうだ。まず平面内の回転を考えよう。平面内のベクトルを回転させたいとする。回転には向きがあるので平面内に2本のベクトルを取り、から見た側への回転を考える。との成す角をとする。このときに関して反射したものを更にに関して反射したものは角の回転になっている。(証明は簡単な平面幾何。)つまりが回転を与える式となる。をrotatorと呼べばが回転の式となる。コンピューター上ではを単位ベクトルで取るのが普通らしい。恐らくゼロ除算を避けるためだろう。一般のをで回転させるには、をとが成す平面への射影部分と直交部分に分ければよい。とは直交するのでが成り立つから、
より回転の式は変わらない。
古典力学とGA
ヘステネスがGAを提案した大きな理由の一つとして物理学への応用がある。GAのウェブサイトを見るとその範囲は広く、量子力学や重力理論にも渡るそうだ。 Geometric Calculus R & D Home Page
自分は物理を良く知らないが、分かる範囲で古典力学をGA上で解釈する方法について説明したいと思う。
古典力学では時刻での粒子の位置ベクトルなどを扱う。これをGA上で解釈する方法はいくつか考えられて、一つはからへの関数である。適切な位相の下で微分演算が定義でき、ライプニッツ則なども示せるはずだ。もう一つは上の代数としてのGAではなくて適切な函数体(特に微分体)の上でGAを考えるというものである。この場合は微分などの定義をGAへ拡張することになる。どちらが良いのかは分からない。こういった議論は必要な性質を見極めた上で改めて行うほうが健全なのかもしれない。いずれにせよ適宜微分などを未定義のままに使用することを認めてしまおう。
はを含むので、普通のニュートン力学を実行するおもちゃは全て揃っている。すなわち粒子の位置はベクトルであり、速度や加速度もベクトルである。質量(スカラー)の粒子に働く力をベクトルで表せば、ニュートンの運動方程式は
となる。GAにおけるもっとも大きな違いは角運動量(angular momentum)だろう。通常は
と外積を用いて表現されるが、GAでは
という2ベクトルで表現される。確かに自分も、速度や加速度をベクトルで議論することに違和感がなかったが、角運動量まで位置と同じ立場で扱うのに疑問を感じていたかもしれない。2ベクトルという別物なのだと思えばそれほど変な気はしない。角運動量の時間変化は
であるから、トルクについてで表される。
中心力の場合は力はと並行なのでとなる。つまり角運動量は一定となる。
所感
分からなさを解決するためにブログを書いてるんだけどやっぱりよく分からないと筆も進まない。GCに関する文献が少なすぎるというか、本は電子版でも1万するのでちょっと手が出せない。位相やら収束の議論やらちゃんとしてるのは無いのかもしれないなぁ。
前回ヘステネスを紹介するときに過去の人っぽい書き方をしたけど多分まだ御存命の現役でした。