论文部分内容阅读
Prolog程序语言是一种建立在逻辑学理论基础之上的语言,最初Prolog程序语言被应用在自然语言等研究领域。现在它可以用来建造专家系统、智能知识库、自然语言理解等广泛的人工智能的研究中,同时它也可以帮助到一些常用应用程序的编写。这是因为Prolog的编程方法更像是使用逻辑语言来描述程序,它能够比其他语言更快速地开发程序。随着人工智能的兴起,越来越多的人开始探索各种人工智能技术。其中Prolog程序语言作为较早的代表,更是受人追捧。传统的Prolog编译器只能按照程序的书写顺序从上到下匹配,如果写在上面的谓词十分难解,而非常好解的谓词却写在了下面,那么Prolog解这个程序就需要一些时间。这也就是传统Prolog编译器的短板。如果在Prolog编译器中加入Prolog匹配的“指导思想”告诉Prolog编译器应该选哪个谓词,进而Prolog在寻找答案的时候就不会仅凭程序员的个人习惯和概率来左右其得到答案的效率了。本文着重介绍Prolog编译器的开发过程,并在实现编译器的基础上提出自适应算法以改进Prolog编译器的效率,主要研究工作如下:首先本文在大致讨论人工智能和专家系统的定义和Prolog语言的组成特点的基础上研究Prolog编译器的开发方法。本文采用F1ex词法分析器用于Prolog的词法开发,用正则表达式识别需要传递给语法分析器的记号。采用Bison用于其语法开发并在Bison中使用自顶向下的LL(1)文法。使用哈希这种数据结构来组织符号表,并用拉链法来处理符号表中遇到的冲突。由于本文要用到Flex和Bison的结合使用,而且是要识别一整个程序,所以词法分析器Flex和语法分析器Bison结合的特殊性也在研究范围之内。最后针对Prolog匹配出现的一些缺点,提出了利用UCB策略改进其匹配方式,试图使其高效率得出最优解。