Para esta pregunta, suponga que se desconocen las siguientes cosas:
- El tamaño y la forma de la habitación.
- La ubicación del robot.
- La presencia de cualquier obstáculo.
También suponga que las siguientes cosas son constantes:
- El tamaño y la forma de la habitación.
- El número, la forma y la ubicación de todos los obstáculos (si los hay)
Y suponga que el robot tiene las siguientes propiedades:
- Solo puede avanzar en incrementos de unidades absolutas y girar en grados. Además, la operación que se mueve devolverá verdadero si tuvo éxito o falso si no pudo moverse debido a una obstrucción
- Una fuente de energía razonablemente ilimitada (digamos que es un robot con energía solar colocado en una estación espacial que mira al sol en todo momento sin techo)
- Cada movimiento y rotación se realiza con absoluta precisión cada vez (no se preocupe por datos poco confiables)
Finalmente, considere las siguientes propiedades del entorno del robot:
- Al estar en una estación espacial sin techo, la habitación es una distancia segura pero frustrantemente cercana a los cometas que pasan, por lo que el polvo (y el hielo) están constantemente ensuciando el medio ambiente.
Me preguntaron una versión mucho más simple de esta pregunta (la habitación es un rectángulo y no hay obstáculos, ¿cómo se movería para garantizar que podría sobre cada parte al menos una vez) y después comencé a preguntarme cómo abordaría esto si no pudiera No garantice la forma o la presencia de obstáculos. He comenzado a ver esto con el algoritmo de Dijkstra , pero me fascina escuchar cómo otros abordan esto (o si hay una respuesta bien aceptada para esto (¿Cómo lo hace Roomba?)