読者です 読者をやめる 読者になる 読者になる

n次対称群

Ruby 数学

クラス Group についてはひとつ前のエントリを見てください。
変数 od に次数を入れます。かなり時間がかかる。自分の環境だと、5次で 40秒くらい、6次で 2.8時間くらい。次数が大きくなったら、結合法則の確認をスキップした方がいいかも知れない。

od = 5
perm = lambda do |num1, num2|
  h = {}; a = ""
  for i in 0..(od - 1)
    h[i] = num1[i].to_i
  end
  for i in 0..(od - 1)
    a[i] = h[num2[i].to_i].to_s
  end
  a
end

ar = (0..(od - 1)).to_a.permutation(od).map(&:join)
g = Group.new(Set.new(ar), false, &perm)

p g.ie                   #=>"01234"  単位元
p g.order                #=>120      位数
p g.inverse("32401")     #=>"34102"  逆元の例