这个经典的益智书籍游戏NP是否完整?


10

有一个经典的益智书籍游戏,与填字游戏非常相似,不同之处在于给出了单词列表,然后给出了由单位正方形组成的正方形板,其中一些正方形像填字游戏一样被涂黑,并且一些方块中已经预先写了一个字母。目的是将列表中的每个单词一次性写入拼图中一次,其中每个单词在水平(从左到右)或垂直(自上而下)被写入未涂黑的连续方块中,并且在您写入一个单词时,字词结尾两侧的两个正方形必须涂黑或从黑板上除掉。同样对于预先写成某些方块的字母,与这些方块重叠的单词也必须遵守预先写好的字母。N×N

现在,如果我们假设单词的大小是固定的,那么我们将决定是否可以使用列表上的每个单词,一次且仅一次NP完全问题,如果董事会的边长是不固定?

Answers:


6

很抱歉回答一个旧帖子。

我一直在思考,我认为固定字母的问题也是NP完全的。

我要减少正三分之一的SAT到这个单词问题

昨天我遇到了解决问题的想法。在再次查看该问题之前,我很难使每个变量都不同,并且我意识到您允许使用带有已植入符号的正方形。这大大简化了减少。我的另一个想法是为每个不同的变量使用不同长度的单词。

减少

现在,我将描述我们将要使用的小工具:

可变小工具

我们用不同的数字索引标记每个变量,并且每个变量都有不同的数字。我们选择最大的索引,并用二进制表示数字,我们将其称为二进制链n

然后,我们为每个变量创建两个不同的垂直词。所有单词的长度为(仅当我们允许单词列表中包含重复单词时),其中| n | 是二元链n的长度。3+|n||n|n

例如,让最大索引为数字。当我们将此数字转换为二进制时,我们获得二进制的链100,该链的长度为3。因此,在此示例中,每个可变字的长度为641006

现在,我们为每个变量创建两个不同的词。一个单词的开头将带有符号,然后是下面的符号2,然后是代表变量索引的二进制链,我们用零填充该链,以使其长度与链n相同,最后与符号3相同。在最后。当然,可以更改符号。32n3

另一个词几乎相同,但是它将具有符号而不是符号343

例如,让最大索引为数字。对于索引为1的变量,我们将有以下两个单词:41

420014320013420014

1|n|

我们必须多次复制这些单词,对于SAT实例中每次出现的变量,我们将需要每个单词一个副本。这将在单词列表中创建重复项。我们可以通过在二进制链中添加另一个唯一标识变量的二进制链来消除重复项。这个新链将唯一地标识变量的每个出现。

为此,我们只需为变量的每个出现都分配另一个二进制链,然后在该变量的二进制表示形式的末尾将该链点空白。

niini|ni||ni|

这将消除变量字内的重复项。

x2

32010013 4201001432010103 4201010432010113 42010114

条款小工具

6

535354535453545353

435

mm|m||m|。我们将每个二进制链附加到属于该子句的子句单词。

现在,让我们看一下董事会中子句小工具的图片:

示例子句

(x2x3x4)(x1x2x3)(x2x3x4)

4

如果我们不允许单词列表中出现重复项,则必须修改图像。

5b5b5b10

b201010bb201110bb21001b

b

看一个例子:

子句,无重复

可变一致性小工具

这是一个小工具,可确保播放器只能为变量的所有文字列分配相同的值。

每个变量我们都会有一个新的小工具

我们将为每个小工具创建两个新词。

2kkx263 k64 k

x2

63636464

如果我们想避免重复单词,请注意每个一致性小工具都属于一个不同的变量。因此,我们可以将标识每个变量的二进制链附加到为此小工具创建的两个单词中。

现在,让我们看一下该小工具的示例图片:

可变一致性小工具

x2(x1x2x3)(x2x3x4)

3434。我们可以将该gagdet的其余单词放在另一行

如果我们不允许单词列表中的重复单词,则示例图片中的单词将为:

对于行:

6b6b0106b6b010

对于列:

b201001bb201010b

b

看一个例子:

一致性小工具,不再重复

条款转储小工具

这是一个用于放置未使用的从句单词的小工具。为此,我们只需要为每个子句单词在董事会的空白部分放置两行。这些行未连接到任何其他行或列。

这样我们就完成了减少,因为我们声称我们只需要6个符号即可减少。

如果先前的解释令人困惑,那么下面是示例SAT中正1的实例的示例图片,该实例已简化为以下单词问题:

示例板

如果我们不允许重复的话:

示例板,无重复

已减少的实例为:

(x1x2x3)(x2x3x4)


感谢您发布!Stack Exchange的一个不幸功能是,任何人都不太可能阅读长答案,因此您在这里完成的大量工作不太可能获得很多票。我会尝试阅读这篇文章,但是,老实说,我很有可能不会解决它。
David Richerby

2
@DavidRicherby Jaja是的。我在思考这个问题已有一段时间了。我以为,当我发布此答案时,每个人都会去投票支持它。没发生 好吧,没关系。如果您对减排量有疑问,可以问我
rotia

4

我认为从定向哈密顿路径进行的以下简化是可行的:

G=(V,E)s,tV

V{}V

vvvVvu(u,v)E

|V|

楼梯

|E|(|V|1)

sstt

现在,为了填充楼梯,只能在步骤中放置顶点词,并且为了连接两个顶点,必须在它们之间放置一个边词,该边词对应于图中的现有边。未使用的边缘可以放在板子的第二部分。第二个方向是微不足道的。

我认为这行得通(我画的正确性证明充其量不过是手挥手而已)。


1
stN×NN

这很好,似乎可以使用,但是字母大小不是固定的,就像我要求的原始帖子一样。是否可以使用固定大小的字母进行修改,并且仍然可以减少字体大小?
user2566092 2014年

uv
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.