【发布时间】:2012-03-20 17:04:48
【问题描述】:
如果 f = g + h 那么在下面的代码中我应该在哪里添加 g?
另外,除了从我的初始位置添加移动成本之外,我还能如何让这段代码更有效率?
def a_star(initial_node):
open_set, closed_set = dict(), list()
open_set[initial_node] = heuristic(initial_node)
while open_set:
onode = get_next_best_node(open_set)
if onode == GOAL_STATE:
return reconstruct_path(onode)
del open_set[onode]
closed_set.append(onode)
for snode in get_successor_nodes(onode):
if snode in closed_set:
continue
if snode not in open_set:
open_set[snode] = heuristic(snode)
self.node_rel[snode] = onode
return False
【问题讨论】:
-
如果认为我们需要更多有关问题的信息。
-
一个好的问题包括: 问题的简明背景。对问题的明确、清晰的陈述。所需输出的示例。最好是独立运行的 sn-p 代码。
-
公平地说,这个问题专门针对A* algorithm,它在标题和标签中都有说明。我们这些有背景的人可以立即理解 OP 想要什么,即使它在其他人看来“神秘”。 (但这并不意味着这个问题不能使用一些改进)
-
快速回答,把你的封闭列表改成set()