【发布时间】:2014-07-23 05:54:21
【问题描述】:
有没有办法在 Haskell 中高效地进行最佳优先搜索?我想维护一个动态树。我有一个启发式函数,可以计算每个节点的数字和一个后继函数,它将返回一个节点的子节点列表。
在每一步,我都想采用具有最佳启发式的叶节点并将其替换为它的子节点。重复这个过程,直到我得到一个“足够好”的节点。
为此,我需要维护叶子的优先级队列。但是有没有一种方法可以有效地从优先级队列中的叶子到它在树中的位置,以便我可以修改树?
【问题讨论】:
-
拉链或棱镜。虽然如果你让树实际上是可变的(例如,由一堆 IORef 组成),它们可能无济于事。
-
我对棱镜不熟悉。至于拉链,它们在这里适用吗,因为我需要同时关注所有的叶子?
标签: haskell