人工智能——状态空间的一般搜索过程

本文介绍了一种基于OPEN表和CLOSE表的搜索算法流程,详细解释了从初始节点到目标节点的搜索过程。包括节点的扩展、子节点的生成及处理等关键步骤。

OPEN表:用于存放刚生成的节点

CLOSE表:用于存放将要扩展已扩展的节点

 

1) 把初始节点S0放入OPEN表,并建立只含S0的图,记为G

OPEN:=S0,G:=G0(G0=S0

 

2) 检查OPEN表是否为空,若为空则问题无解,退出

LOOP:IF(OPEN)=() THEN EXIT(FAIL)

 

3) 把OPEN表的第一个节点取出放入CLOSE表,记该节点为节点n

N:=FIRST(OPEN), REMOVE(n,OPEN), ADD(n,CLOSE)

 

4) 观察节点n是否为目标节点,若是,则求得问题的解,退出

IF GOAL(n) THEN EXIT(SUCCESS)

 

5) 扩展节点n,生成一组子节点。把其中不是节点n先辈的那些子节点记作集合M,并把这些节点作为节点n的子节点加入G中。

EXPAND(n)-->M(mi), G:=ADD(mi,G)

 

针对M中子节点的不同情况,分别进行如下处理

对于那些未曾在G中出现过的M成员设置一个指向父节点(n)的指针,并把它放入OPEN表

对于那些先前已在G中出现过的M成员,确定是否要修改指向父节点的指针

对于那些先前已在G中出现,并且已经扩展了的M成员,确定是否需要修改后继结点指向父节点的指针

clip_image002

 

6) 按某种搜索策略对OPEN表中的节点进行排序

 

7) 转第2步

GO LOOP

 

参考文献:

[1] 李长河. 人工智能及其应用. 北京: 机械工业大学出版社, 2006.8

转载于:https://www.cnblogs.com/6DAN_HUST/archive/2010/10/08/1845596.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值