人工智能课程设计报告
人工智能课程设计

课程设计一、教学目标本课程旨在让学生了解的基本概念、技术和应用,培养学生对的兴趣和好奇心,提高学生的创新能力和解决问题的能力。
具体目标如下:1.知识目标:学生能够理解的基本概念、技术和应用领域;掌握的基本原理和方法。
2.技能目标:学生能够运用技术解决实际问题,提高学生的编程能力和数据处理能力。
3.情感态度价值观目标:学生树立正确的科技创新观念,培养团队合作精神和自主学习能力。
二、教学内容本课程的教学内容主要包括的基本概念、技术和应用。
具体安排如下:1.第一章:概述,介绍的定义、发展历程和应用领域。
2.第二章:基本原理,讲解的基本原理和方法,如机器学习、深度学习等。
3.第三章:技术,介绍技术的应用和发展趋势,如语音识别、图像识别等。
4.第四章:应用,分析在各个领域的应用案例,如医疗、教育、交通等。
三、教学方法为了提高教学效果,本课程采用多种教学方法相结合的方式,包括:1.讲授法:教师讲解的基本概念、原理和技术。
2.案例分析法:分析在实际应用中的案例,让学生更好地理解的价值。
3.实验法:引导学生动手实践,培养学生的编程能力和解决问题的能力。
4.讨论法:学生进行小组讨论,激发学生的创新思维和团队合作精神。
四、教学资源为了支持教学内容和教学方法的实施,本课程准备以下教学资源:1.教材:选用权威、实用的教材,为学生提供系统的学习材料。
2.参考书:推荐学生阅读相关参考书籍,丰富学生的知识体系。
3.多媒体资料:制作精美的PPT、教学视频等,提高学生的学习兴趣。
4.实验设备:准备相应的实验设备,如计算机、编程软件等,让学生动手实践。
五、教学评估为了全面、客观地评估学生的学习成果,本课程采用多元化的评估方式,包括:1.平时表现:评估学生在课堂上的参与度、提问回答等情况,以体现学生的学习态度和积极性。
2.作业:布置适量的作业,评估学生的知识掌握和应用能力。
3.考试:定期进行考试,检验学生对课程知识的掌握程度。
4.项目实践:学生进行小组项目实践,评估学生的团队合作能力和解决问题的能力。
人工智能 课程设计报告 课设报告

