Python算法学习:启发式算法
启发式算法也称为回溯算法。这实际上是一个类似枚举的试图查找的过程。它主要是在搜索过程中寻找问题的解决方案。当确定不再满足求解条件时。 ,只需“回滚”并尝试另一条路线。回溯法是一种根据优化条件向前搜索以达到目标的优化搜索方法。但当你研究到了某一步,意识到原来的选择不是最优的,或者无法达到目标时,你就会退一步,决定另一种选择。这种不起作用时返回并重试的技术就是回滚方法,某种状态下满足回滚条件的点称为“回滚点”。许多复杂、大规模的问题都可以使用回溯法,被誉为“解决问题的通用方法”。 ?
2。定义一个易于搜索的解空间结构,使得整个解空间可以很容易地通过回溯方法搜索到。
3。首先对解空间进行深度搜索,并在搜索过程中使用剪枝函数来避免无效搜索。
确定解空间的组织结构后,回溯法从初始节点(根节点)开始,对整个解空间进行深度搜索。该初始节点成为活动节点,也成为当前扩展节点。在当前扩展节点,找到向纵的深度方向并移动到新节点。这个新节点成为新的活动节点并成为当前的扩展节点。如果当前扩展节点无法在深度方向上移动,则当前扩展节点成为死节点。这时,你需要向后移动(返回)到最近的滑动节点,并使该滑动节点成为当前的扩展节点。这样,回溯方法就递归地搜索解空间,直到找到所需的解或者解空间中没有存活节点为止。
基本思路可以概括为:从一条路往前走,能进就进,不能就退,再尝试另一条路,直到走出来。
2.八皇后问题
问题描述:
将八个皇后放在8*8的棋盘上,使它们不能互相攻击,也就是说任意两个皇后不能在同一行或同一列,我同意用对角线问有多少种放置方法?
救援代码:
| 1234567891011121314151617181920212223242526272829303132 | n = int() 输入())x = 在范围(k):#前一个 x[0]~x[k-1] 的转换 if x [i] = x[k] 或 abs(x[i]- x[k]) 或 abs(i- k): |
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网