【发布时间】:2017-10-27 19:02:06
【问题描述】:
我正在试验一种搜索算法,我正在尝试使用 A* 算法来解决问题。
我正在使用字典列表来维护内部节点结构。 每个节点都以某种状态和相关成本为特征。 选择函数应该返回成本最低的节点。 为了能够做到这一点,我每次都在过滤列表。 如果问题非常小,我发现这非常快, 但在列表很大的情况下,这个函数会占用算法总时间的 84%。
我的问题是是否有更有效的方法来做到这一点。
def select(self, frontier):
frontier.sort(key = lambda x: x['f_cost'])
#select the node with the lowest f_cost
return frontier.pop(0)
【问题讨论】:
-
您可能还想考虑使用优先级队列。例如,
heapq.