【发布时间】:2022-10-24 01:02:10
【问题描述】:
我有一组拼图(三角形和正方形),例如表格
{[1, 2, 3, 4], [2, 4, 5], [1, 3, 6]}
现在,我想检查这些部分是否可以放在一个网格上。
一组没有有效映射的谜题将是
{[1, 2, 3, 4], [2, 4, 5], [1, 5, 6]}
我的第一个 ansatz 是将所有数字放在拼图集合中(在上面的示例中,它将是 1、2、3、4、5、6)作为图中的节点,并根据拼图连接它们(如果连接发生多次,仅考虑一次)。 然后我检查结果图是否是平面的(这很便宜,它会随着边数的 2 次方缩放)。
然而,平面性仅对有效映射是必要的,但还不够,因为它没有考虑拼图必须形成正方形或三角形(没有拉伸或类似)。
所以我想到了一个禁止边缘的列表,通过循环一组谜题来附加它,但是,我被卡住了。是否有人有一个聪明的想法来回答这个问题:一组给定的谜题是否在网格上形成了一个有效的布局(最多在多项式时间内)。
集合的长度是任意的
编辑:对于诸如 [1, 2, 3, 4] 之类的拼图,四个数字必须形成一个正方形,并且这些数字在网格上出现的顺序无关紧要。这同样适用于三角形。因此,交换例如上图中的 2 和 4 仍然是有效的赋值
【问题讨论】:
-
在我看来,棕色方块应该是 1,2,4,3(顺时针)或 1,3,42(逆时针)。当然,它永远不可能是 1,2,3,4,就像您在问题的第二行中所说的那样。
-
它可以是 1、2、3、4 的任意排列
-
你需要澄清你的问题。顶点标签的任何排列都非常令人困惑。请解释一下你的意思。
-
您可以将 2 与 4 交换,两个拼图(红色和蓝色)仍然有效。也许我应该说拼图的顺序(或排列)不是先验确定的
-
放松 - 我更新了我的问题
标签: python graph planar-graph