学生实验报告实验课名称:人工智能实验项目名称:基于回溯推理的小型专家系统题目:一个关于植物分类的小型专家系统专业名称:计算机科学与技术班级:24020704学号:2402070427学生姓名:杨孟拓教师姓名:慕晨2010 年10 月27 日一、实验名称:一个关于植物分类的小型专家系统二、实验目的与要求:1、确定推理方法(正向还是反向),并根据问题设计实现一个简单的不通用推理机(匹配、冲突消解)2、规则库要求至少包含15条规则3、初始事实可以任意给定,输入初始事实后能够得到推理结果4、设计人机界面,解释模块提供查询规则的功能5、可以不考虑知识库管理模块6、提交实验报告7、报告中要有推理树三、实验内容:本次实验将做一个关于植物分类的小型专家系统,在植物分类系统中,要区分各种植物,可以对每种植物构造一条识别规则,其中规则右部为识别出的植物名,左部为该植物的特征。
本次实验设计了一个简单的不通用推理机。
推理机给出的推理结果是“苹果”。
系统结构:知识库,推理机,动态数据库,人机界面,解释模块,知识库管理模块。
专家系统结构图四、程序设计思想本次实验采用的推理方法为正向推理,正向推理是从已知事实出发,通过规则库求的结论。
这种推理方式是正向使用规则,即问题的初始状态作为初始数据库,仅当数据库中的事实满足某条规则的前提时,该规则才能被使用。
正向推理的推理基础是逻辑演绎的推理链。
从一组事实出发,使用一组规则,来证明目标的成立。
正向推理的步骤步1 将初始事实置入动态数据库;步 2 用动态数据库中的事实,匹配目标条件,若目标条件满足,则推理成功,结束。
步3 用规则库中各规则的前件匹配动态数据库中的事实,将匹配成功的规则组成冲突集;步4 若冲突集为空,则运行失败,退出。
步5 对冲突集做冲突消解,对选择执行的各规则,将其结论加入动态数据库,或执行其动作,转步2。
正向推理的流程图五、程序实现过程初始事实:它的果肉为乳黄色它的果实里无石细胞它的果实为梨果它的果实无毛它的花托呈杯形它种子的胚有两个子叶规则:R1:if它种子的胚有两个子叶∨它的叶脉为网状then它是双子叶植物R2:if它种子的胚只有一个子叶 then它是单子叶植物R3:if它的果肉为白色 then 它是梨R4:if它的叶脉平行 then 它是单子叶植物R5:if它是双子叶植物∧它的花托呈杯形then它是蔷薇科植物R6:if它的花托呈圆柱形∧它的花瓣有5枚then它是蔷薇科植物R7:if它是双子叶植物∧它的花托呈圆柱形then它是蔷薇科植物R8:if它是蔷薇科植物∧它的果实为核果then它是李亚科植物R9:if 它是蔷薇科植物∧它的果实为梨果then它是苹果亚科植物R10:if它是李亚科植物∧它的果实有毛then它是桃R11:if它是李亚科植物∧它的果实无毛then 它是李R12:if它的果实为扁圆形∧它的果实外有纵沟then它是桃R13:if它是苹果亚科植物∧它的果实里无石细胞then它是苹果R14:if它是苹果亚科植物∧它的果实里有石细胞then它是梨R15:if它的果肉为乳黄色∧它的果肉质脆then它是苹果推理过程:初始事实写入动态数据库{果肉为乳黄色,果实里无石细胞,果实为梨果,果实无毛,花托呈杯形,种子的胚有两个子叶}第一次循环用动态数据库的事实匹配目标条件,目标条件不成立用规则库中的规则逐一与数据库匹配R1:if它种子的胚有两个子叶∨它的叶脉为网the它是双子叶植物“双子叶胚”匹配成功,加入冲突集R2:if它种子的胚只有一个子叶 then它是单子叶植物匹配失败,该条规则放弃R3:if它的果肉为白色 then 它是梨匹配失败,该条规则放弃R4:if它的叶脉平行 then 它是单子叶植物匹配无结果,该条规则加入待测试规则集R5:if它是双子叶植物∧它的花托呈杯形then它是蔷薇科植物“双子叶植物”目前的动态数据库无法匹配,匹配无结果,该条规则加入待测试规则集R6:if它的花托呈圆柱形∧它的花瓣有5枚then它是蔷薇科植物匹配失败,该条规则放弃R7:if它是双子叶植物∧它的花托呈圆柱形then它是蔷薇科植物匹配失败,该条规则放弃R8:if它是蔷薇科植物∧它的果实为核果then它是李亚科植物“果实为核果”匹配失败,该条规则放弃R9:if 它是蔷薇科植物∧它的果实为梨果then它是苹果亚科植物“蔷薇科植物”目前的动态数据库无法匹配,匹配无结果,该条规则加入待测试规则集R10:if它是李亚科植物∧它的果实有毛then它是桃“果实有毛”匹配失败,该条规则放弃R11:if它是李亚科植物∧它的果实无毛then 它是李“李亚科植物”目前的动态数据库无法匹配,匹配无结果,该条规则加入待测试规则集R12:if它的果实为扁圆形∧它的果实外有纵沟then它是桃“果实为扁圆形”和“果实外有从纵沟”目前的动态数据库无法匹配,匹配无结果,该条规则加入待测试规则集R13:if它是苹果亚科植物∧它的果实里无石细胞then它是苹果“苹果亚科植物”目前的动态数据库无法匹配,匹配无结果,该条规则加入待测试规则集R14:if它是苹果亚科植物∧它的果实里有石细胞then它是梨“果实有石细胞”匹配失败,该条规则放弃R15:if它的果肉为乳黄色∧它的果肉质脆then它是苹果“果肉质脆”目前的动态数据库无法匹配,匹配无结果,该条规则加入待测试规则集冲突消解冲突集{R1}无冲突,则将后件加入动态数据库{果肉为乳黄色,果实里无石细胞,果实为梨果,果实无毛,花托呈杯形,种子的胚有两个子叶,双子叶}第二次循环用动态数据库的事实匹配目标条件,目标条件不成立用待测试规则库中的规则与数据库匹配{R4,R5,R9,R11,R12,R13,R15}{果肉为乳黄色,果实里无石细胞,果实为梨果,果实无毛,花托呈杯形,种子的胚有两个子叶,双子叶}R5:if它是双子叶植物∧它的花托呈杯形then它是蔷薇科植物匹配成功,加入冲突集R4、R9、R11、R12、R13、R15 :匹配无结果,新待测试规则集{ R4、R9、R11、R12、R13、R15}冲突消解冲突集{R5}无冲突,则将后件加入动态数据库{果肉为乳黄色,果实里无石细胞,果实为梨果,果实无毛,花托呈杯形,种子的胚有两个子叶,双子叶,蔷薇科}第三次循环用动态数据库的事实匹配目标条件,目标条件不成立用待测试规则库中的规则与数据库匹配{R4,R9,R11,R12,R13,R15}{果肉为乳黄色,果实里无石细胞,果实为梨果,果实无毛,花托呈杯形,种子的胚有两个子叶,双子叶,蔷薇科}R9:if 它是蔷薇科植物∧它的果实为梨果then它是苹果亚科植物匹配成功,加入冲突集R4、R11、R12、R13、R15 :匹配无结果,新待测试规则集{R4、R11、R12、R13、R15}冲突消解冲突集{R9}无冲突,则将后件加入动态数据库{果肉为乳黄色, 果实里无石细胞, 果实为梨果, 果实无毛,花托呈杯形, 种子的胚有两个子叶, 双子叶, 蔷薇科, 苹果亚科}第四次循环用动态数据库的事实匹配目标条件,目标条件不成立用待测试规则库中的规则与数据库匹配{R4、R11、R12、R13、R15}{果肉为乳黄色, 果实里无石细胞, 果实为梨果, 果实无毛,花托呈杯形, 种子的胚有两个子叶, 双子叶, 蔷薇科, 苹果亚科}R13:if 它是苹果亚科植物∧它的果实里无石细胞then 它是苹果 匹配成功,加入冲突集R4、R11、R12、R15:匹配无结果,新待测试规则集{ R4、R11、R12、R15} 冲突消解冲突集{R13}无冲突,则将后件加入动态数据库{果肉为乳黄色, 果实里无石细胞, 果实为梨果, 果实无毛,花托呈杯形, 种子的胚有两个子叶, 双子叶, 蔷薇科, 苹果亚科, 苹果} 第五次循环动态数据库的事实没有变化,推理结束,即结束循环结果为苹果推理树图六、程序显示结果七、体会与总结通过这次实验,使我更加深了对产生式系统的推理方式(正向推理)的理解。
人工智能综合课程设计

