首页 > 代码库 > 人工智能专家系统的简单实现
人工智能专家系统的简单实现
经过一段时间的学习,终于对专家系统有了一定的认识,在此发表一下个人的见解,希望和大家一起交流学习。
专家系统,通俗的讲,就是让计算机具有人类专家的知识、经验和技能,能够像人类专家一样解决实际问题。专家系统实质上是一段计算机程序,它能够以人类专家的水平完成某一专业领域的任务。通过计算机,模拟人类专家如何运用他们的知识和经验解决面临问题的方法、技巧和步骤。基本系统结构(通常由人机交互界面、知识库、综合数据库、推理机、解释器、知识获取等6个部分构成):
下面是一个简单的动物识别的专家系统设计(简单判断蛇、蜥蜴、鸡、猫四种动物):
1. 实现流程:
1) 初始化规则集合
2) 初始化规则事实集合
3) 使用规则推导
2. 添加规则信息:
”冷血”,”有腿”,”羽毛”,”会飞”
3. 规则事实:
冷血+没有腿 -> 蛇
冷血+有腿 -> 蜥蜴
非冷血+有羽毛+不会飞 -> 鸡
非冷血+没有羽毛 -> 猫
4. 推理过程:
部分代码:
#define Chicken 0x02 //鸡 0010 #define Cat 0x00 //猫 0000 #define Snake 0x01 //蛇 0001 #define Lizard 0x05 //蜥蜴 0101
数据结构定义
typedef struct Rule { char *info; //规则信息 Rule *pYes; //匹配到的下一个规则 Rule *pNo; //未匹配到的下一个规则 int pos; //该规则的位置 }Rule; unsigned char result = 0;
推导函数
void MatchRules(char *s, Rule *match) { if(!s || !match) return; //规则是否匹配上 if(CheckRule(s, match->info) > 0) { //记录位置 result += 1 << match->pos; MatchRules(s, match->pYes) } else { //未匹配上 MatchRules(s, match->pNo); } }
判断result,得出结论
switch (result) { case Chicken: printf("鸡!"); break; case Cat: printf("猫!"); break; case Snake: printf("蛇!"); break; case Lizard: printf("蜥蜴!"); break; default: printf("其他!"); break; }
以上只包含简单规则(4种动物判断,和4条规则),想要功能更完善,我们还可以添加更多精确的规则和事实。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。