装配中的机器人探索问题(emu8086)

时间:2011-05-02 06:23:05

标签: assembly robot x86-16

我正在使用emu8086进行汇编程序。该程序使用内置机器人设备在模拟的6x9地图上模拟虚拟机器人。地图将包含未知数量的墙壁和灯(点亮/熄灭),其中机器人将穿过地图并找到所有未点亮的灯并点亮它们。机器人本身只能从机器人所面对的相邻方格中获取数据,并且只能旋转90度。 该项目建议左上角将是坐标系的原点(0,0)。

http://www.emu8086.com/assembler_tutorial/robot.gif

我理解如何将机器人与我的代码连接以移动和检查数据,但是,我不确定如何有效地穿越并检查整个地图上的所有灯,而不会陷入无限循环或死亡端。

我已经阅读过使用多种搜索算法,例如广度优先和深度优先搜索算法,但我不确定如何在汇编中实现这样的概念(因为大多数示例/ psuedocode是用c ++ /编写的) C#/等)。

我不是要求任何特定的编码,而是要了解如何实现这些搜索功能。由于问题提到了坐标系的原点,我制作了一个二维数组,在该数组中获取某些坐标处的对象的值。不确定数组对于这个问题有多重要,但是任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

  1. 将您发现的图块放在 unvisitedNodes 列表中(暂时是您的起始图块)。
  2. unvisitedNodes 中抓取一个磁贴并检查它。
  3. 检查后,将磁贴从 unvisitedNodes 移至 visitedNodes 列表。
  4. 检查磁贴时,请检查其中一个列表中是否存在每个相邻磁贴。
  5. 如果没有,相关的邻居是一个新发现;将其附加到 unvisitedNodes 列表。
  6. 2 开始重复,直到 unvisitedNodes 变空为止
  7. 为此,我建议先创建一个漂亮的小集合(列表/队列/集)库。