Para esta pergunta, suponha que as seguintes coisas sejam desconhecidas:
- O tamanho e a forma da sala
- A localização do robô
- A presença de quaisquer obstáculos
Suponha também que as seguintes coisas sejam constantes:
- O tamanho e a forma da sala
- O número, forma e localização de todos (se houver) obstáculos
E suponha que o robô tenha as seguintes propriedades:
- Só pode avançar em incrementos de unidades absolutas e girar em graus. Além disso, a operação que se move retornará true se for bem-sucedida ou false se não tiver se movido devido a uma obstrução
- Uma fonte de energia razoavelmente ilimitada (digamos que seja um robô movido a energia solar colocado em uma estação espacial que enfrenta o sol o tempo todo, sem teto)
- Todo movimento e rotação é realizado com precisão absoluta todas as vezes (não se preocupe com dados não confiáveis)
Por fim, considere as seguintes propriedades do ambiente do robô:
- Por estar em uma estação espacial sem teto, a sala fica a uma distância segura, mas frustrantemente próxima, da passagem de cometas, de modo que a poeira (e o gelo) estão constantemente cobrindo o ambiente.
Foi-me perguntada uma versão muito mais simples desta pergunta (a sala é um retângulo e não há obstáculos, como você a moveria, garantindo que você poderia passar por todas as partes pelo menos uma vez) e depois que comecei a pensar em como você abordaria isso se não pudesse garante a forma ou a presença de obstáculos. Comecei a analisar isso com o algoritmo de Dijkstra , mas fico fascinado ao saber como os outros abordam isso (ou se há uma resposta bem aceita para isso? (Como o Roomba faz isso?)