比如表示亲属关系的一介谓词定义如下:father(x,y) : 表示 y 是x的父亲
child(x,y) : 表示 x 是y的孩子
male(y): 表示y 是男性那么可以有如下推导:father(x,y) -> child(y,x) AND male(y)grandFather(x1,y) -> (child(y,x1) AND male(y) ) OR ( child(y,x1) AND female(y) )还有一些,总共大概50多条这样的推导规则,其他的推导关系可以在这篇文章中找到。
http://wenku.baidu.com/view/b767132ced630b1c59eeb588.html数据库的设计应该满足下面两个条件:
1. 容易实现替换,就是用右边的代替左边的。
2. 容易实现简化,就是用左边的代替右边的。
3. 可以实现还有结合律,分配律
查了下资料,貌似属于AI的范畴?
没有一点头绪。
我的目标就是要实现亲属关系的推导.
child(x,y) : 表示 x 是y的孩子
male(y): 表示y 是男性那么可以有如下推导:father(x,y) -> child(y,x) AND male(y)grandFather(x1,y) -> (child(y,x1) AND male(y) ) OR ( child(y,x1) AND female(y) )还有一些,总共大概50多条这样的推导规则,其他的推导关系可以在这篇文章中找到。
http://wenku.baidu.com/view/b767132ced630b1c59eeb588.html数据库的设计应该满足下面两个条件:
1. 容易实现替换,就是用右边的代替左边的。
2. 容易实现简化,就是用左边的代替右边的。
3. 可以实现还有结合律,分配律
查了下资料,貌似属于AI的范畴?
没有一点头绪。
我的目标就是要实现亲属关系的推导.
解决方案 »
- windows程序怎么实现网页的样式
- 50分求建议:搞软件开发,想买笔记本,大家给点建议
- c#.net+sql server开发BBS
- 麻烦大家帮个忙
- 【求助】如果禁用USB存储设备读出权限
- 如何动态修改后缀名为.xsd的数据集的链接字符串
- 利用扩展方法求一个平均值的问题
- 如何把XmlDocument的内容存到数据库表中的Blob字段,以及反向的操作,把Blob的内容读取到XmlDocument中,急用,在线等待!!!!
- 如何得到点击的行号
- C#中有没有像VB中DoEvents类似的函数
- 基础switch case
- c#winform程序运行之后,可以改名exe,vc编写的exe,运行之后,好像不能改名。为什么?
如果你们自己去实现,估摸着你得先把编译原理翻烂了
你可以在“条件”class上定义自定义的运算符重载,比如将 => 这个运算重载(左边是一个关系,右边是一个个关系的param数组)了之后,变成自动产生内存对象(嵌套)结构的机制,同时在它生成结构式默认地将小写字母表示的char自定转换为“变量”对象实例,结果客户程序就可以这样写你的例子:var net= new LogicSystem();
net.Add(new Father('x','y') => new Child('y','x'), new male('y'));
net.Add(new grandFather('x1','y') => new child('y','x1'), new male('y'));
net.Add(new grandFather('x1','y') => new child('y','x1'), new female('y'));
net.SaveToDatabase(connectionString);
var results= net.SoveGoal(new grandFather('a',"林黛玉"), new grandFather('a',"凤姐"));
foreach(var ret in results)
Console.WriteLine("林黛玉跟凤姐的共同的祖母是{0}", ret.First(x=> x.Name=='a').Value);
http://prolog.codeplex.com/
Thanks