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表的估价值)
更新OPNE表中的估价值;
}
//Y在CLOSE表中
else
{
if(Y的估价值小于CLOSE表的估价值)
{
更新CLOSE表中的估价值;
从CLOSE表中移出节点,并放入OPEN表中;
}
}
将X节点插入CLOSE表中;
}
}
}