Prolog笔记

Prolog是一种以一阶谓词为基础的逻辑性语言。

Programing in Logic

Prolog语言(或者系统)是以一阶谓词逻辑的Horn 子句集为语法,以Robinson的消解原理为工具,加上深度优先的控制策略而形成的人工智能通用程序设计语言 


① 是一种描述性语言。只需要告诉 “系统做什么”,不要告诉系统 “如何做”
② 数据与程序的统一表达。提供一种统一的符号结构 “项” ,数据与程序都是由项组成 
③ 自动实现模式匹配与回溯。这是人工智能中最常用的两项操作,Prolog自动实现这些操作 
④ 程序易于编写与阅读。它是面向人的自然语言 
⑤ 语句句型少,语法简明。只有三种句型 )

Prolog中的“.”C语言中的“;”一样,都是代表一段代码的结尾。

Prolog终端输入的时候,没一个语句都是以“?-”这样两个字符开头的,它代表我们输入的程序代码其实是对Prolog系统的一个查询(问询),一旦用户输入了查询,Prolog系统会运用它的知识库来判定这个查询是真(true)是假(false).

关键词:查询,知识库,真or假。

writeln是prolog自定义的语句,向当前设备输出一个字符串并且换行。这个语句为真。

每一行都代表一个子句(clause)。带有“:-”的子句叫规则(rule),不带有“:-”的子句叫事实(fact)。另外,在Prolog中以小写英文字母开头的名称称为原子(atom),原子是常量,它的值不变,以大写英文字母为开头的名称称为变量。

prolog中“,”代表逻辑关系中的“且”,“;”代表逻辑关系中的“或”。

prolog通过三个方面来尝试着证明查询:

1.匹配(unifing/matching)。Prolog试图从它的知识库里面找出最符合你的查询的规则或者是事实。

2.变量重命名。因为在同一个查询(query)里面已经有了”Z”,所以Prolog系统将重复的Z命名为Z1(事实上,在Prolog内部,变量根本不会用”Z”,”Z1”这样的名字,Prolog的编译程序的时候就已经将”Z”换成了”G132329392049”这类名字以保证名字不会重复)

3.回溯(back-tracking)。这是Prolog最最重要的一个特性。Prolog是用深度优先(depth-first search)的算法来寻找答案的。当一个规则或者是事实不符合时,Prolog会通过回溯的方式回到之前的状态,然后去尝试另外的规则或者是事实,知道你的查询(query)被证明为止。如果所有的可能性都搜索过了,你的查询仍然不能得到证实,那么Prolog会认为你的查询证实不了,返回”false”。有关回溯算法的详细介绍你可以去网络上搜索一下。

Prolog程序的两种意义:

一:陈述性意义:Prolog程序具有陈述性意义就在于Prolog都是描述的逻辑学上的一个事实或者是一个规则。

二:过程性意义:向JavaC这样的语言一样,Prolog的程序也具有过程性意义,即解决问题的步骤。

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值