Wygłupiałem się z prezentacją Google Blocky's Maze i przypomniałem sobie starą zasadę, że jeśli chcesz rozwiązać labirynt, trzymaj lewą rękę przy ścianie. Działa to dla każdego prostego połączenia labiryntu i może być zrealizowane przez skończony przetwornik.
Niech nasz robot będzie reprezentowany przez przetwornik z następującymi czynnościami i obserwowalnymi:
- Czynności: idź do przodu ( ), skręć w lewo ( ), skręć w prawo ( )
- Obserwowalne: ściana przed ( ), brak ściany przed ( )
Następnie możemy zbudować solver lewostronny jako (przepraszam za mój leniwy rysunek):
Widzenie obserwowalnego spowoduje, że będziemy podążać za odpowiednią krawędzią ze stanu podczas wykonywania akcji związanej z tą krawędzią. Ten automat rozwiąże wszystkie po prostu połączone labirynty, chociaż może zająć trochę czasu po ślepych zaułkach. Nazywamy inny automat lepszym niż A, jeżeli:
robi znacznie więcej kroków tylko na skończonej liczbie labiryntów i
wykonuje znacznie mniej kroków (średnio; dla wariantów probabilistycznych) na nieskończonej liczbie labiryntów.
Moje dwa pytania:
Czy istnieje automat skończony lepszy niż ten narysowany powyżej? Co jeśli pozwolimy na przetworniki probabilistyczne?
Czy istnieje skończony automat do rozwiązywania labiryntów, które niekoniecznie są po prostu połączone?