Prolog 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
Prolog 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
Prolog 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
Prolog 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
Prolog 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 未知
开发语言
操作系统 跨平台
软件类型 开源软件
所属分类 编程语言
开源组织
地区 不详
投 递 者 红薯
适用人群 未知
收录时间 2009-07-12

软件简介

PrologProgramming 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标准

有别于一般的过编程语言,prolog的程式是基于谓词逻辑的理论。最基本的写法是定立物件与物件之间的关系,之后可以用询问目标的方式来查询各种物件之间的关系。系统会自动进行匹配及回溯,找出所询问的答案。

语法示例

表示事实:

human(kate).
human(bill).
likes(kate,bill).

表示kate和bill是一个人(human),kate喜欢bill,而表示规则:

friend(X,Y):-likes(X,Y),likes(Y,X).

表示,对于两个对象XY.如果X喜欢Y,且Y喜欢X,那么他们是朋友。

展开阅读全文

评论 (0)

加载中
更多评论
发表了资讯
2011/04/21 00:00

学习 Prolog 语言能让你成为更好的程序员

本文是从 Why Learning Prolog Can Make You a Better Programmer 这篇文章翻译而来。 由于对这种语言不太熟悉,只记得上大学时老师有介绍这是一门人工智能的编程语言,翻译中有些地方理解的可能不正确,欢迎指正。 在计算机教学的课程中,有个传统的现象,是否学过某一两种的课程能够成为判断一个人能否深入理解一些计算机科学概念的分水岭。尽管每个人都似乎能够使用像Java这样的语言进行编程,但一些有趣的证据现象表明,计算...

13
11
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
2012/07/29 21:08

Learning of Prolog

Sometime ago, I decided to learn one new language. The two candidates are Erlang and Node.js, both are designed for parallel programming, and optimize multiple cores of CPU. Then I found this result from the first link of Google, indeed, learning a new TYPE of language might be more interesting for me now, so I just head on Erlang. http://stackoverflow.com/questions/3011317/node-js-or-erlang I ...

0
1
发表了博客
2012/06/03 18:28

prolog下的eight queens

