文档库 最新最全的文档下载
当前位置:文档库 › 大连理工大学人工智能课程项目设计

大连理工大学人工智能课程项目设计

大连理工大学人工智能课程项目设计
大连理工大学人工智能课程项目设计

人工智能

(项目设计)

专业:计算机科学与技术

班级:电计1203 学号: 201281303 姓名:刘阳

一.问题描述与分析

传教士人数M,野人数C,M≥C,开始都在岸左边。

①船最多只能载K人,传教士和野人都会划船,当然必须有人划船

②两岸边保证野人人数不能大于传教士人数

把所有人都送过河,求解过河方案。

如果求取最优解应使用A*算法,但如果输出整个解空间使用DFS比较直接,并且对于大多

数情况而言,几种过河方案代价基本相同。在程序中需要保证状态节点向下拓展以提高效率。即如果搜索的状态在之前已经出现过了,就不深入下去了,否则会出现死循环。

搜索算法这里采用DFS的非递归描述,如果当前节点无法继续拓展或者已经拓展到目标状态,那么将当前解中位于栈顶第一个待拓展状态之前的状态全部出栈(栈非空的情况下),如果当前达到目标状态还需要将解压入解空间中。

程序中回溯不可避免因为总有不可继续拓展的节点,但是向上拓展必须避免因为这会导致搜索陷入错误的循环。

二.程序源码及注释

#include

#include

#include

#include

#include

#define MAXSIZE 50

using namespace std;

typedef struct{

int person; //左岸传教士人数

int wild; //左岸野人人数

bool boat; //true表示船在左岸

int method; //到达本状态上一步使用的方法

int Last; //记录父状态编号

}state; //状态节点

int LastMethod=0; //记录上一步使用的方法,防止循环int LastState=-1; //上一步状态编号

bool flag=true; //ture表示船在左岸

vector> answer; //最终解集

vector temp; //当前解空间暂存数组

state Stack[MAXSIZE]; //用于非递归DFS的状态栈

int f=0,r=0; //栈顶与栈底

int A,B; //记录传教士与野人初始人数

int k; //小船最多载的人数

//函数声明

int DFS(int M,int C,int m,int c);

int judge(int M,int C,int m,int c);

int next_judge(int M,int C,int m,int c,int met);

int if_repeat(int M,int C,bool f);

int disp();

int DFS(int M,int C,int m,int c) //非递归DFS {

int X=M,Y=C,x=m,y=c;

state index;

judge(X,Y,x,y); //初始情况进栈while(r!=f)

