prolog-setof相关内容

序言中的存在限定符,使用 setof/bagof

我有一个简短的问题.在序言中使用 setof 的存在限定符(即 ^). 使用 SICStus 似乎(尽管许多网站声称),S 确实似乎在下面的代码中被量化了(使用沼泽标准,事实之母/事实之子,我没有在这里包含): child(M,F,C) :- setof(X,(mother(S,X)),C). 我使用以下方法检查统一性: child(M,F,C) :- setof(X-S,(mothe ..
发布时间:2022-01-12 10:14:44 其他开发

Prolog 运算符“^"(“插入符号")是什么?

Prolog 运算符 ^ 是什么? 查看 Prolog 内置指令op 给出了内置运算符的列表. 我明白了 ** 是 求幂 /\ 是 或 但是 ^ 是什么? 当前三个答案中的每一个都很有价值,我学到了一些东西: 罗伊的书 示例为 false 我接受了 CapelliC 的回答,因为它明确了 ^/2 具有多种含义 取决于上下文,这立即消除了我的困惑. ..
发布时间:2022-01-12 10:07:28 其他开发

Prolog (Sicstus) - setof 和 findall 组合问题

给定一个给定车站的一组路线,例如我们: route(TubeLine, ListOfStations).路线(绿色,[a,b,c,d,e,f]).路线(蓝色,[g,b,c,h,i,j]).... 我需要找到具有共同特定车站的线路名称.结果必须是有序的,没有重复站,如果没有结果,必须返回一个空列表.所以,查询 |?- 行(i,Ls). 应该给: Ls = [蓝色、红色、银色] ?;不 我 ..
发布时间:2021-06-22 19:06:26 其他开发

带有 ^ 标记的 Prolog 理解 setof/3

有人可以向我解释一下这是做什么的吗? (\+ setof((P1,C),P^R^Bag,PS) -> ...否则 ->... 我已经阅读了setof的文档;我的理解是第三个论点与事实相统一. 但是,我无法理解上面的代码片段. 完整的片段是: solve_task_bt(go(Target),Agenda,ClosedSet,F,G,NewPos,RR,BackPath) :-议程 ..
发布时间:2021-06-22 19:04:30 其他开发

在 prolog 中使用自创建列表

我对 Prolog 还很陌生,不要对我太苛刻.无论如何,我在 Prolog 中遇到了下一个问题: 我创建了一个小型的演员“数据库",定义为: 演员(ID,姓名). 电影、演员、导演也是如此,由以下定义: 电影(ID,名称,导演,类别).导演(ID,姓名).演员(电影ID,演员ID). 现在我需要编写一个程序 people(Movie, List) 来定义电影名称和所有参与电影的人的名 ..
发布时间:2021-06-22 19:02:37 其他开发

setof/3 里面的 setof/3 不起作用,但为什么呢?

灵感来自 在 swi-prolog 中查找不同事实中的相互元素 我想尝试一下“Prolog 中的 RDBMS 操作"(实际上,这或多或少是 Datalog) 问题说明 给定一个“电影演员"数据库: starsin(a,bob).星星(c,鲍勃).星星(a,玛丽亚).星星(b,玛丽亚).星星(c,玛丽亚).星星(a,乔治).星星(b,乔治).星星(c,乔治).星星(d,乔治 ..
发布时间:2021-06-22 19:00:04 其他开发

如何在Prolog中选择bagof、setof和findall

如何在 bagof、setof 和 findall 之间进行选择?有什么重要的区别吗?哪个最常用,哪个最安全?感谢您的评论/回答. 我查看了 findall/上的 SWI-Prolog 手册页3 发现它们非常相似. 解决方案 这是个好问题! 我不想给出详尽的答案,但我想提出一些思路,以帮助您更好地理解这些谓词: 从可以用什么来表达的意义上来说,考虑这些谓词中哪些更基本.例 ..
发布时间:2021-06-22 18:55:58 其他开发

不要在 Prolog 中重复解决方案

假设您有一个包含以下内容的数据库: son(a, d).儿子(b,d).儿子(a,c).儿子(b,c). 所以a和b是d和c的儿子.现在你想知道,给定一个更大的数据库,谁是谁的兄弟.一个解决方案是: brother(X, Y) :-儿子(X,P),儿子(Y,P),X \= Y. 问题在于,如果你问“兄弟(X,Y)".并开始按“;"你会得到像这样的冗余结果: X = a, Y = b; ..
发布时间:2021-06-22 18:55:38 其他开发

正确使用 findall/3,尤其是最后一个结果参数

我是 Prolog 的初学者,我正在处理一个对您来说可能很愚蠢的问题,但我真的不明白我做错了什么!好的,我有这个文件fruits.pl,里面有这样的东西: fruit(apple,small,sweet).水果(柠檬,小,不甜).水果(瓜,大,甜). 我已经(在那个文件中创建了一个 coexist(X,Y) 原子来检查两个水果是否可以放在一起放在盘子里.它工作正常!但现在我无法创建一个建议(X ..
发布时间:2021-06-22 18:45:59 其他开发

检查变量是否为空或已填充

我有以下问题: prolog prog: 人(托马斯,2010 年).人(莱昂,2011 年).人(托马斯,2012 年).人(人):- 一次(人(人,_). 问题: ?- 男人(托马斯).真的 ;%i 只想要 true,即使有更多的“thomas" *因为 once()* 工作*?- 男人(X).X = 托马斯;%我希望所有的人都被列出*不工作* 目标: ?- 男人(托马斯). ..
发布时间:2021-06-22 18:45:54 其他开发

如何在 Prolog 中找到目标的所有解决方案?

我有谓词 P1,它一个接一个地返回值,如下所示: -?P1(参数,返回).-?返回 = 1;-?返回 = 2;-?返回 = 3;-?失败. 我还有另一个谓词 P2: P2(ARGUMENTS, LIST) :- P1(ARGUMENTS, RETURN),... % 我需要在这里插入返回列表的所有值. 如何找到RETURN的所有值并将它们分配给LIST? 解决方案 使用 finda ..
发布时间:2021-06-22 18:44:52 其他开发

Prolog - 如何执行返回空列表而不是失败的 setof

我需要一个满足目标的有序对象列表.setof 负责排序,但在没有对象满足 Goal 时失败.我想像 findall 那样返回一个空列表. 这行得通,但是有没有办法不切分地完成这个任务?我正在使用 SWI-Prolog. setof(Object, Goal, List), !;列表 = []. 解决方案 首先 ..., ( setof(Object, Goal, List), ! ; ..
发布时间:2021-06-22 18:43:16 其他开发

prolog 中的存在限定符,使用 setof/bagof

我有一个简短的问题.在序言中使用 setof 的存在限定符(即 ^). 使用 SICStus 似乎(尽管许多网站声称),S 确实似乎在下面的代码中被量化(使用沼泽标准,事实之母/事实之子,我没有包括在这里): child(M,F,C) :- setof(X,(mother(S,X)),C). 我使用以下方法检查统一: child(M,F,C) :- setof(X-S,(mother( ..
发布时间:2021-06-22 18:42:53 其他开发

序言递归跳过相同的结果

我的代码可以运行,但问题是它不止一次显示相同的结果.这是我的代码: 疾病(艾滋病毒,[喉咙痛,头痛,发烧,皮疹]).疾病(怀孕,[疲劳,呕吐,头晕,腰围增加]).疾病(流感,[疲劳,发烧,疲倦,鼻腔分泌物]).诊断([], []).诊断(名称,[H|T]):-疾病(The_Disease,症状),成员(H,症状),write(Name), write(' has/is '), writeln(T ..
发布时间:2021-06-22 18:40:51 其他开发

什么是Prolog运算符"^"(“插入符")?

什么是Prolog运算符^? 查看 Prolog内置指令op 给出了内置运算符的列表. 我知道 **是求幂 /\是或 但是^是什么? 当前三个答案中的每一个都是有价值的,我学到了一些东西: 这本书的罗伊 示例错误 我接受CapelliC的回答,因为它清楚表明^/2具有多种含义 视情况而定,这立即消除了我的困惑. 解决方案 在Prolog中,大多数 ..
发布时间:2020-06-14 18:50:37 其他开发