【问题标题】:How to print the BFS path from a source to a target in a maze (Or how to get the first move)?如何在迷宫中打印从源到目标的 BFS 路径(或如何获得第一步)?
【发布时间】:2023-03-08 06:00:01
【问题描述】:

这是一个与另一个 question 相关的问题,你帮了我很多。

我的新问题是,有没有办法打印从source 单元格到target 单元格的找到路径?或者,有没有办法只从pred 获得第一步而不迭代所有它?

在我在另一个问题中收到的(非常有帮助的)答案中,建议我获取从 targetsource 的路径,这非常有用,但为了改进我的代码,我将路径从 @ 987654327@转target

我的问题是我正在尝试编写一个类似流氓的游戏,我必须告诉怪物他的下一步行动是什么,我认为迭代所有 pred 数组以便获得一个单一的行动浪费资源。

提前感谢您的帮助。

【问题讨论】:

    标签: c graph path-finding maze


    【解决方案1】:

    现在你已经绘制好了路径,在怪物旁边寻找下一个*

    if (G->nodes[T.row + A][T.col + B] == '*') {
        //kept for my sanity: pred[G->T.row*G->col + G->T.col]
    
        doMove(); //don't forget to change the '*' into 'T', then the old spot to ' '
    }
    

    要向上移动,请查看A = -1; B = 0。要向下移动,请查看offsetA = 1; offsetB = 0。右:A = 0; B = -1,左:A = 0; B = 1

    因为您的地图非常简单并且分支不会很远,所以我建议您选择更快的算法。 BFS 倾向于搜索 最近 路径,对于长路径效率不高。 Djikstra 是 BFS 的更好实现,允许将成本分配给边缘。 A* 是在游戏中使用的最佳搜索,因为它是 Djikstra 的算法,在没有障碍的情况下通过利用其目标的知识来加速(更快地收敛)。

    【讨论】:

      猜你喜欢
      • 2016-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-14
      • 1970-01-01
      • 2017-09-24
      相关资源
      最近更新 更多