很多时候,我们需要丢弃重复的状态,如统一成本搜索中所述。
if n is in frontier with higher cost
replace existing node with n
Priority Queue 不提供用于搜索项目的优先级然后更新它的接口。我很惊讶我找不到任何有关此的资源,请任何人提供帮助。
很多时候,我们需要丢弃重复的状态,如统一成本搜索中所述。
if n is in frontier with higher cost
replace existing node with n
Priority Queue 不提供用于搜索项目的优先级然后更新它的接口。我很惊讶我找不到任何有关此的资源,请任何人提供帮助。
您正在寻找优先搜索队列。
优先级搜索队列有效地支持搜索树和优先级队列的操作。绑定是密钥和优先级的产物。绑定可以在队列中插入、删除、修改和查询(通常以对数时间),并且可以在恒定时间内检索优先级最低的绑定。
这是 Haskell 中的一个实现。
实际上,您可以使用常规优先级队列来进行统一成本搜索。
您可以插入一个新的、更好的(节点、成本)对,而无需删除旧的。您将始终首先处理新插入的条目(因为它更好),并且处理旧条目实际上将是无操作的。缺点是您最终可能会在优先级队列中得到 O(E) 个元素(而不是 O(V))。