我正在尝试使用algorithm X来解决问题。我认为问题可以表现为一个确切的封面问题,但我不确定。
这是: 一组tetrominos是否适合特定的几何图形。 例:
例子是两个“duominos”,需要适合矩形。 我看到pentaminos problem是确切覆盖问题的一个着名例子。但在这里我并不是要“完全覆盖”矩形,我想知道我的作品是否适合矩形,当然还有哪种配置。
对于pentaminos problem,图的元素是宇宙,而集合的集合是pentaminos。 但这是我的问题....对于我的问题,我不想绝对地填充图中的所有元素,我只想把我的所有部分都放在我的图中。
我的想法是将这件作品视为宇宙(因为我想“覆盖”我的所有作品)和我的人物的元素作为集合。
也许它真的很愚蠢和不可能,但是有人知道如何为这个问题构建算法X中所需的矩阵吗?
答案 0 :(得分:1)
假设我们有一个T形tetromino和一个2x3区域,我们希望它适合它。我们可以通过为每个tetromino的每个部分分配一个数字和一个字母来确定部分覆盖集。
A [1][2] 3 B [ ][1] C [1][ ]
[ ][4] [4][2] 4[2][ ]
[ ][ ] [ ][3] [3][ ]
然后,在矩阵中,您将A1设置为1,因为框A包含tetromino第1部分。您将A3设置为0,因为框A不包含tetromino第3部分。
1 2 3 4
A [ 1 1 0 1 ]
B [ 1 1 1 1 ]
C [ 1 1 1 0 ]
您最终会在矩阵中使用box_area * piece_orientations行,您可以通过利用盒子和tetromino的对称性来减少这些行。 但是,您不需要使用算法X.您只需要检查并查看是否有任何没有零的行,这将是您的解决方案
如果您使用该框作为您的Universe,算法X将尝试找到完全覆盖框的tetrominos组合,这不是您想要做的。
算法X不适合这项任务。该算法旨在找到适当的集合组合以覆盖宇宙。您正试图找到一个覆盖宇宙的单个集合(框)(tetromino)。
你的问题实际上更多的是包装问题,而不是确切的封面问题。如果你试图将多个tetrominos装入一个盒子,那么它可能是一个包装问题或一个确切的封面问题,这取决于你是否允许盒子里有空的空间。