{

index=Stack[--r];

X=index.person;

Y=index.wild;

x=M-X;

y=C-Y;

temp.push_back({X,Y,index.boat,index.method,https://www.wendangku.net/doc/3f13815570.html,st});

LastState++;

LastMethod=index.method;

if((!flag&&X==0&&Y==0)) //全部运输过去{

answer.push_back(temp);

if(r==f)

break;

else if(r!=f)

{

state t1;

t1=temp.back();

//将解集暂存数组temp中栈顶状态后的状态删除

while(Stack[r-1].Last!=https://www.wendangku.net/doc/3f13815570.html,st)

{

temp.pop_back();

t1=temp.back();

}

temp.pop_back();

index=Stack[--r];

//将栈顶待拓展状态出栈

temp.push_back({index.person,index.wild,index.boat,index.method

,https://www.wendangku.net/doc/3f13815570.html,st});

LastMethod=index.method;

LastState=https://www.wendangku.net/doc/3f13815570.html,st; //重置上一步状态编号

LastState++;

flag=index.boat;

X=index.person;

Y=index.wild;

x=M-X;

y=C-Y;

}

}

if(!judge(X,Y,x,y))

{

if(r!=f) //如

果栈中仍有待拓展节点,才需要将栈顶状态后的状态删除

{

state t2;

t2=temp.back();

while(Stack[r-1].Last!=https://www.wendangku.net/doc/3f13815570.html,st)

{

temp.pop_back();

t2=temp.back();

}

temp.pop_back();

flag=Stack[r-1].boat;

LastState=Stack[r-1].Last;

}

}

}

if(0==answer.size())

return 0;

else

return 1;

}

int judge(int M,int C,int m,int c) //将下一步可能状态进栈

{

int i,j,signal=0;

int T=1;

if(1==flag)

{

flag=!flag;

for(i=0;i<=k;i++)

{

for(j=0;(i+j)<=k;j++,T++)

if(next_judge(M-i,C-j ,m+i,c+j,T)&&(if_repeat(M-i,C-j,flag&!((i==0)&&

(j==0))))

{

Stack[r++]={M-i,C-j,flag,T,LastState};

signal=1;

}

}

}

else

{

flag=!flag;

for(i=0;i<=k;i++)

{

for(j=0;(i+j)<=k;j++,T++)

if(next_judge(M+i,C+j ,m-i,c-j,T)&&(if_repeat(M+i,C+j,flag&&(!((i==0)

&&(j==0))))

{

Stack[r++]={M+i,C+j,flag,T,LastState};

signal=1;

}

}

}

return signal;

}

//判断接下来的可能状态是否非法

int next_judge(int M,int C,int m,int c,int met)

{

if( M<0||C<0||m<0||c<0) //非法

return 0;

if( M>A||C>B||m>A||c>B) //非法

return 0;

if((M==A)&&(C==B)) //防止回溯到初始节点

return 0;

if( (M&&C>M) ||(m&&c>m)) //野人会吃传教士

return 0;

if(LastMethod==met) //回溯

return 0;

return 1;

}

//判断接下来的可能状态是否与栈或当前解中已有状态重复

int if_repeat(int M,int C,bool f)

{

//判断接下来的可能状态是否与当前栈中待拓展状态重复,防止回溯

for(int x=0;x

if((Stack[x].person==M)&&(Stack[x].wild==C)&&(Stack[x].boat==f)) return 0;

//判断接下来的可能状态是否与当前解空间中已经存在的状态重复,防止循环for(unsigned int x=0;x

if((temp[x].person==M)&&(temp[x].wild==C)&&(temp[x].boat==f)) return 0;

return 1;

}

int disp() //输出解集

{

printf("一共有%d种解法\n",answer.size());

unsigned int m,n;

int i,j,T;

for(m=0;m

{

printf("第%d种解法:\n",m+1);

printf("(%d,%d) boat=left\n",A,B);

for(n=0;n

{

for(T=1,i=0;i<=k;i++)

{

for(j=0;(i+j)<=k;j++,T++)

if(T==answer[m][n].method)

{

cout<<"("<

}

}

if(answer[m][n].boat)

printf("(%d,%d)boat=left\n",answer[m][n].person,answer[m][n].wild);

else

printf("(%d,%d)boat=right\n",answer[m][n].person,answer[m][n].wild);

}

}

return 1;

}

int main()

{

cout<<"传教士与野人问题.\n";

cout<<"请输入船最大载人数:";

cin>>k;

cout<<"请输入传教士人数:";

cin>>A;

cout<<"请输入野人人数:";

cin>>B;

if(DFS(A,B,0,0))

{

disp();

cout<<"求解成功!按任意键结束。";

getch();

}

else

cout << "Can not find the solution."<

return 0;

}

三.程序的运行结果及分析

四.收获、体会及建议

通过人工智能课程的学习,最主要感觉确实拓宽了眼界,第一次感觉到我们也可以接触前沿的技术。由于自身数学和算法方面水平所限,上课有的地方听不太懂。个人认为收获最大的环节就是小论文的作业,通过以前没有过的大密度查询资料确实学到不少东西,这次我自己写的是数据挖掘方面的综述,之前我根本不懂什么叫数据挖掘,但是现在已经对其中一部分概念有了了解。所以感觉课程可以多增加一些这样学生的自主环节,比如以小组形式做一些东西。

大连理工大学-电路理论_2011期末考试试题及答案

电路期末考试(2011) 解永平 2011.06

试卷分数分布 一、(32分,共4题,每题8分) 1. 2. 3. 4. 二、(24分,共3题,每题8分) 1. 2. 3. 三、(12分) 四、(12分) 五、(12分) 六、(8分)

一、计算下列各题(共4题,每题8分) 1、用等效变换法求电流I 。 解:电路等效变换如图所示。由KVL ,得: A 6 7 24668-=+++-=I 8V + 6Ω2Ω 1A I 12V + 4Ω 8V + 6Ω 2Ω 1A I 4Ω 8V + 6Ω2Ω I 6V +4Ω

2、电路如图所示。(1)问a 和b 两点间的导线上需串入一个多大电阻R ,才能使这两点间的电流减小为短路电流的一半?(2)串入一个多大电阻R ,该电阻才能获得最大功率?并求此功率。解:求ab 端的开路电压U OC ,如图所示。 则:V 12 64 2264OC =+==+-=I I I U I 1= I +3I = 4I 4V + 6Ω 2Ω 4I I + 1Ω I ab a b 4V + U OC +求ab 端的输入电阻R eq ,如图所示。 U = -4I +6I = 2I 6Ω 2Ω4I I +1Ω a b U +I 1 3I 由KCL ,得:由KVL ,得:Ω== 5.01eq I U R (1) A 25.01 eq OC SC ===R U I 则:R =0.5 Ω 1 2 SC eq OC ==+I R R U (2)当R =0.5 Ω时, W 5.05.0*41 42 2 max OC ===R U P

I &R L 2 I &1 I &C U &+ 解:电路的相量模型如图所示; 由欧姆定律,得: V 0100 ?∠=U & A 45210 5 50100?-∠=+?∠==j Z U I && A 901045210 1 11010101?-∠=?-∠--=--=j j I j j I &&10Ω -j 10Ω I &2 I &1 I &U &+ j 10Ω A 01045210 1 111010102 ?∠=?-∠-=-=j I j I &&+ 1 j + &1 I &I &2 I &U &Ω ?∠=+=--+= 4525 5510 10)10(1010j j j j Z

人工智能课程设计报告--动物识别系统

计算机科学与技术学院 《人工智能》课程设计报告设计题目:动物识别系统 设计人员:学号: 学号: 学号: 学号: 学号: 学号: 指导教师: 2015年7月

目录 目录 (1) 摘要 (2) Abstract (2) 一、专家系统基本知识 (3) 1.1专家系统实际应用 (3) 1.2专家系统的开发 (3) 二、设计基本思路 (4) 2.1知识库 (4) ....................................................................................................... 错误!未定义书签。 2.1.2 知识库建立 (4) 2.1.3 知识库获取 (5) 2.2 数据库 (6) ....................................................................................................... 错误!未定义书签。 ....................................................................................................... 错误!未定义书签。 三、推理机构 (7) 3.1推理机介绍 (7) 3.1.1 推理机作用原理 (7) ....................................................................................................... 错误!未定义书签。 3.2 正向推理 (7) 3.2.1 正向推理基本思想 (7) 3.2.2 正向推理示意图 (8) 3.2.3 正向推理机所要具有功能 (8) 3.3反向推理 (8) ....................................................................................................... 错误!未定义书签。 3.3.2 反向推理示意图 (8) ....................................................................................................... 错误!未定义书签。 四、实例系统实现 (9)

数据库课设报告模板

第1章系统功能概述 1.1系统任务 理发店人员复杂,员工的工资也很难算清楚。利用计算机管理就容易得多。顾客来理发,由某个理发师接手。顾客的花销按各种服务名目收费,比如“剪发”,“吹风”,“做型”,“离子烫”,“波峰烫”,“麻辣烫”等。必须提供复杂的查询功能,包括: ●按员工统计本月接手的总金额。 ●按服务类别统计本月的收入金额。 ●按日期统计每天的收入总额,并形成条形统计图。 ●查询本月顾客人数和收入金额最高的5天和最低的5天。 1.2系统目标 1.能够快速地管理和查询所有理发师收入信息。 2.能够高效地进行理发管理。 3.能够进行结算管理,避免人为计算或操作失误。 4.能够正确的生成收入统计图 5.减轻登记、收银人员的工作任务。 第2章数据库设计 2.1 需求分析 本系统用于理发店的管理,用户指定为管理者自己,输入用户名,登录密码即可进入对本管理系统进行管理应用 (1)登录系统 在系统运行欢迎界面后即可进入登陆界面,在进入登陆界面后输入用户名和密码,正确即可进入主窗体界面进行操作,如果密码错误则提示错误。 (2)理发管理 数据包括:理发师编号,服务项目,收入金额,收入统计,服务日期等信息。

(3)统计管理 统计总收入情况,建立统计图 操作要求:可以按条件进行信息的查询,得到各自的收入金额。(4)排名系统 查询本月顾客人数和收入金额最高的5天和最低的5天 2.2 E-R模型 理发店管理系统E-R模型如图2-1所示。 图2-1理发店管理系统E-R模型 2.3 关系模型 理发店管理系统关系模型如图2-2所示。 图2-2理发店管理系统关系模型

2.4 表结构设计 1.管理员表用于记录管理员姓名和密码,如图2-3所示。 图2-3管理员表 2.理发师表用于记录理发师理发项目,如图2-4所示。 图2-4理发师表 3.收入表用与记录理发店当日各项收入,如图2-5所示。 图2-5收入表 4.收入统计用于统计本月收入金额最高的5天和最低的5天,如图2-6所示。

大工秋sql数据库课程设计答案定稿版

大工秋s q l数据库课程 设计答案 HUA system office room 【HUA16H-TTMS2A-HUAS8Q8-HUAH1688】

网络教育学院 《SQL数据库课程设计》 题目:学生信息管理系统的设计与实现 学习中心:奥鹏学习中心 专业: 年级:年 /秋季 学号: 学生: 指导教师:龙珠

1 项目概况 1.1 SQL 数据库简介 Microsoft SQL Server 2000 是Microsoft 公司继SQL Server 6.5和SQL Server 7.0以后,在新千年推出的又一改进的新版关系型数据管理系统。它能使用户快捷地管理数据库和开发应用程序。SQL Server 2000 使用了了先进的数据库结构,与Windows DNA紧密集成,具有强大的Web 功能,它可以利用高端硬件平台以及最新网络和存储技术,可以为最大的Web站点和企业应用提供优良的扩展性和可靠性,使用户能够在Internet 领域快速建立服务系统,为占领市场赢得宝贵的时间。同时,SQL Server 2000 还为用户提供了重要的安全性功能的增强,为用户的数据安全提供了可靠的保证。另外,SQL Server 2000还为用户提供了重要的安全性功能的增强,为用户的数据安全提供了可靠的保证。另外,SQL Server 2000 在数据库服务器自动管理技术方面处于数据库领域的领先地位,它可以使用户免去繁琐复杂的工作量,从而有精力处理更重要的问题,使用系统在商业战略上占得先机。 SQL Server 2000 的特性Microsoft® SQL Server? 2000 的特性包括: 1、Internet 集成。SQL Server 2000 数据库引擎提供完整的XML 支持。它还具有构成最大的Web 站点的数据存储组件所需的可用性、可伸缩性和安全功能。 2、可伸缩性和可用性。同一个数据库引擎可以在不同的平台上使用,从运行Microsoft Windows® 98 的便携式电脑到运行 Microsoft Windows 2000 数据中心版的大型多处理器服务器。 3、业级数据库功能。SQL Server 2000 关系数据库引擎支持当今苛刻的数据处理环境所需的功能。数据库引擎充分保护数据完整性,同时将管理上千个并发修改数据库的用户的开销减到最小。

人工智能课程设计报告-罗马尼亚度假问题

人工智能课程设计报告-罗马尼亚度假 问题 1

2

3 2020年5月29日 课 程 :人工智能课程设计报告 班 级: 姓 名: 学 号: 指导教师:赵曼 11月

人工智能课程设计报告 课程背景 人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。人工智能从诞生以来,理论和技术日益成熟,应用领域也不断扩大,能够设想,未来人工智能带来的科技产品,将会是人类智慧的”容器”。 人工智能是对人的意识、思维的信息过程的模拟。人工智能不是人的智能,但能像人那样思考、也可能超过人的智能。 人工智能是一门极富挑战性的科学,从事这项工作的人必须懂得计算机知识,心理学和哲学。人工智能是包括十分广泛的科学,它由不同的领域组成,如机器学习,计算机视觉等等,总的说来,人工智能研究的一个主要目标是使机器能够胜任一些一般需要人类智能才能完成的复杂工作。但不同的时代、不同的人对这种”复杂工作”的理解是不同的。 人工智能是计算机学科的一个分支,二十世纪七十年代以来被称为世界三大尖端技术之一(空间技术、能源技术、人工智能)。也被认为是二十一世纪三大尖端技术(基因工程、纳米科学、人工智能)之一。这是因为近三十年来它获得了迅 速的发展,在很多学科领域都获得了广泛应用,并取得了丰硕的成果,人工智能已逐 - 1 - 2020年5月29日

奥鹏大工19秋《SQL数据库课程设计》模板及要求

答案+我名字 学习中心: 专业: 年级:年春/秋季 学号: 学生: 题目: 1.谈谈你对本课程学习过程中的心得体会与建议? 2.严格按照《SQL数据库课程设计要求》完成课程设计。 《SQL数据库课程设计》要求 《SQL数据库课程设计》是大连理工大学网络教育学院计算机应用技术专业开展的一项实践教学环节,是理论联系实践的纽带和桥梁,是培养学生综合运用所学知识解决实际问题的有效手段。该课程设计要求如下: 1.要求学生以SQL Server 2008或其他版本为后台数据库,以VB、VC或其他开发工具作为前台开发工具,围绕自己选定的某一个具体的系统完成一个小型数据库应用系统的开发,例如《图书管理系统的设计与实现》《书店管理系统的设计与实现》等。其课程设计具体内容包括项目概况、需求分析、详细设计等。 2.要求学生必须撰写题目及心得体会,按照《SQL数据库课程设计模板》提供的格式和内容进行课程设计,完成课程设计模板提供的全部课程设计内容,字数要求达到3000字以上。

3.学生在进行课程设计的过程中,可参考辅导教师在导学资料中上传的文献资料,有问题可通过课程论坛答疑。 4.学生提交本课程设计形式 学生需要以WORD附件形式(附件的大小限制在10M以内)将完成的课程设计以“离线作业”形式上传至课程平台中的“离线作业”模块,通过选择已完成的课程设计,点“上交”即可,如下图所示。 5.课程设计批阅 老师会在离线作业关闭后集中批阅课程设计,在离线作业截止时间前不进行任何形式的批阅。 注意:本课程设计应该独立完成,不准抄袭他人或者请人代做,如有雷同作业,成绩以零分计。 下文为《SQL数据库课程设计模板》

大工15春《SQL数据库课程设计》模板及要求(最新)

大工15春《SQL数据库课程设计》模板及要求网络教育学院 《SQL数据库课程设计》 题目:XX系统的设计与实现 学习中心: 专业: 年级:年春/秋季

学号: 学生: 指导教师: 《SQL数据库课程设计》要求 《SQL数据库课程设计》是大连理工大学网络教育学院计算机应用技术专业开展的一项实践教学环节,是理论联系实践的纽带和桥梁,是培养学生综合运用所学知识解决实际问题的有效手段。该课程设计要求如下:1.要求学生以SQL Server 2008或其他版本为后台数据库,以VB、VC 或其他开发工具作为前台开发工具,围绕自己选定的某一个具体的系统完成一个小型数据库应用系统的开发,例如《图书管理系统的设计与实现》《书店管理系统的设计与实现》等。其课程设计具体内容包括项目概况、需求分析、详细设计等,详见课程离线作业中上传的《SQL数据库课程设计模板》。 注意:禁止撰写《学生成绩管理系统》课程设计!! 2.要求学生必须按照《SQL数据库课程设计模板》提供的格式和内容进行课程设计,完成课程设计模板提供的全部课程设计内容,字数要求达到3000字以上。 3.学生在进行课程设计的过程中,可参考辅导教师在导学资料中上传的

文献资料,有问题可通过课程论坛答疑。 4.2015年春季学期学生提交本课程设计形式及截止时间 学生需要以WORD附件形式(附件的大小限制在10M以内)将完成的课程设计以"离线作业"形式上传至课程平台中的"离线作业"模块,通过选择已完成的课程设计,点"上交"即可,如下图所示。 截止时间:2015年9月1日。在此之前,学生可随时提交课程设计,如需修改,可直接上传新文件,平台会自动覆盖原有文件。 5.课程设计批阅 老师会在离线作业关闭后集中批阅课程设计,在离线作业截止时间前不进行任何形式的批阅。 注意: 本课程设计应该独立完成,不准抄袭他人或者请人代做,如有雷同作业,

数据库课程设计任务书模板及参考

数据库课程设计任务书模板及参考

大连理工大学本科生课程设计任务书 课程名称:数据库课程设计 指导教师:田琳琳 项目名称:粒子群主题网站 小组名称: 组长姓名: 上课时间: 6月22日- 7 月11日 大连理工大学软件学院 年6 月22 日

1 设计目的 数据库课程设计是在学生系统的学习了《数据库系统原理》课程后,按照关系型数据库的基本原理,综合运用所学的知识,设计开发一个小型的数据库管理信息系统。 经过这一具体问题的分析、设计与实现,将原理与应用相结合,使学生学会如何把书本上学到的知识用于解决实际问题,培养学生的动手能力;另一方面,使学生能深入理解和灵活掌握教学内容。 2 设计要求 (1)根据关系型数据库的设计要求,完成项目的数据库概念模型、 物理模型的设计,能够部署到一个DBMS中,开发存储过程和触发器,完成DB层的功能实现。 (2)学生6人组成一个项目小组,一人为组长,其它人为组员,组 内成员分工明确、团结协作、相互配合,共同完成选题的设计。 (3)课程设计时间为2周。 (4)数据库管理系统MS SQL Server,开发语言(C# \ASP),数据 库设计工具Powerdesigner。系统中的数据表设计应合理、高效,尽量减少数据冗余; (5)具体指标如下:

1)完成概念模型CDM的设计 a)每个小组成员至少抽象出一个数据字典,定义出数据字 典对应得实体和属性 b)汇总实体,小组共同设计出E-R模型 2)完成物理模型PDM的设计 a)每个小组成员依据自己设计的数据字典和实体及其属 性,同时结合选择的DBMS SQL Server要求,定义出相应得表结构和列字段 b)每个小组成员继续定义个人设计表的主键、索引 c)每个小组成员对个人设计表中,至少定义一个列字段约 束 d)小组完成所有表的表名和列名的统一,定义所有的外健 及其类型,完成PDM的模型 e)按照3范式检查数据库PDM模型 3)完成物理模型在DBMS SQL Server中的部署 a)在DBMS SQL Server中设计合适的数据库空间和用户及角 色 b)根据PDM模型,生成创立数据库的.sql文件 c)连接到DBMS SQL Server下,运行.sql文件,数据库部署 完毕 4)数据库操作程序设计 a)每个小组成员至少要对5个表进行操作;

