关于A*算法的一个问题 大牛们帮忙 觉得网上的说法有点问题
这是我查到的一段关于A*的伪代码
Best_First_Search()
{
Open = [起始节点];
Closed = [];
while (Open表非空)
{
从Open中取得一个节点X,并从OPEN表中删除。
if (X是目标节点)
{
求得路径PATH;
返回路径PATH;
}
for (每一个X的子节点Y)
{
if (Y不在OPEN表和CLOSE表中)
{
求Y的估价值;
并将Y插入OPEN表中;
}
//还没有排序
else if (Y在OPEN表中)
{
if (Y的估价值小于OPEN表的估价值)
更新OPEN表中的估价值;
}
else //Y在CLOSE表中
{
if (Y的估价值小于CLOSE表的估价值)
{
更新CLOSE表中的估价值;
从CLOSE表中移出节点,并放入OPEN表中;
}
}
将X节点插入CLOSE表中;
按照估价值将OPEN表中的节点排序;
}//end for
}//end while
}//end func
我觉得这个 (Y的估价值小于CLOSE表的估价值)
表中的估价值 似乎好象走回头路的 我不知道啥时候会出现这种情况
用笔在纸上划了半天也没没相通是啥情况
[解决办法]
人工智能哦,如果楼主是偶然搜索到的,就不要深入研究了,否则找一本人工智能算法系统的看一下,应该有对A*算法的详细而系统的描述。