首页 > 编程知识 正文

prolog入门,python machine learning

时间:2023-05-05 01:32:05 阅读:114261 作者:1195

使用Prolog编程语言解决爱因斯坦斑马难题的原文链接:

3358 www.cn blogs.com/l complete/p/3192488.html

目前商业上广泛使用的编程语言大多是指令型或函数型编程语言,这些语言在某些方面有很高的相似性。 例如,python和ruby在很多地方是共同的,学习一个,再学习一个就可以做更多。 很多语言都是如此,但今天介绍的语言与主要编程语言完全不同,是prolog——的逻辑编程语言。

prolog是逻辑编程的缩写,广泛用于人工智能、自然语言等研究领域。 用来解决逻辑难题是完全不在话下的。 今天为了解决有名的爱因斯坦的逻辑课题(斑马的课题),首先来看看prolog的语法吧。

prolog基本语法prolog有三个基本元素:事实、规则和查询。 事实和规则用于描述数据,查询用于获取问题的答案。

我们可以这样定义事实:

Human(sqdmn ).Human(lili ).Father ) sqdmn,david ).sister ) sqdmn,lili,sqdmn ) .此代码与sqdmn

daughter(Father,a,b ) :- Father(A ) a,father )、sister(A ) a,b这样的规则,对于变量a,b,father变量为a的父亲,

请注意,如果单词在prolog中以小写字母开头,则它是固定值;如果单词以大写字母开头,则它是变量。

将这些事实和规则放在一个文件中,然后在命令行中打开prolog,编译此文件,就可以发出类似于Daughter(David,a,_ )的查询。 prolog计算a可能的值并将其输出到控制台。 最后一条下划线是占位符,不进行评估。

prolog还可以递归进行列表和数学等运算。 这部分很强大,但我不打算在这里说话。 因为如果有以上的基础知识,就可以利用它来解决逻辑问题。 现在让我们来解决“斑马的课题”。

爱因斯坦的逻辑难题主题:五个不同国家工作各不相同的人各住一条街五户人家,每家颜色不同,各有自己养的宠物,喜欢喝不同的饮料。 根据以下提示,你能告诉我哪家的人养斑马,哪家的人喜欢喝矿泉水吗?

英国人住在红色房子里,西班牙人养狗,日本人喜欢油漆店,意大利人喜欢喝茶,挪威人住在左边第一家,绿色房子右边摄影师养蜗牛液晶屏,黄色房子中间,那家人喜欢牛奶。 挪威人住在蓝房子旁边。他们喜欢喝小提琴汁,养狐人住的房子临近医生家,养马人。解决住的房子和液晶屏BD的房子毗邻这个问题的关键是解决每个房子的相关属性(国家、颜色、颜色如果前面的五个提示包含五个国家,可以利用它来绘制表格。 每一行代表一个国家,每一行代表一个家的属性。 根据提示得到一些推论,并将结果填写在表格中,答案就会逐渐清晰。 用这种人工方法推理的结果如下图所示。

我们知道解决问题的关键,但是这个问题还需要经过好几步的推导才能得出结果。 使用程序的话,得到这个问题的答案很简单。 定义事实和规则,向编程提出问题,逻辑引擎就会检测结果。

以下是解决此问题的prolog代码。

house(a,[A,_,_,_,_] ).house ) a,[_,a,_,_,],[_,_,_,],a,_,] ()、right(a,b,[_,_,a,b,_] )、right )、[_,_,a,B] ).middle(A )、[A,_,_,a,B] a].attr(country,Pet,Color,Drink,Work ).all_houses(houses ) :-house ) attr (britsh,britsh ),attr house(Attr(Japan,_,_,_,_,painter ),Houses ),house (attr,_,_,tea,_,Houses ),) Houses ),right(attr(_(_(_,_,_,white,_,_,_ ),attr ) _,_,green,_,_,_,Hou houses ) house(attr )、_、_、_、orange、violinst )、Houses )、neighbor )、attr(_、fox、_、_、_、_、_ _、_ )、atttttttttr

在事实部分,把房子作为一个整体来看,说明房子在五个房子里,房子的左右关系,中间的房子在哪个位置,第一个房子在哪个位置,房子之间的相邻关系,各家具有什么属性。

规则部分包括主题中提出的描述和最终问题的描述,这些定义是为了告诉逻辑引擎在评估时必须满足这些条件。

最终查询是all_houses(A ),prolog逻辑引擎搜索满足结果的房屋数组,并注意每个房屋都由该属性组成。 其结果如下。

water (新、福克斯、黄色、water、diplomat )、

ATTR(italy、horse、blue、tea、doctor )、

ATTR(Britsh、snail、red、milk、photographer )、

ATTR(spain、dog、white、orange、violinst )、

ATTR(Japan、zebra、green、cafe、painter ) ]。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。