八皇后问题实验报告递归非递归javaC语言 分析.docx
《八皇后问题实验报告递归非递归javaC语言 分析.docx》由会员分享,可在线阅读,更多相关《八皇后问题实验报告递归非递归javaC语言 分析.docx(30页珍藏版)》请在第壹文秘上搜索。
1、数据结构课程设计题目:八皇后问题指导老师:皿学生院系:数学学院学生班级:信计*班学生姓名:黎*文学生学号:14070204*2016年12月30日书目一.功能以与需求分折21.1.问题的由来和背景21.2 问题的基本解决思路31.3 问题的应用4二 .总体设计41. 1运行环境42. 2程序框架43. 3算法分析54. 3.1总体算法分析55. 3.2非递归算法分析86. 3.3递归算法的分析8三 .具体设计93.1 递归法的具体设计93.2 非递归法的具体设计11四 .具体实现与运行144. 1QueenMain1.类的实现:145. 2QueenNR类:146. 3QueenRS类:144
2、4C语言程序:15五总结15六.代码清单1561Java代码:1562C语言源代码:27一.功能以与需求分析1.1 问题的由来和背景八皇后问题,是一个占老而闻名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯贝瑟尔于1848年提出:在8X8格的国际象棋上摆放八个皇后,使其不能相互攻击,即随意两个皇后都不能处于同一行、同列或同斜线上,问有多少种摆法。高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表40种不同的解,后来有人用图论的方法解出92种结果。计算机独创后,有多种计算机语言可以解决此问题。八皇后问题是个以国际象棋为背毋的问题:如何能够在8X8的国际象棋棋盘上放置八个
3、皇后,使得任何一个皇后都无法脆吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同条横行纵行或斜线上。八皇后问题可以推广为更一般的n皇后探放问题:这时棋盘的大小变为nXn,而皇后个数也变成n,当且仅当n=1或n24时问题有解。1.2 问题的基本解决思路八皇后问题最早是由国际西洋棋棋手马克斯贝瑟尔于1848年提出。之后接连有数学家对其进行探讨,其中包括高斯和康托,并且将其推广为更一般的n皇后排放问题。八皇后问题的第一个解是在1850年由弗朗兹诺克给出的。诺克也是首先将问题推广到更般的n皇后摆放问题的人之一。1874年,S.冈彼尔提出了一个通过行列式来求解的方法。八皇后问题出现在1990年头初期
4、的闻名电子嬉戏第七访客中。设置一个三维数组,第一个下标是皇后的行坐标,其次个下标是皇后的列坐标,第三个卜.标是残卷号。相当于有N张叠在起的8*8棋盘,每张棋盘只在豆制前面棋盘与皇后后加放置一个皇后。直到放满8皇后后才是一张完整的8皇后图,称完卷。这里实际操作时多加一行多加列即第0行第0列,但这一行/列不作输出,只是作此行/列有无皇后的参考。总的来说现在解八皇后问题的总体算法都是采纳回溯法,也叫作穷搜法,再穷搜的时候去掉分支,削减不必要的运算,对于八皇后问题的求解,一般只能做出15皇后问题,有部分算法高手在有精良设备的状况下算出了25皇后的解“受算法和硬件计算实力的影响,因为计算量为0(n!),
5、而且回溯法运用的内存空间特殊大,所以此问题的求解还有许多可以探究的地方,尤其是算法上的改进。1.3 问题的应用八皇后问题可以用来解决地图的着色问题,以与迷富的求解问题,同时,八皇后问题是一个典型的回溯法求解问题,可以用它来类比许多和回溯法有关的问题。对于现在的DNA序列问题也可以从中得到启发。二.总体设计2.1 运行环境(1)编译环境:JDK1.8,以与ec1.ipse,Mars4.5.2,Visua1.C+6.0(2)电脑系统:Windowsserver200332位(3)编译语言:Java,C语言2.2 程序框架(1) MainQueen:实现可视化界面,可以选择递归和非递归两种算法得到八
6、皇后问题的解,并将答案打印出来。(2) QueenNR:采纳非递归方法求解问题。(3) QueenRS:采纳递归方法求解问题,(4)编译C语言程序。2.3 算法分析2.4 3.1总体算法分析算法的核心是回溯法,也称为摸索法,它并不考虑问题规模的大小,而是从问题的最明显的最小规模起先逐步求解出可能的答案,并以此渐渐地扩大问题规模,迭代地靠近最终问题的解。这种迭代类似于穷举并且是摸索性的,因为当目前的可能答案被测试出不行能可以获得最终解时,则撤销当前的这一步求解过程,回溯到上一步找寻其他求解路径。为了能够撤销当前的求解过程,必需保存上步以来的求解路径。当撤销之后满意条件,就始终做下去,直到摸索完全
7、部的可能解。总结如卜.:(1)设置初始化的方案(给变量赋初值,读入已知数据等)。(2)变换方式去摸索,若全部试完则转(7)。(3)推断此法是否胜利(通过约束函数),不胜利则转(2)。(4)摸索胜利则前进步再摸索。(5)正确方案还未找到则转(2)。(6)已找到一种方案则记录并打印。(7)退回一步(回溯),若未退到头则转(2)。(8)已退到头则结束或打印无解另外一个关键就是对于每一个部分解的判定,可归纳问题的条件为:1.不在同一行(列)上2 .不在同一斜线上3 .不在同一反斜线上具体到八皇后的问题,我们可以逐行或者逐列来进行可行摆放方案的遍历,每一行(或列)遍历出一个符合条件的位置,接者就到下一行
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 八皇后问题实验报告递归非递归javaC语言 分析 皇后 问题 实验 报告 递归 javaC 语言