人工智能课程设计报告(八皇后问题与罗马尼亚问题)
《人工智能课程设计报告(八皇后问题与罗马尼亚问题)》由会员分享,可在线阅读,更多相关《人工智能课程设计报告(八皇后问题与罗马尼亚问题)(22页珍藏版)》请在毕设资料网上搜索。
1、人工智能人工智能课程设计报告课程设计报告 目录目录 1N 皇后问题皇后问题1 需求分析,设计1 设计表示1 运行结果2 用户手册即测试数据2 结论5 主要算法代码5 2 罗马尼亚问题罗马尼亚问题9 需求分析,设计9 设计表示,详细设计9 用户手册11 运行结果11 主要算法代码12 3.3.实习心得实习心得21 2 1 N 皇后问题皇后问题 1问题描述、需求分析 在 N*N 的棋盘上分布 N 个皇后,其中 N 个皇后不能在同一行同一列,也 不能出现在同一对角线上,此时 N 个皇后不会相互攻击。 程序需能手动输入皇后个数,并分别采用回溯法、爬山法、遗传法得出 皇后的分布情况,输出皇后的位置即棋盘
2、。 2设计思想 2.1 形式化形式化 N 个皇后的位置可用一个 N 维数组表示,如 921543,意思是第一 个皇后在第一列的第 9 行。 2.2 程序模块程序模块 CreatIndividual( )函数用于产生一组表示皇后不在同一行也不再 同一列的的一位数组,即产生一组互不相等的 0N 之间的整数,便于快 速求解。 IsLegal( )函数用于判断新放置的皇后是否合法,在回溯法中用到。 AttackQueenNum( )用于计算整个棋盘的攻击皇后个数,相当于一个 评价函数,在爬山法和遗传法中用到; Find( )回溯法求解函数 ClimbHill( )爬山法求解函数; GA( )遗传算法求
3、解函数; (1)函数调用关系图如下: (2)函数接口规格说明:下图中的箭头指向表示为被指向函数所用 2.3 详细设计详细设计 a: CreatIndividual(int *A,int QueenNum):以当时时间为种子循环产生 随机数, 为了使得产生的随机数都不想等, 设计集合 SN并初始化为 0, 表示还没有产生一个皇后,当产生的皇后不在 SN中即 SN!=1 时将 CreatIndividual() AttackQueenNum( ) Find( ) IsLegal( ) 主函数 GA( ) ClimbHill( ) 3 Sn置为 1, 接着产生下一个皇后, 如此循环便产生一组互不相等的值。 b: IsLegal(int *A,int t)此函数用于判断第 t 列的皇后是否合法,即有 没有皇后在同一行、同一列,同一对角线上,并返回 true 或者 false。 c: AttackQueenNum(int *A,int QueenNum)循环调用 IsLegal()函数对攻 击数进行累加并返回其值,此函数作为棋盘的评价函数。 d: Find(int *A,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中设计图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 人工智能 课程设计 报告 皇后 问题 罗马尼亚
