O problema é pelo menos NP-difícil, com uma redução de 3-SAT.
Primeiro, considere o problema de encontrar um caminho do início até a saída do seguinte gráfico direcionado com a restrição de que nenhum caminho pode visitar os três nós (quadrados) de uma cláusula:
( X1 ∨ X2 ∨ X3 ) ∧ ( X1 ∨ ¬ X2 ∨ X4 )
Transformamos esses gráficos em uma rede de comutadores. Para isso, usamos três gadgets:
- Cada nó do círculo e borda bidirecional se torna um fio , formando as conexões entre os comutadores.
- Cada borda direcionada se torna um dispositivo unidirecional que consiste em um único comutador (veja abaixo).
- Cada nó quadrado representa um dos três comutadores que fazem parte de um gadget de cláusula (veja abaixo).
Nas ilustrações a seguir, os comutadores são desenhados como duas setas de entrada, uma das quais é tracejada (desativada). A direção do alvo é desenhada com um círculo preto (de modo que a seta sólida acabe por ficar ao lado do círculo).
Observação: usaremos negrito para distinguir a saída do gráfico das saídas dos gadgets.
UMABBUMAX1 1X2X3X1 1′X2′X3′
Lembre-se de que, para o gráfico original, a localização de um caminho que levava à Saída e não visitava todos os três nós quadrados de qualquer cláusula era NP-complete. Agora considere o problema de alcançar a Saída do gráfico transformado sem se preocupar com as posições de destino dos comutadores.
Observe que qualquer caminho que seja uma solução para o problema do gráfico original também é uma solução para o gráfico transformado. Portanto, suponha que um caminho para o gráfico transformado não seja uma solução para o gráfico original. Isso pode acontecer em dois casos:
- BUMA
- Um caminho percorre todos os três caminhos de algum dispositivo de cláusula .
No primeiro caso, o gadget unidirecional deve ter sido percorrido primeiro na direção pretendida; nesse caso, o caminho também pode ter evitado percorrê-lo.
Portanto, considere o segundo caso em que o caminho percorre todos os três comutadores de algum dispositivo da Cláusula . Em seguida, esse gadget terá todos os seus três interruptores ativados (veja abaixo). É aqui que fazemos uso das posições-alvo. Observe que o backbone cinza do gadget Cláusula não pode mais ser alcançado, o que significa que os comutadores não podem mais ser direcionados para suas posições de destino. Nesse caso, dizemos que esse gadget de cláusula é irrecuperável.
Resta mostrar que, para qualquer solução do problema do gráfico original, os comutadores do gráfico transformado podem ser colocados na posição de destino. Para isso, utilizamos o fato de que a ligação Exit só pode ser alcançada quando existe uma solução ou algum dispositivo da Cláusula se torna irrecuperável.
Para colocar os comutadores na posição de destino, agora podemos adicionar dispositivos unidirecionais adicionais do fio de saída à entrada de todos os dispositivos unidirecionais existentes , bem como os três fios de saída de todos os dispositivos da cláusula . Então, quando o token atingir a Saída , todos os outros dispositivos unidirecionais podem ser percorridos (e, assim, colocados na posição de destino) e também colocar os demais switches nas posições de destino (a menos que exista uma cláusula irrecuperável). Finalmente, o token pode retornar à Saída e o quebra-cabeça é resolvido.
Devemos observar que os gadgets da Cláusula só podem ser recuperados quando inseridos a partir de uma saída não transferida; e devido aos gadgets unidirecionais que são colocados entre os gadgets da Cláusula e a próxima variável, isso não pode acontecer até que o fio de saída seja alcançado.
Portanto, o problema de rede do switch é difícil para NP.
Ainda não está claro se o problema está no NP ou no PSPACE. Uma redução de dureza NP que construa uma rede de comutação plana terá grandes implicações para variantes restritas do Sokoban, principalmente porque todos os comutadores são equivalentes ao gadget Sokoban abaixo.