目次へ
課題1
- 本論文では生成元として3項巡回置換を使っている。本論文のように取り上げた理由と背景を理解する。
課題2 ( 解決済み )
- 実際のゲームではブランクをスライドして解答を求める。3項巡回置換をブランクのスライドの手順として求める。
- ブランク(16) の移動を、番号のついたタイルとブランクの"互換"として表現する。
- ブランク(16) の移動に関してはルールベースプログラムで実現する。
- 2つの関数 try12 と tryBlankMoveFixedCycles で実現できた。
- 関数 try12 の説明
1. 初めの配置を start とし3項巡回置換を cycles をする。
2. cycle を start に作用させた後の配置を destination をする。
3. try12[ start, desination, cycles ] でブランクの互換として求めることができる。
4. しかしながら効率が悪いことが分かった。その解決方法として次の関数を作った。 - 関数 p = tryBlankMoveFixedCycles の説明
1. cycles に含まれる数のタイルからマンハッタン距離が最も小さい位置 neibour を決める。
2. cycles に含まれる数のタイルを固定してブランクを位置 neibour に移動させる手順を求める。 - 以上の関数を使って形式的に次のように表現できる。ここで p^-1 は p の逆とする。
p^-1 [ try12[ p[ start, destination, cycles ] ] ]
課題3
- ブランクの位置は右下端以外の場所にある配置からゲームを始める場合、この論文の方法では答えを見つけることができない。何故ならブランク(16)を含む3項巡回置換の生成元を含んでいないからである。従ってこの論文は特殊なケースについての解法である。
- ブランクが右下端以外の場所にある配置からゲームを始める場合、次のように実行すればよいことに気がついた。
1. ブランクを右下端に移動する。
2. この配置で 群論を使った解法手順を決める。 - ブランクを右下端に移動させる関数として tryBlankMove44 を作ることができた。
課題4 ( 解決済み )
15パズルを Grid を使って表示する。3項巡回のタイルに色を付けて表示する。
課題5 ( 解決済み )
3 項巡回をブランクのスライドで表現する"互換"を求める関数 try12 を作ったが、効率が悪いので改善を試みる。その方策として
- ブランクの移動を3項巡回置換の付近に制限すればよい。