Elsieですべての部分群を列挙する

現行のElsieではA5の(に限らず)すべての部分群を列挙することはできない.単純群から合成するという方法も考えてみたのだが,別策として,点対を含む群を構成することを考えてみる.現行の部分群検定は①正規部分群を生成するモードと②単純に分解するモードに分かれているが,これにさらに点対を含む分解を加えると論理が必要以上に込み入ってしまうので,別立てで改造することにする.

部分群検定でused配列の使い方に疑義がある.関数本体では準同型検定.正規部分群の場合に限ってusedをマークしているが,それから呼び出される 追加登録 では逆に正規部分群検定でない場合に限りオンにしている.⇒usedの使われ方を点検する必要がある.⇒いや,その前にusedを無視したらどうなるか?というチェックをした方がよいのではないか?

※一番外側のiループでは台集合の並び順に原則すべて生成することになる(正規部分群の場合はつねにその動作を行う)が,その後の追加登録で追加されたノードを処理済にするためのマークになっているので,現行論理でよいと思われる.

usedを無視したらどうなるか?⇒A5の部分群は61個ということになった.ただし,位数は2,3,5の三種しかない.台集合を比較すると重複しているので,やはりusedを無視するというのは間違いだ.ただし,部分群の合計が61になるというのはそれ自体問題なので調べておく必要がある.というか,i=1~N-1までの部分群を作って,それに2を足しているのだから当然の数字だ.

ノード対を含む部分群を生成する場合もusedと同様の仕掛けが必要になる.2次元のテーブルを作らなくてはならないが,それに記載されている場合にはパスするというのでよいのだろうか?群表に記載された対はすべて除外されることになるのだが…

まだ,ロジックは書き始めたばかりだが,「■群A5は12個の部分群を持つ合成群である■位数3X1 位数12X9」というメッセージが出力された.本来なら位数3はx10,位数12x5だが,位数12の部分群が生成できたということはこの方針が間違っていなかったことを示していると言えそうだ.外側のiループですでに部分群に入っているかどうかを無視して生成するようにしたところ,■群A5は76個の部分群を持つ合成群である■位数2X1 位数3X1 位数5X1 位数6X4 位数10X3 位数12X64 という結果になった.これには相当重複が入っているが,位数10の群が出てきたというのはよい傾向だ.

位相10の部分群は6個あるのでまだ漏れはあるが,当初論理で位数2x15,位数3x10,位数5x6は確定しているので,位数4x6(不足数4)と位数5x5(不足数4),位数6x10(不足数6),位数10x6(不足数3)という状態だ.ともかく,重複が発生しないような仕掛けにしなくてはならない.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA