【发布时间】:2017-06-20 02:03:55
【问题描述】:
我正在编写几个搜索函数,为此我使用 Node 数据类型:
data Node a =
Node { [...]
, getPath :: [a] -- ^ Previous states this node has visited
}
getPath 字段是我用来检查我之前是否访问过该节点中的该状态的字段:扩展新节点时,我会通过以下方式检查:
visited = `elem` path
它可以工作,但是当有很多节点扩展并且路径变得太长时,它变得非常昂贵。有没有更好的方法来跟踪我访问过的州?也许是一种不同的数据结构(而不是列表)更适合这种用途?
【问题讨论】:
-
如果
a是hashable,你可以使用hashset。
标签: haskell search functional-programming