【发布时间】:2017-11-22 12:18:29
【问题描述】:
在我们的学期项目中,我们正在尝试制造一辆小型汽车,它可以在一个区域内搜索地下金属。每次在地面上遇到一个物体,它都必须为它标出坐标,并在它周围找到一条路径来访问所有剩余的节点。
我们已经实现了一种可以在网格中记录区域的方法,因此我们将所有区域都放在 x-y 坐标中。我们曾考虑使用修改版的寻路算法(广度优先、A* 或其他)在系统中寻找路径,但在实施时遇到了麻烦。
是否可以修改这些算法中的任何一个,而不是从节点 A 到 B,而是搜索每个坐标,如果遇到地面上的物体,则“重新路径”?
【问题讨论】:
-
将所有单元格放入“未访问列表”中,开始时,当“未访问”列表不为空时,构造从当前单元格到列表中第一个单元格的路径。进入单元格后,检查它是否在“未访问”列表中,如果是则删除,然后在单元格中执行您的操作。这不是最有效的方法,但使用现有的寻路算法很容易实现,无需修改它。
-
@AndrewKashpur 我已经做到了,并实现了一个遍历列表中所有节点的函数。我的问题是,每个节点必须同时具有 x 坐标和 y 坐标,这样我就可以向汽车发送信息,使其在遇到“拐角”时转弯等。我无法理解如何实现这一点,但是您是否有任何指示?
-
如果您向我们展示您的代码,我们将能够为您提供一些指导@Emil
标签: c++ breadth-first-search path-finding