Os quebra-cabeças 'zero-um' são NP-completos?


18

Estou interessado em uma pequena variante do ladrilho, o quebra-cabeça 'quebra-cabeças': cada borda de um ladrilho (quadrado) é rotulada com um símbolo de , e dois blocos podem ser colocados adjacentes um ao outro se o símbolo na aresta de um bloco for e o símbolo na aresta de outro bloco for , para alguns . Então, dado um conjunto de ladrilhos, eles podem ser colocados em um quadrado (girando, mas sem inverter os ladrilhos) com todas as arestas correspondendo corretamente? (Há também uma variante desse problema, na qual são fornecidas quatro arestas de e as peças devem se encaixar corretamente nesse quadro).{1...n,1¯...n¯}kk¯k{1...n}m2m×m1×m

Eu sei que esse problema é NP-completo para suficientemente grande , mas os limites que eu já vi em parecem bastante grandes; Estou interessado no problema para pequenos valores de e, em particular, para , o caso 'zero-um' (onde cada aresta é rotulada como ou e as arestas com um devem corresponder às arestas com um ) Aqui existem (com simetria rotacional) apenas seis tipos de ladrilhos (o ladrilho com todos os zeros, o ladrilho com todos os itens, o ladrilho com três zeros e um, o ladrilho com três zeros e um e os dois ladrilhos distintos com dois zeros e dois, '0011' e '0101'), portanto, uma instância de problema é apenas uma especificação dennnn=10 010 01me um conjunto de cinco números , , , , e (representando a contagem de cada tipo de bloco) com . Obviamente, o problema está no NP (com dado em unário), pois uma solução pode simplesmente ser exibida e depois verificada no polinômio (emT0000T0001T0011T0101T0111T1111T0000+T0001+T0011+T0101+T0111+T1111=m2mm), mas sabe-se que é NP-completo ou existe algum algoritmo de programação dinâmica que pode ser aplicado aqui? E o caso 'emoldurado', em que a especificação do problema também inclui as quatro arestas do quadrado a serem correspondidas? (Obviamente, se o caso não enquadrado for NP-complete, o caso enquadrado quase certamente também será)


2
Não pode ser NP-completo, pois existem apenas entradas possíveis, e pelo teorema de Mahaney você precisa mais do que isso para tornar um problema NP-completo (a menos que P = NP). Mas se você usar uma moldura, essa obstrução desaparecerá. Portanto, pode ser NP-completo com um quadro. θ(m10)
Peter Shor

1
Um passo intermediário seria provar que o problema de decidir se um quebra-cabeça de 6 peças parcialmente preenchido (ou seja, algumas peças já estão no tabuleiro e não podem ser movidas) pode ser completado corretamente é NP-completo.
Vor

Respostas:


3

Como você mencionou que está interessado em resolver esse problema com valores pequenos de , sugiro que você tente implementá-lo em um solucionador SAT ou como um programa linear inteiro (ILP). Qualquer um poderá codificar as restrições, mas de uma maneira ligeiramente diferente:n

  • Para o SAT, há uma codificação muito clara da escolha de qual bloco entra em cada quadrado e uma codificação um pouco menos limpa da restrição em relação ao número de cada tipo de bloco (usando aritmética de bits).

  • Para o ILP, há uma codificação muito clara da restrição em relação ao número de cada tipo de bloco disponível e uma codificação um pouco menos limpa das restrições nas quais os blocos podem ser adjacentes um ao outro (mas ainda é expressável, pois você pode expressar fórmulas booleanas arbitrárias no ILP).

Eu esperaria que para pequenas ou médias , esta abordagem pode funcionar de forma eficiente.n


Concordo que esse parece ser um meio razoável de resolver o problema, mas estou menos interessado em resolver especificamente as instâncias do problema do que em entender sua complexidade. (Por exemplo, se ele está em P, então há certamente algum tipo de abordagem de programação dinâmica para ele que com folga superar abstratas SAT / solucionadores de programação linear sobre o problema.)
Steven Stadnicki

n

nm

@StevenStadnicki, ahh, meu erro! Desculpe, eu não li com atenção suficiente. Isso faz sentido - obrigado.
DW

Não se preocupe - eu deveria ter considerado isso na frente; quando chegar em casa, tentarei editar a pergunta para usar uma parametrização mais "tradicional".
Steven Stadnicki
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.