综合课程设计一、教学目标本课程旨在让学生了解的基本概念、技术和应用,培养学生的创新思维和问题解决能力,提高学生对领域的认识和兴趣。
1.了解的定义、发展历程和应用领域;2.掌握的基本技术和方法,如机器学习、深度学习、自然语言处理等;3.了解的伦理和社会问题。
4.能够运用技术解决实际问题;5.具备编程能力,能够编写简单的程序;6.能够分析领域的数据和结果。
情感态度价值观目标:1.培养学生对的兴趣和好奇心,激发学生对科学研究的热情;2.培养学生的创新思维和团队合作能力,提高学生的问题解决能力;3.使学生认识到技术对社会发展的影响,增强学生的社会责任感和伦理意识。
二、教学内容本课程的教学内容主要包括的基本概念、技术和应用。
1.概述:的定义、发展历程、应用领域和挑战;2.机器学习:监督学习、无监督学习、强化学习等;3.深度学习:神经网络、卷积神经网络、循环神经网络等;4.自然语言处理:、文本分类、机器翻译等;5.应用:图像识别、语音识别、智能驾驶等;6.伦理和社会问题:数据隐私、算法歧视、失业问题等。
三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法,如讲授法、讨论法、案例分析法、实验法等。
1.讲授法:通过讲解的基本概念、技术和应用,使学生了解和掌握相关知识;2.讨论法:学生进行小组讨论,培养学生的创新思维和问题解决能力;3.案例分析法:分析真实的应用案例,使学生更好地理解技术的实际应用;4.实验法:让学生动手编写程序,培养学生的编程能力和实践能力。
四、教学资源为了支持教学内容和教学方法的实施,本课程将选择和准备以下教学资源:1.教材:《导论》;2.参考书:《深度学习》、《自然语言处理综述》;3.多媒体资料:教学PPT、相关的视频和演示;4.实验设备:计算机、编程软件、实验器材等。
通过以上教学资源的使用,将丰富学生的学习体验,提高学生的学习效果。
五、教学评估本课程的评估方式将包括平时表现、作业、考试等,以全面、客观、公正地评估学生的学习成果。
ai智能课程设计

