Dato un labirinto bidimensionale in cui puoi dare 4 comandi "sposta su / giù / destra / sinistra". Conoscendo il labirinto ma non dove si trova la persona, come trovare la sequenza minima di comandi che garantisce l'uscita dal labirinto? Sto cercando una singola sequenza di comandi che funzionerà indipendentemente da dove nel labirinto inizi.
Supponiamo che se al nostro partner viene dato il comando "sposta a destra" quando c'è un muro sulla destra, rimarrà semplicemente dove si trova.
In altre parole, ci viene dato un labirinto e dobbiamo scegliere una sequenza di comandi. Quindi, il nostro partner verrà posizionato da qualche parte nel labirinto e seguirà la sequenza di comandi che abbiamo scelto in anticipo. Vogliamo che questa sequenza assicuri la fuga del nostro partner, indipendentemente da dove il nostro partner sia stato inizialmente posizionato. Si noti che i comandi consentiti non hanno alcuna istruzione condizionale, quindi non possono seguire una sequenza diversa a seconda del partner.
Esiste un algoritmo del tempo polinomiale per costruire una tale sequenza, data una descrizione del labirinto?
Yuval Filmus menziona questo è un caso speciale di un problema di sincronizzazione delle parole e potrebbe essere correlato a sequenze trasversali universali. Ho anche trovato un documento che sembra rilevante:
Il labirinto simultaneo che risolve problema . Stefan Funke, André Nusser, Sabine Storandt. AAAI 2017.
Sfortunatamente per i grafici generali questo sembra essere un problema irrisolto, ma mi chiedo se potrebbe esserci un buon algoritmo per questo caso specifico. Ho trovato un approccio candidato: etichettare ogni posizione con il numero di passaggi minimi necessari per uscire e tenere traccia di tutti gli agenti nel labirinto. Potrebbe essere possibile effettuare una ricerca A * in questo modo.