大工秋《sql数据库课程设计》答案

网络教育学院《SQL数据库课程设计》 题目:学生信息管理系统的设计与实现学习中心:奥鹏学习中心 专业: 年级:年 /秋季 学号: 学生: 指导教师:龙珠

1 项目概况 1.1 SQL 数据库简介 Microsoft SQL Server 2000 是Microsoft 公司继SQL Server 6.5和SQL Server 7.0以后,在新千年推出的又一改进的新版关系型数据管理系统。它能使用户快捷地管理数据库和开发应用程序。SQL Server 2000 使用了了先进的数据库结构,与Windows DNA紧密集成,具有强大的Web 功能,它可以利用高端硬件平台以及最新网络和存储技术,可以为最大的Web站点和企业应用提供优良的扩展性和可靠性,使用户能够在Internet 领域快速建立服务系统,为占领市场赢得宝贵的时间。同时,SQL Server 2000 还为用户提供了重要的安全性功能的增强,为用户的数据安全提供了可靠的保证。另外,SQL Server 2000还为用户提供了重要的安全性功能的增强,为用户的数据安全提供了可靠的保证。另外,SQL Server 2000 在数据库服务器自动管理技术方面处于数据库领域的领先地位,它可以使用户免去繁琐复杂的工作量,从而有精力处理更重要的问题,使用系统在商业战略上占得先机。 SQL Server 2000 的特性Microsoft® SQL Server? 2000 的特性包括: 1、Internet 集成。SQL Server 2000 数据库引擎提供完整的XML 支持。它还具有构成最大的Web 站点的数据存储组件所需的可用性、可伸缩性和安全功能。 2、可伸缩性和可用性。同一个数据库引擎可以在不同的平台上使用,从运行Microsoft Windows® 98 的便携式电脑到运行 Microsoft Windows 2000 数据中心版的大型多处理器服务器。 3、业级数据库功能。SQL Server 2000 关系数据库引擎支持当今苛刻的数据处理环境所需的功能。数据库引擎充分保护数据完整性,同时将管理上千个并发修改数据库的用户的开销减到最小。 4、易于安装、部署和使用。 SQL Server 2000 中包括一系列管理和开发工具,这些工具可改进在多个站点上安装、部署、管理和使用 SQL Server 的过程。

