人工智能及其应用 第三章确定性推理 课程记录
图搜索策略
在图搜索过程中为什么有时需要修改指针方向,以及如果修改?且M成员为什么要修改?怎样修改?
集合m:n的后继节点
对那些未曾在搜索图g中出现过的m成员设置一个通向n的指针,把m的这些成员加进open表。对已经在open表或close表上的每一个m成员,确认是否需要更改通到n的指针方向。对已在close表上的每个m成员,确认是否需要更改搜索图g中通向他的每个后裔节点的指针方向。1
(6)扩展n,生成一组子节点,对这组子节点作如下处理:
(7)
a)删除n的先辈节点(如果有的话);
b)对已存在于OPEN表的节点(如果有的话)也删除之;但删除之前要比较其返回初始节点的新路径与原路径,如果新路径“短”,则修改这些节点在OPEN表中的原返回指针,使其沿新路返回(如下图所示);
c)对已存在于CLOSED表的节点(如果有的话),作与b)同样的处理,并且再将其移出CLOSED表,放入OPEN表重新扩展(为了重新计算代价);
d)对其余子节点配上指向n的返回指针后放入OPEN表中某处,或对OPEN表进行重新排序,转步(3)
说明
(1)这里的返回指针也就是父节点在CLOSED表中的编号。
(2)步7中修改返回指针的原因