人工智能大作业实验

发布 2022-09-15 05:39:28 阅读 7762

湖南中医药大学本科课程实验教学大纲。

人工智能》计算机科学与技术专业。

执笔人:丁长松

审定人:**

学院负责人:**

湖南中医药大学教务处。

二○一四年三月。

一、课程性质和教学目的。

人工智能》是计算机专业本科生的一门专业必修课,适应于计算机科学与技术专业、医药信息工程专业。本课程是关于人工智能领域的引导性课程,通过本课程的学习,是使学生了解和掌握人工智能的基本概念、原理和方法,培养学生在计算机领域中应用人工智能技术提高分析和解决较复杂问题的能力,启发学生对人工智能的兴趣,培养知识创新和技术创新能力。

人工智能》主要研究智能信息处理技术、开发具有智能特性的各类应用系统的核心技术。本课程主要介绍人工智能的基本理论、方法和技术,主要包括常用的知识表示、逻辑推理和问题求解方法、人工智能发展学派以及主要理论。

先修课程:高等数学、数据结构、数据库原理、算法设计与分析、数理逻辑。

二、课程目标。

人工智能实验应在一种为高效率开发专家系统而设计的高级程序系统或高级程序设计语言环境中进行。在目前开来,专家系统开发工具和环境可分为5种主要类型:程序设计语言、知识工程语言、辅助型工具、支持工具及开发环境。

在这里主要是要求学生能用相关术语描述、表示一些问题;用程序设计语言如:c、c++、j**a编程来实现一些基本的算法、推理、搜索等过程。

三、实验内容与要求。

实验一:谓词表示。

实验内容】设农夫、狼、山羊、白菜都在河的左岸,现在要把它们运送到河的右岸去,农夫有条船,过河时,除农夫外船上至多能载狼、山羊、白菜中的一种。狼要吃山羊,山羊要吃白菜,除非农夫在那里。试设计出一个确保全部都能过河的方案。

实验目的】让学生加深对谓词逻辑和谓词知识表示的理解。

实验要求】写出所用谓词的定义,并给出每个谓词的功能及变量的个体域,然后编程来实现。

参考学时】1. 定义状态的谓词。

2. 定义变元的个体域。

3. 描述问题的初始和目标状态。

4. 定义动作。

5. 解释过程。

解:(1) 先定义描述状态的谓词。

al(x):x在左岸。

al(x)表示x在右岸。

2)定义个体域。

x的个体域:。

3)定义初始状态和目标状态。

问题的初始状态:al(农夫),al(船),al(狼),al(羊),al(白菜),问题的目标状态:al(农夫),al(船),al(狼),al(羊),al(白菜)

(4) 定义动作。

4个动作:农夫不带来回。

农夫带来回。

l-r:农夫自己划船从左岸到右岸。

l-r(x):农夫带着x划船从左岸到右岸。

r-l:农夫自己划船从右岸到左岸。

r-l(x) :农夫带着x划船从右岸到左岸。

x的个体域是。

l-r:农夫划船从左岸到右岸。

条件:al(船),al(农夫),al(狼)∨al(羊),al(羊)∨al(白菜)

动作:删除表:al(船),al(农夫)

添加表:al(船),al(农夫)

l-r(狼):农夫带着狼划船从左岸到右岸。

条件:al(船),al(农夫),al(狼),al(羊)

动作:删除表:al(船),al(农夫),al(狼)

添加表:al(船),al(农夫),al(狼)

l-r(羊):农夫带着羊划船从左岸到右岸。

条件:al(船),al(农夫),al(羊), al(狼),al(白菜)

或:al(船),al(农夫),al(羊),al(狼),al(白菜)

动作:删除表:al(船),al(农夫),al(羊)

添加表:al(船),al(农夫),al(羊)

l-r(白菜):农夫带着白菜划船从左岸到右岸。

条件:al(船),al(农夫),al(白菜),al(狼)

动作:删除表:al(船),al(农夫),al(白菜)

添加表:al(船),al(农夫),al(白菜)

r-l:农夫划船从右岸到左岸。

