一般图搜索算法

/*
节点深度:根节点指示初始状态,令其节点深度为0,其他节点的深度d(n)地规定以为d(n)=d(n-1)+1
路径:要求是无环的
节点扩展:应用操作符将上一状态(节点ni)转移到下一状态(节点nj),nj为被扩展节点,且为ni的子节点
OPEN表:用于存放刚生成的节点,它们尚未进行扩展。对于不同的搜索策略,节点在OPEN表中的排列顺序是不同的。
CLOSE表:用于存放将要进行扩展或已进行扩展的节点。
用S和T分别表示初始节点和目标节点,用PREDx表示节点x的父节点。
给出一般图搜索算法如下:
*/
OPEN <- {S}, CLOSED <- Ø, PREDs <- NULL, found <- false;
while(OPEN != Ø && !found)
{
	x <- OPEN表第一个节点;
	OPEN <- OPEN-{x};
	CLOSED<-CLOSED+{x};
	if(x == T)
	  found<-true;
    else
    {
        对节点x进行扩展,其子节点集合为{y1,y2,...,yk};
        for(i=1; i<=k; i++)
        {
            if(yi ¢ OPEN 且 yi ¢ CLOSED)
            {
                PREDyi <- x;
                OPEN <- OPEN + {yi};
                /* BFS加在OPEN表的尾部,DFS加在OPEN表的首部 */
            }
            else
            {
                if(yi经x到达S的代价小于其经PREDyi到达S的代价)
                {
                    PREDyi <- x;
                    if(yi ∈ CLOSED)
                    {
                        CLOSED <- CLOSED - {yi};
                        OPEN <- OPEN + {yi};
                    }
                }
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值