读书人

关于A*算法的一个有关问题 大牛们帮忙

发布时间: 2012-03-06 20:47:55 作者: rapoo

关于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*算法的详细而系统的描述。

读书人网 >C++

热点推荐