Prolog 人工智能语言中文论坛---打造优质Prolog学习交流园地
Would you like to react to this message? Create an account in a few clicks or log in to continue.
Prolog 人工智能语言中文论坛---打造优质Prolog学习交流园地

一个供Prolog爱好者学习与交流的地方


您没有登录。 请登录注册

如何获得与某一常量有关的所有谓词?

2 posters

向下  留言 [第1页/共1页]

liubin0314



KB is:
aunt(gugu,wo).
father(baba,wo).
prolog知道X(baba,wo) 的答案是什么吗?
注:我想要prolog给我的答案是father(baba,wo)。

X(Y,wo)呢?
我想要prolog返回aunt(gugu,wo).
father(baba,wo).这两个

Mercury Liao


Admin

我之前也想过这个问题,到目前能想得到的解法只有一种,
就是利用+、-、*、/这四种符号可以将好几个变量拼接起来成一个事实的性质。

将你对事实的陈述改定义如下:

代码:
aunt - gugu * wo.
father - baba * wo.
也就是说,我们定义A-B*C为"B与C的关系是A"。用prolog的表述,即A(B, C).


这样的话,查询就变成:

76 ?- X - baba * wo.
X = father.

77 ?- X - Y * wo.
X = aunt,
Y = gugu ;
X = father,
Y = baba.


liubin0314 写道:KB is:
aunt(gugu,wo).
father(baba,wo).
prolog知道X(baba,wo) 的答案是什么吗?
注:我想要prolog给我的答案是father(baba,wo)。

X(Y,wo)呢?
我想要prolog返回aunt(gugu,wo).
father(baba,wo).这两个

http://prolog.longluntan.net

liubin0314



这确实是个好办法。妙!

Mercury Liao


Admin

liubin0314 写道:这确实是个好办法。妙!
其实你定义这样也行:

代码:
relation(aunt, gugu, wo).
relation(father, baba, wo).
只是查询时都要带上relation这个感觉有点多余的词:

80 ?- relation(X, baba, wo).
X = father.

81 ?- relation(X , Y, wo).
X = aunt,
Y = gugu ;
X = father,
Y = baba.

总而言之,我觉得解决你的这个问题的方法不在编程上,
而在于表述形式上。

http://prolog.longluntan.net

返回页首  留言 [第1页/共1页]

您在这个论坛的权限:
不能在这个论坛回复主题