凯的BLOG

Astar伪代码

·

简单说明Astar算法_(伪代码)_:

while (OPEN != NULL) {
	从OPEN表中取估价值f最小的节点n;
	if (n节点==目标节点) {
		break;
	}

	for (当前节点n的每个子节点X) {
		算X的估价值;
		if (X in OPEN) {
			if (X的估价值小于OPEN表的估价值){
				把n设置为X的父亲;
				更新OPEN表中的估价值; // 取最小路径的估价值
			}
		}

		if (X in CLOSE) {
			if (X的估价值小于CLOSE表的估价值) {
				把n设置为X的父亲;
				更新CLOSE表中的估价值;
				把X节点放入OPEN; //取最小路径的估价值
			}
		}

		if (X not in both) {
			把n设置为X的父亲;
			求X的估价值;
			并将X插入OPEN表中; //还没有排序
		}
	} // end for

	将n节点插入CLOSE表中;
	按照估价值将OPEN表中的节点排序;
	// 实际上是比较OPEN表内节点f的大小,从最小路径的节点向下进行。
} // end while (OPEN != NULL)