在八皇后问题的问题求解中,采用“试探-失败返回-再试探”的问题求解方法,属于(B)。

将n个皇后放置在n*n的国际象棋棋盘上,其中没有任何两个皇后处于同一行,同一列或者同一对角线上,以使得的它们不能相互攻击。

  • 最简答的思路是把问题转化为“从64个格子中选一个子集”,使得“子集中恰好有8个格子,且任意选出两个格子都不在同一行,同一列或者同意对角线上”。这恰好是子集枚举问题。然而,64个格子的子集有2^64个,太大了,则并不是一个很好的模型。
  • 我们把思路转化为“从64个格子中选出8个格子”,这是一个明显的组合问题,根据排列组合,有C8 64=4.426*10^9种结果,虽然比第一种要好,但是性能依然不够好。
  • 最后我们通过思考,能不能将它装换为一维问题:因为每行每列各放置一个皇后,如果用C[X]表示第X行皇后的列编号,则问题会变成全排列生成问题,而0-7的排列一共只有8!=40320个,枚举的次数不会超过这个值。

如果这样表示的话,那么判断条件应该如何表示呢?

  • 我们可以先用二维数组表示一个八宫格,假设每个格子的坐标(x,y)是二维数组的下标,那么格子(x,y)的y-x的值就能够标识出租对角线,所有的主对角线的y-x的值是相等的,同理格子(x,y)的x+y值就能表示出副对角线,那么所有的问题就都解决了。

当把问题分成了若干步骤并递归求解时,如果当前步骤没有合理的选择时,则函数将返回上一级递归调用,这种现象叫回溯。正是因为这个原因,递归枚举算法常常被称为回溯法

上述算法的枚举的结点数适合很难减少了,但是程序的效率可以继续提高,利用二维数组直接判断当前尝试的皇后所在的列和两个对角线是否已有其他的皇后,注意的问题是,主对角线的表示y-x可能为负值,存取时要加上n。

上述程序有个极其关键的地方:vis数组的使用。它表示的含义是已经放置的换后占据了哪些列,主对角线和副对角线。一般的,如果在回溯法中修改了辅助全局变量,则一般要把它们及时恢复原状,有多个地方修改,每个地方都要恢复原有的值。
有兴趣的话,可以研究一下n皇后问题,看一看有没有什么规律或者快速解法呢?

更多“下面关于八皇后问题说法错误的是”相关的问题

关于8类主要的性心理问题,下列说法中错误的是()。

A. 包括性能力问题这个类型

B. 包括性交体验问题这个类型

C. 包括性法律问题这个类型

D. 包括性欲望问题这个类型

以下关于与或树说法错误的是

A、把一个复杂问题分解为若干个较为简单的子问题,形成“与”树

B、利用同构或同态的等价变换,把原问题变换为若干个较为容易求解的新问题,形成“或”树

C、或树中各子节点间用弧链接

D、与树中各子节点间用弧链接

以下关于博弈理论说法错误的是

A、具有竞争或对抗性质的行为称为博弈行为

B、博弈论研究博弈行为斗争各方是否存在着最合理的行为方案

C、博弈双方均力图选取对自己最为合理的方案

D、博弈双方均力图选取对自己最为不利的方案

下面关于概率分配函数说法错误的是

A、概率分配函数的值大于等于0小于等于1

B、空集的概率分配函数值为0

C、样本空间的概率分配函数值为0

D、所有子集的概率分配函数值和为1

以下关于博弈问题描述错误的是

A、博弈问题可以用与/或表示的状态空间图描述

B、多对多关系就是博弈树

C、一对多关系就是博弈树

D、多对多关系就是博弈图

A、极小化极大过程中节点数会随着搜索深度的增加呈指数增长

B、剪枝就是在搜索深度不变的情况下,利用已有的搜索信息增加生成的节点数

C、α剪枝:如果一个MIN节点的β值小于或等于它的某一个MAX祖先节点的α值,则剪枝发生在该MIN节点之下

D、β剪枝:如果一个MAX节点的α值大于或者等于它的某一个MIN祖先节点的β值,则剪枝发生在该MAX节点之下

关于鲁滨逊归结原理叙述错误的是

A、谓词公式不可满足的充要条件是其子句集不可满足

B、空子句是不可满足的

C、若子句集S包含空子句,则子句集S不可满足

D、若子句集S不包含空子句,则称子句集S是可满足的

以下关于模糊集合的运算说法错误的是

A、A包含B,表示元素对A的隶属度大于等于对B的隶属度

B、A交B的隶属度等于对应元素隶属度的大者

C、A并B的隶属度等于对应元素隶属度的大者

D、A的隶属度加上非A的隶属度等于1

以下哪一项不属于专家系统知识库的建立环节

我要回帖

更多关于 洛谷八皇后 的文章

 

随机推荐