Stavo scherzando con la demo di Google Blocky Maze e mi sono ricordato della vecchia regola che se vuoi risolvere un labirinto, tieni semplicemente la mano sinistra contro il muro. Funziona con qualsiasi labirinto collegato in modo semplice e può essere implementato da un trasduttore finito.
Lascia che il nostro robot sia rappresentato da un trasduttore con le seguenti azioni e osservabili:
- Azioni: vai avanti ( ), gira a sinistra ( ), gira a destra ( )
- Osservabili: muro davanti ( ), nessun muro davanti ( )
Quindi possiamo costruire il risolutore del labirinto sinistro come (scusate il mio disegno pigro):
Dove vedere un osservabile ci farà seguire il limite appropriato fuori dallo stato mentre eseguiamo l'azione associata a quel limite. Questo automa risolverà tutti i labirinti semplicemente connessi, anche se potrebbe richiedere del tempo dopo vicoli ciechi. Chiamiamo un altro automa migliore di A se:
fa rigorosamente più passi su solo un numero finito di labirinti, e
compie rigorosamente meno passaggi (in media; per varianti probabilistiche) su un numero infinito di labirinti.
Le mie due domande:
Esiste un automa finito migliore di quello disegnato sopra? Cosa succede se consentiamo trasduttori probabilistici?
Esiste un automa finito per risolvere labirinti che non sono necessariamente semplicemente collegati?