问题 可以在图中放置最大数量的多米诺骨牌


假设方格纸上有一些数字。这个数字的两边直接在方格纸上。图可以具有任何(甚至不是凸起的)形状。如何找到可以放在该图中的最大多米诺骨牌(1x2矩形)。不允许将多米诺骨牌放在另一个上。当它的两侧正好落在方形纸的线条上时,允许以这种方式放置多米诺骨牌。


10316
2018-01-24 09:03


起源

你有什么试图找出自己的?这到底是什么问题?你能举一些例子吗?这是家庭作业吗? - oezi
这不是一个功课,我从我的朋友那里得到了这个问题,试图用铅笔和纸来解决它而不能。现在除了暴力之外我什么都不知道。我试过了几个euristics,但总有一个例子,当我的解决方案不是最好的时候。 - Sergey Demyanov
@Sega:你需要更准确地陈述问题,否则它可能会被关闭。例如,边界是如何定义的? - Paul R
我重写了这个问题并添加了一些关于形状的陈述。 - Sergey Demyanov
我代表我的问题是什么意思? - Sergey Demyanov


答案:


看起来像 二分图中的最大基数匹配问题。正方形是顶点,多米诺骨牌是属于匹配的边。

要看到图表是二分图,想象正方形是棋盘画的。黑色只与白色相邻,反之亦然。


14
2018-01-24 10:49



+1美丽。我为了不看这个而踢我自己。 :-) - templatetypedef
哇好漂亮!好像是对的! - Sergey Demyanov
这个解决方案可以推广吗?例如,如果domiNos是3x1或4x2怎么办? - templatetypedef
@templatetypedef:是的,当然可以推广!它只是“超图”中的匹配:) - Rafał Dowgird


您可以使用邻居自由方格的数量将方块分类为类型0,1,2,3或4。

我认为应该有效:

  1. 找到一个1型方块,以唯一可能的方式放置多米诺骨牌并重复

  2. 另外,找到一个由两个连续的2型和3型正方形组成的自由角落,放置一个多米诺骨牌并转到1

  3. 否则,将多米诺骨牌放在任何类型2的方格中,然后转到1

  4. 你完成了


0
2018-01-24 11:13



是的,这基本上是最简单的最大匹配算法。 - Thomas Ahle