过程GRAPHSEarcH
(1)G <-- S,OPEN <-- (S);建立一个搜索图G,只含有初始结点S,建立一个表
0PEN,它 只含有初始结点S。
(2)cLOSED <-- ( ),建立一个表cLOSED,它的起始状态为空表。
(3)LOOP,if OPEN=( ) then return FAlL
(4)n <— FIRST(OPEN),OPEN <-- TaiL(OPEN),cLOSED <-- cONS(n,cLOSED);从
OPEN表中取出一个结点n,将其放入cLOSED表。
(5)if n ∈ E 目标集 then return[s-->...-->n],如果n为目标结点,则沿着G中
从n到s的指针得出一条路径,并以此返回(指针在步骤7建立)。
(6)M<—expand(n),G'<--G,G<--{M,G},扩展结点n,建立集合M,使M仅含有n的
后继者,而不含有n的祖先,并把M中的结点作为n的后继者加入到G中。
(7)对M中的所有结点m
if m∈G',then建立指针m-->n,OPEN<--cONS(M,OPEN),对M中原来不在G中
的结点(即不在OPEN表中也不在cLOSED表中)建立一个从这些结点到n的指
针,并把它们加入到表OPEN。
if m∈G',then 决定是否改变指针m-->n,对M中已在G中的结点(已在OPEN表中
或cLOSED表中),决定是否应当将它们的指针指向n(这些结点已有了指针)。
if m∈E cLOSED then决定是否应改变m的后代的指针。
注解
(8)对OPEN表中的结点重新排序
注解
(9)GO LOOP