📅  最后修改于: 2023-12-03 14:54:14.167000             🧑  作者: Mango
当前最佳假设搜索(Best-First Search)是一种启发式搜索算法,它在众多可能的搜索路径中选择最有可能达到目标的路径进行搜索,是一种启发式搜索算法家族中非常重要的一种。
在本算法中,每个搜索状态都与一个评估函数$f(x)$ 相关。该函数预测从状态$x$ 到达目标状态的代价,通常$f(x)$ 值越低,状态$x$ 就越有可能是一个良好的扩展状态。
在执行算法时,定时将队列中的状态根据评估函数的值进行排序,因此具有较小评估函数值的状态将被首先扩展。如果存在一个求解的状 态,那么最终将被扩展到那个状态,此时算法终止。
def best_first_search(initial_state, goal_test, successors, heuristic):
frontier = PriorityQueue()
frontier.put((0, initial_state)) # estimated_cost_of_path = 0 + heuristic(initial_state)
explored = set()
while not frontier.empty():
estimated_cost_of_path, current_state = frontier.get()
if goal_test(current_state):
return current_state
explored.add(current_state)
for successor, step_cost in successors(current_state):
if successor not in explored:
estimated_cost = estimated_cost_of_path + step_cost + heuristic(successor)
frontier.put((estimated_cost, successor))
return None
当前最佳假设搜索适用于以下问题:
当前最佳假设搜索是启发式搜索算法一种重要的实现方式,具有很好的搜索效果。算法实现时,关键在于选择合适的启发性评估函数。