·350· 智能系统学报 第4卷 下 (c 系统初始化 平的 牛成当前子句(即问 题日标子句)的环境 合一处理 取当前子句的第一子 日标为当前子日标 合一成功否?> 当前子山标为空 N <是否尾递归? 取下一个子H标 为当前子日标 对当前子日标 返同处理 取下一个 进行延迟检在 匹配子句 可溯 <已得到解否 N r 史新当前子月标 检在通过否? 进运栈保存 是否岁史多解? 合一现场信总 B IN 业新当前子月标 取可匹 对引起延迟的 结束 子句 变量做标记, 并挂起子月标 的调用 图1Gdel语言控制机制的算法流程图 Fig.1 Outline of the control facility algorithm for Godel 流程图中各个模块的主要功能如下: 合一现场; 1)生成当前子句的环境模块:根据当前子句中 6)进入运行栈保存合一现场信息模块:将消解 的变量信息在环境栈中开设变量空间; 过程中的一系列合一现场信息,即在每一次合一成 2)返回处理模块:当一个子目标求解成功后, 功后,将表征合一现场的程序对象推人运行栈中.并 本模块则返回到该子目标的父节点,取下一子目标 在环境栈中保存合一时产生的变量置换信息,以便 进行求解.如果系统返回到问题目标节点(即消解 在回溯或返回时恢复合一前的现场.在子目标合一 树的根),则系统给出问题的求解结果一成功或 成功后,若将某一变量实例化了,而此变量曾使某一 失败,最后再询问是否要更多结果还是退出程序; 子目标的调用进程不满足DELAY说明被延迟挂 3)对当前子目标进行延迟检查模块:对当前子 起,那么这时要将此进程唤醒成为当前子目标,然后 目标进行延迟条件检查,如果不满足DELAY说明, 重新匹配 则挂起该子目标的调用直到条件满足,并对引起延 5结束语 迟的变量做标记保存在延迟栈中; 4)取可匹配子句模块:搜索与当前子目标匹配 本文研究的G6dl语言控制机制的算法已在研 的子句,在搜索之前必须检查该子目标的上一个尝 发的Godel语言编译雏形系统中得以实现23],同 试合一子句是否含有剪枝符号,如果有则函数在搜 时,通过计算可视化功能的实现和部分实例的测 索过程中不再考虑含有同一剪枝符号的程序子句, 试,验证了本文的算法具有很高的效率.然而, 以此达到剪枝的目的; 由于Gdl语言引入了许多新的语言成分,要做到 5)回潮模块:当前子目标如果与所有的可尝试 Cdel语言的完全实现,目前还有很多工作要做.其 合一子句均合一失败,则必须回溯,即回溯到上一次 中,变量的多态性、并行化是很重要的2个方面.变