You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GameWalkPuzzle中DFS算法搜索路径不符预期的技术疑问

问题原因分析

核心问题:simpleai的DFS节点处理顺序和你定义的行动顺序相反

simpleai的DFS是靠栈(后进先出)存待处理节点的。你定义行动顺序是「上、左、下、右」,生成的后继节点会按这个顺序压进栈,但栈是最后压的先取出来处理,所以实际搜索的优先级变成了右 → 下 → 左 → 上,和你预想的完全反过来了。

对应你的场景解释

当路径走到左墙后,当前节点的「右」方向刚好是终点P所在的层级——因为栈优先处理「右」方向生成的节点,程序直接就转向右搜索了,根本不会先去处理「下」方向的节点,自然不会走到网格底部再往右。

关于“仅遍历路径上节点”的补充

DFS本身就是沿着一条路径走到底,直到走不动才回溯,但这里只要优先处理的方向能找到终点,它就会直接终止搜索,不会去碰其他分支。simpleai的默认DFS实现找到终点就立刻返回结果,所以你只会看到路径上的节点被遍历。

调整方案
  • 把你想优先搜索的方向放在行动定义的最后。比如要实现「上、左、下、右」的搜索顺序,行动列表得写成['右', '下', '左', '上'],这样栈弹出的顺序就是你要的。
  • 要是非得遍历所有节点再返回结果,得改simpleai的DFS源码,关掉提前终止的逻辑,但这不符合DFS的常规用法。

内容的提问来源于stack exchange,提问作者DannyJ108

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 12:12:35