我正在编写几个搜索函数,我使用Node
数据类型:
data Node a =
Node { [...]
, getPath :: [a] -- ^ Previous states this node has visited
}
该字段getPath
用于检查我之前是否访问过该节点中的状态:扩展新节点时,我通过执行以下操作检查:
visited = `elem` path
它可以工作,但是当扩展了许多节点并且路径变得太长时,它变得非常昂贵。有没有更好的方法来跟踪我访问过的州?也许是一种不同的数据结构(而不是列表),这种结构可以更好地用于此用途?