人気ブログランキング | 話題のタグを見る

巡回群を使った部分群の発見

前回の記事で、部分群とそれによる類別を見つけることで、 群 G = {a1,a2,a3,a4,a5,a6} の操作が、C = {a1,a2,a4} の3つの要素だけで合成できるのを発見することができた。これは、便利な方法だが、どうやれば部分群を見つけることができるだろうか。

それは、群 G の要素をひとつ取り上げ、その巡回群を作ることで発見できる。群 G の要素 a からその累乗を次々に作っていったとき、a, a2, ... , am , ... それらの全てが異なることはできないので、必ず同じ要素があるはずだ。それを ar = as と置くと、ar-s = e となるので、e は a の累乗に属している。そこで、{e, a, a2, ... , am-1} という集合を作るとそれは、群 G の部分群になる。この群を巡回群という。また、mを要素 a の位数という。

詳しい証明は教科書に任せることにして、これを利用して群 G の部分群を見つけてみよう。方法は簡単だ、群 G の要素を取り上げてその累乗を次々に作っていけばいい。群論電卓で実験した結果を次に示す。

Prelude> :l group.hs
[1 of 1] Compiling Main ( group.hs, interpreted )
Ok, modules loaded: Main.
*Main> mapM_ (\x -> print $ take 6 $ iterate (*x) x) [a1,a2,a3,a4,a5,a6]
[a1,a1,a1,a1,a1,a1]
[a2,a3,a1,a2,a3,a1]
[a3,a2,a1,a3,a2,a1]
[a4,a1,a4,a1,a4,a1]
[a5,a1,a5,a1,a5,a1]
[a6,a1,a6,a1,a6,a1]

この結果を見ると、群 G には少なくとも {a1}, {a1,a2,a3}, {a1,a4}, {a1,a5}, {a1,a6} という5つの部分群があることが分かる。あとは、これらによる類別を作ることで、G の演算表を分析することができる。

例えば、{a1,a4} による類別を求めるために、{a1,a2,a3,a4,a5,a6} と {a1,a4} の演算表を作ってみる。

*Main> printab [a1,a2,a3,a4,a5,a6] [a1,a4]
[a1,a4]
[a2,a5]
[a3,a6]
[a4,a1]
[a5,a2]
[a6,a3]

上の結果から、群 G が部分群 {a1,a4} によって {a1,a4}, {a2,a5}, {a3,a6} に類別されることが分かる。したがって、群 G の要素が {a1,a4} と {a1,a2,a3} の直積で表せることが分かり、前回のような分析ができる。

群の積の演算表さえ分かれば、その演算の本質的な演算を機械的に見つけ出すことができるのは便利だ。
by tnomura9 | 2012-08-31 23:57 | Haskell | Comments(0)
<< 左乗法、右乗法、共役 部分群 >>