人工智能大作业(共8页).doc
精选优质文档-倾情为你奉上家族人物关系推理系统摘要:随着新世纪的到来全国各地的宗族在大陆的分布较分散,近年来为了研究宗族现在的状况对宗族的情况进行了相关项的调查。其中以具体的家族关系调查为起始。本次课设就是做实现家族查询的系统。主要根据数据结构的原理应用树的制作进行家族查询。完成编写之后将运行出来的程序分行显示,本程序处理起来相对复杂一些但却涉及到很多方面的知识,需要使用到的数据结构有树状结构和队列。 查阅有关程序设计的案例资料,进一步理解程序设计模块化的思想,并利用此思想,根据对程序设计学习编写一个家族关系查询系统。通过本设计可以加深理解利用程序设计思想开发一个查询系统的整个流程,提高分析问题、解决问题和实际动手的能力。关键词:推理;家族图谱本组成员:本人分工:部分代码实现1 引言家族关系查询系统 1.先初始化家族任务的各个基本信息:姓名,出生日期,性别,婚姻状况等属性2.通过这些信息进行推理,比如哥哥:相同的父母,年龄较大,性别男 即可推理出这个称谓。3.最后通过界面进行可视化的便捷操作,最终实现基本功能。2 算法原理与系统设计2.1家族人物关系推理系统的模型分析各种提问方式,总结出问句的基本类型可分为两种:已知两个相关人物的名字,提问他们之间的称谓;已知一个人的名字,提问另外一个与其有家族关系的人名。为了解决上面两种常见的关于家族人物关系的问题,作者然后给出该模型下知构造了一个推理系统模型,称谓是一些表现家族人物关系的称呼,如爷爷、爸爸、妈妈等。本文把提问人物之间的称谓或相关的人名,称为提问目标。本系统包括分词,句子规范化处理,句型信息处理,知识提取,对提问目标判断,知识提取,知识存储,模板匹配,语义网络结果处理等部分。2.2家族人物关系推理系统的模型图 3 系统实现 private void button4_Click(object sender, EventArgs e) if (textBox1.Text = "") textBox1.Text = button4.Text; Program.birth1 = 1705; Program.century1 = 2; Program.gender1 = "男" Program.marriage1 = "" Program.name1 = "贾敬" Program.super1 = "贾代化" else textBox2.Text = button4.Text; Program.birth2 = 1705; Program.century2 = 2; Program.gender2 = "男" Program.marriage2 = "" Program.name2 = "贾敬" Program.super2 = "贾代化" private void button5_Click(object sender, EventArgs e) if (textBox1.Text = "") textBox1.Text = button5.Text; Program.birth1 = 1707; Program.century1 = 2; Program.gender1 = "男" Program.marriage1 = "" Program.name1 = "贾敷" Program.super1 = "贾代化" else textBox2.Text = button5.Text; Program.birth2 = 1707; Program.century2 = 2; Program.gender2 = "男" Program.marriage2 = "" Program.name2 = "贾敷" Program.super2 = "贾代化" private void button8_Click(object sender, EventArgs e) if (textBox1.Text = "") textBox1.Text = button8.Text; Program.birth1 = 1710; Program.century1 = 3; Program.gender1 = "女" Program.marriage1 = "贾珍" Program.name1 = "尤氏" Program.super1 = "" else textBox2.Text = button8.Text; Program.birth2 = 1710; Program.century2 = 3; Program.gender2 = "女" Program.marriage2 = "贾珍" Program.name2 = "尤氏" Program.super2= "" private void button28_Click(object sender, EventArgs e) /判断父子关系 if (Program.gender1.Equals("男") && (Program.super1.Equals(Program.name2) && Program.super1 != "" && Program.super2 != "") MessageBox.Show(textBox1.Text + "是" + textBox2.Text + "的儿子"); if (Program.gender1.Equals("女") && (Program.super1.Equals(Program.name2) && Program.super1 != "" && Program.super2 != "") MessageBox.Show(textBox1.Text + "是" + textBox2.Text + "的女儿"); if (Program.gender1.Equals("男") && (Program.super2.Equals(Program.name1) && Program.super1 != "" && Program.super2 != "") MessageBox.Show(textBox1.Text + "是" + textBox2.Text + "的爸爸"); if (Program.gender1.Equals("女") && (Program.super2.Equals(Program.marriage1) && Program.super1 != "" && Program.super2 != "") MessageBox.Show(textBox1.Text + "是" + textBox2.Text + "的妈妈"); /判断夫妻关系 if (Program.gender1.Equals("男") && (Program.marriage1.Equals(Program.name2) MessageBox.Show(textBox1.Text + "是" + textBox2.Text + "的丈夫"); if (Program.gender1.Equals("女") && (Program.marriage1.Equals(Program.name2) MessageBox.Show(textBox1.Text + "是" + textBox2.Text + "的妻子"); /判断爷孙关系 if (Program.century1 - Program.century2 = 2 && Program.super1 != "" && Program.super2 != "") if (Program.gender1 = "男") MessageBox.Show(textBox1.Text + "是" + textBox2.Text + "的孙子"); else MessageBox.Show(textBox1.Text + "是" + textBox2.Text + "的孙女"); if (Program.century1 - Program.century2 = -2 && !(Program.super2.Equals("") if (Program.gender1 = "男") MessageBox.Show(textBox1.Text + "是" + textBox2.Text + "的爷爷"); else MessageBox.Show(textBox1.Text + "是" + textBox2.Text + "的奶奶"); if (Program.century1 - Program.century2 = 3) if (Program.gender1 = "男") MessageBox.Show(textBox1.Text + "是" + textBox2.Text + "的曾孙子"); else MessageBox.Show(textBox1.Text + "是" + textBox2.Text + "的曾孙女"); if (Program.century1 - Program.century2 = -3) if (Program.gender1 = "男") MessageBox.Show(textBox1.Text + "是" + textBox2.Text + "的曾爷爷"); else MessageBox.Show(textBox1.Text + "是" + textBox2.Text + "的曾奶奶"); /判断表兄弟关系 if (Program.century1 - Program.century2 = 0 && Program.super1 != Program.super2 && Program.super1 != "" && Program.super2 != "") if (Program.birth1 < Program.birth2) if (Program.gender1.Equals("男") MessageBox.Show(textBox1.Text + "是" + textBox2.Text + "的表哥"); else MessageBox.Show(textBox1.Text + "是" + textBox2.Text + "的表姐"); else if (Program.gender1.Equals("男") MessageBox.Show(textBox1.Text + "是" + textBox2.Text + "的表弟"); else MessageBox.Show(textBox1.Text + "是" + textBox2.Text + "的表妹"); 4 实验或测试结果 图45 结论通过本次实验,我明白了如何运用模糊推理解决实际问题并且巩固了自己编程能力,实现了家族人物关系图谱查询系统的基本功能。参考文献1 尼尔森. 人工智能M.郑扣根, 等译.北京:机械工业出版社, 2000.2 王万森. 人工智能原理及其应用M.北京:电子工业出版社, 2000.3 王士同. 人工智能教程M. 北京:电子工业出版社, 2002.专心-专注-专业