6
我开始刷新我的ai知识,所以我实现了一些pathfind算法来解决8-Puzzle。python idastar vs astar解决8个难题
我想知道为什么我的执行IDA *的具有更长的路径。它应该像A *那样是最佳的。
% python puzzle8.py -a idastar -d hard
IDASTAR - RESULT in 161.6099:
1 | 2 | 3
4 | 5 | 6
7 | 8 | N
cost: 0 total_cost: 121
...
nodes 28
% python puzzle8.py -a astar -d hard
Max nodes 665 loops 1085
ASTAR - RESULT in 0.3148:
1 | 2 | 3
4 | 5 | 6
7 | 8 | N
cost: 0 total_cost: 115
...
nodes 24
代码是依据https://gist.github.com/1629405
更新:
代码现在指向工作版本。
% python puzzle8.py -a idastar -d hard
IDASTAR - RESULT in 234.4490:
1 | 2 | 3
4 | 5 | 6
7 | 8 | N
...
nodes 24
但我仍然不知道为什么IDA *采用下蟒比 A *长得多。
更新2:
代码被更改打印现在访问节点。
IDASTAR创建 ASTAR 节点。
谢谢我改变了我的代码,现在将限制递增1.但另一个问题,为什么它花了这么该死的**长**完成在idastar? – delijati 2012-01-18 08:43:06
idastar会经历多少次迭代?总共扩展了多少个节点,而不仅仅是最后一次迭代?回答这些问题,你应该有答案给你。 – 2012-01-18 12:44:51
哦,是的,没错。更改的代码maxnode现在计算每个查看的节点。 ** ASTAR **有1748个节点和** IDASTAR ** 4184368个节点。 – delijati 2012-01-18 17:28:27