目录
原理
回溯算法思想有点像时空穿越,就是每次面对选择时从一组可能的解中,选择一个满足要求的解,如果当你发现选错了的时候,就穿越时空回到上一个时间点重新选择。
回溯算法本质上就是枚举,枚举所有的解,找到符合的解。
相似算法
贪心算法:每次面对选择的时候做出最优的选择,这样一直选下去,使得最终解为最优解,但是贪心算法不一定得到最优解。
实现
回溯算法常用递归来实现
提高效率的技巧
剪枝操作,利用剪枝不需要穷举所有搜索的情况
使用场景
解决广义的搜索问题,如——深度优先搜索
优点在于其类似于摸着石头过河的查找策略,且可以通过剪枝少走冤枉路。它可能适合应用于缺乏规律,或我们还不了解其规律的搜索场景中。
经典回溯算法案例
深度优先搜索
八皇后问题
0-1背包
正则表达式匹配
数独
全排列
图的着色