valid_queen((Row, Col)) :- Range = [1, 2, 3, 4, 5, 6, 7, 8], member(Row, Range), member(Col, Range). valid_board([]). valid_board([Head|Tail]) :- valid_queen(Head), valid_board(Tail). rows([], []). rows([(Row, _)|QueensTail], [Row|RowsTail]) :- rows(QueensTail, RowsTail). cols([], []). cols([(_, Col)|QueensTail], [Col|ColsTail]) :- cols(QueensTail, ColsTail). diags1([], []). diags1([(Row, Col)|...

0
0
发表了博客
2012/06/03 18:27

prolog下的4X4数独

valid([]). valid([Head|Tail]) :- fd_all_different(Head), valid(Tail). sudoku(Puzzle, Solution) :- Solution = Puzzle, Puzzle = [S11, S12, S13, S14, S21, S22, S23, S24, S31, S32, S33, S34, S41, S42, S43, S44], fd_domain(Solution, 1, 4), Row1 = [S11, S12, S13, S14], Row2 = [S21, S22, S23, S24], Row3 = [S31, S32, S33, S34], Row4 = [S41, S42, S43, S44], Col1 = [S11, S21, S31, S41], Col2 = [S12, S22,...

0
2
发表了博客
2019/04/24 11:30

Prolog 语言入门教程

Prolog 语言入门教程 作者: 阮一峰 日期: 2019年1月28日 Prolog 是一种与众不同的语言,不用来开发软件,专门解决逻辑问题。比如,"苏格拉底是人,人都会死,所以苏格拉底会死"这一类的问题。 Prolog 就是"逻辑编程"(programming of Logic)的意思。只要给出事实和规则,它会自动分析其中的逻辑关系,然后允许用户通过查询,完成复杂的逻辑运算。 本文简单介绍如何使用 Prolog 语言,主要参考了 xmonader 的教程。 一、SWI-P...

0
0
发表于服务端专区
2016/04/13 13:19

Content is not allowed in prolog

在解析xml数据时,该错误通常是由于xml文件格式错误导致,更多的是由BOM导致! 解决办法之一,把保存xml内容的文件,用editplus打开,另存为纯粹的utf-8(无BOM)格式. 办法二:如果该xml数据是从InputStream(比如HttpURLConnection请求返回)获得,最好直接将InputStream传入解析器(通常的解析器都有InputStream作为参数的方法)!

0
0
发表了博客
2013/01/29 22:46

swi-prolog 解决数独

swi-prolog是prolog比较流行的一种实现,但话说prolog这货的语法还真不好理解,而且资料少,当年与LISP相抗衡,现在好像不怎么火了。在win7上折腾,还是没把命令行交互模式下的readline补全给搞明白,体验太差了。 事实与规则文件内容如下: % 加载库--有限域的计算 :- use_module(library(clpfd)). valid([]). valid([Head|Tail]) :- all_different(Head), % in the book, this is 'fd_all_different' valid(Tail)...

0
2
发表了博客
02/06 13:29

使用prolog猜密码

题目如上图: prolog 代码如下,也是刚学而已, 其中 =:= 标识相等判断, =\= 不相等, 逗号 表示 与 条件 ,分号标识 或条件 %X Y Z 分别表示 百 十 个  %根据条件1可以推出 当 X = 6 时, Y 不等于 8,2, Z 也不等于8,2   % 没有列举全 test_password1(X, Y, Z) :-       (X =:= 6,Y =\=8, Z =\= 2);         (X =\= 6,Y =:=8, Z =\= 2);       (X =\= 6,Y =\=...

0
0
发表于AI & 大数据专区
2020/02/29 17:19

用Prolog解决数独问题

我们先了解一下什么是数独 数独(shù dú)是源自18世纪瑞士的一种数学游戏。它是一种运用纸、笔进行演算的逻辑游戏。数独有多种类型,我们仅以其中一种类型作为本文实例。 玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个粗线宫(3*3)内的数字均含1-9,不重复。 方格 水平方向有九横行,垂直方向有九纵列的矩形,画分八十一个小正方形,称为九宫格(Grid),如图一所示,是数独(...

0
0
发表了博客
2020/03/16 19:52

【源码分析】Strawberry Prolog 5.0 源码分析

[源码下载](http://www.dobrev.com/source/StrawberrySource_5_0.zip) 我已经把这个软件提交到 OSChina 并得到了收录,但是在搜索栏搜索“Strawberry Prolog”是找不到的,怕以后自己翻不到,把链接放这里:https://www.oschina.net/p/strawberry-prolog # 前言 介绍 Prolog IDEs 的很多,但是专门介绍 Strawberry Prolog 的文章几乎没有。不要看它的官方网站还是上世纪的风格,也没有什么移动版视图,但是其到2020年1月23日仍有...

1
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了问答
2013/05/06 22:26

期末作业,人工智能的简单的推理系统,大神帮帮忙,不要太复杂了,复杂了看不懂,越简单越好,谢谢

设计一个推理系统,用Prolog语言进行编程。要求:设计思路、用到的知识(实验原理)、Visual Prolog程序、运行结果(截图)、操作说明,最终形成一个报告的形式。

33
0
发表了问答
2013/05/18 22:41

prolog语言,有谁懂得么?

如果要用prolog解决 这个地址里面的逻辑难题,该怎么编写代码? http://www.yandong.org/archives/492 最近对prolog感兴趣,发现prolog可以很方便的处理一些逻辑问题。 但是发现prolog本身有很大的限制,比如对 非 这个谓词的不支持。 对于那个链接中第一个的问题,苦思冥想没有想出来该如何编写代码。 是我没有领会prolog编程的精髓,还是prolog自身的限制呢?...

3
1
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
0 评论
29 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部