用图搜索法:广度优先、深度优先和A*算法实现八数码问题 第9页
(1) 把起始节点s放到OPEN 表中,计算f(S) ,并把其值与节点S联系起来。
(2) 如果OPEN 是个空表,则失败退出,无解。
(3) 从OPEN 表中选择一个f值最小的节点i。结果有几个节点合适,当其中有一个为目标节点时,则选择此目标节点,否则就选择任意一个节点作为节点i。
(4) 把节点i从OPEN 表中移出,并把它放入CLOSED 的扩展节点表中。
(5) 如果i是目标节点,则成功退出,求得一个解。
(6) 扩展节点i,生成其全部后继节点。对于i的没一个后继节点j:
计算f ( j );
如果j既不在OPEN 表中,也不在CLOSED 表中,则用估价函数f 把它添加到OPEN 表中。从j 加一指向其父辈节点i的指针以便一旦找到目标节点时记住一个解答途径。
如果j已经在OPEN 表或CLOSED 表上,则比较刚刚对j计算过的f值和前面计算过的该节点在表中f值。如果新的f 值较小,则以此新值代替旧值。
从j指向i,而不是指向它的父辈节点。
如果节点j在CLOSED表中,则把它移回OPEN 表中。
(7) 转向(2)。
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页