【发布时间】:2021-12-19 22:57:31
【问题描述】:
我正在为 Ms Pacman AI 实施搜索算法。我认为从 BFS 或 DFS 等基本搜索开始是个好主意。我刚刚实现了一个 BFS,但是当我运行我的代码时,ms pacman 撞到了墙上。我想知道,我的 BFS 代码有什么可以改进的吗?还是不够?
public MOVE BFS(Game game){
EnumMap<Constants.GHOST,MOVE> ghostMove = new EnumMap<>(Constants.GHOST.class);
MOVE bestMove = MOVE.NEUTRAL;
Queue<Game> q = new LinkedList<>();
q.add(game.copy());
while(!q.isEmpty()){
Game current = q.peek();
q.remove();
for (MOVE move : current.getPossibleMoves (current.getPacmanCurrentNodeIndex())) {
Game neighbor = game.copy();
neighbor.advanceGame(move, ghostMove);
q.add(neighbor);
if ((current.getNumberOfActivePills() == 0) && (current.getNumberOfActivePowerPills() == 0)) {
return move;
}
}
}
return bestMove;
}
【问题讨论】:
-
为什么要运行 BFS/DFS?你希望用它完成什么?
-
先尝试自己调试代码,如果还不够,请发布minimal reproducible example 显示您的调试尝试。
标签: java artificial-intelligence depth-first-search breadth-first-search pacman