第五章作业及期末总结

对回溯法的理解

回溯算法其实就是广度优先的搜索尝试过程,与广度优先不同的地方在于剪枝以及限界函数,当发现已不满足求解条件时,就沿路径“回溯”返回上一级节点,尝试别的路径。回溯法的关键就两点:
1.结束条件,什么时候会结束该分支的回溯(每个分支各自独立,隔离),不然就会陷入无限循环。
2.下步执行,下一步所有可能的操作是什么,该操作对应到dfs递归函数里的参数变化会是什么。

思路:这种题的题意肯定要摸着石头过河,把所有的情况都走一遍,符合条件的留下。基本思想:

在包含问题的所有解的解空间树中,按照深度优先搜索的策略,从根结点出发深度探索解空间树。当探索到某一结点时,要先判断该结点是否包含问题的解,如果包含,就从该结点出发继续探索下去,如果该结点不包含问题的解,则逐层向其祖先结点回溯。(其实回溯法就是对隐式图的深度优先搜索算法,这个解释又更加的精简而正确。用白话讲回溯法就是深度搜索问题隐含的图,找到正确的路径)。

 你学习《算法分析与设计》课程的收获

学习了这门算法课,我学到了分治、动态规划、贪心、回溯、分支限界等算法的基本使用和内容,变成能力进一步提升了。

与伙伴的结对编程、团队协作能力也提升了,因为之前没有团队编程的经历,基本都是单人编程。

你在学习过程中曾遇到了哪些困难,希望老师或助教及时给予帮助。

  对有些编程题没有思路,刚学时有点陌生,导致不知如何去解决;花了好长时间去理解回溯算法和动态,对递归的使用有些无从下手,不知其怎么个递归法。

你对本门课程的教学有哪些建议

  老师很优秀,教的非常好,结对编程的方式也很新颖、很棒。

posted @ 2020-12-20 11:56  唯安~  阅读(75)  评论(0编辑  收藏  举报