首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么这个prolog查询既真实又错误?

这个问题涉及到了逻辑编程语言Prolog的查询问题。Prolog是一种基于逻辑的编程语言,它的查询可以同时返回真实和错误的结果。这是因为Prolog的查询是基于一组事实和规则的,而这些事实和规则可能存在不完整或不一致的情况。

当一个查询在Prolog中被执行时,它会根据已知的事实和规则来寻找所有可能的解决方案。如果存在多个解决方案,那么查询就会返回所有解决方案。但是,如果存在不完整或不一致的事实或规则,那么查询可能会返回错误的结果。

例如,如果我们有以下的事实和规则:

代码语言:txt
复制
parent(john, mary).
parent(john, mike).
parent(jane, mary).
parent(jane, mike).

sibling(X, Y) :- parent(Z, X), parent(Z, Y), X \= Y.

这里定义了一个sibling/2谓词,它表示两个人是兄弟姐妹。如果两个人的父母相同,但是它们不是同一个人,那么它们就是兄弟姐妹。

现在,我们执行以下查询:

代码语言:txt
复制
?- sibling(mary, X).

这个查询会返回所有和Mary是兄弟姐妹的人。在这种情况下,查询会返回两个结果:Mike和Mike。这是正确的结果,因为Mike和Mike是兄弟姐妹。

然而,如果我们执行以下查询:

代码语言:txt
复制
?- sibling(jane, X).

这个查询会返回所有和Jane是兄弟姐妹的人。在这种情况下,查询会返回两个结果:Mary和Mike。但是,这些结果是错误的,因为Mary和Mike已经是兄弟姐妹了,而不是Jane的兄弟姐妹。

这就是为什么Prolog的查询可以同时返回真实和错误的结果。这是因为Prolog的查询是基于一组事实和规则的,而这些事实和规则可能存在不完整或不一致的情况。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

2017最受欢迎人工智能编程语言:Python第一,R并未上榜

具体来说,它对概率编程来说很好,并能帮助开发人员在编译时发现错误。 该语言具有CUDA绑定,并被编译为字节码(bytecode)。由于函数编程和静态,代码可以轻松地在云上的不同CPU上执行。...Prolog的性质使得实现事实(facts)和规则(rules)变得简单直接。实际上,Prolog中的一切都是事实或规则。它允许你查询数据库,即使你已具有上述这些事实和规则。...Lisp是最早的(1958年开发的)编程语言之一,由John MaCarthy博士创造,John MaCarthy也是创造“人工智能”这个术语的人。...虽然近年来Lisp没有被很多人使用,但该语言灵活具有可扩展性。 Lisp最初是针对Lambda演算开发的,诞生以来发生了很多演变。...一个真实的例子是科幻游戏Doom 3,它使用C ++和虚拟引擎,一套游戏开发工具(用C ++编写)。

2.4K60

5种最流行的AI编程语言

C ++能够提供更快的执行时间和响应时间(这就是为什么它经常用于搜索引擎和游戏)。 此外,C ++允许大规模的使用算法,并且在使用统计AI技术方面非常高效。...另一个重要因素是由于继承和数据隐藏,在开发中C ++支持重用代码,因此省时省钱。 C ++适用于机器学习和神经网络。...在AI开发中使用Lisp语言,是因为它的灵活性使快速建模和实验成为可能,这反过来促进了Lisp在AI开发中的发展。例如,Lisp有一个独特的宏观系统,可以帮助探索和实现不同层次的智能。...Prolog Prolog也是最古老的编程语言之一,因此它也适用于AI的开发。 像Lisp一样,它也是主要的AI编程语言。Prolog的机制能够开发出受开发人员欢迎的较为灵活的框架。...Prolog是一种基于规则和声明的语言,这是因为它具有规定AI编程语言的事实和规则。 Prolog支持基本机制,如模式匹配,基于树的数据结构以及AI编程所必需的自动回溯。

2.2K80

高薪AI工程师都在用什么编程语言?2020 年七大 AI 编程语言大盘点

Prolog语言最适合创建聊天机器人,ELIZA是用Prolog创建的第一个聊天机器人。...第一个成功的聊天机器人,图源medium 要理解Prolog,你必须熟悉指导它工作的一些基本术语: Facts(事实)定义了真实的声明。 Rules(规则)定义了有附加条件的声明。...Queries(查询)定义如何使你的声明真实,以及如何对事实和规则进行最终分析。...Haskell被认为是一种非常安全的编程语言,与其他编程语言相比,它在错误处理方面提供了更大的灵活性。在Haskell中很少发生错误。...即使它们确实发生了,大多数非语法错误都是在编译阶段,而不是运行时捕获的。

