根据人工智能: IDA* 第 4 版的现代方法,截止日期是F-成本(G+小时); 在每次迭代中,截止值最小F- 任何超过上一次迭代截止值的节点的成本。
换句话说,每次迭代都详尽地搜索一个F-contour,在该轮廓之外找到一个节点,并使用该节点的F-成本作为下一个轮廓。
并且我们必须在选择该节点进行扩展时测试该节点是否为目标节点,否则该算法不再是最优的(证明类似于A *中的证明)。
我认为该站点提供的动画具有误导性,因为在同一站点最后编写的代码中,我们有:
function Search(node, g, threshold) //recursive function
{
f = g + heuristic(node);
if(f > threshold) //greater f encountered
return f;
if(node == Goal) //Goal node found
return FOUND;
integer min = MAX_INT; //min = Minimum integer
foreach(tempnode in nextnodes(node))
{
//recursive call with next node as current node for depth search
integer temp=search(tempnode, g + cost(node, tempnode), threshold);
if(temp == FOUND) //if goal found
return FOUND;
if(temp < min) //find the minimum of all 'f' greater than threshold encountered
min = temp;
}
return min; //return the minimum 'f' encountered greater than threshold
}
而在前面的代码中,我们仅在选择扩展时才测试该节点是否为目标节点。