Per questa domanda supponiamo che le seguenti cose siano sconosciute:
- Le dimensioni e la forma della stanza
- La posizione del robot
- La presenza di eventuali ostacoli
Supponi anche che le seguenti cose siano costanti:
- Le dimensioni e la forma della stanza
- Il numero, la forma e la posizione di tutti gli ostacoli (se presenti)
E supponiamo che il robot abbia le seguenti proprietà:
- Può avanzare solo con incrementi di unità assolute e ruotare in gradi. Anche l'operazione che si sposta tornerà vera se ha avuto successo o falsa se non si è mossa a causa di un'ostruzione
- Una fonte di energia ragionevolmente illimitata (diciamo che è un robot ad energia solare posizionato su una stazione spaziale che si affaccia sempre al sole senza soffitto)
- Ogni movimento e rotazione viene eseguito con assoluta precisione ogni volta (non preoccuparti di dati inaffidabili)
Infine, considera le seguenti proprietà dell'ambiente del robot:
- Essendo su una stazione spaziale senza soffitto, la stanza è una distanza sicura ma frustrantemente vicina alle comete che passano, quindi la polvere (e il ghiaccio) riempiono costantemente l'ambiente.
Mi è stata posta una versione molto più semplice di questa domanda (la stanza è un rettangolo e non ci sono ostacoli, come ti sposteresti su di esso garantendo che potresti almeno ogni parte su ogni parte) e dopo ho iniziato a chiedermi come affrontare questo problema se non potessi non garantisce la forma o la presenza di ostacoli. Ho iniziato a guardare questo con l'algoritmo di Dijkstra , ma sono affascinato nel sentire come gli altri si avvicinano a questo (o se c'è una risposta ben accettata a questo? (Come fa Roomba a farlo?)