什么是回溯法?

回溯法是分治穷举搜索的一个方法。有点绕人,我复制wiki的解释如下:

回溯法英语:backtracking)是暴力搜寻法中的一种。

回溯法采用试错的思想,它尝试分步的去解决一个问题。在分步解决问题的过程中,当它通过尝试发现现有的分步答案不能得到有效的正确的解答的时候,它将取消上一步甚至是上几步的计算,再通过其它的可能的分步解答再次尝试寻找问题的答案。

  • 对于一个问题又是后尝试所有的可能才是最好的办法。
  • 这会导致解决过程很慢,我们还是有一些标准化的工具的。
  • 例如:对于基本问题,二进制序列(n位的二进制序列有2n种可能),排列(n!),组合(n!/r!(n-r)!),一般序列(长度为n的k元序列的可能性有kn),等等。

回溯算法应用的例子

  • 二进制序列:产生给定位数所有可能的二进制序列。
  • 产生k元序列。
  • 背包问题。
  • 一般字符串。
  • 汉弥尔顿路径问题。
  • 图的着色问题。

代码实例:产生n bit所有可能的序列

转载于:https://www.cnblogs.com/programnote/p/4713609.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值