ai智能课程设计一、课程目标知识目标:1. 学生能理解人工智能的基本概念,掌握人工智能的基本原理和应用领域。
2. 学生能够描述人工智能技术的发展历程,了解我国在人工智能领域的重要成就。
3. 学生掌握基本的数据结构和算法,能够运用编程语言实现简单的人工智能程序。
技能目标:1. 学生能够运用人工智能技术解决实际问题,具备初步的创新能力。
2. 学生能够运用编程语言,设计并实现具有简单智能功能的程序。
3. 学生能够通过小组合作,完成人工智能项目的策划、实施和评估。
情感态度价值观目标:1. 学生对人工智能产生浓厚的兴趣,认识到人工智能在现代社会中的重要作用。
2. 学生能够树立正确的科技观,认识到科技发展应服务于人类福祉。
3. 学生在团队合作中,培养沟通、协作和解决问题的能力,增强团队意识。
课程性质:本课程为选修课,旨在拓展学生的知识面,提高学生的创新能力和实践能力。
学生特点:六年级学生具有一定的信息技术基础,对新鲜事物充满好奇心,具备一定的自主学习能力和团队合作精神。
教学要求:结合课本内容,注重理论与实践相结合,鼓励学生动手实践,培养解决问题的能力。
在教学过程中,关注学生的个体差异,激发学生的学习兴趣,提高学生的综合素质。
通过本课程的学习,使学生能够达到上述课程目标,为未来的学习和发展奠定基础。
二、教学内容1. 人工智能基本概念与原理:包括人工智能的定义、发展历程、应用领域等,对应课本第一章内容。
2. 数据结构与算法基础:介绍基本的数据结构(如数组、链表、树等)和算法(如排序、查找等),对应课本第二章内容。
3. 编程语言入门:以Python语言为例,教授基本语法和编程技巧,为后续实现人工智能程序打下基础,对应课本第三章内容。
4. 人工智能应用实例:分析并实践简单的人工智能应用,如智能聊天机器人、图像识别等,结合课本第四章内容。
5. 人工智能项目实践:分组进行项目策划、实施和评估,培养学生动手能力和团队协作精神,对应课本第五章内容。
人工智能应用课程设计

人工智能应用课程设计一、课程目标知识目标:1. 学生能理解人工智能的基本概念和原理;2. 学生能掌握人工智能在日常生活和各行各业中的应用案例;3. 学生能了解人工智能技术的发展趋势及其对社会的影响。
技能目标:1. 学生能运用人工智能技术进行简单的程序设计和问题解决;2. 学生能通过实际案例分析,学会运用人工智能技术优化生活和工作;3. 学生能通过小组合作,提高沟通与协作能力,培养团队精神。
情感态度价值观目标:1. 学生能对人工智能产生兴趣,培养探索精神和创新意识;2. 学生能认识到人工智能技术在现实生活中的价值,增强社会责任感;3. 学生能理解人工智能与人类的关系,树立正确的人工智能伦理观念。
本课程针对初中年级学生,结合课程性质、学生特点和教学要求,将目标分解为具体的学习成果。
通过本课程的学习,学生不仅能掌握人工智能的基本知识和技能,还能培养对人工智能的兴趣和正确价值观,为我国人工智能领域的发展储备优秀人才。
二、教学内容1. 人工智能基本概念:介绍人工智能的定义、发展历程、分类及其在现代社会的作用;教材章节:第一章《人工智能概述》内容列举:人工智能的定义、历史发展、主要技术分类。
2. 人工智能技术应用案例:分析生活中的人工智能应用,如智能家居、语音识别、自动驾驶等;教材章节:第二章《人工智能技术应用》内容列举:智能家居、语音识别、自动驾驶、人脸识别等。
3. 简单程序设计:学习使用Python等编程语言进行基础程序设计,了解编程思维;教材章节:第三章《编程基础》内容列举:Python编程环境、基本语法、控制结构、函数定义。
4. 人工智能问题解决:探讨如何利用人工智能技术解决实际问题,如路径规划、图像识别等;教材章节:第四章《人工智能问题解决》内容列举:路径规划、图像识别、自然语言处理。
5. 人工智能技术发展趋势:分析人工智能技术的未来发展趋势及其对社会的影响;教材章节:第五章《人工智能未来发展》内容列举:技术发展趋势、行业应用前景、伦理与道德问题。
人工智能语言基础课程设计报告总结