人工智能课程设计

课程名称:人工智能及应用 设计题目:基于智能搜索的进路选排设计院系:计算机与通信工程系 班级:信号一班 姓名: 学号: 指导教师:胡可 西南交通大学峨眉校区 2013 年12 月13 日

课程设计任务书 专业铁道信号姓名代荣龙学号20108065 开题日期:2013 年09 月23 日完成日期:2013 年12 月13 日题目基于智能搜索的进路选排设计 一、设计的目的 通过对课程设计任务的完成,进一步理解智能搜索算法与计算机联锁软件设计的理论内容,并且巩固和深化所学课程的知识,同时培养综合运用所学课程知识,分析和解决实际问题的能力,逐步树立正确的设计思想及严谨认真的科学态度。 二、设计的内容及要求 要求每位同学能够根据对人工智能搜索算法以及计算机联锁的进路选排过程的知识,结合课程设计的内容,独立完成该课程设计。 设计内容: 1)自选信号布置图,建立站场型静态数据库,并绘制其模块链接图; 2)自选智能搜索算法,编写动态进路搜索选排程序; 3)用所编搜索程序对建立的数据库进行进路选排,并举例说明其过程。 三、指导教师评语 四、成绩 指导教师(签章) 年月日

一、设计题目 通过对课程设计任务的完成,进一步理解智能搜索算法与计算机联锁软件设计的理论内容,并且巩固和深化所学课程的知识,同时培养综合运用所学课程知识,分析和解决实际问题的能力,逐步树立正确的设计思想及严谨认真的科学态度。 可实现的功能: 能设置道岔、轨道、信号机以及道岔、轨道、信号机的状态; 满足正常情况下的接发列车演练; 站场状态的直观形象显示; 办理列车作业; 取消进路功能; 完备的进路选排、开放保持及解锁功能 仿真分析: 对计算机联锁人机界面的分析可知,人机界面是类似于6502电气集中联锁控制台,所以设计时参考6502的控制台进行设计。 为让操作员很快适应该系统,该系统延续了一些传统的操作方法: 选排进路任采用双按钮形式; 进路排好采用白色表示; 进路占用弹出对话框(线路占用、已办理同方向进路、已办理反方向发车); 进路解锁弹出对话框(进路已解锁); 道岔的状态(定位绿灯显示、反位黄灯显示); 信号机的状态(平时红灯、开放时绿灯); 调车信号机的状态(平时蓝色、开放时白色) 列车按钮绿色(设于线路中间); 调车按钮白色(设于线路一侧); 进路的取消任然用双按钮(始端按钮和终端按钮); 取消进路时点击总取消按钮后对应的上行或者下行总取消按钮表示灯亮红灯; 线路状态(平时为黑色、占用为白色); 当进路排好后改进路上的同方向的调车信号显示白灯; 该系统的进路搜索程序采用类似于进路表的形式,将始端按钮和终端按钮按下后,改程序自动检查敌对信号是否开放(若开放则提示“已建立反方向发车”)、沿途的列车信号机是否有开放(若开放则提示“已办理同方向进路”或“已办理反方向进路”)、复式交分道岔的一组道岔是否已占用(若占用则提示“线路已占用”)、股道是否空闲(若不空闲则提示“线路已占用”),进路建立之后将显示对应信号机的状态和道岔的状态。该操作界面采用Microsoft visual basic 6.0编写,能够很直观的反映调度员所需信息,同时采用人性化理念,用弹出式对话框来提示操作过程中的一些禁止信息来提醒调度员。 设计过程: (一)绘制站场图和站场型数据模块链接图

