1、试编写一个描述亲属关系的PROLOG程序,然后给出一些事实数据,建立一个小型演绎数据库。 提示:可以以”父/母-子/女“作为基本关系,(以“父亲”和“母亲”作为基本谓词),再由此来描述祖父、祖母、兄弟、姐妹以及其他亲属关系。
时间: 2024-02-26 19:59:25 浏览: 154
一个描述亲属关系的PROLOG程序如下:
```prolog
% 父母关系
parent(张三, 李四).
parent(张三, 王五).
parent(张三, 赵六).
parent(李四, 小明).
parent(王五, 小红).
parent(赵六, 小刚).
% 父子关系
father(X, Y) :- parent(X, Y), male(X).
mother(X, Y) :- parent(X, Y), female(X).
son(X, Y) :- parent(Y, X), male(X).
daughter(X, Y) :- parent(Y, X), female(X).
% 祖先关系
grandparent(X, Y) :- parent(X, Z), parent(Z, Y).
grandfather(X, Y) :- grandparent(X, Y), male(X).
grandmother(X, Y) :- grandparent(X, Y), female(X).
% 兄弟姐妹关系
sibling(X, Y) :- parent(Z, X), parent(Z, Y), X \= Y.
brother(X, Y) :- sibling(X, Y), male(X).
sister(X, Y) :- sibling(X, Y), female(X).
% 亲属关系
relative(X, Y) :- parent(X, Y).
relative(X, Y) :- parent(Y, X).
relative(X, Y) :- sibling(X, Y).
relative(X, Y) :- sibling(Y, X).
relative(X, Y) :- grandparent(X, Y).
relative(X, Y) :- grandparent(Y, X).
```
建立一个小型演绎数据库:
```prolog
% 父母关系
parent(张三, 李四).
parent(张三, 王五).
parent(张三, 赵六).
parent(李四, 小明).
parent(王五, 小红).
parent(赵六, 小刚).
parent(李四, 张强).
% 事实数据
male(张三).
male(李四).
male(王五).
male(赵六).
male(小明).
male(小刚).
male(张强).
female(小红).
% 查询例子
father(张三, 李四). % yes
father(张三, 小明). % yes
father(张三, 小红). % no
son(李四, 小明). % yes
daughter(张三, 小红). % no
grandparent(张三, 小明). % yes
brother(张强, 小明). % no
sister(小红, 小明). % yes
relative(张三, 小明). % yes
```
阅读全文