次の簡単な問題が以前に検討されたかどうか、また解決策がわかっているかどうかを知りたいです。
Gを有限(MxN)グリッド、SをGのセルのサブセット(「クラム」)とします。2つのクラムは、座標が最大で1つ異なる場合(つまり、正方形として描画される場合、少なくとも1つのコーナーポイントを共有する場合)、(ローカルに)接続されていると言われます。
これで、グリッドの行と列を入れ替えることで、クラム(全体として設定)を接続することができます。言い換えると、目的は、行の順列と列の順列を考え出すことで、結果として生じるグリッド内の2つのクラムが(ローカルに)接続されたクラムのチェーンによって接続されるようにすることです。
質問:常に解決策はありますか?
どうやって攻撃したらいいのかよくわかりません。より良いアイデアがないので、私はブルートフォースで解決策を探す生のプログラムを作成しました(ランダムに順列を生成し、結果のグリッドにクラムが接続されているかどうかをチェックします)。これまでのところ、プログラムは小さめの(10x10または7x14)グリッドでソリューションを発見しており、大きなグリッドは明らかに単純化した戦略の範囲外です(ソリューション全体でランダムにつまずくには時間がかかりすぎます)。
これは、プログラムによって解決されるグリッドの例です。
初期グリッド(クラムはXで示され、空のセルはドットで示されます):
0 1 2 3 4 5 6 7 8 9
0 X . X X . X . X X .
1 X . . . . X . . . .
2 . . X . . . . X . X
3 . X . . X . X . . X
4 . . . X . . . . . .
5 X X . . . X X . X .
6 . . . X . . . . X .
7 X . X . . X . . . .
8 X . . . X . . X X .
解決:
6 1 4 7 8 2 9 3 5 0
1 . . . . . . . . X X
4 . . . . . . . X . .
5 X X . . X . . . X X
8 . . X X X . . . . X
7 . . . . . X . . X X
0 . . . X X X . X X X
3 X X X . . . X . . .
6 . . . . X . . X . .
2 . . . X . X X . . .
当然、問題は任意の次元d> 2に簡単に一般化できます。他の一般化も検討できると思います。
前もって感謝します、
ヤン・デイビッド