条件:al(船),al(农夫),al(狼)∨al(羊),al(羊)∨al(白菜)

或:al(船),al(农夫) ,al(狼),al(白菜),al(羊)

动作:删除表:al(船),al(农夫)

添加表:al(船),al(农夫)

r-l(羊) :农夫带着羊划船从右岸到左岸。

条件:al(船),al(农夫),al(羊) ,al(狼),al(羊),al(白菜)

动作:删除表:al(船),al(农夫),al(羊)

添加表:al(船),al(农夫),al(羊)

3) 问题求解过程。

**如下。#include<>

#include<>

typedef int datatypedatatype定义。

struct seqque队列结构体。

int maxnum;

int f,r存放头尾下标。

datatype *q;

typedef struct seqque *pseqque;

*创建一个新的队列*/

pseqque createmptyqueue (int m)

pseqque paqu=(pseqque)malloc(sizeof(struct seqque申请结构体动态空间。

if (paqu!=null)

else free(paqu);

printf("超出存储空间!")

return null;

*入队运算函数*/

void enque(pseqque paqu,datatype x)

if ((paqu->r+1)%(paqu->maxnum)==paqu->f)

printf("队列已满!")

else *出队运算函数*/

void deque(pseqque paqu)

if (paqu->f==paqu->r)

printf("空队列!")

elsepaqu->f=(paqu->f+1)%(paqu->maxnum);

*取队列头元素*/

datatype frontque (pseqque paqu)

if (paqu->f==paqu->r)

printf("队列为空!")

else return (paqu->q[paqu->f]);

*判断是否为空队列函数*/

int isemptyque(pseqque paqu)

if (paqu->f==paqu->r)

return 1;

else return 0;

*判断农夫位置*/

int farmer(int location)

return(0!=(location&0x08));

*判断狼位置*/

int wolf(int location)

return(0!=(location&0x04));

*判断白菜位置*/

int cabbage(int location)

return(0!=(location&0x02));

*判断羊位置*/

int goat(int location)

return(0!=(location&0x01));

*安全状态的判断函数*/

int safe(int location)

if ((goat(location)==cabbage(location))&goat(location)!=farmer(location)))

return 0羊吃白菜。

if ((goat(location)==wolf(location))&wolf(location)!=farmer(location)))

return 0狼吃羊。

return 1;

*解决农夫问题函数*/

void farmerproblem(void)

int i,movers,location,newlocation;

int route[16记录已走过的步骤。

pseqque moveto存放安全的步骤。

moveto=createmptyqueue(16创建新队列。

enque(moveto,0x00置状态初值。

for (i=0;i<16;i置已走过步骤初值。

route[i]=-1;

route[0]=0;

while(!isemptyque(moveto)&&route[15]==1))

if (route[15]!=1到达最终状态。

printf("过程是:输出过程和位置。

for (location=15;location>=0;location=route[location])

人工智能大作业

目录。摘要2一 问题描述2 二 遗传算法特点介绍2 三 使用基本遗传算法解决0 1背包问题3 四 基本遗传算法解决0 1背包问题存在的不足4 五 改进的遗传算法解决0 1背包问题6 六 心得体会9 七 参考文献10 八 程序 10 摘要 研究了遗传算法解决0 1背包问题中的几个问题 1 对于过程中不...

人工智能大作业

摘要 随着新世纪的到来全国各地的宗族在大陆的分布较分散,近年来为了研究宗族现在的状况对宗族的情况进行了相关项的调查。其中以具体的家族关系调查为起始。本次课设就是做实现家族查询的系统。主要根据数据结构的原理应用树的制作进行家族查询。完成编写之后将运行出来的程序分行显示,本程序处理起来相对复杂一些但却涉...

人工智能大作业

内蒙古科技大学2012 2013 学年第一学期。人工智能 大作业。课程号 67111317 考试方式 大作业 任课教师 陈淋艳。使用专业 年级 班级 学号 姓名 一 15分 智能 智力 能力的含义是什么?什么是人工智能?人类研究人工智能的最终目标是什么?二 15分 传教士与野人问题 有三个传教士和三...