人工智能语言基础课程设计报告总结人工智能语言基础课程设计报告总结摘要:本文总结了人工智能语言基础课程的设计报告,该报告旨在探讨人工智能在语言相关任务中的应用。
通过深入研究,我们整理了该课程的核心内容和重点学习领域,并就其应用前景和问题进行了讨论。
本文还分享了对人工智能语言基础课程的观点和理解。
1. 引言人工智能作为当前科技领域的热门话题,对语言任务的应用日益重要。
本报告旨在总结人工智能语言基础课程的设计,该课程旨在培养学生在语言处理和理解方面的能力。
2. 课程核心内容2.1 语言理解和生成本课程着重介绍了语言理解和生成的基本概念和技术。
学生通过学习自然语言处理的方法和算法,了解如何构建能够理解和生成人类语言的系统。
2.2 词法和句法分析词法和句法分析是语言处理的基础步骤。
通过该课程的学习,学生能够掌握常见的词法和句法分析技术,并了解它们在实际应用中的意义和局限性。
2.3 语义和语用分析语义和语用分析是理解语言含义和上下文的重要环节。
在人工智能语言基础课程中,学生将学习不同的语义和语用分析方法,并探讨它们在信息抽取、问答系统等任务中的应用。
2.4 机器翻译与自动摘要机器翻译和自动摘要是人工智能语言处理中的两个重要应用领域。
学生通过该课程将研究并实践机器翻译和自动摘要的核心算法和技术,以提高语言处理任务的效率和准确性。
3. 应用前景与问题人工智能语言基础课程的学习将帮助学生了解语言处理技术在现实生活中的应用前景和挑战。
其中一些应用领域包括智能客服、信息检索、情感分析等。
然而,该领域仍存在着诸多问题,例如歧义处理、语料库构建等,这些问题需要进一步的研究和探索。
4. 观点与理解人工智能语言基础课程的设计报告表明,语言处理在人工智能领域中具有重要地位。
通过深入学习语言理解和生成等核心内容,学生可以获得解决实际问题的能力。
我们认为,人工智能语言基础课程应当关注伦理和隐私问题,以确保技术的正确应用。
结论:人工智能语言基础课程的设计报告总结了该课程的核心内容和学习领域。
用ai做课程设计报告

用ai做课程设计报告一、课程目标知识目标:1. 让学生理解人工智能(AI)的基本概念,掌握其在教育领域的应用。
2. 使学生了解课程设计的基本流程,结合AI技术进行创新课程设计。
3. 帮助学生掌握课程目标、教学内容、教学方法等方面的知识。
技能目标:1. 培养学生运用AI技术进行课程设计的能力,提高解决问题的实践能力。
2. 培养学生的团队协作能力,学会与他人共同探讨、分析并优化课程设计。
3. 培养学生的创新思维,能够结合AI技术提出独特的课程设计方案。
情感态度价值观目标:1. 培养学生对AI技术的兴趣和好奇心,激发学习动力。
2. 培养学生尊重知识产权,养成良好的学术道德观念。
3. 增强学生的自信心,培养勇于尝试、不断进取的精神。
课程性质:本课程为实践性课程,结合AI技术进行课程设计,旨在提高学生的创新能力和实践能力。
学生特点:学生具备一定的信息技术基础,对AI技术有一定了解,具有较强的学习能力和实践欲望。
教学要求:教师需结合学生实际情况,采用任务驱动、案例教学等方法,引导学生主动参与课程设计,实现课程目标的具体分解和达成。
在教学过程中,注重培养学生的团队协作能力和创新思维,提高学生对AI技术在教育领域的认识和应用。
通过课程评估,确保学生达到预定的学习成果。
二、教学内容1. 人工智能(AI)基本概念与原理- AI的定义、发展历程、应用领域- 机器学习、深度学习的基本原理2. 课程设计基本理论- 课程目标、教学内容、教学方法- 课程设计流程与评价标准3. AI技术在课程设计中的应用- 案例分析:国内外AI教育应用案例- 教学策略:如何将AI技术融入课程设计4. 实践操作与团队协作- 利用AI工具进行课程设计实践- 团队协作、讨论、优化课程设计方案5. 创新思维与课程设计- 激发创新思维的方法与技巧- 结合AI技术进行创新课程设计实践教学内容安排与进度:第一周:人工智能基本概念与原理第二周:课程设计基本理论第三周:AI技术在课程设计中的应用第四周:实践操作与团队协作第五周:创新思维与课程设计教材章节及内容:第一章:人工智能概述第二章:课程设计基本理论第三章:AI技术在课程设计中的应用第四章:实践操作与团队协作第五章:创新思维与课程设计教学内容确保与课程目标紧密结合,注重科学性和系统性,使学生在掌握基本理论的基础上,能够运用AI技术进行创新课程设计。
人工智能课程设计

