言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

グングン群!

不変量とは何か isbn:4062573938: 随分前に買ったブルーバックスだが、積んであったのを久々のモスバーガーで読む。

そう、群だったのだ!僕がこの夏さんざん悩んだ OpenGL の行列。何で移動を組み合わせる事を積と呼ぶのか、しかも書き方が後ろ前なのか、元に戻すのをマイナス1乗なんて言うのか、この全ての強引さは、群と呼ばれる数学の伝統的なアイデアから来たものだったのだ。早くそれ言えよ。こんな風に、全く期待しなかった本で長年の謎が解けるというのは楽しい。

で、群ですが、まだ良く理解していませんが、プログラマにとっては関数の組み合わせと考えると分かりやすい。例えば、ハンバーガーを作る時に、肉を焼くという操作があって、次にパンを挟むという操作がある。この一連の操作を、

  • パンを挟む・肉を焼く

のように書く、これを積と呼ぶ。何で逆に書くかというと、多分

  • パンを挟む(肉を焼く(材料))

のように最初関数的に書いていたんじゃないかなと思う。さらに、ピクルスを挟むという作業を考えると

  • パンを挟む・ピクルスを挟む・肉を焼く

という操作になる。この作業を分割するとしたら、次のどっちのようにしても良い。

  • (パンを挟む・ピクルスを挟む)・肉を焼く のように挟む人と焼く人を分ける
  • パンを挟む・(ピクルスを挟む・肉を焼く) のように、外側と内側の担当者を分ける

ただ、

  • パンを挟む・肉を焼く・ピクルスを挟む

のように順番を変えてしまうとおかしくなる。これは群の重要な性質である。ちなみに、群の性質では

  • 肉を焼く^-1 ・肉を焼く

のようにマイナス一乗の操作(逆元とよぶ)をする事によって焼いた肉が生肉に戻るという事も許されている。この、結局何にもしない(サボる)事を I (単位元)と呼ぶ。

  • サボる・肉を焼く = 肉を焼く・サボる

単位元のときは交換法則が成り立つ。実際には肉を焼いた後でサボると肉が冷めてしまうのだが。バーガーの例はいささか荒唐無稽だが、三次元図形を描くときにはこういった知識が大層役に立つのだ。しかも、これと同じ概念が難しい方程式を解いたり暗号を解読するのに使われていると分かると感慨深い。ロマンだなあ。