2d网格可达目的地

时间:2011-02-04 21:41:46

标签: algorithm 2d path-finding

假设我有一个2d网格。寻路是我问题的第二步。

我的意思是,假设我在网格中间有一个单元。我希望能够告诉用户“这些都是您可用的目的地。”。

根据单位可以走多少个方格,我想向用户显示“这些都是你可以达到的方格。”然后路径查找用户选择的目的地。

第一次搜索显示可到达目的地的最佳方法是什么?

根据地形的不同,地形也可能有限制。

我不知道这叫什么,所以我们将非常感谢您在哪里观看或谷歌的内容。

干杯! :)

/ E

3 个答案:

答案 0 :(得分:4)

最好的方法可能是深度优先搜索(http://en.wikipedia.org/wiki/Depth_first_search),并限制你可以走多远。

答案 1 :(得分:2)

对于网格中的每个点,存储:

  • 从本机到此点的最小距离。
  • 在最短路径上朝着单位迈出的下一步。

要计算,请先进行广度优先搜索:

  • 将您的单位的点距离成本设置为0,其“路径指针”无关紧要/ null。
  • 创建一个队列并将初始点放入其中。
  • 队列不为空时:
    • 采取下一个点并传播它(查看所有邻居。如果通过当前点进入它们是有利可图的,设置它们的距离/路径并将它们添加到队列的末尾)

请记住,如果您有限制,请在正确的步骤数后停止搜索。

如果你这样做的话,你可以找到所有可到达的点,查找他们的距离有多长,并且还有最短路径可用(尽管它是“向后”存储的)


不要深度优先搜索最短路径问题!您可能会反复进行多次重复计算。 (除非你使用更高级的启发式算法,比如A * - 但是你应该已经知道你在做什么了)

答案 2 :(得分:1)

用相同的数字标记连接的单元格,而不是用不同的数字连接。您可以找到用于在http://en.wikipedia.org/wiki/Connected_Component_Labeling处标记单元格的两遍算法。如果单元格数量不同,则玩家无法到达该位置。