- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于C++的n皇后问题的实现
学士学位论文
商丘师范学院
论文题目(中文): 基于C++的n皇后问题的实现
论文题目(英文): The Implementation of The N-queens Problem based on C++
姓名:司俊飞
专业:计算机科学与技术
导师:王海燕
摘要
这个任务的主题是N皇后问题。
在本论文中,我会研究N皇后问题,并讨论如何实现若干启发式的回溯算法求解。我会评估启发式的计算成本,所需要的递归深度和所需的CPU周期,为4和100之间的N找到一个解决办法。不仅通过实现和分析启发式了解N皇后问题及其复杂性,而且它有助于明白不同形式的启发式解决约束满足问题中的优缺点。
关键字: C++,n皇后问题
Abstract
The theme of this task is the n-queens problem. 。
In this paper I will investigate the n-queens problem and discuss the implementation of several heuristics in a backtracking algorithm that solves it. I will evaluate the computational cost of the heuristics in terms of the required recursion depth and the required amount of CPU cycles for finding a single solution for n between 4 and 100. Not only does implementing and analysing the heuristics lead to insights in the n-queens problem and its complexity, it helps understand the advantages and disadvantages of different forms of heuristics in solving Constraint Satisfaction Problems in general.
Keyword: C++, n-Queens
目录
前言…………………………………………………………………………….1
概述……………………………………………………………………2
网上考试的引入……………………………………………………
主要….
系统分析……………………………………………………………..
结束语……
参考文献…
致谢………….
前言
算法设计与分析是计算机科学技术中处于核心地位的一门专业基础课,越来越受到重视。本书将计算机经典问题和算法设计技术很好地结合起来,系统地介绍了算法设计技术及其在经典问题中的应用。
八皇后问题是一个古老而著名的问题,是回溯算法的典型例题。该问题是十九世纪著名
的数学家高斯1850年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即
任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。
第一章 N皇后问题
1.1问题描述
N皇后问题一般描述为:
n皇后问题要求在一个n×n格的棋盘上放置n个皇后,使得他们彼此不受攻击。
皇后允准按4个方向移动(纵向,横向,斜向) 。按照国际象棋的规则,一个皇后可以攻击与这处在同一行或同一列或同一斜线上的其他任何棋子。因此,n后问题等价于要求在一个n×n格的棋盘上放置n个皇后,使得任何2个皇后不能被放在同一行或同一列或同一斜线上。在图1中我们可以看到皇后对棋盘上其它单元格的影响.
图 1: n = 5. 棋盘上灰色单元格是在皇后的攻击范围之内.
1.2复杂性
N皇后问题,可以被视为一个约束满足问题(Constraint Satisfaction Problem) 或 CSP. 从而N皇后问题是一个N P完全问题,该问题不能在多项式时间内得到解决。事实上,问题的复杂性增大的一个因素是n, 导致在一般复杂度为O ( n2 )。解决这个问题,与经典搜索算法,如深度优先搜索与回溯只会适用小n. 当解决n较大的N皇后问题用回溯算法,为在一个可接受的时间解决这个问题,搜索启发式是一个先决条件。.
第二章 目前的问题
把的N皇后问题作为一个CSP和解决它采用回溯算法,首先要想一想,问题需要设置哪些变量及其域. 换言之,要思考如何用程序语言表示棋盘.
2.1 显而易见的办法: n2
这似乎是显而易见的,无论是女王还是没有女王把每一格作为一个变量控制一共有n2个变量。所有的制约问题利用都必须努力实现编码,例如:如果第i行有一格有一皇后
文档评论(0)