码迷,mamicode.com
首页 > 其他好文 > 详细

人工智能专家系统的简单实现

时间:2014-07-05 23:49:13      阅读:460      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   strong   

经过一段时间的学习,终于对专家系统有了一定的认识,在此发表一下个人的见解,希望和大家一起交流学习。

 专家系统,通俗的讲,就是让计算机具有人类专家的知识、经验和技能,能够像人类专家一样解决实际问题。专家系统实质上是一段计算机程序,它能够以人类专家的水平完成某一专业领域的任务。通过计算机,模拟人类专家如何运用他们的知识和经验解决面临问题的方法、技巧和步骤。

基本系统结构(通常由人机交互界面、知识库、综合数据库、推理机、解释器、知识获取等6个部分构成):

bubuko.com,布布扣

下面是一个简单的动物识别的专家系统设计(简单判断蛇、蜥蜴、鸡、猫四种动物):

1. 实现流程:

1)    初始化规则集合

2)    初始化规则事实集合

3)    使用规则推导

2. 添加规则信息:

”冷血”,”有腿”,”羽毛”,”会飞”

3. 规则事实:

冷血+没有腿 -> 蛇

冷血+有腿 -> 蜥蜴

非冷血+有羽毛+不会飞 -> 鸡

非冷血+没有羽毛 -> 猫

4. 推理过程:

bubuko.com,布布扣

部分代码:

#define Chicken 0x02	//鸡		0010
#define Cat     0x00	//猫		0000
#define Snake   0x01	//蛇		0001
#define Lizard  0x05	//蜥蜴	0101

4位二进制位分别表示:能飞、有腿、有羽毛、冷血,匹配上则为1,否则为0
数据结构定义

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条规则),想要功能更完善,我们还可以添加更多精确的规则和事实。

人工智能专家系统的简单实现,布布扣,bubuko.com

人工智能专家系统的简单实现

标签:style   blog   http   color   使用   strong   

原文地址:http://blog.csdn.net/jjccwwbb/article/details/36873181

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!