人工智能课程设计报告-n皇后问题解读

人工智能课程设计报告 课班姓学程:人工智能课程设计报告级 : 名: 号: 指导教师:赵曼 2015年11月

人工智能课程设计报告 人工智能课程设计报告 课程背景 人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。人工智能从诞生以来,理论和技术日益成熟,应用领域也不断扩大,可以设想,未来人工智能带来的科技产品,将会是人类智慧的“容器”。 人工智能是对人的意识、思维的信息过程的模拟。人工智能不是人的智能,但能像人那样思考、也可能超过人的智能。 人工智能是一门极富挑战性的科学,从事这项工作的人必须懂得计算机知识,心理学和哲学。人工智能是包括十分广泛的科学,它由不同的领域组成,如机器学习,计算机视觉等等,总的说来,人工智能研究的一个主要目标是使机器能够胜任一些通常需要人类智能才能完成的复杂工作。但不同的时代、不同的人对这种“复杂工作”的理解是不同的。 人工智能是计算机学科的一个分支,二十世纪七十年代以来被称为世界三大尖端技术之一(空间技术、能源技术、人工智能)。也被认为是二十一世纪三大尖端技术(基因工程、纳米科学、人工智能)之一。这是因为近三十年来它获得了迅速的发展,在很多学科领域都获得了广泛应用,并取得了丰硕的成果,人工智能已逐步成为一个独立的分支,无论在理论和实践上都已自成一个系统。 人工智能是研究使计算机来模拟人的某些思维过程和智能行为(如学习、推理、思考、规划等)的学科,主要包括计算机实现智能的原理、制造类似于人脑智能的计算机,使计算机能实现更高层次的应用。人工智能将涉及到计算机科学、心理学、哲学和语言学等学科。可以说几乎是自然科学和社会科学的所有学科,其范围已远远超出了计算机科学的范畴,人工智能与思维科学的关系是实践和理论的关系,人工智能是处于思维科学的技术应用层次,是它的一个应用分支。从思维观点看,人工智能不仅限于逻辑思维,要考虑形象思维、灵感思维才能促进人工智能的突破性的发展,数学常被认为是多种学科的基础科学,数学也进入语言、思维领域,人工智能学科也必须借用数学工具,数学不仅在标准逻辑、模糊数学等范围发挥作用,数学进入人工智能学科,它们将互相促进而更快地发展。

数据库课程设计模板(实例)

1.前言 (2) 1.1选题的理由和实际意义 (2) 1.2国内外关于该课题的研究现状及趋势 (3) 2需求分析 (5) 2.1 用户对系统要求 (5) 2.2功能介绍 (5) 3 系统设计 (7) 3.1定义 (7) 3.2系统模块图 (7) 3.4 数据表的设计 (8) 3.5 用例列举 (11) 3.5.1建立数据表 (11) 3.5.2建立视图 (14) 3.5.3建立索引 (15) 3.5.4约束条件的增加、删除、修改 (15) 3.5.5查询语句 (15) 3.5.6建立存储过程,触发器 (17) 4 总结 (18)