1.8K20

Apache Kudu 对频繁更新数据场景下的大数据实时分析最佳用例

从上面分析可知,这两种数据在存储方式上完全不同,进而导致使用场景完全不同,但在真实的场景中,边界可能没有那么清晰,面对需要随机读写,需要批量分析的大数据场景,该如何选择呢?...从上面分析可知,这两种数据在存储方式上完全不同,进而导致使用场景完全不同,但在真实的场景中,边界可能没有那么清晰,面对需要随机读写,需要批量分析的大数据场景,该如何选择呢?...数据从HBase导出成静态文件是周期性的,一般这个周期是一天或一小时,在时效性上不是很高。 (8)难以应对后续的更新。真实场景中,总会有数据是「延迟」到达的。...为了解决上述架构存在的问题,Cloudera公司开发了Kudu,kudu 的定位不是取代HBase,而是Fast Analytics on Fast Data,是一个支持随机读写数据查询的业务、支持批量扫描数据的实时分析的大数据存储引擎...Cloudera公司也曾经想过基于 HBase 进行修改,将HBase修改成合适随机访问数据的查询合适做批量数据扫描的数据分析平台,然而结论是对 HBase 的改动非常大, Kudu 的数据模型和磁盘存储都与

5K30

彻底理解Doctype

今天想起来,这个问题乃是一个最基本的问题,所以花了点时间整理一些知识,消化一下,今后不能够在这个方面有半点的马虎。 首先,看一段典型的Doctype <!...经过Google,上面实验发现的问题是这个原因引起的:不同网页的不同呈现模式 现代浏览器包括不同的呈现模式,目的是支持遵循标准的网页,也支持为老式浏览器而设计的网页。...所以,如果在它之前还有其他任何东西 (包括XML prolog),就无法识别doctype。因此,XML prolog的存在会使IE,Opera和Safari进入Quirks模式。...3、形式错误的doctype。...浏览器对doctype声明的形式和格式非常敏感,如果不能识别一个形式错误的doctype,就会强制进入Quirks模式(正是因为这个原因,所以我们建议将一个已知正确的doctype拷贝和粘贴到文档中,而不是亲自输入它

81310

虚假新闻为什么总比真相传播得更快?

这个发现让我们感到惊讶,让我们感到担忧。我们发现,与所有类别的真实信息相比,虚假新闻会传播得更远、更快,而且渗透的程度会更深、范围会更广。有时候,后者甚至会超出前者一个数量级。...或许有人会认为,可以用传播虚假新闻的人的性格特征来解释为什么虚假信息的传播速度比真实信息的传播速度快很多,但数据告诉我们,情况并非如此。...社交机器人在网上传播谎言的方式令人感到不安,令人非常着迷。...但是,如果人类就是虚假新闻活动的目标,而且对它们的传播还如此关键,那么我们为什么会被虚假新闻吸引?我们为什么还会主动分享这些错误信息呢? 一种解释是“新奇性假设”。...为了衡量所谓的“新奇性”,我们观察了那些分享真实新闻,也分享各种谣言的用户,然后把谣言推文的内容与在用户决定转发这些谣言前60天内曾经接触过的所有推文的内容进行了比较。

47920

编程语言|编译原理

今天的是讲一讲编程语言,为什么会有这么多不同的编程语言?为什么还会有新的编程语言? ?...The Economy of Programming Languages 这里可以看看程序设计语言的发展历程: 第一台电子计算机出现在20世纪40年代,使用由0,1序列组成的机器语言编程,这个序列明确的告诉计算机以什么样的顺序执行那些运算...第一代:机器语言 第二代:汇编语言 第三代:Fortran,Cobol,Lisp,C,C++,C#,Java(高级程序设计语言) 第四代:为特定应用设计的语言,比如用于生成报告的NOMAD,用于数据查询的...第五代:基于逻辑和约束的语言,比如Prolog,OPS5 另外一种分类是分成 强制式语言 C,C++,JAVA,C# 声明式语言 ML,HASKELL,PROLOG 冯诺依曼语言 FORTRAN,C 面向对象语言

2K30

Erlang 入坑指南

Prolog 大部分人可能都没听过,更别说用过了,我特地搜了下 Prolog,跟 Erlang 绝对是一个亲妈生的。...我问 Joe 为啥是 Prolog,老爷子说因为他 C 写特烂所以就用 Prolog 实现的初版 Erlang 。。。对于我来说, Erlang 的语法看着真是有点晕菜,所以一直特意没去碰它。...过了一段时间,当我们掌握了 OTP,写了很牛的 Erlang 程序,将其发布到生产环境中,然后服务器挂了,不得不调试找 bug,看erl_crash.dump。...---- Erlang 的世界和我们的真实世界很像。每个 Erlang 进程维护着自己独有的内存,别的进程无法访问其内部状态,除非它们互发消息进行交流。...我一直记得那个画面,在三月三番的那个阳光明媚的午后,Joe老爷子面带微笑,和蔼地描述着他所构建的 Erlang 世界观,简单优美。当我越了解 Erlang ,就越能体会到这点。

2.1K10

02.RabbitMQ简介

这也解释了为什么在1994年大型新闻机构路透社收购了Teknekron。 与此同时,这个迅猛发展的企业软件也引起了蓝色巨人的注意。毕竟IBM最大的几位客户都来自于金融服务行业。...为了解决这个问题,Java Message Service(JMS)在2001年诞生了。...但机器要两个月时间才到,Joe在等待中百无聊赖,就开始使用Prolog,结果等Tektronix到来的时候,他已经对Prolog更感兴趣,Joe当然不满足于精通Prolog,经过一段时间的试验,Joe给...Prolog加上了并发处理和错误恢复,于是Erlang就诞生了。...这也是为什么Erlang的语法和Prolog有不少相似之处。 我们再回头来看RabbitMQ。就这样一直到今天,RabbitMQ广泛使用在小到初创公司,大到互联网巨头。

1.1K20

6 个新奇的编程方式,改变你对编码的认知

注意:我对以下大多数语言的使用经验都很少,但是我发现他们背后的想法非常吸引人,但对其没有专业知识,所以有任何错误请指出并指导更正。如果您也有新的范例和想法,欢迎分享。...这个想法是,语言中的所有内容都是将数据推送到堆栈或从堆栈中弹出数据的函数; 程序几乎完全通过功能组合(串联组合)来构建。...声明式编程 示例语言:Prolog, SQL 声明式编程已经存在了很多年,但大多数程序员仍然不知道这个概念。...将以前的C解决方案与此Prolog代码进行比较: 如果你使用过SQL,那么你已经完成了一种声明式编程,你可能没有意识到这一点:当你发出查询时select X from Y where Z,你正在描述你想要返回的数据集...;它是真正计算出如何执行查询的数据库引擎。

2.3K50

选Python还是选Java?2020年,顶尖程序员最应该掌握的7种编程语言

这个问题可能永远不会有答案。萝卜白菜,各有所爱,AI 工程师和科学家可以根据项目需要,从众多编程语言中选择最适合自己的。 有人曾经将编程比作做菜,那编程语言就是首先要准备的食材或厨具。...Prolog 逻辑编程(Logic Programming)的简称。Prolog 最早出现在 1972 年,适用于开发人工智能,尤其是自然语言处理。...Prolog 最适合创建聊天机器人,ELIZA 是有史以来第一个用 Prolog 创建的聊天机器人。 第一个成功的聊天机器人。...查询(Query)定义了如何使你的陈述正确,以及对事实和规则的最终分析。...Haskell 是一种非常安全的编程语言,因为和其他编程语言相比,Haskell 很少出现错误,所以在处理错误方面提供了更大的灵活性。即便发生了错误,也可以在编译(而非运行)时捕获大多数非语法错误

1.3K00

数据库概念之SQL语句1

但是分组就只能将相同的数据分成两列数据,而一列中只能放入一个字段,所以那些没有进行分组的 数据系统不知道将数据放入哪里,所以就出现此错误 目前一种分组情况只有一条记录,一个数据格是无法放入多个数值的...在子查询中使用order by没有意义,order by只能出现在最外层查询的最后,作用于最终的输出结果 in 和 not in语句 判断一个属性是否在子集合中 (找出在2009年秋开课又在2009...,然后外层查询判断某一个属性是否在这个集合中。...适用于“…………”的结构 注意: 外层查询的(course_id)部分可以是多个属性,但是要跟内层查询的select 部分完全一样 some any all 语句 some相当于存在量词,all相当于全称量词...,这个查询结束之后with生成的表就不存在了。

95430

程序员的未来

伟大的程序员透彻了解他们编程的平台,深刻理解问题域。创新迸发在域和技术甜美的交集中。...这就是为什么(除其他事项外)如果让程序员 (GitHub、Visual Studio、AWS等)去做大型产品和政府产品(Healthcare.gov,FBI’s Sentinel,等等)时,软件往往会变得糟糕昂贵...这个想法并不是我首创的。 1963年,Ivan Sutherland在《Sketchpad》中就描述了这样一个系统,它可以解决给定的若干已定义约束的问题。...Prolog(1972年),一种声明性 编程语言就是为了解决给定的一系列逻辑规则问题而创建的。它虽然依然是一种需要程序员的编程语言,并且并没有被广泛使用,但是它没有完全消失。...那么这个融合的限制是什么? NLP 现在的自然语言处理(natural language processing,NLP)系统能够理解文本中的单词角色以及它们之间的相互关系。

63740

程序员的未来

伟大的程序员透彻了解他们编程的平台,深刻理解问题域。创新迸发在域和技术甜美的交集中。...这就是为什么(除其他事项外)如果让程序员(GitHub、Visual Studio、AWS等)去做大型产品和政府产品(Healthcare.gov,FBI’s Sentinel,等等)时,软件往往会变得糟糕昂贵...这个想法并不是我首创的。 1963年,Ivan Sutherland在《Sketchpad》中就描述了这样一个系统,它可以解决给定的若干已定义约束的问题。...Prolog(1972年),一种声明性编程语言就是为了解决给定的一系列逻辑规则问题而创建的。它虽然依然是一种需要程序员的编程语言,并且并没有被广泛使用,但是它没有完全消失。...那么这个融合的限制是什么? NLP 现在的自然语言处理(natural language processing,NLP)系统能够理解文本中的单词角色以及它们之间的相互关系。

61870

当Istio智能顾问遇到GPT

如今,诸如 OpenAI 的 ChatGPT 之类的生成式 AI 程序快速便宜。...帮助解决 Istio 问题:在遇到 Istio 问题时,这个 GPT 模型可以帮助诊断问题和提供解决方案。这包括解释错误消息、审查配置文件和推荐最佳实践。...错误报告指南:如果您在 Istio 中遇到潜在的错误,Istio 顾问 GPT 可以帮助您编制详细的错误报告,确保您提供所有必要的细节以进行有效的故障排除。这可以是一个很大的帮助。...参考相关文档:对于复杂的查询这个 GPT 模型可以指导您参考 Istio 文档或其他相关资源的特定部分,以获得更深入的理解。...我们不得不面对,云原生计算复杂难以理解。有太多移动的部分。在我看来,任何可以帮助我们更快更轻松地适应这项技术的东西都是好事。

8610

跑分王子星环的TPC-DS首刷之旅

而所谓的不破不立,倘若没有这个事件,也就没有星环的成立。 星环的整个Hadoop发行版,也算得上是业界比较奇特的一个版本。很多核心技术是Hadoop系统和Spark改的。...当然因为星环不开源,所以我们也不知道这个版本到底长什么样,有什么牛逼的地方。 TPC-DS是一个很难的测试标准。具体难在哪里,一方面是99个查询里面有些查询很变态,各种各样的奇葩SQL都有。...另外一方面是整个测试过程需要经过很多不同的阶段,包括数据更新和查询的反复进行。其数据集比起TPC-H来说也更真实。...TPC-H一直为人诟病的一点是它的数据集相对键值是均匀分布的,并没有反映真实世界的情况。这在TPC-DS里也得到了改进。...星环显然开了一个好头,证明了自己鼓舞了大家,何乐而不为呢?

92320

双重检查锁,原来是这样演变来的,你了解吗

我们知道使用锁会导致额外的性能开销,对于上面的单例模式,只有第一次创建时需要锁(防止创建多个实例),但查询时是不需要锁的。 如果针对方法进行加锁,每次查询也要承担加锁的性能损耗。...改进之后,保证了线程的安全性,避免了锁导致的性能损失。问题到此结束了吗?并没有,继续往下看。 JVM的指令重排 在某些JVM当中,编译器为了性能问题,会进行指令重排。...那么,程序在使用这个未初始化的值时,便会出现错误。 针对此问题,可在instance上添加volatile关键字,使得instance在读、写操作前后都会插入内存屏障,避免重排序。...那么,再看Nacos的代码,由于创建ConcurrentHashSet并不会影响到查询,而真正影响查询的是listenerMap.put方法,而ConcurrentHashSet本身是线程安全的。...再回顾一下本文的重点: 阅读Nacos源码,发现双重检查锁的使用; 未加锁单例模式使用,会创建多个对象; 方法上加锁,导致性能下降; 代码内局部加锁,双重判断,满足线程安全,满足性能需求; 单例模式特例

48320
领券