回溯算法解决八皇后_4皇后问题和使用回溯算法的解决方案

回溯算法解决八皇后

4-皇后问题 (4 - Queen's problem)

In 4- queens problem, we have 4 queens to be placed on a 4*4 chessboard, satisfying the constraint that no two queens should be in the same row, same column, or in same diagonal.

4个皇后问题中 ,我们将4个皇后放置在4 * 4棋盘上,满足了以下约束:两个皇后不应位于同一行,同一列或同一对角线。

The solution space according to the external constraints consists of 4 to the power 4, 4-tuples i.e., Si = {1, 2, 3, 4} and 1<= I <=4, whereas according to the internal constraints they consist of 4! solutions i.e., permutation of 4.

根据外部约束,解空间由4乘以4、4个元组,即Si = {1,2,3,4}1 <= I <= 4 ,而根据内部约束,它们包括4! 解,即4的排列。

回溯的帮助下4 – Queen's的解决方案 (Solution of 4 – queen’s with the help of backtracking)

We can solve 4-queens problem through backtracking by taking it as a bounding function .in use the criterion that if (x1, x2, ……., xi) is a path to a current E-node, then all the children nodes with parent-child labelings x (i+1) are such that (x1, x2, x3, ….., x(i+1)) represents a chessboard configuration in which no queens are attacking.

我们可以通过将其作为边界函数来通过回溯来解决4皇后问题。使用以下准则:如果(x1,x2,……。,xi)是当前E节点的路径,则所有具有父子标签x(i + 1)表示(x1,x2,x3,…..,x(i + 1))表示没有皇后攻击的棋盘配置。

So we start with the root node as the only live node. This time this node becomes the E-node and the path is (). We generate the next child. Suppose we are generating the child in ascending order. Thus the node number 2 is generated and path is now 1 i.e., the queen 1 is placed in the first row and in the first column.

因此,我们从根节点作为唯一的活动节点开始。 这次,该节点成为E节点,路径为()。 我们生成下一个孩子。 假设我们以升序生成子代。 因此,生成了节点编号2,并且路径现在为1,即,将女王1放置在第一行和第一列中。

Now, node 2 becomes the next E-node or line node. Further, try the next node in the ascending nodes i.e., the node 3 which is having x2 = 2 means queen 2 is placed in the second column but by this the queen 1 and 2 are on the same diagonal, so node 3 becomes dead here so we backtrack it and try the next node which is possible.

现在,节点2成为下一个E节点或行节点。 此外,尝试升序节点中的下一个节点,即具有x2 = 2的节点3意味着将女王2放置在第二列中,但由此女王1和2在同一对角线上,因此节点3在此处变为无效因此我们回溯它并尝试下一个可能的节点。

Here, the x2 = 3 means the queen 2 is placed in the 3rd column. As it satisfies all the constraints so it becomes the next live node.

在此,x2 = 3表示将女王2放在第三列中。 由于它满足所有约束,因此它成为下一个活动节点。

After this try for next node 9 having x3 = 2 which means the queen 3 placed in the 2nd column, but by this the 2 and 3 queen are on the same diagonal so it becomes dead. Now we try for next node 11 with x3 = 4, but again the queens 2 and 3 are on the same diagonal so it is also a dead node.

在此之后,尝试下一个具有x3 = 2的下一个节点9,这意味着将女王3放置在第二列中,但是这样2和3女王就在同一对角线上,因此变为死角。 现在我们尝试使用x3 = 4的下一个节点11,但女王2和3同样在对角线上,因此它也是一个死节点。

4 Queen’s problem and solution using backtracking algorithm

* The B denotes the dead node.

* B表示死节点。

We try for all the possible positions for the queen 3 and if not any position satisfy all the constraints then backtrack to the previous live node.

我们尝试为女王3确定所有可能的位置,如果没有任何位置满足所有约束,则回溯到先前的活动节点。

4 Queen’s problem and solution

Now, the node13 become the new live node with x2 = 4, means queen 2 is placed in the 4th column. Move to the next node 14. It becomes the next live node with x3 = 2 means the queen 3 is placed in the 2nd column. Further, we move to the next node 15 with x4 = 3 as the live node. But this makes the queen 3 and 4 on the same diagonal resulting this node 15 is the dead node so we have to backtrack to the node 14 and then backtrack to the node 13 and try the other possible node 16 with x3 = 3 by this also we get the queens 2 and 3 on the same diagonal so the node is the dead node.

现在,node13成为x2 = 4的新活动节点,这意味着将女王2放置在第4列中。 移至下一个节点14。它将成为x3 = 2的下一个活动节点,这意味着将女王3置于第二列。 此外,我们将x4 = 3作为活动节点移至下一个节点15。 但是,这使得皇后3和4在同一对角线上,导致该节点15是死节点,因此我们必须回溯到节点14,然后回溯到节点13,并以此尝试使用x3 = 3的另一个可能的节点16我们将皇后2和3放在同一对角线上,因此该节点为死节点。

So we further backtrack to the node 2 but no other node is left to try so the node 2 is killed so we backtrack to the node 1 and try another sub-tree having x1 = 2 which means queen 1 is placed in the 2nd column.

因此,我们进一步回溯到节点2,但没有其他节点可以尝试,因此节点2被杀死,因此我们回溯到节点1,并尝试另一个具有x1 = 2的子树,这意味着女王1被放置在第二列中。

Now again with the similar reason, nodes 19 and 24 are killed and so we try for the node 29 with x2 = 4 means the queen 2 is placed in the 4th column then we try for the node 30 with x3 = 1 as a live node and finally we proceed to next node 31 with x4 = 3 means the queen 4 is placed in 3rd column.

现在再次出于类似的原因,节点19和24被杀死,因此我们尝试将x2 = 4的节点29放置在第4列中,然后将x3 = 1的节点30视为活动节点最后我们以x4 = 3进入下一个节点31,这意味着将女王4放在第三列。

Here, all the constraints are satisfied, so the desired result for 4 queens is {2, 4, 1, 3}.

此处,所有约束均得到满足,因此4个皇后的期望结果为{2,4,1,3}。

翻译自: https://www.includehelp.com/algorithms/4-queens-problem-and-solution-using-backtracking-algorithm.aspx

回溯算法解决八皇后

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/543033.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎么重置blockinput的锁_OPPOA9锁屏密码忘了怎么办? OPPO忘记锁屏密码的解决办法...

看点&#xff1a;iPhone X原装屏与国产屏有哪些区别&#xff1f;看点&#xff1a;换7P、8P屏幕&#xff1a;C11和DTP和DKH的区别狮淘&#xff1a;不锈钢拆机片5个只需9.9元&#xff01;包邮&#xff01;每天10名OPPOA9锁屏密码忘了怎么办&#xff1f;OPPO A9手机忘记了锁屏密码…

Android的面孔_Actiyity

一、什么是Activity&#xff1f; 简单的说&#xff1a;Activity就是布满整个窗口或者悬浮于其他窗口上的交互界面。在一个应用程序中通常由多个Activity构成&#xff0c;都会在Manifest.xml中指定一个主的Activity&#xff0c;如下设置 <actionandroid:name"android.in…

vsco怎么两个滤镜叠加_10 款超美的 VSCO 调色滤镜,怎么用都好看!

VSCO 里的滤镜简单 又 好看可太让人喜欢了&#xff01;但是 VSCO 的滤镜实在太多太多了有点让人眼花缭乱~今天旅拍菌请来了 摄影博主 丹丹儿啊专门来为大家盘点一波超美的 VSCO 滤镜合集&#xff01;怎么用 都很好看~微博&#xff1a;丹丹儿啊01滤镜&#xff1a;1ND1锐化&#…

Kubernetes Master High Availability 高级实践

才云科技云开源高级工程师唐继元受邀DBAplus社群&#xff0c;在线分享《Kubernetes Master High Availability 高级实践》&#xff0c;介绍如何构建Kubernetes Master High Availability环境。 以下是分享实录&#xff1a; 大家好&#xff0c;我是才云科技的唐继元&#xff0c;…

分布式系统的唯一ID

2019独角兽企业重金招聘Python工程师标准>>> 需求 为什么需要唯一ID 让分布式系统中的需要辨别的元素&#xff0c;都能有唯一的辨识标志。 几乎所有的业务系统&#xff0c;都有生成一个记录标识的需求&#xff0c;例如&#xff1a; 消息标识&#xff1a;message-id订…

android放微信@功能,Android仿微信语音消息的录制和播放功能

一、简述效果&#xff1a;实现功能&#xff1a;长按Button时改变Button显示文字&#xff0c;弹出Dialog(动态更新音量)&#xff0c;动态生成录音文件&#xff0c;开始录音&#xff1b;监听手指动作&#xff0c;规定区域。录音状态下手指划出规定区域取消录音&#xff0c;删除生…

sap中泰国有预扣税设置吗_泰国的绘图标志| Python中的图像处理

sap中泰国有预扣税设置吗A colored image can be represented as a 3 order matrix. The first order is for the rows, the second order is for the columns and the third order is for specifying the color of the corresponding pixel. Here we use the BGR color format…

Attach Volume 操作(Part II) - 每天5分钟玩转 OpenStack(54)

上一节我们讨论了 attach volume 操作中 cinder-api 的工作&#xff0c;本节讨论 cinder-volume 和 nova-compute 如何将 volume attach 到 Instance。 cinder-volume 初始化 volume 的连接 cinder-volume 接收到 initialize_connection 消息后&#xff0c;会通过 tgt 创建 ta…

FMDB的介绍

2019独角兽企业重金招聘Python工程师标准>>> FMDB方法的介绍 1.首先我们需要创建一个FMDatabase实例&#xff1a; (FMDatabase*)DataBaseSigonInstance { //数据库初始化 NSString *homeDir NSHomeDirectory(); //NSLog("%",homeDir); NSString *dbPath …

网络克隆软件_网文生成器,克隆的是骗钱“病毒”

文章克隆器页面。图据北京晚报如今不论男女老少&#xff0c;多半喜欢用手机收集信息、浏览自己关注的话题。有的时候&#xff0c;人们会发现&#xff0c;不少亲朋发来的链接或者公众号推送的文章&#xff0c;长得特别像&#xff0c;但多少有那么些微不同。其实&#xff0c;不是…

使用python 对图片进行水印,保护自己写的文章

1&#xff0c;关于文章被爬 说起来挺桑心的&#xff0c;好不容易写的文章&#xff0c;被爬走。 用个搜索引擎搜索都不是在第一位&#xff0c;写的文章全给这些网站提供流量了。 这种网站还居多广告。 还是抱怨少点吧。csdn对于这些事情也是无所作为啊。 最起码的防盗链也不…

android layout_width 属性,android:layout_weight属性详解

在android开发中LinearLayout很常用&#xff0c;LinearLayout的内控件的android:layout_weight在某些场景显得非常重要&#xff0c;比如我们需要按比例显示。android并没用提供table这样的控件&#xff0c;虽然有TableLayout&#xff0c;但是它并非是我们想象中的像html里面的t…

angular的$http发送post,get请求无法传送参数的问题

2019独角兽企业重金招聘Python工程师标准>>> 用$http进行异步请求的时候发现了一个奇怪的事情&#xff0c;用$http.post(url,data)的方法进行请求&#xff0c;后台死活接收不到data的参数&#xff0c;真是百思不得姐啊..... 折腾了老半天才在stackoverflow上找到答案…

怎样解决Word文档图标无法正常显示的问题?

此类问题是由于 Word 程序相关组件损坏导致&#xff0c;可以通过下面的方案来解决&#xff1a;步骤/方法按键盘上的 Windows 徽标健 R 键&#xff0c;输入 regedit&#xff0c;按回车键。&#xff08;若弹出用户账户控制窗口&#xff0c;请允许以继续&#xff09;对于 Word 200…

MathType与Origin是怎么兼容的

MathType作为一款常用的公式编辑器&#xff0c;可以与很多的软件兼容使用。Origin虽然是一款专业绘图与数据分析软件&#xff0c;但是在使用过程中也是可以用到MathType。它可以帮助Origin给图表加上标签&#xff0c;或者在表格中增加公式标签。但是一些用户朋友对这个不能不是…

AutoBookmark Adobe Acrobat快速自动批量添加书签/目录

前言 解决问题&#xff1a;Adobe Acrobat快速自动批量添加书签/目录, 彻底告别手动添加书签的烦恼 AutoBookmark 前言1 功能简介2 实现步骤2.1 下载插件2.2 将插件复制到Acrobat文件夹下2.3 自动生成书签 1 功能简介 我们在查看PDF版本的论文或者其他文件的时候, 虽然相比较于…

Python调用微博API获取微博内容

一&#xff1a;获取app-key 和 app-secret 使用自己的微博账号登录微博开放平台(http://open.weibo.com/)&#xff0c;在微博开放中心下“创建应用”创建一个应用&#xff0c;应用信息那些随便填&#xff0c;填写完毕后&#xff0c;不需要提交审核&#xff0c;需要的只是那个ap…

鸿蒙系统hdc,HDC2020有看头:要揭开鸿蒙系统和EMUI11神秘面纱?

IFA2020算是HDC2020的预热吧&#xff0c;一个是9月2日在德国柏林举办的消费电子展&#xff0c;一个是在松山湖举办的华为开发者大会&#xff0c;二者的目的都一样&#xff0c;但也有一丝不同&#xff0c;IFA是为了让老外了解HMS、了解华为的智慧生态&#xff0c;而HDC2020就是要…

Java String 学习笔记 (一)

2019独角兽企业重金招聘Python工程师标准>>> ###String 简介 String 并非java的8大基本数据类型之一。 java中基本数据类型存储在栈内存中。而String不是&#xff0c;新new的String 对象存储在堆内存中。而字符串存储在常量池中。String对象的引用存储中栈内存中。 …

note2 android4.3,玩家们动手吧 Note2安卓4.3固件已泄漏

【PConline 资讯】最近各个牌子的安卓机迎来了升级安卓4.3的大潮&#xff0c;现在三星Galaxy Note2的安卓4.3固件已经泄漏出来了。实际上&#xff0c;此前三星官方已经确认&#xff0c;Galaxy Note3可以获得官方的安卓4.3固件升级&#xff0c;但具体日期没有确定&#xff0c;只…