最近我遇到了一个问题:
假设迷宫中包含字符*
,.
,C
。*
表示墙,.
/ C
是允许的。只有一个标记C
。现在,如果机器人站在任何允许的点上,则存在一系列命令(例如LDDRU
或LLLRRDU
等),这样如果机器人从任何允许点开始,它就会通过C
至少一次。
例如:
******
*.C..*
**.***
*....*
******
命令:RLLURUU
现在我知道如何使用DFS / BFS解决迷宫(用于最短路径)。但是,任何人都可以提出如何处理这样的问题的提示吗?
编辑:如果下一步进入墙/外迷宫,它将被忽略。和往常一样L
左R
正确U
向上D
向下。
答案 0 :(得分:2)
此问题与有限自动机的synchronizing words或重置序列的概念有关。你可以想象建立一个自动机
鉴于此自动机,您现在正在寻找一个将每个状态转换为C状态的序列,因此连接到同步字。有许多用于查找同步字的算法,并且它们中的任何一个都可以适用于解决这个特定问题。一个选项是build the power automaton from the original automaton并寻找从开始状态到C状态的路径,(我相信)最终成为评论中关于将虚拟机器人折叠在一起的理论上的最佳版本(因为它总会找到最佳路径。)