| Algorithm 1. A* algorithm |
| queue = [root] goal = goal_node while (queue not empty && queue[0] not goal){ current_node = queue.pop() children = current_node.generate_children() queue.add(children) queue.sort(by = path_cost + heuristic) } if (queue[0] is goal){ return optimal_path(queue[0]) } else { return “failure” } |