回溯法

1.回溯法

主要思想
每次构造解的一个分量,然后按照下面的方法评估这个部分构造解。如果一个部分构造解可以进一步构造而不会违法问题的约束,我们就接受对解的下一分量所做的第一个合法选择。如果无法对下一分量进行合法的选择,就不必对剩下的任何分量做任何选择了。在这种情况下,该算法进行回溯,把部分构造解的最后一个分量替换为它的下一个选择。

光光看上面的主要思想好像也不是很清楚到底在说什么。
还是看看接下来的具体操作:
通过对所做的选择构造一棵 状态空间树。树的根带便了在查找解之前的初始状态。树的第一层结点代表了对解的第一个分量所做的选择,第二层结点代表对解的第二个分量所做的选择,以此类推。如果一个部分构造解仍然有可能导致一个完整的解,我们就说这个部分解在树的相应节点是 有希望的,否则就是没希望。
叶子代表着没希望的死胡同,或者算法的完整解。
在大多数情况下,一个回溯算法的空间状态树是按照深度优先的方式来构造的。如果当前结点是有希望的,通过向部分解添加下一个分量的第一个合法选择,而处理就转向这个子女结点。如果当前结点变得没希望了,就回溯到该节点的父母结点。
试探啊!!! 就向下摸摸底,摸不到底部继续往下摸,摸到了就收回来换个方向摸。。

n皇后问题

要求把n个皇后放在一个n*n的棋盘上,使得任何两个皇后不能攻击,就是下面三个要求:
  • 不能同行
  • 不能同列
  • 不能位于同意对角线上

n=1,的时候瞬间就是答案,n=2和3的时候这个问题显然无解。姑且讨论n=4的情况下的皇后大阵


//上面左边最底下的方针忘记标号了,这个标号为4号方阵
//层,读者实在无法理解的话 就当做方阵的行好了
在(1,1)放入一个皇后,也就成为1号方阵
ennnn 看看皇后能放的位置,第二层的话大概只能选择(2,3)和(2,4)
先看看(2,3)发现再也无法放入符合三个条件的皇后了//此时当前节点为2号方阵
然后跳回2号方针的父母节点,1号方针
然后咱看看3号方针,也就是去瞅瞅第二个皇后放在(2,4)的情况,诶 发现能放第三个皇后。
在(3,2)放入第三个皇后后,形成4号方阵,emmmm遗憾的是4号方阵放不下第四个皇后
哎。。。还是回溯到父母节点1号方阵了,en?1号方阵也没有其他选择了。那再回溯到1号的爹方阵0号方阵
现在我们开始尝试把第一个皇后放在(1,2)位置了。这个时候我们就会发现,这种方法,要在第二层强行插入的话,只能在(2,4)插入一个皇后了
然后形成6号方阵。看看这个时候,第三层能插哪呢。。很明显只能插到(3,1)//形成7号方阵
最后剩下一一个唯一的皇后了,第四个皇后看了一遍位置,惊喜的发现,后宫居然还有她的位置,真好,(4,3)是满足条件的。
插入后8号方阵就是完美的解了。。


如理解有误,还请指正
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值