小编tas*_*tas的帖子

天真评估和半天真评估有什么区别?

我一直在尝试实现一种用于对数据记录程序进行半天真评估的算法,但是在任何地方都无法获得简单的答案来解释简单单词之间的差异。

根据我的理解,天真是一种自下而上的评估技术,半天真也是。

在第一次迭代中,两种评估技术都从一个空集开始。

随着迭代的进一步进行,最终都将产生迭代并生成元组,直到到达新的元组为止。

那么半幼稚是从规则的头还是身体开始的?

path (X,Y):- edge(X,Y).

path (X,Y):- edge(X,Z),path (Z,Y).
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下上述程序在每次迭代结束时如何更新EDB和IDB。元组是否存储在每个谓词下。就像边缘的单独列和路径的单独列一样,否则它们将被存储为集合。

全球和地方统一又有什么区别?

knowledge-management artificial-intelligence prolog datalog

5
推荐指数
1
解决办法
905
查看次数

Prolog 双向谓词

我必须在 Prolog 中创建家庭关系来完成一项作业,我偶然发现了这个问题。

man(john).
woman(lisa).
married(john,lisa).

?- married(john,X).
X = lisa.

?- married(X,john).
false.
Run Code Online (Sandbox Code Playgroud)

如何使这个谓词以两种方式起作用?如果约翰嫁给了丽莎,那么丽莎也嫁给了约翰。

对于事实,我只能使用性别、父母和已婚:

man(john).
woman(lisa).
parent(john,steve).
parent(lisa,steve).
married(john,lisa).
Run Code Online (Sandbox Code Playgroud)

这个要求使得这个解决方案对我来说无法使用。我不能只添加关系,wife(lisa,john).因为我必须自己定义妻子、丈夫等。

wife(X,Y) :- woman(X),married(X,Y).
Run Code Online (Sandbox Code Playgroud)

predicate prolog bidirectional

5
推荐指数
1
解决办法
1593
查看次数

Prolog - 如何比较来自两个或更多不同谓词的结果?

例如,

第一个是这样的:

sum(X,Y,Result):- Result is X + Y.
Run Code Online (Sandbox Code Playgroud)

第二个是:

times(X,Y,R):- R is X * Y.
Run Code Online (Sandbox Code Playgroud)

我甚至可以这样定义它们吗?如果我想写一个比较两个结果的值的东西,我该怎么办?当我尝试做类似的事情时sum(X,Y,R1) > times(X,Y,R2),它不允许我.我想编写一个真实的程序R1 > R2.在这种情况下,我想得到和的XYXY,并找出哪个值更大.我怎么能这样做?

prolog

4
推荐指数
1
解决办法
547
查看次数

年龄词prob | em在prolog中

我知道:
Nick = 2*Kate
(Kate + Lea)= 2*Nick
(Chris + Nick)= 2*(Kate + Lea)
Ashley = 24
Ashley + Kate + Lea = 2*(Chris + Nick)

取消一些后,我发现:
Ashley = 12*Kate => Kate = 2
Lea = 3*Kate => Lea = 6
Nick = 2*Kate => Nick = 4
Chris = 6*Kate => Chris = 12

我试过这个:

:- use_module(library(clpfd)).

ages(As) :-
   As = [Ashley, Lea, Nick, Chris, Kate],
   Ashley #= 24,
   12 * Kate #= Ashley,
   Lea #= 3*Kate,
   Nick #= …
Run Code Online (Sandbox Code Playgroud)

prolog

3
推荐指数
1
解决办法
103
查看次数

列表中的Prolog唯一值

我在大学期间使用Prolog语言进行考试,但我不知道如何创建函数:检查列表中的唯一值。我的意思是,如果列表中的每个值都是唯一函数,则返回true,否则返回false。例如。

[1,2,3,5] - true
[1,2,2,4] - false
Run Code Online (Sandbox Code Playgroud)

该函数的标题是uniqueValues(X)X-均值列表。我真的不懂这种语言,如果有人可以向我解释如何创建此功能,那将是很好的。感谢您的帮助

prolog

2
推荐指数
1
解决办法
1359
查看次数

如何在Prolog中做"平均"?

我试图在Prolog中做一个平均值的谓词,但是我遇到了一些问题,

它被称为平均值(N,X),其中N是数字,X是从1到N的平均值的结果.

我试过这样做,但它并不总是很好用:

       average(1,1).
       average(N,X) :- K is N-1 ,K>1 , average(K,S1) , X is /(+(S1,N),N).
       average(N,X) :- K is N-1 ,K=:=1 , average(K,S1) , X is +(S1,N).
Run Code Online (Sandbox Code Playgroud)

一些帮助 ?

prolog

2
推荐指数
1
解决办法
445
查看次数