prolog 订阅
Prolog(Programming in logic)是一种面向演绎推理的逻辑型程序设计语言,最早于1972年由柯尔麦伦纳(Colmeraner)及其研究小组在法国马赛大学提出。 [1]  高济,何钦铭著,人工智能基础 (第二版),高等教育出版社,2008.10,第67页 展开全文
Prolog(Programming in logic)是一种面向演绎推理的逻辑型程序设计语言,最早于1972年由柯尔麦伦纳(Colmeraner)及其研究小组在法国马赛大学提出。 [1]  高济,何钦铭著,人工智能基础 (第二版),高等教育出版社,2008.10,第67页
信息
提出者
柯尔麦伦纳及其研究小组
简    称
Prolog
定    义
面向演绎推理的逻辑型语言
应用学科
计算机原理
中文名
逻辑编程语言
外文名
Programming in logic
提出时间
1972年
逻辑编程语言关于逻辑编程语言
Prolog以处理一阶谓词演算为背景,由于其简单的文法、丰富的表达力和独特的非过程语言的特点,很适合用来表示人类的思维和推理规则,从而一问世就赢得了人工智能研究和应用开发者的广泛兴趣。尤其在西欧和日本,Prolog语言已推广应用于许多应用领域,如关系数据库、数理逻辑、抽象问题求解、自然语言理解和专家系统等。日本还在其于1979年提出的第五代计算机研究计划中把Prolog列为核心语言。Prolog实际上就是一种基于逆向规则的演绎推理技术,只不过对规则和目标的表示有严格的限制.再加上演绎推理控制机制自身的简单性,难以适用于复杂的应用域。 [1] 
收起全文
精华内容
下载资源
问答
  • prolog

    千次阅读 2011-04-26 22:52:00
    prolog

    prolog是Programming in LOGic的缩写,意思就是使用逻辑的语言编写程序。
    prolog并不是很高深的语言,相比c,c++来说prolog更象是个玩具。
    所以说prolog是种很好玩的语言。
    下面通过个简单的例子来让大家对prolog有个初步的概念。

    xietingfeng.pro

    father(xiexian,xietingfeng).
    mather(dibola,xietingfeng).

    father(xiexian,xietingting).
    mather(dibola,xietingting).

    father(xietingfeng,lucas).
    mather(zhangbozhi,lucas).

    parents(X,Y) :- father(X,Z),mather(Y,Z).

    childs(X,Y) :- father(X,Y).
    childs(X,Y) :- mather(X,Y).

    grandfather(X,Y) :- father(X,Z),father(Z,Y).

    grandmather(X,Y) :- mather(X,Z),father(Z,Y).

    上面这十几行就是全部的代码。
    先解释下每句的含义。
    father(xiexian,xietingfeng).  
    这样的语句在prolog中称为事实。这句含义就是:谢贤是谢霆锋的父亲。
    mather(dibola,xietingfeng).  
    这样的语句在prolog中称为事实。这句含义就是:狄波拉是谢霆锋的母亲。

    接下来的几句类似,分别表示:
    谢贤是谢婷婷的父亲。
    狄波拉是谢霆锋的母亲。
    谢霆锋是lucas的父亲。
    张柏芝是lucas的母亲。

    这些事实是prolog进行推理的基础。

    parents(X,Y) :- father(X,Z),mather(Y,Z).
    这样的语句在prolog中称为规则,
    这句含义就是:如果X和Y是夫妻的话,那么必然存在一个孩子Z,使得X是Z的父亲,并且Y是Z的母亲。(呵呵)

    接下来的几个也都是规则。
    childs(X,Y) :- father(X,Y).
    childs(X,Y) :- mather(X,Y).
    表示如果Y是X的孩子,那么X必然是Y的父亲或者母亲。

    grandfather(X,Y) :- father(X,Z),father(Z,Y).
    表示如果X是Y的爷爷,那么父亲X的孩子Z必然是Y的父亲。

    grandmather(X,Y) :- mather(X,Z),father(Z,Y).
    表示如果X是Y的奶奶,那么母亲X的孩子Z必然是Y的父亲。

    用prolog编程的感觉很特别,就是象是用自然语言来描述一样,一切都很自然。

    下面运行上面这段代码看看实际效果:

    查询一,查查谢霆锋的父亲?

    ?- father(X,xietingfeng).

    X = xiexian ;
    no

    我们得到了结果xiexian,并且仅有这一个结果(呵呵)

    查询二,查查狄波拉有哪几个孩子?

    ?- mather(dibola,X).

    X = xietingfeng ;

    X = xietingting ;
    no
    ?-

    得到2个X,分别是谢霆锋和谢婷婷,全中

    查询一和二都是对简单的事实的查询。

    查询三,查看有哪几对夫妻?

    ?- parents(X,Y).

    X = xiexian
    Y = dibola ;

    X = xiexian
    Y = dibola ;

    X = xietingfeng
    Y = zhangbozhi ;
    no
    ?-

    结果是三对,不过有一对是重复的,至于为什么会重复,大家自己思考吧。

    查询四,张柏芝和谁是夫妻?

    ?- parents(X,zhangbozhi).

    X = xietingfeng ;
    no
    ?-

    恩,张柏芝的老公是谢霆锋。

    查询五,lucas的爷爷是谁?

    ?- grandfather(X,lucas).

    X = xiexian ;
    no
    ?-

    是的,lucas的爷爷就是,lucas的父亲的父亲谢贤。

    上面这几个查询是对规则的查询。

    我们还可以增加其他的规则,
    比如兄弟姐妹,条件是有相同的父亲和母亲。
    或者叔叔阿姨,条件是与孩子的父亲或者母亲是兄弟姐妹。
    一切都是这么的自然和轻松。

    我在这仅仅介绍还有着这么一门有趣的语言,感兴趣的同学可以查查相关资料。
    最后引用下其他人对prolog的评价:

    prolog很适合于开发有关人工智能方面的程序,例如:专家系统、自然语言理解、定理证明以及许多智力游戏。
    曾经有人预言prolog将成为下一代计算机的主要语言,虽然这个梦想目前还很难实现,不过世界上已经有许多prolog的应用实例了。
    你要坚信,它绝对不是那种只在实验室发挥作用的语言,之所以大多数人都不了解它,是因为它的应用范围比较特殊而已。

    展开全文
  • Prolog

    2010-12-23 20:51:00
    Prolog(Programming in Logic的缩写)是一种逻辑编程语言。它建立在逻辑学的理论基础之上, 最初被运用于自然语言等研究领域。现在它已广泛的应用在人工智能的研究中,它可以用来建造专家系统、自然语言理解...

    Prolog(Programming in Logic的缩写)是一种逻辑编程语言。它建立在逻辑学的理论基础之上, 最初被运用于自然语言等研究领域。现在它已广泛的应用在人工智能的研究中,它可以用来建造专家系统、自然语言理解、智能知识库等。同时它对一些通常的应用程序的编写也很有帮助。使用它能够比其他的语言更快速地开发程序,因为它的编程方法更象是使用逻辑的语言来描述程序。

      历史

      Prolog语言最早由Aix-Marseille大学的Alain Colmerauer与Phillipe Roussel等人于60年代末研究开发。1972年被公认为是Prolog语言正式诞生的年份,自1972年以后,分支出多种Prolog的方言。最主要的两种方言为Edinburgh和Aix-Marseille。最早的Prolog解释器由Roussel建造,而第一个Prolog编译器则是 David Warren编写的。

      Prolog一直在北美和欧洲被广泛使用。日本政府曾经为了建造智能计算机而用Prolog来开发ICOT第五代计算机系统。在早期的机器智能研究领域,Prolog曾经是主要的开发工具。

      80年代Borland开发的Turbo Prolog,进一步普及了Prolog的使用。1995年确定了ISO Prolog标准

      目前比较流行的实现工具包括 SWI-Prolog, Yap 等

      prolog的几个特点:

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

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

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

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

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

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

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

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

      5. 强大的递归功能

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

    展开全文
  • ProLog

    2006-10-10 15:28:46
    完整的prolog程序是有事实和规则组成的。 事实用来储存一些数据,而规则用来储存某种可以推理出来的关系。 理论上来说使用c语言可以编制任何种类的程序,甚至连prolog语言都是使用c语言编写的。不过对于急于...
    http://www.chinaai.org/Article_Show.asp?ArticleID=314

    完整的prolog程序是有事实和规则组成的。

    事实用来储存一些数据,而规则用来储存某种可以推理出来的关系。

    理论上来说使用c语言可以编制任何种类的程序,甚至连prolog语言都是使用c语言编写的。不过对于急于开发应用程序的用户,最关心的是如何最经济最有效率的开发程序,prolog为你多提供了一个选择的余地。

    在prolog程序中,是很难分清楚哪些是程序,哪些是数据的。事实上,prolog中的所有东西都有相同的形式,也就是说数据就是程序,程序就是数据。

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

    http://groups.google.co.id/group/nirvanastudio/browse_thread/thread/dd5ad220e3c086a6/137508f386298e1e?lnk=raot&hl=id
    函数Currying的意思就是将参数和函数关联起来,变成一个新的函数。比如一个二元参数f a b
    当给出f 1的时候,应该返回什么呢?一般的语言中,要么是将b设为一个默认值,要么就是直接出错,而当有了Currying,那么f
    1其实返回一个函数g x = f 1 x。

    在理论计算机科学中,Curry化提供了在简单的理论模型中比如只接受一个单一参数的lambda 演算中研究带有多个参数的函数的方式。

    Lambda 演算可以被称为最小的通用程序设计语言。它包括一条变换规则 (变量替换) 和一条函数定义方式,Lambda 演算之通用在于,任何一个可计算函数都能用这种形式来表达和求值。因而,它是等价于图灵机的。尽管如此,Lambda 演算强调的是变换规则的运用,而非实现它们的具体机器。可以认为这是一种更接近软件而非硬件的方式。
    展开全文
  • prolog-源码

    2021-03-22 04:55:34
    prolog
  • Prolog-源码

    2021-03-05 09:38:45
    Prolog
  • Turbo Prolog

    2021-03-22 04:00:19
    比Visual Prolog还要早的Turbo Prolog ,第一次在CSDN上传东东,以前自己用过的工具 比Visual Prolog还要早的Turbo Prolog ,第一次在CSDN上传东东,以前自己用过的工具
  • SWI-prolog 软件 及 Prolog 教程 SWI-prolog 软件 及 Prolog 教程 SWI-prolog 软件 及 Prolog 教程 SWI-prolog 软件 及 Prolog 教程
  • 编程语言Prolog的简介。 假设以前没有编程知识。
  • 序言 Projet PROLOG界面 Il faut lancer le fichier“ projetProlog.pl”
  • prolog教程

    2016-04-02 17:05:16
    prolog教程
  • SWI-Prolog 和 Simulink 之间的通信使用 JPL(Java Interface to Prolog)。 JPL 是一个使用 JNI(Java Native Interface)的库,提供 Java 和 SWI-Prolog 之间的双向接口。 SWI-Prolog 接口模块允许您使用 PROLOG ...
  • 这些讲义介绍了声明性编程语言Prolog。 重点是学习如何编程,而不是逻辑编程理论。 尽管如此,也包括一小段关于Prolog逻辑基础的内容。
  • 想象一下带有进程和邮箱以及发送和接收的Prolog方言——强大的并发和分布式编程所必需的所有手段。 或者,将其视为具有逻辑变量、回溯搜索和内置事实和规则数据库的Erlang方言——逻辑编程、知识表示和推理的手段。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,166
精华内容 1,266
关键字:

prolog