1.前言(本部分要有因果关系,前后通顺)1.1选题的理由和实际意义 随着IT事业的发展,如今,我们已经全面跨入信息时代。计算机被广泛的应用于各个行业,人工战略已经转化为信息战略,如何在短时间内获取大量信息并整合信息,成为立足于时代的关键。 为了适应考生人数的急剧增长,当今社会各大高校都在进行扩招政策,学生数量的急剧增加带来信息量的成倍增长,由于信息管理的不善与疏忽,各大高校大小事故时有发生。进行正确的信息管理,对于信息及时处理和反应,能够最大程度的减少学校以及在校学生的损失,减小潜在危机。 学生宿舍是学生生活的基本单位,是同学休息与学习的地方,为了保障同学入住学生宿舍的安全性,信息的处理和管理极为重要。据了解,本校的宿舍信息管理仍然使用传统的手工方式,主要方式是基于文本、表格等纸介质的手工处理,用人工手抄对男女生信宿信息进行处理登记。数据信息处理工作量大,容易出错且不易修改;由于数据繁多,容易丢失,逐条查找记录的方式不易操作,浪费了大量的时间,效率极低。学校的宿舍管理缺乏系统,规范的信息管理手段。 建立学生宿舍管理系统,使宿舍管理工作系统化,规范化,便捷化,程序化,避免宿舍管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改宿舍情况。 随着高校规模的扩大,在校学生的基本情况随之层次化、多样化、复杂化,相应的,学生管理工作面临严峻的挑战。高校学生信息日渐庞大,相应的宿舍管理工作变得复杂而困难。传统的账本化工作模式,手工记录学生信息并存档,这样的人工管理方式费时、费事、费力,信息获取慢,更新滞后,查阅困难,容易出错。为了给学生提供一个安全舒适的工作、生活、学习环境,方便宿舍管理工作的同时为学生、教师提供准确实时的信息至关重要。 本校的宿舍信息管理,主要方式是基于文本、表格等纸介质的手工处理,用人工手抄对男女生信宿信息进行处理登记。数据信息处理工作量大,容易出错且不易修改;由于数据繁多,容易丢失,逐条查找记录的方式不易操作,浪费了大量的时间,效率极低。 以上的管理缺陷对学生宿舍管理造成了相当大的阻力,工作进展困难,问题

大工20春数据库课程设计答案

网络教育学院 《数据库课程设计》 题目:某球队信息管理数据库系统的设计与实现 学习中心: 专业: 年级: 学号: 学生: 指导教师:

1 系统概况 1.1系统背景 足球作为世界第一运动,已经吸引了原来越多的人的关注,参与。各种俱乐部的成立在很大程度上促进了足球的发展,以及职业化,现在足球已经成为一种产业,而运动员是足球的核心,因此球队中对运动员的科学化管理,已经成为一种必需,科学化,人性化的管理可以增强他们的责任感,刺激他们的比赛热情,减少优秀运动员的流失,以及吸引顶尖球星的到来,对于一支稳定的球队,需要一套科学的系统来记录,分析统计球员的信息和状态,给予他们客观的评价。球队管理系统具有这些的功能,1、球员信息:它可以可以查看,修改,删除球员的各种信息。2. 比赛日程:查看比赛日程,包括具体比赛时间,对阵双方,以及比赛的性质。也可以编辑比赛日程。3. 工资管理:查看球员的工资包括基本工资,奖金等。4.添加、编辑比赛记录。5. 机构设置:查看整个球队的机构设置,比如总经理、主教练、队医等。通过统计分析方法,结合球员的状况和足球的规律性,发现问题,辅助球队管理。尽管足球运动中变化和偶然性占有一定比重,但其内部的规律是不可否认的,我国的足球产业还不发达,这不是一朝一夕可以提高的,因此必须从科学化管理出发,才能逐步提高俱乐部的比赛成绩,以及运作,从而提高整个产业的发展。 本系统采用面向对象的方法,面向对象技术是一个非常实用而且非常强有力的软件开发方法,而且已经成为最流行的一种软件开发方法。它有许多特色。一是方法的唯一性,即方法是对软件开发过程所有阶段进行综合考虑而得到的。二是从生存期的一个阶段到下一个阶段的高度连续性,即在一个阶段所用到的部分与在下一格阶段所用到的部分是衔接的,所使用的技术经过生存期每一阶段后不改变。三是把面向对象分析(OOA)、面向对象设计(OOD)和面向对象程序设计(OOP)集成到生存期的相应阶段。UML作为统一建模语言,已经成为面向对象设计图的标准工具,并以传播到非面向对象领域。本系统计采用面向对象的程序设计方法,采用UML建模。并且采用目前最流行的最流行了ADO,ADO是Microsoft为最新和最强大的数据访问范例 OLE DB 而设计的,是一个便于使用的应用程序层接口。 要建立这个管理系统,需要经过从零开始的分析,了解现有的工作流程,并将其人工操作事物流程用计算机来实现,信息管理系统的设计本身就是一项负责的系统工程,要制定规划,成立强有力的实施机构,加强对相关人员的培训教育,制订并执行严格的管理制度,球队管理的工作量大,而系统的可靠性,稳定性,

人工智能课程设计