人工智能 课程设计一、课程目标知识目标:1. 让学生理解人工智能的基本概念、发展历程及在生活中的应用。
2. 掌握人工智能的核心技术,如机器学习、自然语言处理等。
3. 了解人工智能伦理和道德规范,认识到科技发展对社会的影响。
技能目标:1. 培养学生运用人工智能技术解决实际问题的能力。
2. 提高学生编程、数据分析等实践操作技能。
3. 培养学生团队协作、沟通表达的能力。
情感态度价值观目标:1. 激发学生对人工智能的兴趣和好奇心,培养其探索精神。
2. 引导学生树立正确的科技观,认识到人工智能对社会发展的积极作用。
3. 培养学生的道德素养,使其在应用人工智能时遵循伦理规范。
本课程针对的学生特点是具有一定的信息素养和逻辑思维能力,对新鲜事物充满好奇心。
课程性质为理论与实践相结合,注重培养学生的实际操作能力和创新精神。
在教学要求方面,注重启发式教学,引导学生主动探究,关注学生的个体差异,提高教学效果。
1. 知识层面:掌握人工智能的基本概念、技术和应用,了解伦理道德规范。
2. 技能层面:具备编程、数据分析等实践操作能力,能够解决实际问题。
3. 情感态度价值观层面:对人工智能产生浓厚兴趣,树立正确的科技观,遵循伦理规范。
二、教学内容1. 人工智能基本概念与历史- 人工智能的定义、分类及发展历程- 课本章节:第一章 人工智能概述2. 人工智能核心技术- 机器学习、深度学习、神经网络等基本原理- 自然语言处理、计算机视觉等应用技术- 课本章节:第二章至第四章 人工智能核心技术3. 人工智能应用与案例分析- 人工智能在医疗、教育、交通等领域的应用案例- 分析人工智能技术如何解决实际问题- 课本章节:第五章 人工智能应用案例4. 人工智能伦理与道德规范- 人工智能伦理原则、道德规范及法律法规- 课本章节:第六章 人工智能伦理与道德5. 实践操作与项目制作- 编程实践、数据分析等技能训练- 团队协作完成人工智能项目制作- 课本章节:第七章 实践操作与项目制作教学内容安排和进度:第一周:人工智能基本概念与历史第二周:人工智能核心技术(1)第三周:人工智能核心技术(2)第四周:人工智能应用与案例分析第五周:人工智能伦理与道德规范第六周:实践操作与项目制作(1)第七周:实践操作与项目制作(2)第八周:总结与展示教学内容确保科学性和系统性,注重理论与实践相结合,引导学生主动参与,培养实际操作能力和团队协作精神。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
人工智能课程设计报告学号:***********姓名:***班级:191091指导老师:***2011年10月14目录1.N皇后问题 (1)需求分析,设计 (1)设计表示 (1)运行结果 (2)用户手册即测试数据 (2)结论 (5)主要算法代码 (5)2罗马尼亚问题 (9)需求分析,设计 (9)设计表示,详细设计 (9)用户手册 (11)运行结果 (11)主要算法代码 (12)3.实习心得 (21)1 N 皇后问题1.问题描述、需求分析在N*N 的棋盘上分布N 个皇后,其中N 个皇后不能在同一行同一列,也不能出现在同一对角线上,此时N 个皇后不会相互攻击。
程序需能手动输入皇后个数,并分别采用回溯法、爬山法、遗传法得出皇后的分布情况,输出皇后的位置即棋盘。
2.设计思想2.1 形式化N 个皇后的位置可用一个N 维数组表示,如921543……,意思是第一个皇后在第一列的第9行。
2.2 程序模块CreatIndividual( )函数用于产生一组表示皇后不在同一行也不再同一列的的一位数组,即产生一组互不相等的0~N 之间的整数,便于快速求解。
IsLegal( )函数用于判断新放置的皇后是否合法,在回溯法中用到。
AttackQueenNum( )用于计算整个棋盘的攻击皇后个数,相当于一个评价函数,在爬山法和遗传法中用到;Find( )回溯法求解函数ClimbHill( )爬山法求解函数; GA( )遗传算法求解函数;(1)函数调用关系图如下:(2)函数接口规格说明:下图中的箭头指向表示为被指向函数所用2.3 详细设计a: CreatIndividual(int *A,int QueenNum):以当时时间为种子循环产生随机数,为了使得产生的随机数都不想等,设计集合S[N]并初始化为0,表示还没有产生一个皇后,当产生的皇后不在S[N]中即S[N]!=1时将S[n]置为1,接着产生下一个皇后,如此循环便产生一组互不相等的值。
b: IsLegal(int *A,int t)此函数用于判断第t列的皇后是否合法,即有没有皇后在同一行、同一列,同一对角线上,并返回true或者false。
c: AttackQueenNum(int *A,int QueenNum)循环调用IsLegal()函数对攻击数进行累加并返回其值,此函数作为棋盘的评价函数。
d: Find(int *A,int k,int QueenNum,long beginTime)回溯法求解,因为回溯法的每一层都是for循环,所以不能单纯的用break语句进行控制,因为即使当前层循环停止了,程序还会继续执行上一层的循环,所以将起始时间作为参数进行传递,以便求出算法执行时间,然后用exit(0)语句终止程序,所以要将回溯法放在其它两个算法的后面执行。
e: ClimbHill(int *A,int QueenNum):由于在产生一个棋盘个体的时候所有的皇后就不在同一行同一列,所以在爬山法中只对棋盘的列进行交换,这样即使再怎么交换所有的皇后还是不在同一行同一列,但在交换的时候需要调用AttackQueenNum( )函数进行棋盘的评价,如果交换前的攻击数大于交换后的攻击数则进行交换,否则与下一列进行交换比较,如此循环直到找出解。
f: GA( )3.用户手册运行程序,输入皇后个数N,各种算法得到的皇后分布情况、耗时自动显示;4.测试数据及测试结果分别测试4,20,30,50皇后,测试结果如下:程序运行结果:4皇后运行结果20皇后运行结果如下30皇后运行结果如下:50皇后运行结果如下由于50皇后的棋盘稍大,这里只给出运行时间结论:根据输入皇后个数递增的运行结果可以看出爬山法的速度是相当快的,在皇后个数比较少时回溯法的速度要快于遗传算法,而当皇后个数比较多时,回溯法的深度搜索明显慢于遗传算法。
主要算法程序代码:1:bool IsLegal(int *A,int t) //判断第t列的皇后位置是否合法{int i;for (i=0;i<t;i++) //首先判断前面几列同一行有没有皇后{if (A[i]==A[t])return false;}if (t>0 && abs(A[t-1]-A[t])==1)//然后再判断是否与相邻前一列皇后发生冲突return false;return true;}2:void CreatIndividual(int *A,int QueenNum){int i,x;//在产生随机数时使用int *s=new int[QueenNum];//集合,用于产生一组皇后位置for (i=0;i<QueenNum;i++)s[i]=0;srand((unsigned)time(NULL));//种子A[0]=rand()%QueenNum;//第一列的皇后可以没有限制的产生,所以先产生s[A[0]]=1;for (i=1;i<QueenNum;i++){do{x=rand()%QueenNum;} while (s[x]==1);//s[x]==1表示此位置已有皇后,则重新产生新的位置A[i]=x;s[A[i]]=1;}}3:void Find(int *A,int k,int QueenNum,long beginTime){int i,j;if (k==QueenNum ){for (i=0;i<QueenNum;i++){printf(" ");for (j=0;j<QueenNum;j++){if (A[j]==i) printf("# ");else printf("O ");}printf("\n");}long endTime = clock();//获得结束时间(endTime-beginTime)<10000,单位为毫秒printf("回溯法 %d 皇后耗时: %d ms\n",QueenNum,endTime-beginTime);exit(0);}else{for (i=0;i<QueenNum;i++){A[k]=i; //对A[k]从0开始进行赋值,下面再判断所赋的值是否合法,合法的话进行下一列皇后位置的赋值if (IsLegal(A,k))Find(A,k+1,QueenNum,beginTime);//当循环结束时仍然找不到则返回一层,A[k]的层数加1}}}4:int AttackQueenNum(int *A,int QueenNum){int i,CountAttack=0;if (abs(A[0]-A[1])==1) //判断第一列CountAttack++;for (i=1;i<QueenNum-1;i++) //首先判断前面几列同一行有没有皇后{if (abs(A[i]-A[i-1])==1) //与前一列是否冲突CountAttack++;if (abs(A[i]-A[i+1])==1) //与后一列是否冲突CountAttack++;}if (abs(A[QueenNum-2]-A[QueenNum-1])==1)//判断最后一列CountAttack++;return CountAttack;}5:void ClimbHill(int *A,int QueenNum){int i,j,temp,Mark,Count,CountAttack; //Mark用于标记交换的位置int MinCountAttack;//在选取移动方案时使用int *SaveTry=new int[QueenNum];//存储临时方案,用于比较CreatIndividual(A,QueenNum);CountAttack=AttackQueenNum(A,QueenNum);MinCountAttack=CountAttack;for (i=0;i<QueenNum;i++)SaveTry[i]=A[i];while (CountAttack!=0){for (i=0;i<QueenNum && MinCountAttack!=0;i++){Mark=-1;MinCountAttack=AttackQueenNum(SaveTry,QueenNum);//在每一列与其他列交换之前MinCountAttack都等于当前的Try的攻击数for (j=0;j<QueenNum && MinCountAttack!=0;j++){if (i!=j) //只与其他列进行交换{temp=SaveTry[j];SaveTry[j]=SaveTry[i];SaveTry[i]=temp;Count=AttackQueenNum(SaveTry,QueenNum);if (Count==0){MinCountAttack=Count;//即为0Mark=j; //记录交换列的位置break; //如果攻击数位0直接跳出循环}if (Count<MinCountAttack){MinCountAttack=Count;Mark=j; //记录交换列的位置}temp=SaveTry[j]; //再将刚刚交换的位置复原,用于与下一列进行比较,交换两次即达到交换的效果SaveTry[j]=SaveTry[i];SaveTry[i]=temp;}}if (MinCountAttack==0) break;if (Mark!=-1){temp=SaveTry[Mark]; //再将刚刚交换的位置复原,用于与下一列进行比较,交换两次即达到交换的效果SaveTry[Mark]=SaveTry[i];SaveTry[i]=temp;}}CountAttack=AttackQueenNum(SaveTry,QueenNum);}for (i=0;i<QueenNum;i++)A[i]=SaveTry[i]; //存储存储最终结果}2 罗马尼亚问题1.需求分析:从文件中读取图和启发函数,分别用Dijkstra、深度优先、广度优先、贪婪算法、A*算法得到从起始点Arad到目标点Bucharest的一条路径,即为罗马尼亚问题的一个解,在求解的过程中记录扩展节点的个数(用于比较几种算法的优劣),记录每种算法得到的解,即输出每种解得到的条路径。
2.设计:2.1 设计思想对于图的存储采用邻接矩阵进行存储,因为此图节点与边比较多(若比较少则采用邻接表结构,此时效率比较高),采用堆栈和队列等进行路径的存储,并且在某条路径走到最大深度都没有发现目标节点时具有返回上一节点的能力(好处:在某条路上找不到时可以进入相邻的一条路径,并不是单纯的返回:索索失败),为了不重复访问同一个节点(此时路径会出现环,导致程序循环执行)利用集合的思想,即将访问过的节点状态置为1没有访问过的置为0,以此来避免路径出现环。