これをよりよく説明するために画像を作成することにしました。自分の考えが正しいか、順列の合計を 75% 削減できるかを確認したいだけです。
代替テキスト http://www.freeimagehosting.net/uploads/45e5c6b05e.gif
これをよりよく説明するために画像を作成することにしました。自分の考えが正しいか、順列の合計を 75% 削減できるかを確認したいだけです。
代替テキスト http://www.freeimagehosting.net/uploads/45e5c6b05e.gif
小さな正方形のすべての可能な位置が6x6の正方形を埋め、「四半期」が4x4の正方形を埋めるため、順列の数を減らしていますが、75%は減らしていません。
四半期には「重複」があるため、実際には少し順列を追加しています。四半期は4x4であるため、中央の列に4つの正方形が重なり、中央の行にさらに4つの正方形が重なります。
それでも、これは小さな正方形ごとに実際に計算するよりも少ないです。
また、これを行うことで、2つの正方形でパフォーマンスをさらに向上させることができます。
あなたが2つの正方形、1と2を持っているとしましょう。あなたの正方形が次の場合:
11110000
11110000
00000000
02000000
これは次と同等になります。
00001111
00001111
00000000
00000020
と
00000020
00000000
00001111
00001111
したがって、グリッドの最初の半分(左)の2のすべての順列に対して、グリッドの最初の4分の1の1のすべての順列をループすることができます。これを第1四半期と第2四半期に行います(第1四半期は左上、第2四半期は右上です)。