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).
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 dee 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 (em), 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á)