Algorithm A*如何搜索图形?

Algorithm A*如何搜索图形?,algorithm,a-star,heuristics,Algorithm,A Star,Heuristics,A*搜索将从节点S开始,继续到节点G。在节点S,打开 列表将包含值分别为7和6的A和B。创建一个表 显示作为A*算法访问的每个节点的打开列表 进步 有人能告诉我A*将如何搜索这个吗 open list = [S]; closed list = [] open list = [A,B]; closed list = [S] whats next? A*是最佳优先算法,这意味着它通过扩展根据指定规则选择的最有希望的节点来探索图形。在这种情况下,规则是最有希望的节点是具有最小f值的节点,其中f(n)

A*搜索将从节点S开始,继续到节点G。在节点S,打开 列表将包含值分别为7和6的A和B。创建一个表 显示作为A*算法访问的每个节点的打开列表 进步

有人能告诉我A*将如何搜索这个吗

open list = [S]; closed list = []
open list = [A,B]; closed list = [S]
whats next?

A*是最佳优先算法,这意味着它通过扩展根据指定规则选择的最有希望的节点来探索图形。在这种情况下,规则是最有希望的节点是具有最小f值的节点,其中f(n)=g(n)+h(n),即,已经行走的(g值)加上我们的启发式“承诺”的总和,即路径的剩余部分(h值)最小

因此,让我按顺序写开放列表,因为通常A*的开放列表是一个优先级队列:

it 0: open list = [S]; closed list = []

it 1: in this iteration we will have closed list = [S] and a PQ of open nodes with,
open list = 
| (B, 6) | (g = 3 + h = 3)
| (A, 7) | (g = 2 + h = 5)
在此之后,B是最有希望的路径(6<7),因此该节点将被放入封闭列表中

it 2: closed list = [S,B];
open list = 
| (A, 7) | (g = 2 + h = 5)
| (D, 10) | (g = 6 + h = 4)
| (C, 11) | (g = 8 + h = 3)
同样,算法选择用较低的f值(A)扩展节点

F现在是最有希望的,并且它被扩展了

it 5: closed list = [S,B,A,C,F];
open list = 
| (G, 9) | (g = 9 + h = 0)
| (D, 10) | (g = 6 + h = 4)
| (E, 13) | (g = 10 + h = 3)
我们已经将目标节点添加到打开列表中,但这并不意味着算法完成,,因为可能还有其他路径(不是在这个问题中)比已经找到的路径短(S->A->C->F->G)当目标节点展开时,算法将完成。在下一次迭代中,我们再次展开最有希望的节点

it 6: we expand the goal node G.
算法完成并返回路径S->A->C->F->G,代价为9



请注意,您的启发式函数是一致的,这意味着一旦节点通过a*搜索算法展开(或放入封闭列表),达到该节点的成本是可能的最低成本(假设没有负成本周期)。这也意味着启发式是可接受的A*保证找到的解是从S到G的最短可能路径。更重要的是,当A*使用一致的启发式时,它是一个最优算法,也就是说,没有其他具有相同启发式信息的算法可以扩展更少的节点,并且仍然保证找到最短路径

这不是家庭作业……你认为下一步是什么?以及原因(试着解释为什么你认为下一步会是你认为会是什么样子)
it 5: closed list = [S,B,A,C,F];
open list = 
| (G, 9) | (g = 9 + h = 0)
| (D, 10) | (g = 6 + h = 4)
| (E, 13) | (g = 10 + h = 3)
it 6: we expand the goal node G.