初识Prolog

作者: 小白frankie | 来源:发表于2017-07-27 11:39 被阅读0次

    什么是prolog

    prolog是Programming in LOGic的简写,也就是使用逻辑的语言编写程序。

    prolog不是很高深的语言,相反,比较起其他的一些程序语言,例如c、basic等等语言, prolog是更加容易理解的语言。如果你从来没有接触过计算机编程,那么恭喜你,你将很容易的进入prolog世界。如果你已经是其他语言的高手,你就需要完全丢弃你原来的编程思路,否则是很难掌握prolog的。

    逻辑思维在我们日常生活中比比皆是,prolog正是把这种思维用文字描述出来的计算机语言。严格来说,我不认为这是程序,因为它执行哪一步不是由人来确定的,好像是有了初级的“智能”。

    例如使用prolog实现数独、八皇后问题、汉诺塔问题时,可以发现不一样的数学美。

    一个例子

    你定义一些规则,然后提出一个问题,它就会按这些规则来找答案。

    比如有如下规则:

    love(X,Y). % X love Y

    %X和Y是lovers的条件是:X love Y并且Y love X

    lovers(X,Y):-love(X,Y),love(Y,X).

    然后提出以下事实:

    love(zhangxueyou,wangfei).

    love(zhangxueyou,zouhuimin).

    love(wangfei,xietinfen).

    love(zouhuimin,zhangxueyou).

    love(xietinfen,wangfei).

    love(xietinfen,zouhuimin).

    love(liudehua,zouhuimin).

    并且提出lovers的规则:

    lovers(X,Y):-love(X,Y),love(Y,X).

    接着提出问题

    ?-love(zhangxueyou,wanfei).

    程序就会按照规则去找,并输出结果

    true.

    如果我们想知道Who和wangfei是lovers,我们输入

    ?-lovelovers(Who, wanfei).

    得到结果

    Who = xietingfeng.

    Prolog是当代最有影响的人工智能语言之一,由于该语言很适合表达人的思维和推理规则,在自然语言理解、机器定理证明、专家系统等方面得到了广泛的应用,已经成为人工智能应用领域的强有力的开发语言。

    SWI prolog使用

    1.下载及安装

    SWI prolog官网是http://www.swi-prolog.org/download/stable

    根据自己情况选择一个下载,我使用的windows (64 bit)的安装包。

    然后直接安装,安装过程中会提示将.pl文件与编译器关联(一般选择与swipl�in目录下的swipl-win.exe进行关联)。

    2. 开始第一个程序

    新建一个文本文件,命名为first.pl(名字可随意更改,只需保证后缀为.pl即可), 然后对其进行编辑。

    在里面写如下代码后保存。

    双击使用SWI-Prolog.exe打开:

    在光标后输入问题:love(zhangxueyou,wanfei). 按回车键后就会出现结果。

    prolog特点:

    1. prolog程序没有特定的运行顺序,其运行顺序是由电脑决定的,而不是编程序的人。

    从这个意义上来说,prolog程序不是真正意义上的程序。所谓程序就是按照一定的步骤运行的计算机指令,而prolog程序的运行步骤不由人来决定。它更像一种描述型的语言,用特定的方法描述一个问题,然后由电脑自动找到这个问题的答案。举个极端的例子,你只需要把某个数学题目告诉它,它就会自动的找到答案,而不像使用其他的语言一样,必须人工的编制出某种算法。

    2. prolog程序中没有if、when、case、for这样的控制流程语句

    前面已经说了,程序的运行方式有电脑自己决定,当然就用不到这些控制流程的语句了。通常情况下,程序员不需要了解程序的运行过程,只需要注重程序的描述是否全面,不过prolog也提供了一些控制流程的方法,这些方法和其他语言中的方法有很大的区别,希望你在以后的学习当中能够融会贯通。

    3. prolog程序和数据高度统一

    在prolog程序中,是很难分清楚哪些是程序,哪些是数据的。事实上,prolog中的所有东西都有相同的形式,也就是说数据就是程序,程序就是数据。举一个其他语言的例子:如果想用c语言编写一个计算某个数学表达式的程序很简单(比如:a=2+54),因为这是一段程序。但是如果想编写一个计算用户输入的表达式的值的程序就很困难了。因为用户输入的是一段数据(字符串),如果想让c语言处理这个字符串,就需要很多方面的技术。则正是因为在c语言中,程序和数据是分开的。而在prolog就不存在这个问题,你甚至可以很轻松的编写处理其它prolog程序的程序。

    4. prolog程序实际上是一个智能数据库

    prolog的原理就是关系数据库,它是建立在关系数据库的基础上的。在以后的学习中你会发现它和SQL数据库查询语言有很多相似之处。使用prolog可以很方便的处理数据。

    5. 强大的递归功能

    在其它的语言中,你也许已经接触过递归程序了。递归是一种非常简洁的方式,它能够有效的解决许多难题。而在prolog中,递归的功能得到了充分的体现,你甚至都会感到惊奇,递归居然又如此巨大的能力。

    接下来,小编会边学习边给出prolog的相关教程,想学人工智能和AI的同学不要错过了。

    相关文章

      网友评论

        本文标题:初识Prolog

        本文链接:https://www.haomeiwen.com/subject/svbbxxtx.html