七周七语言——Prolog(一)

Prolog是一种声明式语言,不同于命令式语言,它基于事实和推论进行逻辑推理。本文介绍了Prolog的基本概念,包括事实、规则和查询,并通过地图着色问题展示其基本推论过程。
摘要由CSDN通过智能技术生成

        Io和Ruby(前两章的语言,后续会补上)被称为命令式语言。命令式语言就是我们需要准确的告诉计算机怎么完成一件任务,每一个细节都需要我们设计好。但是Prolog不同,它是一门声明式语言,我们只需要给他一些事实(fact)和推论(inference),并让他为我们推断。我们不需要告诉电脑怎么做,电脑会自动做出推断。

        1  关于Prolog

        Prolog是一门逻辑编程语言,它于1972年由Alain Colmerauer和Phillipe Roussel开发完成,在自然语言处理领域颇受欢迎。和SQL一样,Prolog基于数据库,但是其数据有逻辑规则和关系构成;Prolog由两部分组成:一部分用于描述数据,另一部分用于查询数据。下面是基本构建单元。

  • 事实。事实是关于真实世界的基本断言。
  • 规则。规则是关于真实世界中一些事实的推论。
  • 查询。查询是关于真实世界的一个问题。
        下面我们来具体看一看Prolog的语法规则,揭开它的神秘面纱。

        2  基本概况

        Prolog中,第一个字母的大小写有重要含义,如果一个词以小写字母开头,他就是一个原子(atom)—— 一个类似ruby符号的 固定值,如果一个词以大写字母或下划线开头,那么他就是一个 变量。变量的值可以改变,但是原子不能。下面看个具体的例子,可以帮助我们理解这两个概念。
likes(wallace,cheese).
likes(grommit,cheese).
likes(wendolene,sheep).

friend(X,Y):-\+(X=Y),likes(X,Z),likes(Y,Z).

        这几行代码可以这样理解:前三行语句是事实,最后一行语句是一个规则。wallace,grommit,wendolene都是原子。我们可以这么说,wallace喜欢cheese,grommit喜欢cheese,wendolene喜欢sheep。现在我们可以问一些问题了,Prolog会用yes或no来回答。比如:
|?-likes(wallace,sheep).

no
|?-likes(grommit,cheese).

yes

       
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值