启发式搜索算法的问题
启发式搜索算法:
为建立改算法,令:
S——指示初始状态节点,
G——指示搜索图
OPEN——作为存放待扩展节点的表
CLOSE——作为存放已扩展节点的表
MOVEN_FIRST(OPEN)——指示取OPEN表首的节点作为当前要扩展的节点n,同时将节点n移至CLOSE表
SNS——子节点集合
算法A过程:
1.G= s
2.OPEN := (s),CLOSE := ( );
3.若OPEN是空表,则算法以失败结束;
4.n := MOVE_FIRST(OPEN);
5.若n是目标状态节点,则搜索算法成功结束,并给出解答路径
6.扩展节点n,将非节点n祖先的子节点置于子节点集合SNS中,并插入搜索图G中,对于SNS中每个子节点ni,就算f(n,ni)= g(n,ni)+ h(ni);
(n————搜索图中的某个当前被扩展的节点
f(n)——从初始状态节点s,经由节点n到达目标状态节点ng,估计的最小路径代价。
g(n)——从s到n,估计的最小路径代价
h(n)——从n到ng,估计的最小路径代价 ,h(n)依赖于启发式知识来加以估算,故而h(n)称为启发式函数)
7.句标记和修改指针:
(1) 把SNS中的子节点分为三类:全新节点、已出现于OPEN表的节点、已出现于CLOSE表的节点
(2)加第一类子节点于OPEN表
(3)比较第二类子节点ni经由新、老父节点的评价函数值f(n,ni)、f(ni)。若f(n,ni)<f(ni),则令f(ni)= f(n,ni),并移动子节点指向老父节点的指针,改为指向新父节点。
(4)对于第三类节点作于第二类同样的处理,并把这些子节点从CLOSE表中移出,重新加入OPEN表。
(算法A按照f(n)排序OPEN表中的节点,f(n)值最小者排在首位,优先加以扩展,体现了最佳最优先搜索策略的思想)
问题点数:0、回复次数:6Top
1 楼bijian998(笔尖)回复于 2004-04-03 12:56:07 得分 0
希望各位高手帮小弟解决一下这个问题,以散分相送!Top
2 楼bijian998(笔尖)回复于 2004-04-04 00:50:12 得分 0
各位大侠,帮帮心啦!Top
3 楼CityHost(市长)回复于 2004-04-04 11:42:02 得分 0
以前念过的,可惜现在忘了。
我帮你顶。Top
4 楼bijian998(笔尖)回复于 2004-04-04 15:41:59 得分 0
唉~~~ 我加分!50分!!!
等我换份工作了,非把这东西给搞上去。Top
5 楼xiaoshi0(Rain)回复于 2004-04-05 11:20:09 得分 0
分太少了Top
6 楼bijian998(笔尖)回复于 2004-04-06 08:02:48 得分 0
这样吧,我全分都送上来,给愿意帮我的朋友。Top




