Il problema è almeno NP-difficile, con una riduzione da 3-SAT.
In primo luogo prendere in considerazione il problema di trovare un percorso dal Inizia alla Exit dei seguenti grafo orientato con la restrizione che nessun percorso può visitare tutti i tre nodi (quadrati) di una clausola:
( X1 ∨ X2 ∨ X3 ) ∧ ( X1 ∨ ¬ X2 ∨ X4 )
Trasformiamo questi grafici in una rete di switch. Per questo usiamo tre gadget:
- Ogni nodo circolare e bordo bidirezionale diventa a filo , formando le connessioni tra gli interruttori.
- Ogni fronte diretto diventa a gadget a senso unico costituito da un singolo interruttore (vedi sotto).
- Ogni nodo quadrato rappresenta uno dei tre switch che fanno parte di una clausola gadget (vedi sotto).
Nelle illustrazioni seguenti, gli interruttori sono disegnati come due frecce in arrivo, una delle quali è tratteggiata (disabilitata). La direzione del bersaglio viene disegnata con un cerchio nero (in modo tale che la freccia solida debba trovarsi sul lato del cerchio).
Nota: Useremo grassetto per distinguere il uscita del grafico dalle uscite dei gadget.
UNBBUNX1X2X3X1'X2'X3'
Ricordalo per il grafico originale, trovando un percorso che ha portato all'uscita e non ha visitato tutti e tre i nodi quadrati di una clausola era NP-completo. Ora considera il problema di raggiungere l' uscita del grafico trasformato senza preoccuparti delle posizioni target degli interruttori.
Si noti che qualsiasi percorso che rappresenta una soluzione al problema del grafico originale è anche una soluzione per il grafico trasformato. Supponiamo quindi che un percorso per il grafico trasformato non sia una soluzione per il grafico originale. Ciò può accadere in due casi:
- BUN ).
- Un percorso attraversa tutti e tre i percorsi di alcuni gadget Clausola .
Nel primo caso, il gadget a una via deve essere stato prima attraversato nella direzione prevista, nel qual caso il percorso avrebbe potuto evitare di attraversarlo in primo luogo.
Considera quindi il secondo caso in cui il percorso attraversa tutti e tre gli interruttori di alcuni gadget Clause . Quindi quel gadget avrà tutti i suoi tre interruttori girati (vedi sotto). È qui che utilizziamo le posizioni target. Si noti che la spina dorsale grigia del gadget Clause non può più essere raggiunta, il che significa che gli interruttori non possono più essere indirizzati alle loro posizioni target. In questo caso, diciamo che questo gadget Clausola è irrecuperabile.
Resta da dimostrare che per qualsiasi soluzione del problema del grafico originale, gli interruttori del grafico trasformato possono essere posizionati nella loro posizione target. Per questo, ci avvaliamo del fatto che il cavo di uscita può essere raggiunto solo quando esiste una soluzione, oppure alcuni gadget della clausola diventano irrecuperabili.
Per posizionare gli interruttori nella posizione di destinazione, ora possiamo aggiungere ulteriori gadget a una via dal cavo di uscita all'ingresso di ogni gadget a una via esistente , nonché ai tre fili di uscita di tutti i gadget della clausola . Quindi, una volta che il token raggiunge l' uscita , tutti i gadget a una via aggiuntivi possono essere attraversati (e quindi posizionati nella loro posizione target), e anche mettere i restanti interruttori nelle loro posizioni target (a meno che non ci sia una clausola irrecuperabile). Infine, il token può tornare all'uscita e il puzzle è risolto.
Dobbiamo notare che i gadget della clausola possono essere recuperati solo se inseriti da un'uscita non attraversata; e a causa dei gadget unidirezionali posizionati tra i gadget della clausola e la variabile successiva, ciò non può accadere fino a quando non viene raggiunto il filo di uscita .
Quindi, il problema della rete di switch è NP-difficile.
Non è ancora chiaro se il problema è in NP o PSPACE. Una riduzione della durezza NP che costruisce una rete di switch planare avrà grandi implicazioni per le varianti limitate di Sokoban, in particolare perché tutti gli switch sono equivalenti al gadget Sokoban di seguito.