第16講 魔方陣作成の高速化(数万倍へ)
第1話 自動生成を高速化(数万倍化)し、6次魔方陣まで作れるようにする
第15講は、力業でありさすがのコンピュータも可能なのは4次魔方陣までです。
もちろん、理論的には第15講の自動生成で何次でも可能なのですが、
5次魔方陣の段階で、1つ作るのに10分はかかってしまうでしょう。
6次になると忍耐強く1時間待ったとしても、おそらく1個も出来ないでしょう。
6次魔方陣になると、京(兆の1万倍)の単位を遙かに超える数の存在が予想されていますので、、
第15講の自動生成ですべて作り出すには、宇宙時間(宇宙の始まりから終わりまでの時間)でも足りません。
すべてではないにしても100個は、1分程度で作れるようにしたいものです。
実は、ちょっと改良するだけで、かなり高速化できます。
その効果は、6次魔方陣なら、数十万倍になります。
その小改良とは枠番後gの付け方を変えるだけです。
0 | 1 | 2 | 3 | |
0 | 0 | 8 | 9 | 4 |
1 | 10 | 1 | 5 | 11 |
2 | 12 | 6 | 2 | 13 |
3 | 7 | 14 | 15 | 3 |
0 | 1 | 2 | 3 | 4 | |
0 | 0 | 9 | 10 | 11 | 5 |
1 | 12 | 1 | 13 | 6 | 14 |
2 | 15 | 16 | 2 | 17 | 18 |
3 | 19 | 7 | 20 | 3 | 21 |
4 | 8 | 22 | 23 | 24 | 4 |
(赤の番号はx、濃紺の番号はy、ピンクの番号はgに対応)
つまり、対角線を最初に埋めてから、残りを入れるようにするだけで恐ろしいほど効果を発揮します。
現在の高校は、学科があり、選択があり、習熟がありと大変複雑になっています。
ですから、時間割を組むというは大変なパズルです。
場合によっては、1カ所変更しようとすると100駒間程度動いてしまうこともあります。
ですから難解なパズルなのです。
この時間割を組むときの鉄則は、条件の厳しい駒から入れていくです。
条件のきつい体育(同時に2展開できない、男女別の2クラス4選択など厳しい条件)や家庭科(調理実習の関係で4,5限のみ)から入れ、
次に条件がきつい非常勤講師の駒(曜日と時間が指定されている)を入れていくといった順で入れていきます。
条件の緩い駒は、自由に動かせるのに対して条件がきつい駒は動かすことが出来ないからです。
最初に条件の緩い駒で、埋め尽くすと自由度がなくなり条件のきつい駒は入らなくなります。
難問を解くコツは、条件の厳しいところからやっていくことです。
今回の番号付けは、条件の厳しいところからクリアの原則にしたがっています。
というのは、対角線以外は行と列の条件のみを満たせばよいのに対して、
対角線上はそれに対角線の条件が加わるからです。
では、皆さん番号付けを上表の通りにするにはどうしたらよいでしょうか。
VBA講義第1部へ
vc++講義へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
数学研究室に戻る