[问题] 有关A*跟IDA*

楼主: s89162504 (阿本)   2012-12-11 20:18:51
新手发问,不好意思
A*是在搜寻时把每个状态做估计值
每次展开结点时都展开目前估计值最优的
但缺点是耗费内存太大
所以解决方法是用迭代加深搜寻,也就是IDA*
以下是我的问题:
为什么我看网络上IDA*的程式码时候
在储存待展开节点可以直接用Stack存
应该说是不需要用优先伫列
另外
好像连目前这个节点是否已出现过都不用判断
不好意思,请问这是怎么回事
我有什么盲点吗
先谢谢大家
作者: suhorng ( )   2012-02-11 20:23:00
判断重复=>要储存节点=>还是跟A*一样太花空间IDA*会搜到重复的节点 但是相对于需要搜索的空间大小实在太微不足道 就不管他IDA*的确 *不* 使用优先伫列请回想优先伫列在 A* 中的用途: f(n)值小的节点会先被扩展那IDA*在跑的时候, f 的上限是 *渐次加深* 的也就是可能第一次是 1, 再来是 2, 再来是 3, ...同样, 这可以保证若 f 较大的已经被搜索到了, 那 f 较小的也一定会被搜索过, 从而同样保证了正确性而迭代加深的写法, 正是可以省掉优先伫列的空间消耗
楼主: s89162504 (阿本)   2012-02-11 23:29:00
原来如此,谢谢!!

Links booklink

Contact Us: admin [ a t ] ucptt.com