算法第五章作业

回溯算法理解:
其实这个算法,本质上可以说是一个决策树的遍历过程。在做题的时候只需要考虑这三个步骤
1.路径 已经做出的选择
2.选择列表 就是当前可以做的选择
3.结束条件 即到达决策树的底层

就那全排列问题来说: 我们backtrack函数就像一颗指针,在树上游走,每当走到树的底层,其路径就是一个全排列。那么通过前序遍历,后序遍历这个算法即可实现选择和撤销这个功能
我们可以和动态规划作比较,回溯法说白了就有点像暴力穷举,复杂度很高,需要剪枝,但是无论如何优化,比如说全排列问题,复杂度都不可能低于O(N!) 因为穷举整颗决策树是无法避免的!!!

子集和空间结构:

约束函数:
若当前之和已经超过题目给的数字,不再搜索

遇到情况:回溯这个算法思想本身不难,因为用的是暴力穷举的思想,但是往往剪枝函数函数比较难想。课余时间会和队友一起讨论如何更合理的找到剪枝的方法,同时重新再深入学习N皇后问题和全排列问题。

posted @ 2019-12-19 00:25  FITZ陈思宇  阅读(113)  评论(0编辑  收藏  举报