我已经读过,在对问题应用A *时,如果你的启发式是一致的,那么你可以进一步优化A *搜索。 Boost图库提供了两种版本的A *算法:astar_search
和astar_search_tree
。关于两者之间的区别,文件不是很清楚;其中一个执行优化搜索,假设一致的启发式?
答案 0 :(得分:4)
通过咨询Boost邮件列表,我得到了我正在寻找的答案。我将在这里为后代重现答案:
区别在于是否应该努力避免 多次访问同一个顶点。对于顶点可以的图形 通常使用很多路径,你应该更喜欢astar_search来避免 重新审视顶点及其后继者的额外工作。如果是 不太可能相同的顶点出现在多个路径上或检查 顶点足够便宜,不值得避免重复 工作,使用astar_search_tree,它不记得它有哪些顶点 先前访问过。试图找到重复顶点的缺点 是因为它需要越来越多的内存来存储查找表 以前看过哪些顶点,搜索和时间都需要时间 更新此表。这两种版本的算法都是可以接受的 启发式工作正常。
答案 1 :(得分:-1)
_tree
和非_tree
提升图算法版本之间的区别在于_tree
版本假设您的图形实际上是一棵树,因此它没有周期且只有一个在节点的箭头中。