Pour cette question, supposez que les choses suivantes sont inconnues:
- La taille et la forme de la pièce
- L'emplacement du robot
- La présence d'obstacles
Supposons également que les éléments suivants sont constants:
- La taille et la forme de la pièce
- Le nombre, la forme et l'emplacement de tous les obstacles (le cas échéant)
Et supposez que le robot possède les propriétés suivantes:
- Il ne peut avancer que par incréments d'unités absolues et tourner en degrés. De plus, l'opération qui se déplace reviendra vraie si elle a réussi ou fausse si elle n'a pas bougé en raison d'une obstruction
- Une source d'énergie raisonnablement illimitée (disons que c'est un robot à énergie solaire placé sur une station spatiale qui fait face au soleil à tout moment sans plafond)
- Chaque mouvement et rotation est effectué avec une précision absolue à chaque fois (ne vous inquiétez pas des données non fiables)
Enfin, veuillez considérer les propriétés suivantes de l'environnement du robot:
- Étant sur une station spatiale sans plafond, la pièce est à une distance sûre mais frustrante des comètes qui passent, de sorte que la poussière (et la glace) jonchent constamment l'environnement.
On m'a demandé une version beaucoup plus simple de cette question (la pièce est un rectangle et il n'y a pas d'obstacles, comment vous y déplaceriez-vous en garantissant que vous pourriez recouvrir chaque partie au moins une fois) et après avoir commencé à me demander comment vous aborderiez cela si vous ne pouviez pas 'garantissent pas la forme ou la présence d'obstacles. J'ai commencé à regarder cela avec l'algorithme de Dijkstra , mais je suis fasciné d'entendre comment les autres abordent cela (ou s'il existe une réponse bien acceptée à cela? (Comment Roomba le fait-il?)