我想知道以下简单问题是否已经研究过,是否知道任何解决方案。
令G为有限(MxN)网格,S为G单元的子集(“小块”)。如果两个碎屑的坐标最多相差一个(即,如果绘制为正方形,则它们共享至少一个拐角点),则称为两个(局部)连接。
现在,可以通过排列网格的线和列来尝试连接碎屑(它们的集合)。换句话说,目标是提出线的排列和列的排列,以使生成的网格中的任何两个碎屑通过(局部)连接的碎屑链连接。
问题:总有解决方案吗?
我不太清楚该如何进攻。由于缺乏更好的主意,我编写了一个原始程序,该程序通过蛮力寻找解决方案(它会随机生成排列并检查生成的网格是否连接了碎屑)。到目前为止,该程序始终在较小的(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的任何维度。我认为可以考虑其他推广。
提前致谢,
亚恩·戴维
2
有趣的问题。有什么应用吗?
—
Suresh Venkat
@Tsuyoshi:您说得对,我发布的数字有解决方案(您提供的解决方案)。我删除了它。
—
Marzio De Biasi