滑块问题求解系统 一、设计任务 用智能搜索算法中的盲目搜索和启发式搜索这两类基本方法设计八数码问题的求解系统。所谓八数码问题是指这样一种游戏:将分别标有数字1,2,3,…,8 的八块正方形数码牌任意地放在一块3×3 的数码盘上.放牌时要求不能重叠.于是,在3×3 的数码盘上出现了一个空格. 现在要求按照每次只能将与空格相邻的数码牌与空格交换的原则,将任意摆放的数码盘逐步摆成某种特殊的排列.如下图表示了一个具体的八数码问题求解. 二、设计环境及使用说明 设计环境主要采用VC++开发环境。 三、系统已实现的功能 用广度优先搜索算法和两种A*搜索算法实现八数码问题的求解系统。 四、算法思想及分析 1、广度优先搜索算法 算法思想: 这是一种盲目搜索算法。算法主要思想是从初始结点开始依次沿其上下左右四个方向扩展结点,并逐一检查这些后继结点是否为目标结点,若不等于目标结点则把该后继结点插入到数组末尾。然后取数组中未扩展的第一个结点重复以上操作,直到得到目标结点为止或在限定步数以内未得到解。 数据结构: 算法当中的结点用结构体实现, typedef struct{ int num[9]; //八个数码用一个一维数组来存储。 char expension; //记录是否可以扩展,Y代表可以扩展,N代表不可以。 char bandirect; //表示不可以执行的操作,'L'代表不能左移,'R'代表不能右 移,'U'代表不能上移,'D'代表不能下移,'C'代表可以任 意移动。 int father; //记录父节点的下标。 }Node; 扩展的结点存储在数组里: Node node[MAXSIZE]; //将搜索过的状态存储于该数组中。 算法当中遇到的问题和解决方法: 1)如何去表达八个数码的位置和每个结点状态的表示 用一维或二维数组去表示八个数码的位置关系,每个结点包含了一个一维数组 (用来表示八个数码的位置关系),可扩展标记(用来标识一个结点是否被扩 展过,避免重复扩展),限制移动方向的标记(避免一个结点在一个方向的重 复扩展),记录父节点的指针(父节点下标)。 2)如何以最简洁的方式表达一个结点在其四个方向的扩展 设定一个数组用以存储该结点在每个方位是否可扩展。操作一个结点时先根据

大工19春《SQL数据库课程设计》模板及要求辅导答案

《数据库课程设计》 题目:电子书城系统的设计与实现 学习中心: XX 专业: XX 年级:年春/秋季 学号: XX 学生: XX

一、谈谈你对本课程学习过程中的心得体会与建议? 答:转眼间,学习了一个学期的计算机操作系统课程即将结束。 在这个学期中,通过老师的悉心教导,让我深切地体会到了计算机操作系统的一些原理和具体操作过程。在学习操作系统之前,我只是很肤浅地认为操作系统只是单纯地讲一些关于计算机方面的操作应用,并不了解其中的具体操作过程和实用性。通过这一学期的学习,我才知道操作系统(Operating System,简称OS)是管理计算机系统的全部硬件资源包括软件资源及数据资源;控制程序运行;改善人机界面;为其它应用软件提供支持等,使计算机系统所有资源最大限度地发挥作用,为用户提供方便的、有效的、友善的服务界面。 正是由于这门课和以前关系不大,很多知识也从未接触过,因此对于这门课的学习方法就是:理论课上认真听老师讲理论知识,上机课上仔细看老师的演示过程、在电脑上按照老师的演示步骤自己做,遇到自己无法做出来的过程(步骤)请教老师或者同学。 建议:学校除了安排学生要上的SQL教学的理论课之外,还应安排适当节数的实验课,最好是理论课和实验课在一周上,这样同学们更能高效快速的记住所学知识,实验课上教师可以给每位同学分配一个小的系统让他们去做,或者是找一个项目案例先让同学们自己研究,然后教师再和同学们一起分析探讨,这样就能更好的理解和掌握SQL语句。 增强同学们之间的交流,同班同学之间肯定对知识的掌握程度不一样,在课堂上适当的增加学生之间的交流,严格要求他们课下也要多交流,这样通过交流取长补短,学生之间的差距就会缩小。 二、 1 项目概况 本章需简单介绍具体使用的哪个版本SQL数据库,选用的前台开发工具以及自己所设计的具体什么系统。 2.1 SQL 数据库简介 SQL Server 是一个具备完全 Web 支持的数据库产品,提供了对可扩展标记 1

人工智能课程设计(五子棋)解读

《人工智能导论》课程报告 课题名称:五子棋 姓名: X X 学号:114304xxxx 课题负责人名(学号): X X114304xxxx 同组成员名单(学号、角色): x x1143041325 XXX1143041036 指导教师:张建州 评阅成绩: 评阅意见: 提交报告时间:2014年 1 月 9 日

五子棋 计算机科学与技术专业 学生XXX 指导老师张建州 [摘要]人类之所以不断在进步,是因为我们人类一直不断的在思考,五子棋游戏程序的开发符合人类进步也是促进人类进步的一大动力之一。五子棋游戏程序让人们方便快捷的可以下五子棋,让人们在何时都能通过下棋来提高逻辑思维能力,同时也培养儿童的兴趣以及爱好,让孩子更加聪明。 同时,五子棋游戏程序的开发也使得五子棋这个游戏得到了广泛的推广,让世界各地的人们知道五子棋,玩上五子棋,这已经不是局限。五子棋游戏程序使得越来越多的人喜欢上了五子棋,热爱下五子棋,它是具有很好的带动性的。 关键词:五子棋进步思考

目录 《人工智能导论》课程报告 0 1 引言 (3) 1.1五子棋简介 (3) 1.2 五子棋游戏的发展与现状 (3) 2 研究问题描述 (4) 2.1 问题定义 (4) 2.2 可行性研究 (4) 2.3 需求分析 (5) 2.4 总体设计 (5) 2.5 详细设计 (6) 2.6编码和单元测试 (6) 3 人工智能技术 (6) 4 算法设计 (7) 4.1α-β剪枝算法 (7) 4.2极大极小树 (7) 4.3深度优先搜索(DFS) (8) 4.4静态估值函数 (9) 5 软件设计和实现 (9) 5.1 数据结构定义 (9) 5.2 程序流程图 (17) 6 性能测试 (18) 6.1 程序执行结果 (18) 7 总结 (21) 参考文献 (21)

人工智能深度优先算法课程设计报告

人工智能课程报告 题目: 深 度 优 先 算 法 班级:XXXXXXXXXXX 学号:XXXXXXXXXXX 姓名:XXXXXXXXXXX

【摘要】结合生活中解决搜索问题所常用的思考方法与解题方法,从深度优先探讨了提高程序效率的适用技巧。 【关键词】1搜索顺序;2搜索对象;3搜索优化; 一、深度优先搜索的优化技巧 我们在做事情的时候,经常遇到这类问题——给出约束条件,求一种满足约束条件的方案,这类问题我们叫它“约束满足”问题。对于约束满足问题,我们通常可以从搜索的顺序和搜索的对象入手,进而提高程序的效率。 二、搜索的顺序及对象: 在解决约束满足问题的时候,问题给出的约束条件越强,对于搜索就越有利。之所以深度优先搜索的效率在很大程度上优于穷举,就是因为它在搜索过程中很好的利用了题目中的约束条件进行优化,达到提高程序效率的目的。 显然,在同样的一棵搜索树中,越在接近根接点的位置利用约束条件优化效果就越好。如何在搜索中最大化的利用题目的约束条件为我们提供剪枝的依据,是提高深度优先搜索效率的一个很重要的地方。而不同的搜索顺序和搜索对象就直接影响到我们对于题目约束条件的运用。 三、搜索特点 1.由于深度搜索过程中有保留已扩展节点,则不致于重复构造不必要的子树系统。 2.深度优先搜索并不是以最快的方式搜索到解,因为若目标节点在第i层的某处,必须等到该节点左边所有子树系统搜索完毕之后,才会访问到该节点,因此,搜索效率还取决于目标节点在解答树中的位置。

3.由于要存储所有已被扩展节点,所以需要的内存空间往往比较大。 4.深度优先搜索所求得的是仅仅是目前第一条从起点至目标节点的树枝路径,而不是所有通向目标节点的树枝节点的路径中最短的路径。 5.适用范围:适用于求解一条从初始节点至目标节点的可能路径的试题。若要存储所有解答路径,可以再建立其它空间,用来存储每个已求得的解。若要求得最优解,必须记下达到目前目标的路径和相应的路程值,并与前面已记录的值进行比较,保留其中最优解,等全部搜索完成后,把保留的最优解输出。 四、算法数据结构描述 深度优先搜索时,最关键的是结点扩展(OPEN)表的生成,它是一个栈,用于存放目前搜索到待扩展的结点,当结点到达深度界限或结点不能再扩展时,栈顶结点出栈,放入CLOSE表(存放已扩展节点),继续生成新的结点入栈OPEN 表,直到搜索到目标结点或OPEN栈空为止。 具体算法如下: ①把起始结点S放到非扩展结点OPEN表中(后进先出的堆栈),如果此结点为一目标结点,则得到一个解。 ②如果OPEN为一空表,则搜索失败退出。 ③取OPEN表最前面(栈顶)的结点,并把它放入CLOSED的扩展结点表中,并冠以顺序编号n。 ④如果结点n的深度等于最大深度,则转向2。 ⑤否则,扩展结点n,产生其全部子结点,把它们放入OPEN表的前头(入栈),并配上指向n的返回指针;如果没有后裔,则转向2。 ⑥如果后继结点中有任一个为目标结点,则求得一个解,成功退出;否则,转向2。

数据库课程设计模板

网络教育学院 《数据库课程设计》 题 目:XXXX 数据库系统的设计与实现 学习中心: 学 学

1 系统概况 本章需简单介绍开发项目基本情况,如系统的编写目的,系统的开发背景,系统的实现目标等。

2 系统需求分析 2.1 系统总体需求 系统总体需求主要根据系统功能分析系统设计之前的规划工作,包括分析系统元素的种类、功能、各数据项以及系统整体性能模式。另外,也包括系统各实体之间的联系,系统各模块功能的分析,软硬件平台的介绍等。 2.2 系统整体功能介绍 针对某一特定的系统,介绍该整体系统的功能结构,最好给出整体的功能结构图。 2.3 系统元素、实体介绍 分析系统中包含的元素项,实体以及他们之间的联系。 2.4 软硬件平台介绍 对系统中应用到的软硬件平台给予详细的介绍。

3 系统设计与实现 系统设计与实现包括系统的概念设计、各功能模块的设计、逻辑设计、界面的设计以及数据库的设计等。 3.1 概念设计 给出系统各实体之间关系的E-R图,并作相应的介绍,并给出系统整体结构功能。 3.1.1 XX与YY之间的联系 3.1.2 XX1与YY1之间的联系 3.1.3 XX2与YY2之间的联系 3.2 模块功能设计 给出系统各模块功能的详细设计。 3.2.1 XX模块的功能设计

3.2.2 YY模块的功能设计 3.3 系统总体功能 给出总体系统设计的介绍,并给出相应的E-R图。 3.4 逻辑设计 本部分设计主要包括各数据库功能表的设计。 3.5 界面设计 本部分介绍各功能界面的设计与介绍。

4 系统总结 总结系统的设计与实现的心得、体会,以及系统的优缺点等。

A-算法人工智能课程设计

人工智能(A*算法) 一、 A*算法概述 A*算法是到目前为止最快的一种计算最短路径的算法,但它一种‘较优’算法,即它一般只能找到较优解,而非最优解,但由于其高效性,使其在实时系统、人工智能等方面应用极其广泛。 A*算法结合了启发式方法(这种方法通过充分利用图给出的信息来动态地作出决定而使搜索次数大大降低)和形式化方法(这种方法不利用图给出的信息,而仅通过数学的形式分析,如Dijkstra算法)。它通过一个估价函数(Heuristic Function)f(h)来估计图中的当前点p到终点的距离(带权值),并由此决定它的搜索方向,当这条路径失败时,它会尝试其它路径。 因而我们可以发现,A*算法成功与否的关键在于估价函数的正确选择,从理论上说,一个完全正确的估价函数是可以非常迅速地得到问题的正确解答,但一般完全正确的估价函数是得不到的,因而A*算法不能保证它每次都得到正确解答。一个不理想的估价函数可能会使它工作得很慢,甚至会给出错误的解答。 为了提高解答的正确性,我们可以适当地降低估价函数的值,从而使之进行更多的搜索,但这是以降低它的速度为代价的,因而我们可以根据实际对解答的速度和正确性的要求而设计出不同的方案,使之更具弹性。 二、 A*算法分析 众所周知,对图的表示可以采用数组或链表,而且这些表示法也各也优缺点,数组可以方便地实现对其中某个元素的存取,但插入和删除操作却很困难,而链表则利于插入和删除,但对某个特定元素的定位却需借助于搜索。而A*算法则需要快速插入和删除所求得的最优值以及可以对当前结点以下结点的操作,因而数组或链表都显得太通用了,用来实现A*算法会使速度有所降低。要实现这些,可以通过二分树、跳转表等数据结构来实现,我采用的是简单而高效的带优先权的堆栈,经实验表明,一个1000个结点的图,插入而且移动一个排序的链表平均需500次比较和2次移动;未排序的链表平均需1000次比较和2次移动;而堆仅需10次比较和10次移动。需要指出的是,当结点数n大于10,000时,堆将不再是正确的选择,但这足已满足我们一般的要求。

相关文档
相关文档 最新文档