Prolog 人工智能语言中文论坛---打造优质Prolog学习交流园地

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


您没有登录。 请登录注册

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

浏览上一个主题 浏览下一个主题 向下  留言 [第1页/共1页]

1 如何获得与某一常量有关的所有谓词? 于 周六 十月 12, 2013 2:11 pm

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).这两个

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

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

代码:
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 写道::这确实是个好办法。妙!
其实你定义这样也行:

代码:
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页]

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